Contents of /trunk/extras/rust/rust-1.31.0-r1.smage2
Parent Directory | Revision Log
Revision 31822 -
(show annotations)
(download)
Wed Dec 12 13:37:28 2018 UTC (5 years, 9 months ago) by niro
File size: 7736 byte(s)
Wed Dec 12 13:37:28 2018 UTC (5 years, 9 months ago) by niro
File size: 7736 byte(s)
auto added: ver bump to 1.31.0-r1
1 | # $Id$ |
2 | |
3 | PNAME="rust" |
4 | PVER="1.31.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.32.0" |
21 | # provided pver of rls, see src/tools/rustfmt/Cargo.toml |
22 | RUSTFMT_PVER="1.0.0" |
23 | # provided pver of rls, see src/tools/rls/Cargo.toml |
24 | RLS_PVER="1.31.6" |
25 | |
26 | # required pver of llvm and gcc |
27 | GCC_PVER="8.2.0" |
28 | LLVM_PVER="7.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.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.28 |
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 | |
58 | if [[ ${BOOTSTRAP} = 0 ]] |
59 | then |
60 | # see src/stage0.txt |
61 | SDEPEND+=" |
62 | >= dev-lang/rust-1.30 |
63 | >= dev-lang/cargo-0.31" |
64 | fi |
65 | |
66 | SRCFILE="${PNAME}c-${PVER}-src.tar.gz" |
67 | SRCDIR="${BUILDDIR}/${PNAME}c-${PVER}-src" |
68 | |
69 | msetfeature "!check" |
70 | sminclude mbuild mtools |
71 | |
72 | SRC_URI=( |
73 | https://static.rust-lang.org/dist/${SRCFILE} |
74 | mirror://${PNAME}/${SRCFILE} |
75 | ) |
76 | |
77 | UP2SEPERATOR="\/" |
78 | UP2DATE="updatecmd https://github.com/rust-lang/rust/releases | highesttarball gz" |
79 | |
80 | if [[ ${BOOTSTRAP} = 1 ]] |
81 | then |
82 | # see src/stage0.txt |
83 | RUSTBIN_PVER="1.30.0" |
84 | RUSTBIN_DATE="2018-10-25" |
85 | RUSTBIN_SRCFILE_x86_64="rustc-${RUSTBIN_PVER}-x86_64-unknown-linux-gnu.tar.gz" |
86 | RUSTBIN_SRCFILE_x86="rustc-${RUSTBIN_PVER}-i686-unknown-linux-gnu.tar.gz" |
87 | RUSTBIN_SRCFILE="$(marchsrcfile RUSTBIN_SRCFILE)" |
88 | RUSTSTD_SRCFILE_x86_64="rust-std-${RUSTBIN_PVER}-x86_64-unknown-linux-gnu.tar.gz" |
89 | RUSTSTD_SRCFILE_x86="rust-std-${RUSTBIN_PVER}-i686-unknown-linux-gnu.tar.gz" |
90 | RUSTSTD_SRCFILE="$(marchsrcfile RUSTSTD_SRCFILE)" |
91 | CARGOBIN_PVER="0.31.0" |
92 | CARGOBIN_SRCFILE_x86_64="cargo-${CARGOBIN_PVER}-x86_64-unknown-linux-gnu.tar.gz" |
93 | CARGOBIN_SRCFILE_x86="cargo-${CARGOBIN_PVER}-i686-unknown-linux-gnu.tar.gz" |
94 | CARGOBIN_SRCFILE="$(marchsrcfile CARGOBIN_SRCFILE)" |
95 | |
96 | SRC_URI+=( |
97 | https://static.rust-lang.org/dist/${RUSTBIN_DATE}/${RUSTBIN_SRCFILE_x86_64} |
98 | https://static.rust-lang.org/dist/${RUSTBIN_DATE}/${RUSTBIN_SRCFILE_x86} |
99 | https://static.rust-lang.org/dist/${RUSTBIN_DATE}/${RUSTSTD_SRCFILE_x86_64} |
100 | https://static.rust-lang.org/dist/${RUSTBIN_DATE}/${RUSTSTD_SRCFILE_x86} |
101 | https://static.rust-lang.org/dist/${RUSTBIN_DATE}/${CARGOBIN_SRCFILE_x86_64} |
102 | https://static.rust-lang.org/dist/${RUSTBIN_DATE}/${CARGOBIN_SRCFILE_x86} |
103 | ) |
104 | fi |
105 | |
106 | split_info_rust() |
107 | { |
108 | DESCRIPTION="Systems programming language focused on safety, speed and concurrency." |
109 | DEPEND="${RUST_DEPEND}" |
110 | } |
111 | |
112 | split_info_cargo() |
113 | { |
114 | DESCRIPTION="Rust's package manager and build tool." |
115 | DEPEND="== dev-lang/rust-${RUST_PVER} |
116 | ${CARGO_DEPEND}" |
117 | PCAT="dev-util" |
118 | PVER="${CARGO_PVER}" |
119 | } |
120 | |
121 | split_info_rustfmt() |
122 | { |
123 | DESCRIPTION="Tool to find and fix Rust formatting issues." |
124 | DEPEND="== dev-lang/rust-${RUST_PVER} |
125 | == dev-util/cargo-${CARGO_PVER} |
126 | ${RUSTFMT_DEPEND}" |
127 | PCAT="dev-util" |
128 | PVER="${RUSTFMT_PVER}" |
129 | } |
130 | |
131 | split_info_rust-rls() |
132 | { |
133 | DESCRIPTION="Rust Language Server for IDE integration." |
134 | DEPEND="== dev-lang/rust-${RUST_PVER} |
135 | ${RUSTRLS_DEPEND}" |
136 | PCAT="dev-util" |
137 | PVER="${RLS_PVER}" |
138 | } |
139 | |
140 | src_prepare() |
141 | { |
142 | munpack ${SRCFILE} || die |
143 | |
144 | if [[ ${BOOTSTRAP} = 1 ]] |
145 | then |
146 | install -d ${SRCDIR}/build/cache/${RUSTBIN_DATE} || die |
147 | ln -snf ${SOURCEDIR}/${PNAME}/${RUSTBIN_SRCFILE} ${SRCDIR}/build/cache/${RUSTBIN_DATE}/ || die |
148 | ln -snf ${SOURCEDIR}/${PNAME}/${RUSTSTD_SRCFILE} ${SRCDIR}/build/cache/${RUSTBIN_DATE}/ || die |
149 | ln -snf ${SOURCEDIR}/${PNAME}/${CARGOBIN_SRCFILE} ${SRCDIR}/build/cache/${RUSTBIN_DATE}/ || die |
150 | fi |
151 | } |
152 | |
153 | src_compile() |
154 | { |
155 | cd ${SRCDIR} |
156 | |
157 | local myARCH |
158 | local myRUSTHOST |
159 | myARCH="${ARCH}" |
160 | [[ ${ARCH} = i*86 ]] && myARCH="i686" |
161 | myRUSTCHOST="${myARCH}-unknown-linux-gnu" |
162 | |
163 | # create a custom build config |
164 | cat <<- EOF > ${SRCDIR}/config.toml |
165 | [llvm] |
166 | # enable ninja |
167 | ninja = true |
168 | # prefer shared libraries |
169 | link-shared = true |
170 | |
171 | [build] |
172 | EOF |
173 | if [[ ${BOOTSTRAP} = 0 ]] |
174 | then |
175 | # use local rust if no bootstrap was requested |
176 | cat <<- EOF >> ${SRCDIR}/config.toml |
177 | cargo = "/usr/bin/cargo" |
178 | rustc = "/usr/bin/rustc" |
179 | EOF |
180 | fi |
181 | cat <<- EOF >> ${SRCDIR}/config.toml |
182 | submodules = false |
183 | python = "python2" |
184 | # build cargo too |
185 | extended = true |
186 | |
187 | [install] |
188 | prefix = "/usr" |
189 | libdir = "$(mlibdir)" |
190 | docdir = "share/doc/${PNAME}-${PVER}" |
191 | mandir = "share/man" |
192 | |
193 | [rust] |
194 | channel = "stable" |
195 | rpath = false |
196 | # disable codegen tests |
197 | codegen-tests = false |
198 | use-jemalloc = true |
199 | # Work around https://github.com/rust-lang/rust/issues/51650 |
200 | deny-warnings = false |
201 | |
202 | [target.${myRUSTCHOST}] |
203 | llvm-config = "/usr/bin/llvm-config" |
204 | EOF |
205 | |
206 | ## missing llvm link deps |
207 | export RUSTFLAGS="$RUSTFLAGS -C link-args=-lffi" |
208 | python2 ./x.py build --verbose || die |
209 | } |
210 | |
211 | src_install_rust() |
212 | { |
213 | cd ${SRCDIR} |
214 | DESTDIR=${BINDIR} python2 ./x.py install || die |
215 | |
216 | # remove unnecessary files |
217 | mdelete /usr/$(mlibdir)/rustlib/components || die |
218 | mdelete /usr/$(mlibdir)/rustlib/manifest-rustc || die |
219 | mdelete /usr/$(mlibdir)/rustlib/rust-installer-version || die |
220 | |
221 | # overwrite duplicate solibs with symlinks to safe space |
222 | local myARCH |
223 | local myRUSTHOST |
224 | myARCH="${ARCH}" |
225 | [[ ${ARCH} = i*86 ]] && myARCH="i686" |
226 | myRUSTCHOST="${myARCH}-unknown-linux-gnu" |
227 | local i |
228 | for i in ${BINDIR}/usr/$(mlibdir)/rustlib/${myRUSTCHOST}/lib/*.so |
229 | do |
230 | mlink rustlib/${myRUSTCHOST}/lib/$(basename ${i}) /usr/$(mlibdir)/ || die |
231 | done |
232 | |
233 | # move split packages out of the way |
234 | install -d ${SRCDIR}/rust-split-packages/rls/usr/bin || die |
235 | install -d ${SRCDIR}/rust-split-packages/fmt/usr/bin || die |
236 | install -d ${SRCDIR}/rust-split-packages/cargo/usr/bin || die |
237 | install -d ${SRCDIR}/rust-split-packages/cargo/usr/share/man/man1 || die |
238 | install -d ${SRCDIR}/rust-split-packages/cargo/usr/share/doc/${PNAME}-${PVER}/html || die |
239 | mv ${BINDIR}/usr/bin/rls ${SRCDIR}/rust-split-packages/rls/usr/bin/ || die |
240 | mv ${BINDIR}/usr/bin/cargo-fmt ${SRCDIR}/rust-split-packages/fmt/usr/bin/ || die |
241 | mv ${BINDIR}/usr/bin/rustfmt ${SRCDIR}/rust-split-packages/fmt/usr/bin/ || die |
242 | mv ${BINDIR}/usr/bin/cargo ${SRCDIR}/rust-split-packages/cargo/usr/bin/ || die |
243 | mv ${BINDIR}/etc ${SRCDIR}/rust-split-packages/cargo/ || die |
244 | mv ${BINDIR}/usr/share/doc/${PNAME}-${PVER}/html/cargo ${SRCDIR}/rust-split-packages/cargo/usr/share/doc/${PNAME}-${PVER}/html/ || die |
245 | mv ${BINDIR}/usr/share/man/man1/cargo*.1 ${SRCDIR}/rust-split-packages/cargo/usr/share/man/man1/ || die |
246 | |
247 | minstalldocs COPYRIGHT LICENSE-* ChangeLog README* || die |
248 | } |
249 | |
250 | src_install_cargo() |
251 | { |
252 | install -d ${BINDIR} || die |
253 | mv ${SRCDIR}/rust-split-packages/cargo/* ${BINDIR}/ || die |
254 | local docsubdir="src/tools/cargo" |
255 | minstalldocs ${docsubdir}/COPYRIGHT* ${docsubdir}/CHANGELOG* ${docsubdir}/LICENSE* ${docsubdir}/README* || die |
256 | } |
257 | |
258 | src_install_rustfmt() |
259 | { |
260 | install -d ${BINDIR} || die |
261 | mv ${SRCDIR}/rust-split-packages/fmt/* ${BINDIR}/ || die |
262 | local docsubdir="src/tools/rustfmt" |
263 | minstalldocs ${docsubdir}/COPYRIGHT* ${docsubdir}/CHANGELOG* ${docsubdir}/LICENSE* ${docsubdir}/README* || die |
264 | } |
265 | |
266 | src_install_rust-rls() |
267 | { |
268 | install -d ${BINDIR} || die |
269 | mv ${SRCDIR}/rust-split-packages/rls/* ${BINDIR}/ || die |
270 | local docsubdir="src/tools/rls" |
271 | minstalldocs ${docsubdir}/COPYRIGHT* ${docsubdir}/CHANGELOG* ${docsubdir}/LICENSE* ${docsubdir}/README* || die |
272 | } |