Magellan Linux

Annotation of /branches/R11-unstable/extras/rust/rust-1.31.0-r2.smage2

Parent Directory Parent Directory | Revision Log Revision Log


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