Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 13407 - (show annotations) (download)
Thu Jul 11 10:56:50 2019 UTC (4 years, 9 months ago) by niro
File size: 7926 byte(s)
-release branches/alx07x-unstable
1 # $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 jemalloc = true
206 # 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 }