Contents of /smage/branches/alx07x-unstable/extras/rust/rust-1.28.0-r1.smage2
Parent Directory | Revision Log
Revision 12480 -
(show annotations)
(download)
Mon Oct 22 12:09:53 2018 UTC (5 years, 11 months ago) by niro
File size: 7966 byte(s)
Mon Oct 22 12:09:53 2018 UTC (5 years, 11 months ago) by niro
File size: 7966 byte(s)
-release branches/alx07x-unstable
1 | # $Id$ |
2 | |
3 | PNAME="rust" |
4 | PVER="1.28.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.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 | |
26 | # 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 | >= 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 | >= dev-util/ninja-1.8 |
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.1 |
61 | >= dev-libs/openssl-dev-1.1 |
62 | >= net-libs/libssh2-dev-1.8 |
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.27 |
70 | >= dev-lang/cargo-0.28" |
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 | 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 | 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 | 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 | local myARCH |
164 | local myRUSTHOST |
165 | myARCH="${ARCH}" |
166 | [[ ${ARCH} = i*86 ]] && myARCH="i686" |
167 | myRUSTCHOST="${myARCH}-unknown-linux-gnu" |
168 | |
169 | # 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 | |
177 | [build] |
178 | EOF |
179 | if [[ ${BOOTSTRAP} = 0 ]] |
180 | then |
181 | # 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 | fi |
187 | cat <<- EOF >> ${SRCDIR}/config.toml |
188 | submodules = false |
189 | python = "python2" |
190 | # build cargo too |
191 | extended = true |
192 | |
193 | [install] |
194 | prefix = "/usr" |
195 | libdir = "$(mlibdir)" |
196 | docdir = "share/doc/${PNAME}-${PVER}" |
197 | mandir = "share/man" |
198 | |
199 | [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 | ## missing llvm link deps |
213 | export RUSTFLAGS="$RUSTFLAGS -C link-args=-lffi" |
214 | python2 ./x.py build --verbose || die |
215 | } |
216 | |
217 | src_install_rust() |
218 | { |
219 | cd ${SRCDIR} |
220 | DESTDIR=${BINDIR} python2 ./x.py install || die |
221 | |
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 | local myARCH |
229 | local myRUSTHOST |
230 | myARCH="${ARCH}" |
231 | [[ ${ARCH} = i*86 ]] && myARCH="i686" |
232 | myRUSTCHOST="${myARCH}-unknown-linux-gnu" |
233 | local i |
234 | for i in ${BINDIR}/usr/$(mlibdir)/rustlib/${myRUSTCHOST}/lib/*.so |
235 | do |
236 | mlink rustlib/${myRUSTCHOST}/lib/$(basename ${i}) /usr/$(mlibdir)/ || die |
237 | done |
238 | |
239 | # 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 | minstalldocs COPYRIGHT LICENSE-* ChangeLog README* || die |
254 | } |
255 | |
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 | } |