Annotation of /smage/trunk/extras/rust/rust-1.35.0-r1.smage2
Parent Directory | Revision Log
Revision 13257 -
(hide annotations)
(download)
Wed Jul 10 12:33:41 2019 UTC (4 years, 10 months ago) by niro
File size: 7926 byte(s)
Wed Jul 10 12:33:41 2019 UTC (4 years, 10 months ago) by niro
File size: 7926 byte(s)
auto added: ver bump to 1.35.0-r1
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 | } |