Contents of /smage/branches/alx07x-stable/extras/rust/rust-1.45.2-r1.smage2
Parent Directory | Revision Log
Revision 15574 -
(show annotations)
(download)
Thu Sep 10 12:33:05 2020 UTC (3 years, 7 months ago) by niro
File size: 9868 byte(s)
Thu Sep 10 12:33:05 2020 UTC (3 years, 7 months ago) by niro
File size: 9868 byte(s)
-release branches/alx07x-stable
1 | # $Id$ |
2 | |
3 | PNAME="rust" |
4 | PVER="1.45.2" |
5 | PBUILD="r1" |
6 | |
7 | SPLIT_PACKAGES="rust cargo rustfmt rust-rls rust-src rust-docs cargo-docs" |
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.39.0" |
21 | # provided pver of rls, see src/tools/rustfmt/Cargo.toml |
22 | RUSTFMT_PVER="1.4.4" |
23 | # provided pver of rls, see src/tools/rls/Cargo.toml |
24 | RLS_PVER="1.38.0" |
25 | |
26 | # required pver of llvm and gcc |
27 | GCC_PVER="8.3.0" |
28 | LLVM_PVER="10.0.1" |
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.9" |
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 | SRC_DEPEND="" |
46 | |
47 | # both cargo and rust |
48 | DOCS_DEPEND="" |
49 | |
50 | SDEPEND=">= sys-dev/llvm-${LLVM_PVER} |
51 | >= sys-dev/clang-${LLVM_PVER} |
52 | >= dev-lang/perl-5.32 |
53 | >= dev-lang/python3-3.7 |
54 | >= dev-libs/libffi-3.3 |
55 | >= dev-libs/jemalloc-5.2 |
56 | >= dev-util/cmake-3.18 |
57 | >= dev-util/ninja-1.10 |
58 | ${RUST_DEPEND} |
59 | ${CARGO_DEPEND} |
60 | ${RUSTFMT_DEPEND} |
61 | ${RUSTRLS_DEPEND} |
62 | ${SRC_DEPEND} |
63 | ${DOCS_DEPEND} |
64 | >= net-misc/curl-dev-7 |
65 | >= app-arch/xz-utils-dev-5 |
66 | >= dev-libs/libffi-dev-3.3 |
67 | >= dev-libs/jemalloc-dev-5.2 |
68 | >= dev-libs/openssl-dev-1.1 |
69 | >= net-libs/libssh2-dev-1.9 |
70 | >= sys-libs/zlib-dev-1.2" |
71 | |
72 | if [[ ${BOOTSTRAP} = 0 ]] |
73 | then |
74 | # see src/stage0.txt |
75 | SDEPEND+=" |
76 | >= dev-lang/rust-1.44 |
77 | >= dev-lang/cargo-0.45" |
78 | fi |
79 | |
80 | SRCFILE="${PNAME}c-${PVER}-src.tar.gz" |
81 | SRCDIR="${BUILDDIR}/${PNAME}c-${PVER}-src" |
82 | |
83 | msetfeature "!check" |
84 | sminclude mtools |
85 | |
86 | SRC_URI=( |
87 | https://static.rust-lang.org/dist/${SRCFILE} |
88 | mirror://${PNAME}/${SRCFILE} |
89 | ) |
90 | |
91 | UP2SEPERATOR="\/" |
92 | UP2DATE="updatecmd https://github.com/rust-lang/rust/releases | highesttarball gz" |
93 | |
94 | if [[ ${BOOTSTRAP} = 1 ]] |
95 | then |
96 | # see src/stage0.txt |
97 | RUSTBIN_PVER="1.44.0" |
98 | RUSTBIN_DATE="2020-06-04" |
99 | RUSTBIN_SRCFILE_x86_64="rustc-${RUSTBIN_PVER}-x86_64-unknown-linux-gnu.tar.gz" |
100 | RUSTBIN_SRCFILE_x86="rustc-${RUSTBIN_PVER}-i686-unknown-linux-gnu.tar.gz" |
101 | RUSTBIN_SRCFILE="$(marchsrcfile RUSTBIN_SRCFILE)" |
102 | RUSTSTD_SRCFILE_x86_64="rust-std-${RUSTBIN_PVER}-x86_64-unknown-linux-gnu.tar.gz" |
103 | RUSTSTD_SRCFILE_x86="rust-std-${RUSTBIN_PVER}-i686-unknown-linux-gnu.tar.gz" |
104 | RUSTSTD_SRCFILE="$(marchsrcfile RUSTSTD_SRCFILE)" |
105 | CARGOBIN_PVER="0.45.0" |
106 | CARGOBIN_SRCFILE_x86_64="cargo-${CARGOBIN_PVER}-x86_64-unknown-linux-gnu.tar.gz" |
107 | CARGOBIN_SRCFILE_x86="cargo-${CARGOBIN_PVER}-i686-unknown-linux-gnu.tar.gz" |
108 | CARGOBIN_SRCFILE="$(marchsrcfile CARGOBIN_SRCFILE)" |
109 | |
110 | SRC_URI+=( |
111 | https://static.rust-lang.org/dist/${RUSTBIN_DATE}/${RUSTBIN_SRCFILE_x86_64} |
112 | https://static.rust-lang.org/dist/${RUSTBIN_DATE}/${RUSTBIN_SRCFILE_x86} |
113 | https://static.rust-lang.org/dist/${RUSTBIN_DATE}/${RUSTSTD_SRCFILE_x86_64} |
114 | https://static.rust-lang.org/dist/${RUSTBIN_DATE}/${RUSTSTD_SRCFILE_x86} |
115 | https://static.rust-lang.org/dist/${RUSTBIN_DATE}/${CARGOBIN_SRCFILE_x86_64} |
116 | https://static.rust-lang.org/dist/${RUSTBIN_DATE}/${CARGOBIN_SRCFILE_x86} |
117 | ) |
118 | fi |
119 | |
120 | split_info_rust() |
121 | { |
122 | DESCRIPTION="Systems programming language focused on safety, speed and concurrency." |
123 | DEPEND="${RUST_DEPEND}" |
124 | } |
125 | |
126 | split_info_cargo() |
127 | { |
128 | DESCRIPTION="Rust's package manager and build tool." |
129 | DEPEND="== dev-lang/rust-${RUST_PVER} |
130 | ${CARGO_DEPEND}" |
131 | PCAT="dev-util" |
132 | PVER="${CARGO_PVER}" |
133 | } |
134 | |
135 | split_info_rustfmt() |
136 | { |
137 | DESCRIPTION="Tool to find and fix Rust formatting issues." |
138 | DEPEND="== dev-lang/rust-${RUST_PVER} |
139 | == dev-util/cargo-${CARGO_PVER} |
140 | ${RUSTFMT_DEPEND}" |
141 | PCAT="dev-util" |
142 | PVER="${RUSTFMT_PVER}" |
143 | } |
144 | |
145 | split_info_rust-rls() |
146 | { |
147 | DESCRIPTION="Rust Language Server for IDE integration." |
148 | DEPEND="== dev-lang/rust-${RUST_PVER} |
149 | ${RUSTRLS_DEPEND}" |
150 | PCAT="dev-util" |
151 | PVER="${RLS_PVER}" |
152 | } |
153 | |
154 | split_info_rust-src() |
155 | { |
156 | DESCRIPTION="Rust standard library sources." |
157 | DEPEND="${SRC_DEPEND}" |
158 | } |
159 | |
160 | split_info_rust-docs() |
161 | { |
162 | DESCRIPTION="HTML documentation for the Rust programming language." |
163 | DEPEND="${DOCS_DEPEND}" |
164 | } |
165 | |
166 | split_info_cargo-docs() |
167 | { |
168 | DESCRIPTION="HTML documentation for Cargo." |
169 | DEPEND="== dev-lang/rust-docs-${PVER} |
170 | ${DOCS_DEPEND}" |
171 | } |
172 | |
173 | src_prepare() |
174 | { |
175 | munpack ${SRCFILE} || die |
176 | |
177 | if [[ ${BOOTSTRAP} = 1 ]] |
178 | then |
179 | install -d ${SRCDIR}/build/cache/${RUSTBIN_DATE} || die |
180 | ln -snf ${SOURCEDIR}/${PNAME}/${RUSTBIN_SRCFILE} ${SRCDIR}/build/cache/${RUSTBIN_DATE}/ || die |
181 | ln -snf ${SOURCEDIR}/${PNAME}/${RUSTSTD_SRCFILE} ${SRCDIR}/build/cache/${RUSTBIN_DATE}/ || die |
182 | ln -snf ${SOURCEDIR}/${PNAME}/${CARGOBIN_SRCFILE} ${SRCDIR}/build/cache/${RUSTBIN_DATE}/ || die |
183 | fi |
184 | } |
185 | |
186 | src_compile() |
187 | { |
188 | cd ${SRCDIR} |
189 | |
190 | local myARCH |
191 | local myRUSTHOST |
192 | myARCH="${ARCH}" |
193 | [[ ${ARCH} = i*86 ]] && myARCH="i686" |
194 | myRUSTCHOST="${myARCH}-unknown-linux-gnu" |
195 | |
196 | # create a custom build config |
197 | cat <<- EOF > ${SRCDIR}/config.toml |
198 | [llvm] |
199 | # enable ninja |
200 | ninja = true |
201 | # prefer shared libraries |
202 | link-shared = true |
203 | |
204 | [build] |
205 | EOF |
206 | # support multilib on x86_64 |
207 | if [[ ${ARCH} = x86_64 ]] |
208 | then |
209 | cat <<- EOF >> ${SRCDIR}/config.toml |
210 | target = ["${myRUSTCHOST}","i686-unknown-linux-gnu"] |
211 | EOF |
212 | fi |
213 | if [[ ${BOOTSTRAP} = 0 ]] |
214 | then |
215 | # use local rust if no bootstrap was requested |
216 | cat <<- EOF >> ${SRCDIR}/config.toml |
217 | cargo = "/usr/bin/cargo" |
218 | rustc = "/usr/bin/rustc" |
219 | EOF |
220 | fi |
221 | cat <<- EOF >> ${SRCDIR}/config.toml |
222 | submodules = false |
223 | python = "python2" |
224 | # build cargo too |
225 | extended = true |
226 | |
227 | [install] |
228 | prefix = "/usr" |
229 | libdir = "$(mlibdir)" |
230 | docdir = "share/doc/${PNAME}-${PVER}" |
231 | mandir = "share/man" |
232 | |
233 | [rust] |
234 | channel = "stable" |
235 | rpath = false |
236 | # disable codegen tests |
237 | codegen-tests = false |
238 | jemalloc = true |
239 | # Work around https://github.com/rust-lang/rust/issues/51650 |
240 | deny-warnings = false |
241 | |
242 | [target.${myRUSTCHOST}] |
243 | llvm-config = "/usr/bin/llvm-config" |
244 | EOF |
245 | # honor multilib gcc setups |
246 | if [[ ${ARCH} = x86_64 ]] |
247 | then |
248 | cat <<- EOF >> ${SRCDIR}/config.toml |
249 | [target.i686-unknown-linux-gnu] |
250 | llvm-config = "/usr/bin/llvm-config" |
251 | EOF |
252 | fi |
253 | |
254 | ## missing llvm link deps |
255 | export RUSTFLAGS="$RUSTFLAGS -C link-args=-lffi" |
256 | python2 ./x.py build --verbose || die |
257 | } |
258 | |
259 | src_install_rust() |
260 | { |
261 | cd ${SRCDIR} |
262 | DESTDIR=${BINDIR} python2 ./x.py install || die |
263 | |
264 | # remove unnecessary files |
265 | mdelete /usr/$(mlibdir)/rustlib/components || die |
266 | mdelete /usr/$(mlibdir)/rustlib/manifest-rustc || die |
267 | mdelete /usr/$(mlibdir)/rustlib/rust-installer-version || die |
268 | |
269 | # overwrite duplicate solibs with symlinks to safe space |
270 | local myARCH |
271 | local myRUSTHOST |
272 | myARCH="${ARCH}" |
273 | [[ ${ARCH} = i*86 ]] && myARCH="i686" |
274 | myRUSTCHOST="${myARCH}-unknown-linux-gnu" |
275 | local i |
276 | for i in ${BINDIR}/usr/$(mlibdir)/rustlib/${myRUSTCHOST}/lib/*.so |
277 | do |
278 | mlink rustlib/${myRUSTCHOST}/lib/$(basename ${i}) /usr/$(mlibdir)/ || die |
279 | done |
280 | |
281 | # create missing 32-bit links on multilib systems |
282 | if [[ ${ARCH} = x86_64 ]] |
283 | then |
284 | minstalldir /usr/lib || die |
285 | for i in ${BINDIR}/usr/$(mlibdir)/rustlib/i686-unknown-linux-gnu/lib/*.so |
286 | do |
287 | mlink rustlib/i686-unknown-linux-gnu/lib/$(basename ${i}) /usr/lib/ || die |
288 | done |
289 | fi |
290 | |
291 | # move split packages out of the way |
292 | install -d ${SRCDIR}/rust-split-packages/rls/usr/bin || die |
293 | install -d ${SRCDIR}/rust-split-packages/fmt/usr/bin || die |
294 | install -d ${SRCDIR}/rust-split-packages/cargo/usr/bin || die |
295 | install -d ${SRCDIR}/rust-split-packages/cargo/usr/share/man/man1 || die |
296 | install -d ${SRCDIR}/rust-split-packages/rust-src/usr/$(mlibdir)/rustlib || die |
297 | install -d ${SRCDIR}/rust-split-packages/cargo-docs/usr/share/doc/${PNAME}-${PVER}/html || die |
298 | install -d ${SRCDIR}/rust-split-packages/rust-docs/usr/share/doc/${PNAME}-${PVER} || die |
299 | mv ${BINDIR}/usr/bin/rls ${SRCDIR}/rust-split-packages/rls/usr/bin/ || die |
300 | mv ${BINDIR}/usr/bin/cargo-fmt ${SRCDIR}/rust-split-packages/fmt/usr/bin/ || die |
301 | mv ${BINDIR}/usr/bin/rustfmt ${SRCDIR}/rust-split-packages/fmt/usr/bin/ || die |
302 | mv ${BINDIR}/usr/bin/cargo ${SRCDIR}/rust-split-packages/cargo/usr/bin/ || die |
303 | mv ${BINDIR}/etc ${SRCDIR}/rust-split-packages/cargo/ || die |
304 | mv ${BINDIR}/usr/share/man/man1/cargo*.1 ${SRCDIR}/rust-split-packages/cargo/usr/share/man/man1/ || die |
305 | mv ${BINDIR}/usr/$(mlibdir)/rustlib/src ${SRCDIR}/rust-split-packages/rust-src/usr/$(mlibdir)/rustlib/ || die |
306 | # move cargo first, then the rest of the documentation |
307 | mv ${BINDIR}/usr/share/doc/${PNAME}-${PVER}/html/cargo ${SRCDIR}/rust-split-packages/cargo-docs/usr/share/doc/${PNAME}-${PVER}/html/ || die |
308 | mv ${BINDIR}/usr/share/doc/${PNAME}-${PVER}/html ${SRCDIR}/rust-split-packages/rust-docs/usr/share/doc/${PNAME}-${PVER}/ || die |
309 | |
310 | minstalldocs COPYRIGHT LICENSE-* ChangeLog README* || die |
311 | } |
312 | |
313 | src_install_cargo() |
314 | { |
315 | install -d ${BINDIR} || die |
316 | mv ${SRCDIR}/rust-split-packages/cargo/* ${BINDIR}/ || die |
317 | local docsubdir="src/tools/cargo" |
318 | minstalldocs ${docsubdir}/COPYRIGHT* ${docsubdir}/CHANGELOG* ${docsubdir}/LICENSE* ${docsubdir}/README* || die |
319 | } |
320 | |
321 | src_install_rustfmt() |
322 | { |
323 | install -d ${BINDIR} || die |
324 | mv ${SRCDIR}/rust-split-packages/fmt/* ${BINDIR}/ || die |
325 | local docsubdir="src/tools/rustfmt" |
326 | minstalldocs ${docsubdir}/COPYRIGHT* ${docsubdir}/CHANGELOG* ${docsubdir}/LICENSE* ${docsubdir}/README* || die |
327 | } |
328 | |
329 | src_install_rust-rls() |
330 | { |
331 | install -d ${BINDIR} || die |
332 | mv ${SRCDIR}/rust-split-packages/rls/* ${BINDIR}/ || die |
333 | local docsubdir="src/tools/rls" |
334 | minstalldocs ${docsubdir}/COPYRIGHT* ${docsubdir}/CHANGELOG* ${docsubdir}/LICENSE* ${docsubdir}/README* || die |
335 | } |
336 | |
337 | src_install_rust-src() |
338 | { |
339 | install -d ${BINDIR} || die |
340 | mv ${SRCDIR}/rust-split-packages/rust-src/* ${BINDIR}/ || die |
341 | } |
342 | |
343 | src_install_rust-docs() |
344 | { |
345 | install -d ${BINDIR} || die |
346 | mv ${SRCDIR}/rust-split-packages/rust-docs/* ${BINDIR}/ || die |
347 | } |
348 | |
349 | src_install_cargo-docs() |
350 | { |
351 | install -d ${BINDIR} || die |
352 | mv ${SRCDIR}/rust-split-packages/cargo-docs/* ${BINDIR}/ || die |
353 | } |