Annotation of /trunk/extras/rust/rust-1.31.0-r1.smage2
Parent Directory | Revision Log
Revision 31822 -
(hide annotations)
(download)
Wed Dec 12 13:37:28 2018 UTC (5 years, 9 months ago) by niro
File size: 7736 byte(s)
Wed Dec 12 13:37:28 2018 UTC (5 years, 9 months ago) by niro
File size: 7736 byte(s)
auto added: ver bump to 1.31.0-r1
1 | niro | 31822 | # $Id$ |
2 | |||
3 | PNAME="rust" | ||
4 | PVER="1.31.0" | ||
5 | PBUILD="r1" | ||
6 | |||
7 | SPLIT_PACKAGES="rust cargo rustfmt rust-rls" | ||
8 | PCAT="dev-lang" | ||
9 | |||
10 | DESCRIPTION="Systems programming language focused on safety, speed and concurrency." | ||
11 | HOMEPAGE="https://www.rust-lang.org/" | ||
12 | |||
13 | # enable bootstrap of rust with prebuild binary rust | ||
14 | # 0=no, 1=yes | ||
15 | BOOTSTRAP=1 | ||
16 | |||
17 | # provided rust pver | ||
18 | RUST_PVER="${PVER}" | ||
19 | # provided pver of cargo, see src/tools/cargo/Cargo.toml | ||
20 | CARGO_PVER="0.32.0" | ||
21 | # provided pver of rls, see src/tools/rustfmt/Cargo.toml | ||
22 | RUSTFMT_PVER="1.0.0" | ||
23 | # provided pver of rls, see src/tools/rls/Cargo.toml | ||
24 | RLS_PVER="1.31.6" | ||
25 | |||
26 | # required pver of llvm and gcc | ||
27 | GCC_PVER="8.2.0" | ||
28 | LLVM_PVER="7.0.0" | ||
29 | |||
30 | COMMON_DEPEND=">= net-misc/curl-7 | ||
31 | >= dev-libs/openssl-1.1 | ||
32 | >= sys-libs/zlib-1.2 | ||
33 | >= net-libs/libssh2-1.8" | ||
34 | |||
35 | RUST_DEPEND=">= sys-libs/llvm-libs-${LLVM_PVER} | ||
36 | >= sys-libs/libstdc++-${GCC_PVER}" | ||
37 | |||
38 | CARGO_DEPEND="${COMMON_DEPEND}" | ||
39 | |||
40 | RUSTFMT_DEPEND=">= virtual/glibc | ||
41 | >= sys-libs/libgcc-${GCC_PVER}" | ||
42 | |||
43 | RUSTRLS_DEPEND="${COMMON_DEPEND}" | ||
44 | |||
45 | SDEPEND=">= sys-dev/llvm-${LLVM_PVER} | ||
46 | >= sys-dev/clang-${LLVM_PVER} | ||
47 | >= dev-lang/perl-5.28 | ||
48 | >= dev-lang/python-2.7 | ||
49 | >= dev-libs/libffi-3.2 | ||
50 | >= dev-libs/jemalloc-5.1 | ||
51 | >= dev-util/cmake-3.12 | ||
52 | >= dev-util/ninja-1.8 | ||
53 | ${RUST_DEPEND} | ||
54 | ${CARGO_DEPEND} | ||
55 | ${RUSTFMT_DEPEND} | ||
56 | ${RUSTRLS_DEPEND}" | ||
57 | |||
58 | if [[ ${BOOTSTRAP} = 0 ]] | ||
59 | then | ||
60 | # see src/stage0.txt | ||
61 | SDEPEND+=" | ||
62 | >= dev-lang/rust-1.30 | ||
63 | >= dev-lang/cargo-0.31" | ||
64 | fi | ||
65 | |||
66 | SRCFILE="${PNAME}c-${PVER}-src.tar.gz" | ||
67 | SRCDIR="${BUILDDIR}/${PNAME}c-${PVER}-src" | ||
68 | |||
69 | msetfeature "!check" | ||
70 | sminclude mbuild mtools | ||
71 | |||
72 | SRC_URI=( | ||
73 | https://static.rust-lang.org/dist/${SRCFILE} | ||
74 | mirror://${PNAME}/${SRCFILE} | ||
75 | ) | ||
76 | |||
77 | UP2SEPERATOR="\/" | ||
78 | UP2DATE="updatecmd https://github.com/rust-lang/rust/releases | highesttarball gz" | ||
79 | |||
80 | if [[ ${BOOTSTRAP} = 1 ]] | ||
81 | then | ||
82 | # see src/stage0.txt | ||
83 | RUSTBIN_PVER="1.30.0" | ||
84 | RUSTBIN_DATE="2018-10-25" | ||
85 | RUSTBIN_SRCFILE_x86_64="rustc-${RUSTBIN_PVER}-x86_64-unknown-linux-gnu.tar.gz" | ||
86 | RUSTBIN_SRCFILE_x86="rustc-${RUSTBIN_PVER}-i686-unknown-linux-gnu.tar.gz" | ||
87 | RUSTBIN_SRCFILE="$(marchsrcfile RUSTBIN_SRCFILE)" | ||
88 | RUSTSTD_SRCFILE_x86_64="rust-std-${RUSTBIN_PVER}-x86_64-unknown-linux-gnu.tar.gz" | ||
89 | RUSTSTD_SRCFILE_x86="rust-std-${RUSTBIN_PVER}-i686-unknown-linux-gnu.tar.gz" | ||
90 | RUSTSTD_SRCFILE="$(marchsrcfile RUSTSTD_SRCFILE)" | ||
91 | CARGOBIN_PVER="0.31.0" | ||
92 | CARGOBIN_SRCFILE_x86_64="cargo-${CARGOBIN_PVER}-x86_64-unknown-linux-gnu.tar.gz" | ||
93 | CARGOBIN_SRCFILE_x86="cargo-${CARGOBIN_PVER}-i686-unknown-linux-gnu.tar.gz" | ||
94 | CARGOBIN_SRCFILE="$(marchsrcfile CARGOBIN_SRCFILE)" | ||
95 | |||
96 | SRC_URI+=( | ||
97 | https://static.rust-lang.org/dist/${RUSTBIN_DATE}/${RUSTBIN_SRCFILE_x86_64} | ||
98 | https://static.rust-lang.org/dist/${RUSTBIN_DATE}/${RUSTBIN_SRCFILE_x86} | ||
99 | https://static.rust-lang.org/dist/${RUSTBIN_DATE}/${RUSTSTD_SRCFILE_x86_64} | ||
100 | https://static.rust-lang.org/dist/${RUSTBIN_DATE}/${RUSTSTD_SRCFILE_x86} | ||
101 | https://static.rust-lang.org/dist/${RUSTBIN_DATE}/${CARGOBIN_SRCFILE_x86_64} | ||
102 | https://static.rust-lang.org/dist/${RUSTBIN_DATE}/${CARGOBIN_SRCFILE_x86} | ||
103 | ) | ||
104 | fi | ||
105 | |||
106 | split_info_rust() | ||
107 | { | ||
108 | DESCRIPTION="Systems programming language focused on safety, speed and concurrency." | ||
109 | DEPEND="${RUST_DEPEND}" | ||
110 | } | ||
111 | |||
112 | split_info_cargo() | ||
113 | { | ||
114 | DESCRIPTION="Rust's package manager and build tool." | ||
115 | DEPEND="== dev-lang/rust-${RUST_PVER} | ||
116 | ${CARGO_DEPEND}" | ||
117 | PCAT="dev-util" | ||
118 | PVER="${CARGO_PVER}" | ||
119 | } | ||
120 | |||
121 | split_info_rustfmt() | ||
122 | { | ||
123 | DESCRIPTION="Tool to find and fix Rust formatting issues." | ||
124 | DEPEND="== dev-lang/rust-${RUST_PVER} | ||
125 | == dev-util/cargo-${CARGO_PVER} | ||
126 | ${RUSTFMT_DEPEND}" | ||
127 | PCAT="dev-util" | ||
128 | PVER="${RUSTFMT_PVER}" | ||
129 | } | ||
130 | |||
131 | split_info_rust-rls() | ||
132 | { | ||
133 | DESCRIPTION="Rust Language Server for IDE integration." | ||
134 | DEPEND="== dev-lang/rust-${RUST_PVER} | ||
135 | ${RUSTRLS_DEPEND}" | ||
136 | PCAT="dev-util" | ||
137 | PVER="${RLS_PVER}" | ||
138 | } | ||
139 | |||
140 | src_prepare() | ||
141 | { | ||
142 | munpack ${SRCFILE} || die | ||
143 | |||
144 | if [[ ${BOOTSTRAP} = 1 ]] | ||
145 | then | ||
146 | install -d ${SRCDIR}/build/cache/${RUSTBIN_DATE} || die | ||
147 | ln -snf ${SOURCEDIR}/${PNAME}/${RUSTBIN_SRCFILE} ${SRCDIR}/build/cache/${RUSTBIN_DATE}/ || die | ||
148 | ln -snf ${SOURCEDIR}/${PNAME}/${RUSTSTD_SRCFILE} ${SRCDIR}/build/cache/${RUSTBIN_DATE}/ || die | ||
149 | ln -snf ${SOURCEDIR}/${PNAME}/${CARGOBIN_SRCFILE} ${SRCDIR}/build/cache/${RUSTBIN_DATE}/ || die | ||
150 | fi | ||
151 | } | ||
152 | |||
153 | src_compile() | ||
154 | { | ||
155 | cd ${SRCDIR} | ||
156 | |||
157 | local myARCH | ||
158 | local myRUSTHOST | ||
159 | myARCH="${ARCH}" | ||
160 | [[ ${ARCH} = i*86 ]] && myARCH="i686" | ||
161 | myRUSTCHOST="${myARCH}-unknown-linux-gnu" | ||
162 | |||
163 | # create a custom build config | ||
164 | cat <<- EOF > ${SRCDIR}/config.toml | ||
165 | [llvm] | ||
166 | # enable ninja | ||
167 | ninja = true | ||
168 | # prefer shared libraries | ||
169 | link-shared = true | ||
170 | |||
171 | [build] | ||
172 | EOF | ||
173 | if [[ ${BOOTSTRAP} = 0 ]] | ||
174 | then | ||
175 | # use local rust if no bootstrap was requested | ||
176 | cat <<- EOF >> ${SRCDIR}/config.toml | ||
177 | cargo = "/usr/bin/cargo" | ||
178 | rustc = "/usr/bin/rustc" | ||
179 | EOF | ||
180 | fi | ||
181 | cat <<- EOF >> ${SRCDIR}/config.toml | ||
182 | submodules = false | ||
183 | python = "python2" | ||
184 | # build cargo too | ||
185 | extended = true | ||
186 | |||
187 | [install] | ||
188 | prefix = "/usr" | ||
189 | libdir = "$(mlibdir)" | ||
190 | docdir = "share/doc/${PNAME}-${PVER}" | ||
191 | mandir = "share/man" | ||
192 | |||
193 | [rust] | ||
194 | channel = "stable" | ||
195 | rpath = false | ||
196 | # disable codegen tests | ||
197 | codegen-tests = false | ||
198 | use-jemalloc = true | ||
199 | # Work around https://github.com/rust-lang/rust/issues/51650 | ||
200 | deny-warnings = false | ||
201 | |||
202 | [target.${myRUSTCHOST}] | ||
203 | llvm-config = "/usr/bin/llvm-config" | ||
204 | EOF | ||
205 | |||
206 | ## missing llvm link deps | ||
207 | export RUSTFLAGS="$RUSTFLAGS -C link-args=-lffi" | ||
208 | python2 ./x.py build --verbose || die | ||
209 | } | ||
210 | |||
211 | src_install_rust() | ||
212 | { | ||
213 | cd ${SRCDIR} | ||
214 | DESTDIR=${BINDIR} python2 ./x.py install || die | ||
215 | |||
216 | # remove unnecessary files | ||
217 | mdelete /usr/$(mlibdir)/rustlib/components || die | ||
218 | mdelete /usr/$(mlibdir)/rustlib/manifest-rustc || die | ||
219 | mdelete /usr/$(mlibdir)/rustlib/rust-installer-version || die | ||
220 | |||
221 | # overwrite duplicate solibs with symlinks to safe space | ||
222 | local myARCH | ||
223 | local myRUSTHOST | ||
224 | myARCH="${ARCH}" | ||
225 | [[ ${ARCH} = i*86 ]] && myARCH="i686" | ||
226 | myRUSTCHOST="${myARCH}-unknown-linux-gnu" | ||
227 | local i | ||
228 | for i in ${BINDIR}/usr/$(mlibdir)/rustlib/${myRUSTCHOST}/lib/*.so | ||
229 | do | ||
230 | mlink rustlib/${myRUSTCHOST}/lib/$(basename ${i}) /usr/$(mlibdir)/ || die | ||
231 | done | ||
232 | |||
233 | # move split packages out of the way | ||
234 | install -d ${SRCDIR}/rust-split-packages/rls/usr/bin || die | ||
235 | install -d ${SRCDIR}/rust-split-packages/fmt/usr/bin || die | ||
236 | install -d ${SRCDIR}/rust-split-packages/cargo/usr/bin || die | ||
237 | install -d ${SRCDIR}/rust-split-packages/cargo/usr/share/man/man1 || die | ||
238 | install -d ${SRCDIR}/rust-split-packages/cargo/usr/share/doc/${PNAME}-${PVER}/html || die | ||
239 | mv ${BINDIR}/usr/bin/rls ${SRCDIR}/rust-split-packages/rls/usr/bin/ || die | ||
240 | mv ${BINDIR}/usr/bin/cargo-fmt ${SRCDIR}/rust-split-packages/fmt/usr/bin/ || die | ||
241 | mv ${BINDIR}/usr/bin/rustfmt ${SRCDIR}/rust-split-packages/fmt/usr/bin/ || die | ||
242 | mv ${BINDIR}/usr/bin/cargo ${SRCDIR}/rust-split-packages/cargo/usr/bin/ || die | ||
243 | mv ${BINDIR}/etc ${SRCDIR}/rust-split-packages/cargo/ || die | ||
244 | mv ${BINDIR}/usr/share/doc/${PNAME}-${PVER}/html/cargo ${SRCDIR}/rust-split-packages/cargo/usr/share/doc/${PNAME}-${PVER}/html/ || die | ||
245 | mv ${BINDIR}/usr/share/man/man1/cargo*.1 ${SRCDIR}/rust-split-packages/cargo/usr/share/man/man1/ || die | ||
246 | |||
247 | minstalldocs COPYRIGHT LICENSE-* ChangeLog README* || die | ||
248 | } | ||
249 | |||
250 | src_install_cargo() | ||
251 | { | ||
252 | install -d ${BINDIR} || die | ||
253 | mv ${SRCDIR}/rust-split-packages/cargo/* ${BINDIR}/ || die | ||
254 | local docsubdir="src/tools/cargo" | ||
255 | minstalldocs ${docsubdir}/COPYRIGHT* ${docsubdir}/CHANGELOG* ${docsubdir}/LICENSE* ${docsubdir}/README* || die | ||
256 | } | ||
257 | |||
258 | src_install_rustfmt() | ||
259 | { | ||
260 | install -d ${BINDIR} || die | ||
261 | mv ${SRCDIR}/rust-split-packages/fmt/* ${BINDIR}/ || die | ||
262 | local docsubdir="src/tools/rustfmt" | ||
263 | minstalldocs ${docsubdir}/COPYRIGHT* ${docsubdir}/CHANGELOG* ${docsubdir}/LICENSE* ${docsubdir}/README* || die | ||
264 | } | ||
265 | |||
266 | src_install_rust-rls() | ||
267 | { | ||
268 | install -d ${BINDIR} || die | ||
269 | mv ${SRCDIR}/rust-split-packages/rls/* ${BINDIR}/ || die | ||
270 | local docsubdir="src/tools/rls" | ||
271 | minstalldocs ${docsubdir}/COPYRIGHT* ${docsubdir}/CHANGELOG* ${docsubdir}/LICENSE* ${docsubdir}/README* || die | ||
272 | } |