Magellan Linux

Contents of /trunk/extras/rust/rust-1.31.0-r1.smage2

Parent Directory Parent Directory | Revision Log Revision Log


Revision 31822 - (show annotations) (download)
Wed Dec 12 13:37:28 2018 UTC (5 years, 4 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 }