Magellan Linux

Annotation of /smage/branches/alx07x-unstable/extras/rust/rust-1.35.0-r1.smage2

Parent Directory Parent Directory | Revision Log Revision Log


Revision 13407 - (hide annotations) (download)
Thu Jul 11 10:56:50 2019 UTC (4 years, 10 months ago) by niro
File size: 7926 byte(s)
-release branches/alx07x-unstable
1 niro 13256 # $Id$
2    
3     PNAME="rust"
4     PVER="1.35.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.36.0"
21     # provided pver of rls, see src/tools/rustfmt/Cargo.toml
22     RUSTFMT_PVER="1.2.0"
23     # provided pver of rls, see src/tools/rls/Cargo.toml
24     RLS_PVER="1.35.0"
25    
26     # required pver of llvm and gcc
27     GCC_PVER="8.3.0"
28     LLVM_PVER="8.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.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     SDEPEND=">= sys-dev/llvm-${LLVM_PVER}
46     >= sys-dev/clang-${LLVM_PVER}
47     >= dev-lang/perl-5.30
48     >= dev-lang/python-2.7
49     >= dev-libs/libffi-3.2
50     >= dev-libs/jemalloc-5.2
51     >= dev-util/cmake-3.14
52     >= dev-util/ninja-1.9
53     ${RUST_DEPEND}
54     ${CARGO_DEPEND}
55     ${RUSTFMT_DEPEND}
56     ${RUSTRLS_DEPEND}
57     >= net-misc/curl-dev-7
58     >= app-arch/xz-utils-dev-5
59     >= dev-libs/libffi-dev-3.2
60     >= dev-libs/jemalloc-dev-5.2
61     >= dev-libs/openssl-dev-1.1
62     >= net-libs/libssh2-dev-1.9
63     >= sys-libs/zlib-dev-1.2"
64    
65     if [[ ${BOOTSTRAP} = 0 ]]
66     then
67     # see src/stage0.txt
68     SDEPEND+="
69     >= dev-lang/rust-1.34
70     >= dev-lang/cargo-0.35"
71     fi
72    
73     SRCFILE="${PNAME}c-${PVER}-src.tar.gz"
74     SRCDIR="${BUILDDIR}/${PNAME}c-${PVER}-src"
75    
76     msetfeature "!check"
77     sminclude mbuild mtools
78    
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.34.2"
91     RUSTBIN_DATE="2019-05-14"
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.35.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     src_prepare()
148     {
149     munpack ${SRCFILE} || die
150    
151     if [[ ${BOOTSTRAP} = 1 ]]
152     then
153     install -d ${SRCDIR}/build/cache/${RUSTBIN_DATE} || die
154     ln -snf ${SOURCEDIR}/${PNAME}/${RUSTBIN_SRCFILE} ${SRCDIR}/build/cache/${RUSTBIN_DATE}/ || die
155     ln -snf ${SOURCEDIR}/${PNAME}/${RUSTSTD_SRCFILE} ${SRCDIR}/build/cache/${RUSTBIN_DATE}/ || die
156     ln -snf ${SOURCEDIR}/${PNAME}/${CARGOBIN_SRCFILE} ${SRCDIR}/build/cache/${RUSTBIN_DATE}/ || die
157     fi
158     }
159    
160     src_compile()
161     {
162     cd ${SRCDIR}
163    
164     local myARCH
165     local myRUSTHOST
166     myARCH="${ARCH}"
167     [[ ${ARCH} = i*86 ]] && myARCH="i686"
168     myRUSTCHOST="${myARCH}-unknown-linux-gnu"
169    
170     # create a custom build config
171     cat <<- EOF > ${SRCDIR}/config.toml
172     [llvm]
173     # enable ninja
174     ninja = true
175     # prefer shared libraries
176     link-shared = true
177    
178     [build]
179     EOF
180     if [[ ${BOOTSTRAP} = 0 ]]
181     then
182     # use local rust if no bootstrap was requested
183     cat <<- EOF >> ${SRCDIR}/config.toml
184     cargo = "/usr/bin/cargo"
185     rustc = "/usr/bin/rustc"
186     EOF
187     fi
188     cat <<- EOF >> ${SRCDIR}/config.toml
189     submodules = false
190     python = "python2"
191     # build cargo too
192     extended = true
193    
194     [install]
195     prefix = "/usr"
196     libdir = "$(mlibdir)"
197     docdir = "share/doc/${PNAME}-${PVER}"
198     mandir = "share/man"
199    
200     [rust]
201     channel = "stable"
202     rpath = false
203     # disable codegen tests
204     codegen-tests = false
205 niro 13257 jemalloc = true
206 niro 13256 # Work around https://github.com/rust-lang/rust/issues/51650
207     deny-warnings = false
208    
209     [target.${myRUSTCHOST}]
210     llvm-config = "/usr/bin/llvm-config"
211     EOF
212    
213     ## missing llvm link deps
214     export RUSTFLAGS="$RUSTFLAGS -C link-args=-lffi"
215     python2 ./x.py build --verbose || die
216     }
217    
218     src_install_rust()
219     {
220     cd ${SRCDIR}
221     DESTDIR=${BINDIR} python2 ./x.py install || die
222    
223     # remove unnecessary files
224     mdelete /usr/$(mlibdir)/rustlib/components || die
225     mdelete /usr/$(mlibdir)/rustlib/manifest-rustc || die
226     mdelete /usr/$(mlibdir)/rustlib/rust-installer-version || die
227    
228     # overwrite duplicate solibs with symlinks to safe space
229     local myARCH
230     local myRUSTHOST
231     myARCH="${ARCH}"
232     [[ ${ARCH} = i*86 ]] && myARCH="i686"
233     myRUSTCHOST="${myARCH}-unknown-linux-gnu"
234     local i
235     for i in ${BINDIR}/usr/$(mlibdir)/rustlib/${myRUSTCHOST}/lib/*.so
236     do
237     mlink rustlib/${myRUSTCHOST}/lib/$(basename ${i}) /usr/$(mlibdir)/ || die
238     done
239    
240     # move split packages out of the way
241     install -d ${SRCDIR}/rust-split-packages/rls/usr/bin || die
242     install -d ${SRCDIR}/rust-split-packages/fmt/usr/bin || die
243     install -d ${SRCDIR}/rust-split-packages/cargo/usr/bin || die
244     install -d ${SRCDIR}/rust-split-packages/cargo/usr/share/man/man1 || die
245     install -d ${SRCDIR}/rust-split-packages/cargo/usr/share/doc/${PNAME}-${PVER}/html || die
246     mv ${BINDIR}/usr/bin/rls ${SRCDIR}/rust-split-packages/rls/usr/bin/ || die
247     mv ${BINDIR}/usr/bin/cargo-fmt ${SRCDIR}/rust-split-packages/fmt/usr/bin/ || die
248     mv ${BINDIR}/usr/bin/rustfmt ${SRCDIR}/rust-split-packages/fmt/usr/bin/ || die
249     mv ${BINDIR}/usr/bin/cargo ${SRCDIR}/rust-split-packages/cargo/usr/bin/ || die
250     mv ${BINDIR}/etc ${SRCDIR}/rust-split-packages/cargo/ || die
251     mv ${BINDIR}/usr/share/doc/${PNAME}-${PVER}/html/cargo ${SRCDIR}/rust-split-packages/cargo/usr/share/doc/${PNAME}-${PVER}/html/ || die
252     mv ${BINDIR}/usr/share/man/man1/cargo*.1 ${SRCDIR}/rust-split-packages/cargo/usr/share/man/man1/ || die
253    
254     minstalldocs COPYRIGHT LICENSE-* ChangeLog README* || die
255     }
256    
257     src_install_cargo()
258     {
259     install -d ${BINDIR} || die
260     mv ${SRCDIR}/rust-split-packages/cargo/* ${BINDIR}/ || die
261     local docsubdir="src/tools/cargo"
262     minstalldocs ${docsubdir}/COPYRIGHT* ${docsubdir}/CHANGELOG* ${docsubdir}/LICENSE* ${docsubdir}/README* || die
263     }
264    
265     src_install_rustfmt()
266     {
267     install -d ${BINDIR} || die
268     mv ${SRCDIR}/rust-split-packages/fmt/* ${BINDIR}/ || die
269     local docsubdir="src/tools/rustfmt"
270     minstalldocs ${docsubdir}/COPYRIGHT* ${docsubdir}/CHANGELOG* ${docsubdir}/LICENSE* ${docsubdir}/README* || die
271     }
272    
273     src_install_rust-rls()
274     {
275     install -d ${BINDIR} || die
276     mv ${SRCDIR}/rust-split-packages/rls/* ${BINDIR}/ || die
277     local docsubdir="src/tools/rls"
278     minstalldocs ${docsubdir}/COPYRIGHT* ${docsubdir}/CHANGELOG* ${docsubdir}/LICENSE* ${docsubdir}/README* || die
279     }