Magellan Linux

Annotation of /trunk/extras/rust/rust-1.31.0-r1.smage2

Parent Directory Parent Directory | Revision Log Revision Log


Revision 31822 - (hide annotations) (download)
Wed Dec 12 13:37:28 2018 UTC (5 years, 5 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     }