Magellan Linux

Annotation of /smage/branches/alx07x-stable/extras/rust/rust-1.28.0-r1.smage2

Parent Directory Parent Directory | Revision Log Revision Log


Revision 12480 - (hide annotations) (download)
Mon Oct 22 12:09:53 2018 UTC (5 years, 6 months ago) by niro
Original Path: smage/branches/alx07x-unstable/extras/rust/rust-1.28.0-r1.smage2
File size: 7966 byte(s)
-release branches/alx07x-unstable
1 niro 12103 # $Id$
2    
3     PNAME="rust"
4     PVER="1.28.0"
5     PBUILD="r1"
6    
7 niro 12432 SPLIT_PACKAGES="rust cargo rustfmt rust-rls"
8 niro 12103 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 niro 12432 # provided rust pver
18     RUST_PVER="${PVER}"
19     # provided pver of cargo, see src/tools/cargo/Cargo.toml
20     CARGO_PVER="0.29.0"
21     # provided pver of rls, see src/tools/rustfmt/Cargo.toml
22     RUSTFMT_PVER="0.8.2"
23     # provided pver of rls, see src/tools/rls/Cargo.toml
24     RLS_PVER="0.128.0"
25 niro 12103
26 niro 12432 # required pver of llvm and gcc
27     GCC_PVER="8.2.0"
28     LLVM_PVER="6.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     SDEPEND=">= sys-dev/llvm-${LLVM_PVER}
46     >= sys-dev/clang-${LLVM_PVER}
47 niro 12103 >= dev-lang/perl-5.26
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 niro 12432 >= dev-util/ninja-1.8
53     ${RUST_DEPEND}
54     ${CARGO_DEPEND}
55     ${RUSTFMT_DEPEND}
56     ${RUSTRLS_DEPEND}
57 niro 12103 >= net-misc/curl-dev-7
58 niro 12428 >= app-arch/xz-utils-dev-5
59 niro 12103 >= dev-libs/libffi-dev-3.2
60 niro 12432 >= dev-libs/jemalloc-dev-5.1
61     >= dev-libs/openssl-dev-1.1
62     >= net-libs/libssh2-dev-1.8
63     >= sys-libs/zlib-dev-1.2"
64 niro 12103
65     if [[ ${BOOTSTRAP} = 0 ]]
66     then
67 niro 12432 # see src/stage0.txt
68 niro 12103 SDEPEND+="
69 niro 12432 >= dev-lang/rust-1.27
70     >= dev-lang/cargo-0.28"
71 niro 12103 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     UP2DATE="updatecmd https://www.rust-lang.org/en-US/other-installers.html | grep 'rustc-.*-src.*' | sed 's:-src::g' | highesttarball gz"
85    
86     if [[ ${BOOTSTRAP} = 1 ]]
87     then
88     # see src/stage0.txt
89     RUSTBIN_PVER="1.27.2"
90     RUSTBIN_DATE="2018-07-20"
91     RUSTBIN_SRCFILE_x86_64="rustc-${RUSTBIN_PVER}-x86_64-unknown-linux-gnu.tar.gz"
92     RUSTBIN_SRCFILE_x86="rustc-${RUSTBIN_PVER}-i686-unknown-linux-gnu.tar.gz"
93     RUSTBIN_SRCFILE="$(marchsrcfile RUSTBIN_SRCFILE)"
94     RUSTSTD_SRCFILE_x86_64="rust-std-${RUSTBIN_PVER}-x86_64-unknown-linux-gnu.tar.gz"
95     RUSTSTD_SRCFILE_x86="rust-std-${RUSTBIN_PVER}-i686-unknown-linux-gnu.tar.gz"
96     RUSTSTD_SRCFILE="$(marchsrcfile RUSTSTD_SRCFILE)"
97     CARGOBIN_PVER="0.28.0"
98     CARGOBIN_SRCFILE_x86_64="cargo-${CARGOBIN_PVER}-x86_64-unknown-linux-gnu.tar.gz"
99     CARGOBIN_SRCFILE_x86="cargo-${CARGOBIN_PVER}-i686-unknown-linux-gnu.tar.gz"
100     CARGOBIN_SRCFILE="$(marchsrcfile CARGOBIN_SRCFILE)"
101    
102     SRC_URI+=(
103     https://static.rust-lang.org/dist/${RUSTBIN_DATE}/${RUSTBIN_SRCFILE_x86_64}
104     https://static.rust-lang.org/dist/${RUSTBIN_DATE}/${RUSTBIN_SRCFILE_x86}
105     https://static.rust-lang.org/dist/${RUSTBIN_DATE}/${RUSTSTD_SRCFILE_x86_64}
106     https://static.rust-lang.org/dist/${RUSTBIN_DATE}/${RUSTSTD_SRCFILE_x86}
107     https://static.rust-lang.org/dist/${RUSTBIN_DATE}/${CARGOBIN_SRCFILE_x86_64}
108     https://static.rust-lang.org/dist/${RUSTBIN_DATE}/${CARGOBIN_SRCFILE_x86}
109     )
110     fi
111    
112 niro 12432 split_info_rust()
113     {
114     DESCRIPTION="Systems programming language focused on safety, speed and concurrency."
115     DEPEND="${RUST_DEPEND}"
116     }
117    
118     split_info_cargo()
119     {
120     DESCRIPTION="Rust's package manager and build tool."
121     DEPEND="== dev-lang/rust-${RUST_PVER}
122     ${CARGO_DEPEND}"
123     PCAT="dev-util"
124     PVER="${CARGO_PVER}"
125     }
126    
127     split_info_rustfmt()
128     {
129     DESCRIPTION="Tool to find and fix Rust formatting issues."
130     DEPEND="== dev-lang/rust-${RUST_PVER}
131     == dev-util/cargo-${CARGO_PVER}
132     ${RUSTFMT_DEPEND}"
133     PCAT="dev-util"
134     PVER="${RUSTFMT_PVER}"
135     }
136    
137     split_info_rust-rls()
138     {
139     DESCRIPTION="Rust Language Server for IDE integration."
140     DEPEND="== dev-lang/rust-${RUST_PVER}
141     ${RUSTRLS_DEPEND}"
142     PCAT="dev-util"
143     PVER="${RLS_PVER}"
144     }
145    
146 niro 12103 src_prepare()
147     {
148     munpack ${SRCFILE} || die
149    
150     if [[ ${BOOTSTRAP} = 1 ]]
151     then
152     install -d ${SRCDIR}/build/cache/${RUSTBIN_DATE} || die
153     ln -snf ${SOURCEDIR}/${PNAME}/${RUSTBIN_SRCFILE} ${SRCDIR}/build/cache/${RUSTBIN_DATE}/ || die
154     ln -snf ${SOURCEDIR}/${PNAME}/${RUSTSTD_SRCFILE} ${SRCDIR}/build/cache/${RUSTBIN_DATE}/ || die
155     ln -snf ${SOURCEDIR}/${PNAME}/${CARGOBIN_SRCFILE} ${SRCDIR}/build/cache/${RUSTBIN_DATE}/ || die
156     fi
157     }
158    
159     src_compile()
160     {
161     cd ${SRCDIR}
162    
163 niro 12432 local myARCH
164     local myRUSTHOST
165     myARCH="${ARCH}"
166     [[ ${ARCH} = i*86 ]] && myARCH="i686"
167     myRUSTCHOST="${myARCH}-unknown-linux-gnu"
168 niro 12103
169 niro 12432 # create a custom build config
170     cat <<- EOF > ${SRCDIR}/config.toml
171     [llvm]
172     # enable ninja
173     ninja = true
174     # prefer shared libraries
175     link-shared = true
176 niro 12103
177 niro 12432 [build]
178     EOF
179 niro 12103 if [[ ${BOOTSTRAP} = 0 ]]
180     then
181 niro 12432 # use local rust if no bootstrap was requested
182     cat <<- EOF >> ${SRCDIR}/config.toml
183     cargo = "/usr/bin/cargo"
184     rustc = "/usr/bin/rustc"
185     EOF
186 niro 12103 fi
187 niro 12432 cat <<- EOF >> ${SRCDIR}/config.toml
188     submodules = false
189     python = "python2"
190     # build cargo too
191     extended = true
192 niro 12103
193 niro 12432 [install]
194     prefix = "/usr"
195     libdir = "$(mlibdir)"
196     docdir = "share/doc/${PNAME}-${PVER}"
197     mandir = "share/man"
198 niro 12103
199 niro 12432 [rust]
200     channel = "stable"
201     rpath = false
202     # disable codegen tests
203     codegen-tests = false
204     use-jemalloc = true
205     # Work around https://github.com/rust-lang/rust/issues/51650
206     deny-warnings = false
207    
208     [target.${myRUSTCHOST}]
209     llvm-config = "/usr/bin/llvm-config"
210     EOF
211    
212 niro 12428 ## missing llvm link deps
213 niro 12432 export RUSTFLAGS="$RUSTFLAGS -C link-args=-lffi"
214 niro 12103 python2 ./x.py build --verbose || die
215     }
216    
217 niro 12432 src_install_rust()
218 niro 12103 {
219     cd ${SRCDIR}
220 niro 12432 DESTDIR=${BINDIR} python2 ./x.py install || die
221 niro 12103
222     # remove unnecessary files
223     mdelete /usr/$(mlibdir)/rustlib/components || die
224     mdelete /usr/$(mlibdir)/rustlib/manifest-rustc || die
225     mdelete /usr/$(mlibdir)/rustlib/rust-installer-version || die
226    
227     # overwrite duplicate solibs with symlinks to safe space
228 niro 12432 local myARCH
229     local myRUSTHOST
230     myARCH="${ARCH}"
231     [[ ${ARCH} = i*86 ]] && myARCH="i686"
232     myRUSTCHOST="${myARCH}-unknown-linux-gnu"
233 niro 12103 local i
234 niro 12432 for i in ${BINDIR}/usr/$(mlibdir)/rustlib/${myRUSTCHOST}/lib/*.so
235 niro 12103 do
236 niro 12432 mlink rustlib/${myRUSTCHOST}/lib/$(basename ${i}) /usr/$(mlibdir)/ || die
237 niro 12103 done
238    
239 niro 12432 # move split packages out of the way
240     install -d ${SRCDIR}/rust-split-packages/rls/usr/bin || die
241     install -d ${SRCDIR}/rust-split-packages/fmt/usr/bin || die
242     install -d ${SRCDIR}/rust-split-packages/cargo/usr/bin || die
243     install -d ${SRCDIR}/rust-split-packages/cargo/usr/share/man/man1 || die
244     install -d ${SRCDIR}/rust-split-packages/cargo/usr/share/doc/${PNAME}-${PVER}/html || die
245     mv ${BINDIR}/usr/bin/rls ${SRCDIR}/rust-split-packages/rls/usr/bin/ || die
246     mv ${BINDIR}/usr/bin/cargo-fmt ${SRCDIR}/rust-split-packages/fmt/usr/bin/ || die
247     mv ${BINDIR}/usr/bin/rustfmt ${SRCDIR}/rust-split-packages/fmt/usr/bin/ || die
248     mv ${BINDIR}/usr/bin/cargo ${SRCDIR}/rust-split-packages/cargo/usr/bin/ || die
249     mv ${BINDIR}/etc ${SRCDIR}/rust-split-packages/cargo/ || die
250     mv ${BINDIR}/usr/share/doc/${PNAME}-${PVER}/html/cargo ${SRCDIR}/rust-split-packages/cargo/usr/share/doc/${PNAME}-${PVER}/html/ || die
251     mv ${BINDIR}/usr/share/man/man1/cargo*.1 ${SRCDIR}/rust-split-packages/cargo/usr/share/man/man1/ || die
252    
253 niro 12103 minstalldocs COPYRIGHT LICENSE-* ChangeLog README* || die
254     }
255 niro 12432
256     src_install_cargo()
257     {
258     install -d ${BINDIR} || die
259     mv ${SRCDIR}/rust-split-packages/cargo/* ${BINDIR}/ || die
260     local docsubdir="src/tools/cargo"
261     minstalldocs ${docsubdir}/COPYRIGHT* ${docsubdir}/CHANGELOG* ${docsubdir}/LICENSE* ${docsubdir}/README* || die
262     }
263    
264     src_install_rustfmt()
265     {
266     install -d ${BINDIR} || die
267     mv ${SRCDIR}/rust-split-packages/fmt/* ${BINDIR}/ || die
268     local docsubdir="src/tools/rustfmt"
269     minstalldocs ${docsubdir}/COPYRIGHT* ${docsubdir}/CHANGELOG* ${docsubdir}/LICENSE* ${docsubdir}/README* || die
270     }
271    
272     src_install_rust-rls()
273     {
274     install -d ${BINDIR} || die
275     mv ${SRCDIR}/rust-split-packages/rls/* ${BINDIR}/ || die
276     local docsubdir="src/tools/rls"
277     minstalldocs ${docsubdir}/COPYRIGHT* ${docsubdir}/CHANGELOG* ${docsubdir}/LICENSE* ${docsubdir}/README* || die
278     }