Contents of /smage/branches/alx07x-stable/extras/rust/rust-1.35.0-r1.smage2
Parent Directory | Revision Log
Revision 13611 -
(show annotations)
(download)
Fri Jul 12 12:07:47 2019 UTC (5 years, 2 months ago) by niro
File size: 7926 byte(s)
Fri Jul 12 12:07:47 2019 UTC (5 years, 2 months ago) by niro
File size: 7926 byte(s)
-release branches/alx07x-stable
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 | } |