Thu Feb 18 15:41:03 2021 UTC ()
rust: switch to bsdtar from gtar


(wiz)
diff -r1.217 -r1.218 pkgsrc/lang/rust/Makefile

cvs diff -r1.217 -r1.218 pkgsrc/lang/rust/Makefile (switch to unified diff)

--- pkgsrc/lang/rust/Makefile 2021/02/14 08:24:30 1.217
+++ pkgsrc/lang/rust/Makefile 2021/02/18 15:41:03 1.218
@@ -1,579 +1,579 @@ @@ -1,579 +1,579 @@
1# $NetBSD: Makefile,v 1.217 2021/02/14 08:24:30 he Exp $ 1# $NetBSD: Makefile,v 1.218 2021/02/18 15:41:03 wiz Exp $
2 2
3DISTNAME= rustc-1.49.0-src 3DISTNAME= rustc-1.49.0-src
4PKGNAME= ${DISTNAME:S/rustc/rust/:S/-src//} 4PKGNAME= ${DISTNAME:S/rustc/rust/:S/-src//}
5CATEGORIES= lang 5CATEGORIES= lang
6MASTER_SITES= https://static.rust-lang.org/dist/ 6MASTER_SITES= https://static.rust-lang.org/dist/
7 7
8MAINTAINER= pkgsrc-users@NetBSD.org 8MAINTAINER= pkgsrc-users@NetBSD.org
9HOMEPAGE= https://www.rust-lang.org/ 9HOMEPAGE= https://www.rust-lang.org/
10COMMENT= Safe, concurrent, practical language 10COMMENT= Safe, concurrent, practical language
11LICENSE= mit OR apache-2.0 11LICENSE= mit OR apache-2.0
12 12
13CONFLICTS+= rust-bin-[0-9]* 13CONFLICTS+= rust-bin-[0-9]*
14 14
15# uses -std=c++14 15# uses -std=c++14
16GCC_REQD+= 5 16GCC_REQD+= 5
17 17
18USE_GCC_RUNTIME= yes 18USE_GCC_RUNTIME= yes
19USE_LANGUAGES= c c++11 19USE_LANGUAGES= c c++11
20USE_LIBTOOL= yes 20USE_LIBTOOL= yes
21USE_TOOLS+= bash ggrep gmake perl:build pkg-config 21USE_TOOLS+= bash ggrep gmake perl:build pkg-config
22 22
23# The NetBSD bootstraps are built for NetBSD 8 (because rust doesn't 23# The NetBSD bootstraps are built for NetBSD 8 (because rust doesn't
24# build on 7). Mark earlier versions as broken. 24# build on 7). Mark earlier versions as broken.
25BROKEN_ON_PLATFORM+= NetBSD-[1-7].*-* 25BROKEN_ON_PLATFORM+= NetBSD-[1-7].*-*
26# Bootstrap is built for NetBSD 9.x on these platforms: 26# Bootstrap is built for NetBSD 9.x on these platforms:
27BROKEN_ON_PLATFORM+= NetBSD-8.*-*arm* 27BROKEN_ON_PLATFORM+= NetBSD-8.*-*arm*
28BROKEN_ON_PLATFORM+= NetBSD-8.*-aarch64 28BROKEN_ON_PLATFORM+= NetBSD-8.*-aarch64
29BROKEN_ON_PLATFORM+= NetBSD-8.*-sparc64 29BROKEN_ON_PLATFORM+= NetBSD-8.*-sparc64
30 30
31HAS_CONFIGURE= yes 31HAS_CONFIGURE= yes
32PYTHON_FOR_BUILD_ONLY= yes 32PYTHON_FOR_BUILD_ONLY= yes
33CONFIG_SHELL= ${PYTHONBIN} 33CONFIG_SHELL= ${PYTHONBIN}
34CONFIGURE_SCRIPT= src/bootstrap/configure.py 34CONFIGURE_SCRIPT= src/bootstrap/configure.py
35CONFIGURE_ARGS+= --prefix=${PREFIX} 35CONFIGURE_ARGS+= --prefix=${PREFIX}
36CONFIGURE_ARGS+= --mandir=${PREFIX}/${PKGMANDIR} 36CONFIGURE_ARGS+= --mandir=${PREFIX}/${PKGMANDIR}
37CONFIGURE_ARGS+= --sysconfdir=${PKG_SYSCONFDIR} 37CONFIGURE_ARGS+= --sysconfdir=${PKG_SYSCONFDIR}
38CONFIGURE_ARGS+= --python=${PYTHONBIN} 38CONFIGURE_ARGS+= --python=${PYTHONBIN}
39CONFIGURE_ARGS+= --release-channel=stable 39CONFIGURE_ARGS+= --release-channel=stable
40CONFIGURE_ARGS+= --local-rust-root=${RUST_BOOTSTRAP_PATH} 40CONFIGURE_ARGS+= --local-rust-root=${RUST_BOOTSTRAP_PATH}
41CONFIGURE_ARGS+= --enable-extended # Build and install cargo too. 41CONFIGURE_ARGS+= --enable-extended # Build and install cargo too.
42CONFIGURE_ARGS+= --enable-rpath 42CONFIGURE_ARGS+= --enable-rpath
43CONFIGURE_ARGS+= --disable-codegen-tests 43CONFIGURE_ARGS+= --disable-codegen-tests
44CONFIGURE_ARGS+= --disable-dist-src 44CONFIGURE_ARGS+= --disable-dist-src
45CONFIGURE_ARGS+= --disable-llvm-static-stdcpp 45CONFIGURE_ARGS+= --disable-llvm-static-stdcpp
46CONFIGURE_ARGS+= --disable-ninja 46CONFIGURE_ARGS+= --disable-ninja
47 47
48# Include (optional) settings to cross-build rust 48# Include (optional) settings to cross-build rust
49.include "cross.mk" 49.include "cross.mk"
50 50
51.if !empty(TARGET) 51.if !empty(TARGET)
52# Use "dist" build target for cross compile of bootstrap 52# Use "dist" build target for cross compile of bootstrap
53BUILD_TARGET= dist 53BUILD_TARGET= dist
54.else 54.else
55BUILD_TARGET= build 55BUILD_TARGET= build
56.endif 56.endif
57 57
58# Getting RPATH with $ORIGIN into bootstrap may be troublesome, so 58# Getting RPATH with $ORIGIN into bootstrap may be troublesome, so
59# uncommenting the LD_LIBRARY_PATH setting may be required to run 59# uncommenting the LD_LIBRARY_PATH setting may be required to run
60# the bootstrap 60# the bootstrap
61PKGSRC_MAKE_ENV+= LD_LIBRARY_PATH=${RUST_BOOTSTRAP_PATH:Q}/lib 61PKGSRC_MAKE_ENV+= LD_LIBRARY_PATH=${RUST_BOOTSTRAP_PATH:Q}/lib
62 62
63# This should allow us to perform "offline" builds (so cargo doesn't fetch 63# This should allow us to perform "offline" builds (so cargo doesn't fetch
64# dependencies during the build stage) but this isn't hooked up yet. 64# dependencies during the build stage) but this isn't hooked up yet.
65CONFIGURE_ARGS+= --enable-vendor 65CONFIGURE_ARGS+= --enable-vendor
66 66
67# cargo defaults to using the number of available CPUs 67# cargo defaults to using the number of available CPUs
68MAKE_ENV+= CARGO_BUILD_JOBS=${_MAKE_JOBS_N} 68MAKE_ENV+= CARGO_BUILD_JOBS=${_MAKE_JOBS_N}
69 69
70CFLAGS.SunOS+= -D_POSIX_PTHREAD_SEMANTICS 70CFLAGS.SunOS+= -D_POSIX_PTHREAD_SEMANTICS
71 71
72UNLIMIT_RESOURCES+= cputime datasize virtualsize 72UNLIMIT_RESOURCES+= cputime datasize virtualsize
73 73
74TEST_TARGET= check 74TEST_TARGET= check
75 75
76# bin/* lib/*, but names vary 76# bin/* lib/*, but names vary
77CHECK_RELRO_SUPPORTED= no 77CHECK_RELRO_SUPPORTED= no
78CHECK_SSP_SUPPORTED= no 78CHECK_SSP_SUPPORTED= no
79 79
80.include "../../mk/bsd.prefs.mk" 80.include "../../mk/bsd.prefs.mk"
81 81
82.if !empty(MACHINE_PLATFORM:MNetBSD-*-powerpc) || \ 82.if !empty(MACHINE_PLATFORM:MNetBSD-*-powerpc) || \
83 !empty(MACHINE_PLATFORM:MNetBSD-*-earmv7hf) || \ 83 !empty(MACHINE_PLATFORM:MNetBSD-*-earmv7hf) || \
84 !empty(TARGET:Marmv7-unknown-netbsd-eabihf) 84 !empty(TARGET:Marmv7-unknown-netbsd-eabihf)
85# Bootstrapping on NetBSD/powerpc requires no debug-info from rustc 85# Bootstrapping on NetBSD/powerpc requires no debug-info from rustc
86# (both for amd64->powerpc built and powerpc->powerpc built bootstrap bits) 86# (both for amd64->powerpc built and powerpc->powerpc built bootstrap bits)
87# Also try to downsize the armv7 build. 87# Also try to downsize the armv7 build.
88CONFIGURE_ARGS+= --disable-debug 88CONFIGURE_ARGS+= --disable-debug
89CONFIGURE_ARGS+= --disable-debug-assertions 89CONFIGURE_ARGS+= --disable-debug-assertions
90CONFIGURE_ARGS+= --disable-llvm-release-debuginfo 90CONFIGURE_ARGS+= --disable-llvm-release-debuginfo
91CONFIGURE_ARGS+= --debuginfo-level=0 91CONFIGURE_ARGS+= --debuginfo-level=0
92CONFIGURE_ARGS+= --debuginfo-level-rustc=0 92CONFIGURE_ARGS+= --debuginfo-level-rustc=0
93CONFIGURE_ARGS+= --debuginfo-level-std=0 93CONFIGURE_ARGS+= --debuginfo-level-std=0
94CONFIGURE_ARGS+= --debuginfo-level-tools=0 94CONFIGURE_ARGS+= --debuginfo-level-tools=0
95CONFIGURE_ARGS+= --debuginfo-level-tests=0 95CONFIGURE_ARGS+= --debuginfo-level-tests=0
96.endif 96.endif
97 97
98# Only build the ARM target on/for this host, due to resource constraints 98# Only build the ARM target on/for this host, due to resource constraints
99.if !empty(MACHINE_PLATFORM:MNetBSD-*-earmv7hf) 99.if !empty(MACHINE_PLATFORM:MNetBSD-*-earmv7hf)
100CONFIGURE_ARGS+= --set llvm.targets="ARM" 100CONFIGURE_ARGS+= --set llvm.targets="ARM"
101.endif 101.endif
102# When cross-building for ARM on X86, X86 needs to go along due 102# When cross-building for ARM on X86, X86 needs to go along due
103# to 2-stage build process 103# to 2-stage build process
104.if !empty(TARGET:Marmv7-unknown-netbsd-eabihf) 104.if !empty(TARGET:Marmv7-unknown-netbsd-eabihf)
105CONFIGURE_ARGS+= --set llvm.targets="ARM;X86" 105CONFIGURE_ARGS+= --set llvm.targets="ARM;X86"
106.endif 106.endif
107 107
108.if ${OPSYS} == "NetBSD" 108.if ${OPSYS} == "NetBSD"
109# This block contains information about known trouble on NetBSD and workarounds. 109# This block contains information about known trouble on NetBSD and workarounds.
110 110
111# Parallel builds failed on NetBSD due to dynamic linker locking bugs. 111# Parallel builds failed on NetBSD due to dynamic linker locking bugs.
112# \todo Explain if the build is believed to be sound if not parallel, 112# \todo Explain if the build is believed to be sound if not parallel,
113# or if a non-parallel build is merely more likely to work. 113# or if a non-parallel build is merely more likely to work.
114# 114#
115# See toolchain/54192 at 115# See toolchain/54192 at
116# http://gnats.netbsd.org/cgi-bin/query-pr-single.pl?number=54192 116# http://gnats.netbsd.org/cgi-bin/query-pr-single.pl?number=54192
117# which was fixed in -current on 2020-04-19: 117# which was fixed in -current on 2020-04-19:
118# http://mail-index.netbsd.org/source-changes/2020/04/16/msg116256.html 118# http://mail-index.netbsd.org/source-changes/2020/04/16/msg116256.html
119# http://mail-index.netbsd.org/source-changes/2020/04/19/msg116337.html 119# http://mail-index.netbsd.org/source-changes/2020/04/19/msg116337.html
120# These were pulled up to netbsd-9 on 2020-05-13: 120# These were pulled up to netbsd-9 on 2020-05-13:
121# http://releng.netbsd.org/cgi-bin/req-9.cgi?show=907 121# http://releng.netbsd.org/cgi-bin/req-9.cgi?show=907
122# This has not been pulled up to netbsd-8 122# This has not been pulled up to netbsd-8
123# \todo Explain if it's not applicable, shouldn't be pulled up, should be 123# \todo Explain if it's not applicable, shouldn't be pulled up, should be
124# but hasn't, is too hard, etc. 124# but hasn't, is too hard, etc.
125# 125#
126# On pkgbuild for 2020Q1 9.0_RELEASE amd64, rust did not build despite 126# On pkgbuild for 2020Q1 9.0_RELEASE amd64, rust did not build despite
127# MAKE_JOBS_SAFE=no, but setting MAKE_JOBS=1 resulted in success. (No 127# MAKE_JOBS_SAFE=no, but setting MAKE_JOBS=1 resulted in success. (No
128# PR is open for this.) \todo Understand and fix. 128# PR is open for this.) \todo Understand and fix.
129# 129#
130# If we aren't on 9-current, and are on 8.x or 9.x, avoid parallel. 130# If we aren't on 9-current, and are on 8.x or 9.x, avoid parallel.
131# \todo Consider avoiding setting this on netbsd-9 past the fix. 131# \todo Consider avoiding setting this on netbsd-9 past the fix.
132. if ${MACHINE_PLATFORM:MNetBSD-[1-9].*} && !${MACHINE_PLATFORM:MNetBSD-9.99.*} 132. if ${MACHINE_PLATFORM:MNetBSD-[1-9].*} && !${MACHINE_PLATFORM:MNetBSD-9.99.*}
133MAKE_JOBS_SAFE= no 133MAKE_JOBS_SAFE= no
134. endif 134. endif
135 135
136# Open PRs 136# Open PRs
137# 137#
138# Broken package with PREFIX not /usr/pkg: 138# Broken package with PREFIX not /usr/pkg:
139# http://gnats.netbsd.org/cgi-bin/query-pr-single.pl?number=54453 139# http://gnats.netbsd.org/cgi-bin/query-pr-single.pl?number=54453
140# 140#
141 141
142.endif 142.endif
143 143
144# 144#
145# Under NetBSD, do not use DT_RUNPATH 145# Under NetBSD, do not use DT_RUNPATH
146# 146#
147BUILDLINK_TRANSFORM.NetBSD+= rm:-Wl,--enable-new-dtags 147BUILDLINK_TRANSFORM.NetBSD+= rm:-Wl,--enable-new-dtags
148 148
149.PHONY: pre-build-fix 149.PHONY: pre-build-fix
150# 150#
151# Rust unfortunately requires itself to build. On platforms which aren't 151# Rust unfortunately requires itself to build. On platforms which aren't
152# supported by upstream (where they offer binary bootstraps), or where we do 152# supported by upstream (where they offer binary bootstraps), or where we do
153# not trust random binaries from the Internet, we need to build and provide our 153# not trust random binaries from the Internet, we need to build and provide our
154# own bootstrap. See the stage0-bootstrap below for more details. 154# own bootstrap. See the stage0-bootstrap below for more details.
155# 155#
156DISTFILES:= ${DEFAULT_DISTFILES} 156DISTFILES:= ${DEFAULT_DISTFILES}
157 157
158.if !empty(MACHINE_PLATFORM:MDarwin-*-x86_64) || make(distinfo) || make (makesum) || make(mdi) 158.if !empty(MACHINE_PLATFORM:MDarwin-*-x86_64) || make(distinfo) || make (makesum) || make(mdi)
159RUST_STAGE0_VER= 1.48.0 159RUST_STAGE0_VER= 1.48.0
160RUST_ARCH:= x86_64-apple-darwin 160RUST_ARCH:= x86_64-apple-darwin
161RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz 161RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
162RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz 162RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
163DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0} 163DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
164pre-build-fix: 164pre-build-fix:
165.endif 165.endif
166.if !empty(MACHINE_PLATFORM:MLinux-*-i386) || make(distinfo) || make (makesum) || make(mdi) 166.if !empty(MACHINE_PLATFORM:MLinux-*-i386) || make(distinfo) || make (makesum) || make(mdi)
167RUST_STAGE0_VER= 1.48.0 167RUST_STAGE0_VER= 1.48.0
168RUST_ARCH:= i686-unknown-linux-gnu 168RUST_ARCH:= i686-unknown-linux-gnu
169RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz 169RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
170RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz 170RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
171DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0} 171DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
172pre-build-fix: 172pre-build-fix:
173.endif 173.endif
174.if !empty(MACHINE_PLATFORM:MLinux-*-x86_64) || make(distinfo) || make (makesum) || make(mdi) 174.if !empty(MACHINE_PLATFORM:MLinux-*-x86_64) || make(distinfo) || make (makesum) || make(mdi)
175RUST_STAGE0_VER= 1.48.0 175RUST_STAGE0_VER= 1.48.0
176RUST_ARCH:= x86_64-unknown-linux-gnu 176RUST_ARCH:= x86_64-unknown-linux-gnu
177RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz 177RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
178RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz 178RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
179DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0} 179DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
180pre-build-fix: 180pre-build-fix:
181.endif 181.endif
182# 182#
183# The SunOS target defaults to illumos as that's what the current bootstraps 183# The SunOS target defaults to illumos as that's what the current bootstraps
184# are built on. If you wish to target Oracle Solaris you'll need to create an 184# are built on. If you wish to target Oracle Solaris you'll need to create an
185# x86_64-sun-solaris bootstrap and comment out the overrides. 185# x86_64-sun-solaris bootstrap and comment out the overrides.
186# 186#
187.if !empty(MACHINE_PLATFORM:MSunOS-*-x86_64) || make(distinfo) || make (makesum) || make(mdi) 187.if !empty(MACHINE_PLATFORM:MSunOS-*-x86_64) || make(distinfo) || make (makesum) || make(mdi)
188RUST_STAGE0_VER= 1.48.0 188RUST_STAGE0_VER= 1.48.0
189RUST_ARCH:= x86_64-unknown-illumos 189RUST_ARCH:= x86_64-unknown-illumos
190RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz 190RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
191SITES.${RUST_STAGE0}= https://us-east.manta.joyent.com/pkgsrc/public/pkg-bootstraps/ 191SITES.${RUST_STAGE0}= https://us-east.manta.joyent.com/pkgsrc/public/pkg-bootstraps/
192DISTFILES:= ${DISTFILES} ${RUST_STAGE0} 192DISTFILES:= ${DISTFILES} ${RUST_STAGE0}
193RUST_BOOTSTRAP_PATH?= ${WRKDIR}/rust-${RUST_STAGE0_VER}-${RUST_ARCH} 193RUST_BOOTSTRAP_PATH?= ${WRKDIR}/rust-${RUST_STAGE0_VER}-${RUST_ARCH}
194# Override default "x86_64-sun-solaris" selection 194# Override default "x86_64-sun-solaris" selection
195CONFIGURE_ARGS+= --set=target.${RUST_ARCH}.llvm-config=${LLVM_CONFIG_PATH} 195CONFIGURE_ARGS+= --set=target.${RUST_ARCH}.llvm-config=${LLVM_CONFIG_PATH}
196CONFIGURE_ARGS+= --build=${RUST_ARCH} 196CONFIGURE_ARGS+= --build=${RUST_ARCH}
197CONFIGURE_ARGS+= --host=${RUST_ARCH} 197CONFIGURE_ARGS+= --host=${RUST_ARCH}
198CONFIGURE_ARGS+= --target=${RUST_ARCH} 198CONFIGURE_ARGS+= --target=${RUST_ARCH}
199pre-build-fix: 199pre-build-fix:
200.endif 200.endif
201.if !empty(MACHINE_PLATFORM:MFreeBSD-*-i386) || make(distinfo) || make (makesum) || make(mdi) 201.if !empty(MACHINE_PLATFORM:MFreeBSD-*-i386) || make(distinfo) || make (makesum) || make(mdi)
202RUST_STAGE0_VER= 1.48.0 202RUST_STAGE0_VER= 1.48.0
203RUST_ARCH:= i686-unknown-freebsd 203RUST_ARCH:= i686-unknown-freebsd
204RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz 204RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
205RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz 205RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
206DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0} 206DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
207pre-build-fix: 207pre-build-fix:
208.endif 208.endif
209.if !empty(MACHINE_PLATFORM:MFreeBSD-*-x86_64) || make(distinfo) || make (makesum) || make(mdi) 209.if !empty(MACHINE_PLATFORM:MFreeBSD-*-x86_64) || make(distinfo) || make (makesum) || make(mdi)
210RUST_STAGE0_VER= 1.48.0 210RUST_STAGE0_VER= 1.48.0
211RUST_ARCH:= x86_64-unknown-freebsd 211RUST_ARCH:= x86_64-unknown-freebsd
212RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz 212RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
213RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz 213RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
214DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0} 214DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
215pre-build-fix: 215pre-build-fix:
216.endif 216.endif
217.if !empty(MACHINE_PLATFORM:MNetBSD-*-i386) || make(distinfo) || make (makesum) || make(mdi) 217.if !empty(MACHINE_PLATFORM:MNetBSD-*-i386) || make(distinfo) || make (makesum) || make(mdi)
218RUST_STAGE0_VER= 1.48.0 218RUST_STAGE0_VER= 1.48.0
219RUST_ARCH= i686-unknown-netbsd 219RUST_ARCH= i686-unknown-netbsd
220RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz 220RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
221RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz 221RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
222SITES.${RUST_STAGE0}= ${MASTER_SITE_LOCAL:=rust/} 222SITES.${RUST_STAGE0}= ${MASTER_SITE_LOCAL:=rust/}
223SITES.${RUST_STD_STAGE0}= ${MASTER_SITE_LOCAL:=rust/} 223SITES.${RUST_STD_STAGE0}= ${MASTER_SITE_LOCAL:=rust/}
224DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0} 224DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
225# Setting this changes it for every distfile, which doesn't match what is 225# Setting this changes it for every distfile, which doesn't match what is
226# currently in distinfo. 226# currently in distinfo.
227#DIST_SUBDIR= ${PKGNAME} 227#DIST_SUBDIR= ${PKGNAME}
228# For atomic ops 228# For atomic ops
229CFLAGS+= -march=i586 229CFLAGS+= -march=i586
230pre-build-fix: 230pre-build-fix:
231 ${TOOLS_PLATFORM.paxctl} +am ${WRKDIR}/rust-bootstrap/bin/cargo 231 ${TOOLS_PLATFORM.paxctl} +am ${WRKDIR}/rust-bootstrap/bin/cargo
232 ${TOOLS_PLATFORM.paxctl} +am ${WRKDIR}/rust-bootstrap/bin/rustc 232 ${TOOLS_PLATFORM.paxctl} +am ${WRKDIR}/rust-bootstrap/bin/rustc
233.endif 233.endif
234.if !empty(MACHINE_PLATFORM:MNetBSD-*-x86_64) || make(distinfo) || make (makesum) || make(mdi) 234.if !empty(MACHINE_PLATFORM:MNetBSD-*-x86_64) || make(distinfo) || make (makesum) || make(mdi)
235RUST_STAGE0_VER= 1.48.0 235RUST_STAGE0_VER= 1.48.0
236RUST_ARCH= x86_64-unknown-netbsd 236RUST_ARCH= x86_64-unknown-netbsd
237RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz 237RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
238RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz 238RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
239DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0} 239DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
240pre-build-fix: 240pre-build-fix:
241.endif 241.endif
242.if !empty(MACHINE_PLATFORM:MNetBSD-*-powerpc) || make(distinfo) || make (makesum) || make(mdi) 242.if !empty(MACHINE_PLATFORM:MNetBSD-*-powerpc) || make(distinfo) || make (makesum) || make(mdi)
243RUST_STAGE0_VER= 1.48.0 243RUST_STAGE0_VER= 1.48.0
244RUST_ARCH= powerpc-unknown-netbsd 244RUST_ARCH= powerpc-unknown-netbsd
245 245
246# Cross-built against NetBSD 9.0 246# Cross-built against NetBSD 9.0
247. if empty(OS_VERSION:M8.*) || make(distinfo) || make(makesum) || make(mdi) 247. if empty(OS_VERSION:M8.*) || make(distinfo) || make(makesum) || make(mdi)
248RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}90.tar.gz 248RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}90.tar.gz
249RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}90.tar.gz 249RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}90.tar.gz
250DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0} 250DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
251SITES.${RUST_STAGE0}= ${MASTER_SITE_LOCAL:=rust/} 251SITES.${RUST_STAGE0}= ${MASTER_SITE_LOCAL:=rust/}
252SITES.${RUST_STD_STAGE0}= ${MASTER_SITE_LOCAL:=rust/} 252SITES.${RUST_STD_STAGE0}= ${MASTER_SITE_LOCAL:=rust/}
253. endif 253. endif
254 254
255# Cross-built against NetBSD 8.0 255# Cross-built against NetBSD 8.0
256. if !empty(OS_VERSION:M8.*) || make(distinfo) || make(makesum) || make(mdi) 256. if !empty(OS_VERSION:M8.*) || make(distinfo) || make(makesum) || make(mdi)
257RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz 257RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
258RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz 258RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
259DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0} 259DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
260SITES.${RUST_STAGE0}= ${MASTER_SITE_LOCAL:=rust/} 260SITES.${RUST_STAGE0}= ${MASTER_SITE_LOCAL:=rust/}
261SITES.${RUST_STD_STAGE0}= ${MASTER_SITE_LOCAL:=rust/} 261SITES.${RUST_STD_STAGE0}= ${MASTER_SITE_LOCAL:=rust/}
262. endif 262. endif
263 263
264pre-build-fix: 264pre-build-fix:
265.endif 265.endif
266.if !empty(MACHINE_PLATFORM:MNetBSD-*-aarch64) || make(distinfo) || make (makesum) || make(mdi) 266.if !empty(MACHINE_PLATFORM:MNetBSD-*-aarch64) || make(distinfo) || make (makesum) || make(mdi)
267RUST_STAGE0_VER= 1.48.0 267RUST_STAGE0_VER= 1.48.0
268RUST_ARCH= aarch64-unknown-netbsd 268RUST_ARCH= aarch64-unknown-netbsd
269RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz 269RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
270RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz 270RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
271DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0} 271DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
272SITES.${RUST_STAGE0}= ${MASTER_SITE_LOCAL:=rust/} 272SITES.${RUST_STAGE0}= ${MASTER_SITE_LOCAL:=rust/}
273SITES.${RUST_STD_STAGE0}= ${MASTER_SITE_LOCAL:=rust/} 273SITES.${RUST_STD_STAGE0}= ${MASTER_SITE_LOCAL:=rust/}
274pre-build-fix: 274pre-build-fix:
275.endif 275.endif
276.if !empty(MACHINE_PLATFORM:MNetBSD-*-sparc64) || make(distinfo) || make (makesum) || make(mdi) 276.if !empty(MACHINE_PLATFORM:MNetBSD-*-sparc64) || make(distinfo) || make (makesum) || make(mdi)
277RUST_STAGE0_VER= 1.48.0 277RUST_STAGE0_VER= 1.48.0
278RUST_ARCH= sparc64-unknown-netbsd 278RUST_ARCH= sparc64-unknown-netbsd
279RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz 279RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
280RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz 280RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
281DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0} 281DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
282SITES.${RUST_STAGE0}= ${MASTER_SITE_LOCAL:=rust/} 282SITES.${RUST_STAGE0}= ${MASTER_SITE_LOCAL:=rust/}
283SITES.${RUST_STD_STAGE0}= ${MASTER_SITE_LOCAL:=rust/} 283SITES.${RUST_STD_STAGE0}= ${MASTER_SITE_LOCAL:=rust/}
284pre-build-fix: 284pre-build-fix:
285.endif 285.endif
286.if !empty(MACHINE_PLATFORM:MNetBSD-*-earmv7hf) || make(distinfo) || make (makesum) || make(mdi) 286.if !empty(MACHINE_PLATFORM:MNetBSD-*-earmv7hf) || make(distinfo) || make (makesum) || make(mdi)
287RUST_ARCH= armv7-unknown-netbsd-eabihf 287RUST_ARCH= armv7-unknown-netbsd-eabihf
288RUST_STAGE0_VER= 1.48.0 288RUST_STAGE0_VER= 1.48.0
289RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz 289RUST_STAGE0:= rust-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
290RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz 290RUST_STD_STAGE0:= rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}.tar.gz
291DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0} 291DISTFILES:= ${DISTFILES} ${RUST_STAGE0} ${RUST_STD_STAGE0}
292SITES.${RUST_STAGE0}= ${MASTER_SITE_LOCAL:=rust/} 292SITES.${RUST_STAGE0}= ${MASTER_SITE_LOCAL:=rust/}
293SITES.${RUST_STD_STAGE0}= ${MASTER_SITE_LOCAL:=rust/} 293SITES.${RUST_STD_STAGE0}= ${MASTER_SITE_LOCAL:=rust/}
294pre-build-fix: 294pre-build-fix:
295.endif 295.endif
296 296
297# You may override RUST_BOOTSTRAP_PATH and RUST_ARCH in mk.conf 297# You may override RUST_BOOTSTRAP_PATH and RUST_ARCH in mk.conf
298# if you have a local bootstrap compiler. 298# if you have a local bootstrap compiler.
299.if !defined(RUST_ARCH) && !defined(RUST_BOOTSTRAP_PATH) 299.if !defined(RUST_ARCH) && !defined(RUST_BOOTSTRAP_PATH)
300NOT_FOR_PLATFORM+= ${MACHINE_PLATFORM} 300NOT_FOR_PLATFORM+= ${MACHINE_PLATFORM}
301.else 301.else
302RUST_BOOTSTRAP_PATH?= ${WRKDIR}/rust-bootstrap 302RUST_BOOTSTRAP_PATH?= ${WRKDIR}/rust-bootstrap
303.endif 303.endif
304 304
305.if ${OPSYS} == "SunOS" 305.if ${OPSYS} == "SunOS"
306BUILD_DEPENDS+= coreutils>=0:../../sysutils/coreutils 306BUILD_DEPENDS+= coreutils>=0:../../sysutils/coreutils
307BUILD_DEPENDS+= gzip>=0:../../archivers/gzip 307BUILD_DEPENDS+= gzip>=0:../../archivers/gzip
308TOOLS_CREATE+= md5sum 308TOOLS_CREATE+= md5sum
309TOOLS_PATH.md5sum= ${PREFIX}/bin/gmd5sum 309TOOLS_PATH.md5sum= ${PREFIX}/bin/gmd5sum
310TOOLS_PLATFORM.gzcat= ${PREFIX}/bin/gzip -cd 310TOOLS_PLATFORM.gzcat= ${PREFIX}/bin/gzip -cd
311.endif 311.endif
312 312
313SUBST_CLASSES+= rpath 313SUBST_CLASSES+= rpath
314SUBST_STAGE.rpath= pre-configure 314SUBST_STAGE.rpath= pre-configure
315SUBST_FILES.rpath+= compiler/rustc_codegen_ssa/src/back/linker.rs 315SUBST_FILES.rpath+= compiler/rustc_codegen_ssa/src/back/linker.rs
316SUBST_FILES.rpath+= compiler/rustc_target/src/spec/netbsd_base.rs 316SUBST_FILES.rpath+= compiler/rustc_target/src/spec/netbsd_base.rs
317SUBST_FILES.rpath+= src/bootstrap/builder.rs 317SUBST_FILES.rpath+= src/bootstrap/builder.rs
318SUBST_FILES.rpath+= src/bootstrap/compile.rs 318SUBST_FILES.rpath+= src/bootstrap/compile.rs
319SUBST_VARS.rpath= PREFIX 319SUBST_VARS.rpath= PREFIX
320 320
321# 321#
322# Generate list of subst entries for various .cargo-checksum.json files. These 322# Generate list of subst entries for various .cargo-checksum.json files. These
323# are all handled together in one big substitution to simplify things rather 323# are all handled together in one big substitution to simplify things rather
324# than one substitution entry per file, but are kept separate below to ease 324# than one substitution entry per file, but are kept separate below to ease
325# updating and verification. 325# updating and verification.
326# 326#
327CKSUM_CRATES+= vendor/libc 327CKSUM_CRATES+= vendor/libc
328CKSUMS+= 0134ce769d06b1b1f50ad15d1aa7bd8d44bcd2f66c6318dd906de8bc4a4044c7 328CKSUMS+= 0134ce769d06b1b1f50ad15d1aa7bd8d44bcd2f66c6318dd906de8bc4a4044c7
329CKSUMS+= 1107d18986be8af262f7a7c14761a9faf0228dc8a773379b9d7e8d2f711b3f37 329CKSUMS+= 1107d18986be8af262f7a7c14761a9faf0228dc8a773379b9d7e8d2f711b3f37
330 330
331CKSUM_CRATES+= vendor/lzma-sys 331CKSUM_CRATES+= vendor/lzma-sys
332CKSUMS+= 6fd5e9245db34c6f557b8bfcaf03db82fc88c3b06dbfbb5f03b2bcd138983ef9 332CKSUMS+= 6fd5e9245db34c6f557b8bfcaf03db82fc88c3b06dbfbb5f03b2bcd138983ef9
333CKSUMS+= 5e252578b5d266f6a4c8dc9f71ca7a91536ccb8c5c7d7753b82f12ec886459ef 333CKSUMS+= 5e252578b5d266f6a4c8dc9f71ca7a91536ccb8c5c7d7753b82f12ec886459ef
334 334
335CKSUM_CRATES+= vendor/stacker 335CKSUM_CRATES+= vendor/stacker
336CKSUMS+= cee329550bad2ed1182abb71db9c24558a91b12e1eab8d9a48e23b997bb8f04e 336CKSUMS+= cee329550bad2ed1182abb71db9c24558a91b12e1eab8d9a48e23b997bb8f04e
337CKSUMS+= 79915b243d02df1dc698f5c2de3a9356c6c296d2dedb06d9035dbcc2f8972cf4 337CKSUMS+= 79915b243d02df1dc698f5c2de3a9356c6c296d2dedb06d9035dbcc2f8972cf4
338 338
339CKSUM_CRATES+= vendor/net2 339CKSUM_CRATES+= vendor/net2
340CKSUMS+= fd072307ebbaa01cfe1fd7553d7f42d27093b2bd32dd81d419d2e1c9423495a0 340CKSUMS+= fd072307ebbaa01cfe1fd7553d7f42d27093b2bd32dd81d419d2e1c9423495a0
341CKSUMS+= 9e146a847e1f726fa7d7eae224aaa925030287f99770f950a012cb398e088d12 341CKSUMS+= 9e146a847e1f726fa7d7eae224aaa925030287f99770f950a012cb398e088d12
342 342
343CKSUM_CRATES+= vendor/openssl-src 343CKSUM_CRATES+= vendor/openssl-src
344CKSUMS+= 03dcdaac7de880b860ecfe859ba2ac3e46c8f46a7bf948aa674147eebee421b0 344CKSUMS+= 03dcdaac7de880b860ecfe859ba2ac3e46c8f46a7bf948aa674147eebee421b0
345CKSUMS+= 41ab6811d4ffde68f245e5097081ba8052a07a4b86df69a356ba11205e7e2210 345CKSUMS+= 41ab6811d4ffde68f245e5097081ba8052a07a4b86df69a356ba11205e7e2210
346 346
347SUBST_CLASSES+= cksum 347SUBST_CLASSES+= cksum
348SUBST_STAGE.cksum= pre-configure 348SUBST_STAGE.cksum= pre-configure
349.for crate in ${CKSUM_CRATES} 349.for crate in ${CKSUM_CRATES}
350SUBST_FILES.cksum+= ${crate}/.cargo-checksum.json 350SUBST_FILES.cksum+= ${crate}/.cargo-checksum.json
351.endfor 351.endfor
352.for from to in ${CKSUMS} 352.for from to in ${CKSUMS}
353SUBST_SED.cksum+= -e 's,${from},${to},g' 353SUBST_SED.cksum+= -e 's,${from},${to},g'
354.endfor 354.endfor
355 355
356post-extract: 356post-extract:
357 set -e; \ 357 set -e; \
358 if ${TEST} -e ${WRKDIR}/rust-${RUST_STAGE0_VER}-${RUST_ARCH}/install.sh \ 358 if ${TEST} -e ${WRKDIR}/rust-${RUST_STAGE0_VER}-${RUST_ARCH}/install.sh \
359 -a ! -e ${RUST_BOOTSTRAP_PATH}/bin/rustc; then \ 359 -a ! -e ${RUST_BOOTSTRAP_PATH}/bin/rustc; then \
360 cd ${WRKDIR}/rust-${RUST_STAGE0_VER}-${RUST_ARCH}; \ 360 cd ${WRKDIR}/rust-${RUST_STAGE0_VER}-${RUST_ARCH}; \
361 ${TOOLS_BASH} ./install.sh --prefix=${RUST_BOOTSTRAP_PATH}; \ 361 ${TOOLS_BASH} ./install.sh --prefix=${RUST_BOOTSTRAP_PATH}; \
362 cd ${WRKDIR}/rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}; \ 362 cd ${WRKDIR}/rust-std-${RUST_STAGE0_VER}-${RUST_ARCH}; \
363 ${TOOLS_BASH} ./install.sh --prefix=${RUST_BOOTSTRAP_PATH}; \ 363 ${TOOLS_BASH} ./install.sh --prefix=${RUST_BOOTSTRAP_PATH}; \
364 fi 364 fi
365.if ${OPSYS} == "NetBSD" 365.if ${OPSYS} == "NetBSD"
366 SDIR=${WRKDIR}/scripts; \ 366 SDIR=${WRKDIR}/scripts; \
367 ${MKDIR} $${SDIR}; \ 367 ${MKDIR} $${SDIR}; \
368 cd $${SDIR}; \ 368 cd $${SDIR}; \
369 ${RM} -f c++-wrap; \ 369 ${RM} -f c++-wrap; \
370 ${RM} -f clang++-wrap; \ 370 ${RM} -f clang++-wrap; \
371 ${RM} -f clang-wrap; \ 371 ${RM} -f clang-wrap; \
372 ${CP} ${.CURDIR}/files/gcc-wrap .; \ 372 ${CP} ${.CURDIR}/files/gcc-wrap .; \
373 ${CHMOD} +x gcc-wrap; \ 373 ${CHMOD} +x gcc-wrap; \
374 ${LN} -s gcc-wrap c++-wrap; \ 374 ${LN} -s gcc-wrap c++-wrap; \
375 ${LN} -s gcc-wrap clang++-wrap; \ 375 ${LN} -s gcc-wrap clang++-wrap; \
376 ${LN} -s gcc-wrap clang-wrap 376 ${LN} -s gcc-wrap clang-wrap
377.endif 377.endif
378 378
379.if ${OPSYS} == "FreeBSD" 379.if ${OPSYS} == "FreeBSD"
380MAKE_ENV+= OPENSSL_DIR=${SSLBASE} 380MAKE_ENV+= OPENSSL_DIR=${SSLBASE}
381.endif 381.endif
382 382
383.if ${OPSYS} == "NetBSD" && !empty(PKGSRC_COMPILER:Mclang) && !exists(/lib/libgcc_s.so) 383.if ${OPSYS} == "NetBSD" && !empty(PKGSRC_COMPILER:Mclang) && !exists(/lib/libgcc_s.so)
384BUILDLINK_TRANSFORM+= rm:-lgcc_s 384BUILDLINK_TRANSFORM+= rm:-lgcc_s
385MAKE_ENV+= PKGSRC_HAVE_LIBCPP=yes 385MAKE_ENV+= PKGSRC_HAVE_LIBCPP=yes
386.endif 386.endif
387 387
388pre-build: pre-build-fix 388pre-build: pre-build-fix
389.if ${OPSYS} == "NetBSD" && !empty(PKGSRC_COMPILER:Mclang) && !exists(/lib/libgcc_s.so) 389.if ${OPSYS} == "NetBSD" && !empty(PKGSRC_COMPILER:Mclang) && !exists(/lib/libgcc_s.so)
390 cp ${FILESDIR}/libgcc_s.so.1 ${RUST_BOOTSTRAP_PATH}/lib/. 390 cp ${FILESDIR}/libgcc_s.so.1 ${RUST_BOOTSTRAP_PATH}/lib/.
391.endif 391.endif
392 392
393# 393#
394# These are essentially copies of the "all", "test", and "install" Makefile 394# These are essentially copies of the "all", "test", and "install" Makefile
395# targets, but are duplicated here so that we can specify -j. 395# targets, but are duplicated here so that we can specify -j.
396# 396#
397do-build: 397do-build:
398 ${RUN}${_ULIMIT_CMD} \ 398 ${RUN}${_ULIMIT_CMD} \
399 cd ${WRKSRC} && \ 399 cd ${WRKSRC} && \
400 ${SETENV} ${MAKE_ENV} \ 400 ${SETENV} ${MAKE_ENV} \
401 sh -c "if [ \"${BUILD_TARGET}\" = \"dist\" ]; then \ 401 sh -c "if [ \"${BUILD_TARGET}\" = \"dist\" ]; then \
402 unset DESTDIR; \ 402 unset DESTDIR; \
403 ${PYTHONBIN} ./x.py -v \ 403 ${PYTHONBIN} ./x.py -v \
404 ${BUILD_TARGET} -j ${_MAKE_JOBS_N}; \ 404 ${BUILD_TARGET} -j ${_MAKE_JOBS_N}; \
405 else \ 405 else \
406 ${PYTHONBIN} ./x.py -v \ 406 ${PYTHONBIN} ./x.py -v \
407 ${BUILD_TARGET} --stage 2 -j ${_MAKE_JOBS_N} && \ 407 ${BUILD_TARGET} --stage 2 -j ${_MAKE_JOBS_N} && \
408 ${PYTHONBIN} ./x.py -v \ 408 ${PYTHONBIN} ./x.py -v \
409 doc --stage 2 -j ${_MAKE_JOBS_N}; \ 409 doc --stage 2 -j ${_MAKE_JOBS_N}; \
410 fi" 410 fi"
411 411
412do-test: 412do-test:
413 ${RUN}${_ULIMIT_CMD} \ 413 ${RUN}${_ULIMIT_CMD} \
414 cd ${WRKSRC} && \ 414 cd ${WRKSRC} && \
415 ${SETENV} ${MAKE_ENV} \ 415 ${SETENV} ${MAKE_ENV} \
416 ${PYTHONBIN} ./x.py -v test -j ${_MAKE_JOBS_N} 416 ${PYTHONBIN} ./x.py -v test -j ${_MAKE_JOBS_N}
417 417
418do-install: 418do-install:
419 ${RUN}${_ULIMIT_CMD} \ 419 ${RUN}${_ULIMIT_CMD} \
420 cd ${WRKSRC} && \ 420 cd ${WRKSRC} && \
421 ${SETENV} ${MAKE_ENV} ${INSTALL_ENV} \ 421 ${SETENV} ${MAKE_ENV} ${INSTALL_ENV} \
422 ${PYTHONBIN} ./x.py -v install -j ${_MAKE_JOBS_N} 422 ${PYTHONBIN} ./x.py -v install -j ${_MAKE_JOBS_N}
423 423
424.if ${OPSYS} == "Darwin" 424.if ${OPSYS} == "Darwin"
425.PHONY: fix-darwin-install-name 425.PHONY: fix-darwin-install-name
426post-install: fix-darwin-install-name 426post-install: fix-darwin-install-name
427fix-darwin-install-name: 427fix-darwin-install-name:
428 for f in ${DESTDIR}${PREFIX}/lib/librustc_macros-*.dylib \ 428 for f in ${DESTDIR}${PREFIX}/lib/librustc_macros-*.dylib \
429 ${DESTDIR}${PREFIX}/lib/libtracing_attributes-*.dylib \ 429 ${DESTDIR}${PREFIX}/lib/libtracing_attributes-*.dylib \
430 ${DESTDIR}${PREFIX}/lib/libchalk_derive-*.dylib; do \ 430 ${DESTDIR}${PREFIX}/lib/libchalk_derive-*.dylib; do \
431 install_name_tool -id `${ECHO} $$f | ${SED} -e 's,${DESTDIR},,g'` $$f; \ 431 install_name_tool -id `${ECHO} $$f | ${SED} -e 's,${DESTDIR},,g'` $$f; \
432 done 432 done
433.endif 433.endif
434 434
435GENERATE_PLIST+= ${FIND} ${DESTDIR}${PREFIX} \( -type f -o -type l \) -print | \ 435GENERATE_PLIST+= ${FIND} ${DESTDIR}${PREFIX} \( -type f -o -type l \) -print | \
436 ${SED} -e 's,${DESTDIR}${PREFIX}/,,' | ${SORT} ; 436 ${SED} -e 's,${DESTDIR}${PREFIX}/,,' | ${SORT} ;
437 437
438# Create a relocatable stage2 bootstrap from the bits we just built that can be 438# Create a relocatable stage2 bootstrap from the bits we just built that can be
439# used to build the next version of rust. Currently only tested on SmartOS. 439# used to build the next version of rust. Currently only tested on SmartOS.
440# 440#
441# Use the alternate BOOTSTRAP_NAME when creating a nightly release. 441# Use the alternate BOOTSTRAP_NAME when creating a nightly release.
442# 442#
443#BOOTSTRAP_NAME= ${PKGNAME_NOREV:C/rust/rust-nightly/}-${RUST_ARCH} 443#BOOTSTRAP_NAME= ${PKGNAME_NOREV:C/rust/rust-nightly/}-${RUST_ARCH}
444BOOTSTRAP_NAME= ${PKGNAME_NOREV}-${RUST_ARCH} 444BOOTSTRAP_NAME= ${PKGNAME_NOREV}-${RUST_ARCH}
445BOOTSTRAP_TMPDIR= ${WRKDIR}/${BOOTSTRAP_NAME} 445BOOTSTRAP_TMPDIR= ${WRKDIR}/${BOOTSTRAP_NAME}
446USE_TOOLS+= gtar 446#USE_TOOLS+= bsdtar
447 447
448# The NetBSD part is so far untested, because I could not convince 448# The NetBSD part is so far untested, because I could not convince
449# the rust build to use the gcc wrapper when building natively, 449# the rust build to use the gcc wrapper when building natively,
450# so that I could get a placeholder in the RPATH, because chrpath 450# so that I could get a placeholder in the RPATH, because chrpath
451# cannot extend the length of the RPATH... 451# cannot extend the length of the RPATH...
452ELFEDIT?= /usr/bin/elfedit 452ELFEDIT?= /usr/bin/elfedit
453 453
454.PHONY: stage0-bootstrap 454.PHONY: stage0-bootstrap
455stage0-bootstrap: install 455stage0-bootstrap: install
456 ${RM} -rf ${BOOTSTRAP_TMPDIR} 456 ${RM} -rf ${BOOTSTRAP_TMPDIR}
457 ${MKDIR} ${BOOTSTRAP_TMPDIR} 457 ${MKDIR} ${BOOTSTRAP_TMPDIR}
458.if ${OPSYS} == "NetBSD" 458.if ${OPSYS} == "NetBSD"
459 (cd ${BOOTSTRAP_TMPDIR}; \ 459 (cd ${BOOTSTRAP_TMPDIR}; \
460 DISTDIR=${WRKSRC}/bild/dist; \ 460 DISTDIR=${WRKSRC}/bild/dist; \
461 VER_ARCH=${PKGVERSION}-${RUST_ARCH}; \ 461 VER_ARCH=${PKGVERSION}-${RUST_ARCH}; \
462 RUSTC=rustc-$${VER_ARCH}; \ 462 RUSTC=rustc-$${VER_ARCH}; \
463 RUSTC_FILE=$${RUSTC}.tar.gz; \ 463 RUSTC_FILE=$${RUSTC}.tar.gz; \
464 RUST_STD=rust-std-$${VER_ARCH}; \ 464 RUST_STD=rust-std-$${VER_ARCH}; \
465 RUST_STD_FILE=$${RUST_STD}.tar.gz; \ 465 RUST_STD_FILE=$${RUST_STD}.tar.gz; \
466 ${GTAR} -xzf $${DISTDIR}/$${RUSTC_FILE}; \ 466 ${GTAR} -xzf $${DISTDIR}/$${RUSTC_FILE}; \
467 (cd ${RUSTC}; \ 467 (cd ${RUSTC}; \
468 RPATH='/usr/pkg/lib:/lib:/usr/lib:$$ORIGIN/../lib'; \ 468 RPATH='/usr/pkg/lib:/lib:/usr/lib:$$ORIGIN/../lib'; \
469 for f in rls-preview/bin/rls rustc/bin/rustc rustc/bin/rustdoc; do \ 469 for f in rls-preview/bin/rls rustc/bin/rustc rustc/bin/rustdoc; do \
470 chrpath -r $$RPATH $$f; \ 470 chrpath -r $$RPATH $$f; \
471 done; \ 471 done; \
472 RPATH='/usr/pkg/lib:/lib:/usr/lib:$$ORIGIN'; \ 472 RPATH='/usr/pkg/lib:/lib:/usr/lib:$$ORIGIN'; \
473 for f in rustc/lib/*.so*; do \ 473 for f in rustc/lib/*.so*; do \
474 chrpath -r $$RPATH $$f; \ 474 chrpath -r $$RPATH $$f; \
475 done; \ 475 done; \
476 RPATH='/usr/pkg/lib:/lib:/usr/lib:$$ORIGIN:$$ORIGIN/../../..'; \ 476 RPATH='/usr/pkg/lib:/lib:/usr/lib:$$ORIGIN:$$ORIGIN/../../..'; \
477 for f in rustc/lib/rustlib/*/*/*.so*; do \ 477 for f in rustc/lib/rustlib/*/*/*.so*; do \
478 chrpath -r $$RPATH $$f; \ 478 chrpath -r $$RPATH $$f; \
479 done;); \ 479 done;); \
480 ${GTAR} -czf $${RUSTC_FILE} $${RUSTC}; \ 480 ${GTAR} -czf $${RUSTC_FILE} $${RUSTC}; \
481 ${CP} $${DISTDIR}/$${RUST_STD_FILE} .; \ 481 ${CP} $${DISTDIR}/$${RUST_STD_FILE} .; \
482 ${ECHO} "Fixed stage0 bootstrap in ${BOOTSTRAP_TMPDIR}:"; \ 482 ${ECHO} "Fixed stage0 bootstrap in ${BOOTSTRAP_TMPDIR}:"; \
483 ${ECHO} "$${RUSTC_FILE}"; \ 483 ${ECHO} "$${RUSTC_FILE}"; \
484 ${ECHO} "$${RUST_STD_FILE}"; \ 484 ${ECHO} "$${RUST_STD_FILE}"; \
485 ) 485 )
486.endif 486.endif
487.if ${OS_VARIANT} == "SmartOS" 487.if ${OS_VARIANT} == "SmartOS"
488 ${CP} -R ${DESTDIR}/${PREFIX}/bin ${BOOTSTRAP_TMPDIR}/ 488 ${CP} -R ${DESTDIR}/${PREFIX}/bin ${BOOTSTRAP_TMPDIR}/
489 ${CP} -R ${DESTDIR}/${PREFIX}/lib ${BOOTSTRAP_TMPDIR}/ 489 ${CP} -R ${DESTDIR}/${PREFIX}/lib ${BOOTSTRAP_TMPDIR}/
490 ${MKDIR} ${BOOTSTRAP_TMPDIR}/lib/pkgsrc 490 ${MKDIR} ${BOOTSTRAP_TMPDIR}/lib/pkgsrc
491 for lib in libgcc_s.so.1 libssp.so.0 libstdc++.so.6; do \ 491 for lib in libgcc_s.so.1 libssp.so.0 libstdc++.so.6; do \
492 ${CP} `${PKG_CC} -print-file-name=$${lib}` \ 492 ${CP} `${PKG_CC} -print-file-name=$${lib}` \
493 ${BOOTSTRAP_TMPDIR}/lib/pkgsrc/; \ 493 ${BOOTSTRAP_TMPDIR}/lib/pkgsrc/; \
494 done 494 done
495 # direct dependencies 495 # direct dependencies
496 for lib in libLLVM-10.so libcrypto.so.1.1 libcurl.so.4 \ 496 for lib in libLLVM-10.so libcrypto.so.1.1 libcurl.so.4 \
497 libssl.so.1.1 libz.so.1; do \ 497 libssl.so.1.1 libz.so.1; do \
498 ${CP} ${PREFIX}/lib/$${lib} ${BOOTSTRAP_TMPDIR}/lib/pkgsrc/; \ 498 ${CP} ${PREFIX}/lib/$${lib} ${BOOTSTRAP_TMPDIR}/lib/pkgsrc/; \
499 done 499 done
500 # libcurl dependencies 500 # libcurl dependencies
501 for lib in libiconv.so.2 libidn2.so.0 libintl.so.8 liblber-2.4.so.2 \ 501 for lib in libiconv.so.2 libidn2.so.0 libintl.so.8 liblber-2.4.so.2 \
502 libldap-2.4.so.2 libnghttp2.so.14 libsasl2.so.3 \ 502 libldap-2.4.so.2 libnghttp2.so.14 libsasl2.so.3 \
503 libssh2.so.1 libunistring.so.2; do \ 503 libssh2.so.1 libunistring.so.2; do \
504 ${CP} ${PREFIX}/lib/$${lib} ${BOOTSTRAP_TMPDIR}/lib/pkgsrc/; \ 504 ${CP} ${PREFIX}/lib/$${lib} ${BOOTSTRAP_TMPDIR}/lib/pkgsrc/; \
505 done 505 done
506 for f in ${BOOTSTRAP_TMPDIR}/bin/*; do \ 506 for f in ${BOOTSTRAP_TMPDIR}/bin/*; do \
507 /bin/file -b "$$f" | grep ^ELF >/dev/null || continue; \ 507 /bin/file -b "$$f" | grep ^ELF >/dev/null || continue; \
508 ${ELFEDIT} -e 'dyn:runpath $$ORIGIN/../lib:$$ORIGIN/../lib/pkgsrc' $$f; \ 508 ${ELFEDIT} -e 'dyn:runpath $$ORIGIN/../lib:$$ORIGIN/../lib/pkgsrc' $$f; \
509 done 509 done
510 for f in ${BOOTSTRAP_TMPDIR}/lib/pkgsrc/*.so*; do \ 510 for f in ${BOOTSTRAP_TMPDIR}/lib/pkgsrc/*.so*; do \
511 ${ELFEDIT} -e 'dyn:runpath $$ORIGIN' $$f; \ 511 ${ELFEDIT} -e 'dyn:runpath $$ORIGIN' $$f; \
512 done 512 done
513 for f in ${BOOTSTRAP_TMPDIR}/lib/*.so*; do \ 513 for f in ${BOOTSTRAP_TMPDIR}/lib/*.so*; do \
514 ${ELFEDIT} -e 'dyn:runpath $$ORIGIN:$$ORIGIN/pkgsrc' $$f; \ 514 ${ELFEDIT} -e 'dyn:runpath $$ORIGIN:$$ORIGIN/pkgsrc' $$f; \
515 done 515 done
516 for f in ${BOOTSTRAP_TMPDIR}/lib/rustlib/*/*/*.so*; do \ 516 for f in ${BOOTSTRAP_TMPDIR}/lib/rustlib/*/*/*.so*; do \
517 ${ELFEDIT} -e 'dyn:runpath $$ORIGIN:$$ORIGIN/../../..:$$ORIGIN/../../../pkgsrc' $$f; \ 517 ${ELFEDIT} -e 'dyn:runpath $$ORIGIN:$$ORIGIN/../../..:$$ORIGIN/../../../pkgsrc' $$f; \
518 done 518 done
519 (cd ${WRKDIR}; \ 519 (cd ${WRKDIR}; \
520 ${GTAR} -zcf ${BOOTSTRAP_NAME}.tar.gz ${BOOTSTRAP_NAME}) 520 ${GTAR} -zcf ${BOOTSTRAP_NAME}.tar.gz ${BOOTSTRAP_NAME})
521.endif 521.endif
522 522
523.include "options.mk" 523.include "options.mk"
524 524
525# These dependencies currently use the bundled sources as they require 525# These dependencies currently use the bundled sources as they require
526# development features not yet available in released versions. 526# development features not yet available in released versions.
527# 527#
528#.include "../../devel/libgit2/buildlink3.mk" 528#.include "../../devel/libgit2/buildlink3.mk"
529#.include "../../security/libssh2/buildlink3.mk" 529#.include "../../security/libssh2/buildlink3.mk"
530#.include "../../www/http-parser/buildlink3.mk" 530#.include "../../www/http-parser/buildlink3.mk"
531#.include "../../devel/jemalloc/buildlink3.mk" 531#.include "../../devel/jemalloc/buildlink3.mk"
532 532
533## Issues specific to: bootstrap AND NetBSD follow 533## Issues specific to: bootstrap AND NetBSD follow
534 534
535# (I wish this worked on powerpc, but it doesn't since 535# (I wish this worked on powerpc, but it doesn't since
536# I can't build with the internal LLVM, ref. 536# I can't build with the internal LLVM, ref.
537# https://github.com/rust-lang/rust/issues/65862) 537# https://github.com/rust-lang/rust/issues/65862)
538 538
539.if (${OPSYS} == "NetBSD") && \ 539.if (${OPSYS} == "NetBSD") && \
540 ((${MACHINE_ARCH} == "i386") || \ 540 ((${MACHINE_ARCH} == "i386") || \
541 (${MACHINE_ARCH} == "sparc64") || \ 541 (${MACHINE_ARCH} == "sparc64") || \
542 (${MACHINE_ARCH} == "powerpc")) \ 542 (${MACHINE_ARCH} == "powerpc")) \
543 && (empty(OS_VERSION:M[012345678].*) || \ 543 && (empty(OS_VERSION:M[012345678].*) || \
544 !empty(OS_VERSION:M8.99.*)) 544 !empty(OS_VERSION:M8.99.*))
545# Bootstrap kits are built on 8.0, so that a single bootstrap can run 545# Bootstrap kits are built on 8.0, so that a single bootstrap can run
546# on multiple systems. Thus later versions need the compat80 package. 546# on multiple systems. Thus later versions need the compat80 package.
547# \todo Explain why this is limited to a small list of architectures, 547# \todo Explain why this is limited to a small list of architectures,
548# and in particular why not x86_64. 548# and in particular why not x86_64.
549DEPENDS+= compat80>=0:../../emulators/compat80 549DEPENDS+= compat80>=0:../../emulators/compat80
550.endif 550.endif
551 551
552.if (${OPSYS} == "NetBSD") && \ 552.if (${OPSYS} == "NetBSD") && \
553 ((${MACHINE_ARCH} == "i386")) \ 553 ((${MACHINE_ARCH} == "i386")) \
554 && (empty(OS_VERSION:M[012345678].*) || \ 554 && (empty(OS_VERSION:M[012345678].*) || \
555 !empty(OS_VERSION:M8.99.*)) 555 !empty(OS_VERSION:M8.99.*))
556# Bootstrap kits use openssl, which on NetBSD 8 comes from pkgsrc. 556# Bootstrap kits use openssl, which on NetBSD 8 comes from pkgsrc.
557# Therefore the pkgsrc openssl libs need to be present as well. 557# Therefore the pkgsrc openssl libs need to be present as well.
558# The 1.44.1 i686 bootstrap links with pkgsrc openssl. The others do 558# The 1.44.1 i686 bootstrap links with pkgsrc openssl. The others do
559# not. When the package is built, 559# not. When the package is built,
560# cargo links against pkgsrc openssl, so it must be a run-time 560# cargo links against pkgsrc openssl, so it must be a run-time
561# dependency as well. Forcing USE_BUILTIN.openssl=no results in a 561# dependency as well. Forcing USE_BUILTIN.openssl=no results in a
562# mysterious heimdal error, but straight DEPENDS seems to result in a 562# mysterious heimdal error, but straight DEPENDS seems to result in a
563# satisfactory package build. 563# satisfactory package build.
564# While this is icky, it is for the time being better than no rust package. 564# While this is icky, it is for the time being better than no rust package.
565DEPENDS+= openssl>=1.1:../../security/openssl 565DEPENDS+= openssl>=1.1:../../security/openssl
566.endif 566.endif
567 567
568# This is for when we build natively: 568# This is for when we build natively:
569.if ((${OPSYS} == "NetBSD") && \ 569.if ((${OPSYS} == "NetBSD") && \
570 ((${MACHINE_ARCH} == "powerpc") || (${MACHINE_ARCH} == "i386"))) 570 ((${MACHINE_ARCH} == "powerpc") || (${MACHINE_ARCH} == "i386")))
571# LLVM needs libatomic for 64-bit atomics on powerpc and i386 571# LLVM needs libatomic for 64-bit atomics on powerpc and i386
572.include "../../devel/libatomic/buildlink3.mk" 572.include "../../devel/libatomic/buildlink3.mk"
573# Make those libraries available via a unique directory: 573# Make those libraries available via a unique directory:
574DEPENDS+= libatomic-links>=0:../../devel/libatomic-links 574DEPENDS+= libatomic-links>=0:../../devel/libatomic-links
575.endif 575.endif
576 576
577.include "../../devel/zlib/buildlink3.mk" 577.include "../../devel/zlib/buildlink3.mk"
578.include "../../lang/python/tool.mk" 578.include "../../lang/python/tool.mk"
579.include "../../mk/bsd.pkg.mk" 579.include "../../mk/bsd.pkg.mk"