rust-vl.spec 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056
  1. %bcond_with bootstrap
  2. %bcond_with test
  3. %bcond_with newrpm
  4. %bcond_with miri
  5. %bcond_without clang
  6. %bcond_without bundled_libgit2
  7. %bcond_without bundled_libssh2
  8. # Some sub-packages are versioned independently of the rust compiler and runtime itself.
  9. # Also beware that if any of these are not changed in a version bump, then the release
  10. # number should still increase, not be reset to 1!
  11. %global rustc_version 1.81.0
  12. %global cargo_version %{rustc_version}
  13. %global rustfmt_version %{rustc_version}
  14. %global rls_version %{rustc_version}
  15. %global clippy_version %{rustc_version}
  16. # The channel can be stable, beta, or nightly
  17. %{!?channel: %global channel stable}
  18. # Only x86_64 and i686 are Tier 1 platforms at this time.
  19. # https://forge.rust-lang.org/platform-support.html
  20. %global rust_arches x86_64 i686
  21. # To bootstrap from scratch, set the channel and date from src/stage0.txt
  22. # e.g. 1.10.0 wants rustc: 1.9.0-2016-05-24
  23. # or nightly wants some beta-YYYY-MM-DD
  24. %global bootstrap_rust 1.80.1
  25. %global bootstrap_cargo 1.80.1
  26. %global bootstrap_channel %{bootstrap_rust}
  27. # Only the specified arches will use bootstrap binaries.
  28. %if %{with bootstrap}
  29. %global bootstrap_arches %%{rust_arches}
  30. %endif
  31. # We generally don't want llvm-static present at all, since llvm-config will
  32. # make us link statically. But we can opt in, e.g. to aid LLVM rebases.
  33. # FIXME: LLVM 3.9 prefers shared linking now! Which is good, but next time we
  34. # *want* static we'll have to force it with "llvm-config --link-static".
  35. # See also https://github.com/rust-lang/rust/issues/36854
  36. # The new rustbuild accepts `--enable-llvm-link-shared`, else links static.
  37. %bcond_with llvm_static
  38. # We can also choose to just use Rust's bundled LLVM, in case the system LLVM
  39. # is insufficient. Rust currently requires LLVM 3.7+.
  40. %bcond_with bundled_llvm
  41. # LLDB only works on some architectures
  42. %ifarch %{arm} aarch64 %{ix86} x86_64
  43. # LLDB isn't available everywhere...
  44. %bcond_without lldb
  45. %else
  46. %bcond_with lldb
  47. %endif
  48. Summary: The Rust Programming Language
  49. Name: rust
  50. Version: %{rustc_version}
  51. Release: 1%{?_dist_release}
  52. Group: programming
  53. Vendor: Project Vine
  54. Distribution: Vine Linux
  55. License: (ASL 2.0 or MIT) and (BSD and ISC and MIT)
  56. # ^ written as: (rust itself) and (bundled libraries)
  57. URL: https://www.rust-lang.org
  58. ExclusiveArch: %{rust_arches}
  59. %if "%{channel}" == "stable"
  60. %global rustc_package rustc-%{version}-src
  61. %else
  62. %global rustc_package rustc-%{channel}-src
  63. %endif
  64. Source0: https://static.rust-lang.org/dist/%{rustc_package}.tar.gz
  65. # Get the Rust triple for any arch.
  66. %{lua: function rust_triple(arch)
  67. local abi = "gnu"
  68. if arch == "armv7hl" then
  69. arch = "armv7"
  70. abi = "gnueabihf"
  71. elseif arch == "ppc64" then
  72. arch = "powerpc64"
  73. elseif arch == "ppc64le" then
  74. arch = "powerpc64le"
  75. end
  76. return arch.."-unknown-linux-"..abi
  77. end}
  78. %global rust_triple %{lua: print(rust_triple(rpm.expand("%{_target_cpu}")))}
  79. %if %defined bootstrap_arches
  80. # For each bootstrap arch, add an additional binary Source.
  81. # Also define bootstrap_source just for the current target.
  82. %{lua: do
  83. local bootstrap_arches = {}
  84. for arch in string.gmatch(rpm.expand("%{bootstrap_arches}"), "%S+") do
  85. table.insert(bootstrap_arches, arch)
  86. end
  87. local base = rpm.expand("https://static.rust-lang.org/dist"
  88. .."/rust-%{bootstrap_channel}")
  89. local target_arch = rpm.expand("%{_target_cpu}")
  90. for i, arch in ipairs(bootstrap_arches) do
  91. print(string.format("Source%d: %s-%s.tar.gz\n",
  92. i, base, rust_triple(arch)))
  93. if arch == target_arch then
  94. rpm.define("bootstrap_source "..i)
  95. end
  96. end
  97. end}
  98. %endif
  99. %ifarch %{bootstrap_arches}
  100. %global bootstrap_root rust-%{bootstrap_channel}-%{rust_triple}
  101. %global local_rust_root %{_builddir}/%{bootstrap_root}/usr
  102. Provides: bundled(%{name}-bootstrap) = %{bootstrap_rust}
  103. %else
  104. BuildRequires: cargo >= %{bootstrap_cargo}
  105. BuildRequires: %{name} >= %{bootstrap_rust}
  106. BuildConflicts: %{name} > %{version}
  107. %global local_rust_root %{_prefix}
  108. %endif
  109. BuildRequires: cmake
  110. BuildRequires: make
  111. %if %{with clang}
  112. BuildRequires: clang
  113. BuildRequires: lld
  114. %else
  115. BuildRequires: gcc
  116. BuildRequires: gcc-c++
  117. %endif
  118. %if %{without bundled_libgit2}
  119. BuildRequires: libgit2-devel
  120. %endif
  121. %if %{without bundled_libssh2}
  122. BuildRequires: libssh2-devel
  123. %endif
  124. BuildRequires: ncurses-devel
  125. BuildRequires: openssl-devel
  126. BuildRequires: zlib-ng-compat-devel
  127. BuildRequires: python3
  128. BuildRequires: python3-rpm-macros
  129. BuildRequires: curl
  130. BuildRequires: curl-devel
  131. BuildRequires: xz-devel
  132. %if %{with bundled_llvm}
  133. BuildRequires: cmake
  134. BuildRequires: git
  135. Provides: bundled(llvm) = 6.0
  136. %else
  137. BuildRequires: cmake
  138. %if %defined llvm
  139. %global llvm_root %{_libdir}/%{llvm}
  140. %else
  141. %global llvm llvm
  142. %global llvm_root %{_prefix}
  143. %global llvm_has_filecheck 1
  144. %endif
  145. BuildRequires: %{llvm}-devel >= 11.0.0
  146. %if %{with llvm_static}
  147. BuildRequires: %{llvm}-static
  148. BuildRequires: libffi-devel
  149. %else
  150. BuildConflicts: %{llvm}-static
  151. %endif
  152. %endif
  153. # make check needs "ps" for src/test/run-pass/wait-forked-but-failed-child.rs
  154. BuildRequires: procps
  155. # debuginfo-gdb tests need gdb
  156. BuildRequires: gdb
  157. # TODO: work on unbundling these!
  158. Provides: bundled(jquery) = 2.1.4
  159. Provides: bundled(miniz) = 1.14
  160. # Virtual provides for folks who attempt "dnf install rustc"
  161. Provides: rustc = %{version}-%{release}
  162. Provides: rustc%{?_isa} = %{version}-%{release}
  163. Obsoletes: rust-rls < %{version}-%{release}
  164. Obsoletes: rust-analysis < %{version}-%{release}
  165. %if ! %{with miri}
  166. Obsoletes: rust-miri < %{version}-%{release}
  167. %endif
  168. # Always require our exact standard library
  169. Requires: %{name}-std-static%{?_isa} = %{version}-%{release}
  170. # The C compiler is needed at runtime just for linking. Someday rustc might
  171. # invoke the linker directly, and then we'll only need binutils.
  172. # https://github.com/rust-lang/rust/issues/11937
  173. Requires: /usr/bin/cc
  174. # ALL Rust libraries are private, because they don't keep an ABI.
  175. %global _privatelibs lib(.*-[[:xdigit:]]{16}*|rustc.*)[.]so.*
  176. %global __provides_exclude ^(%{_privatelibs})$
  177. %global __requires_exclude ^(%{_privatelibs})$
  178. %global __provides_exclude_from ^(%{_docdir}|%{rustlibdir}/src)/.*$
  179. %global __requires_exclude_from ^(%{_docdir}|%{rustlibdir}/src)/.*$
  180. %if !%{with newrpm}
  181. # eu-strip is very eager by default, so we have to limit it to -g, only debugging symbols.
  182. %global _find_debuginfo_opts -g
  183. %undefine _include_minidebuginfo
  184. %else
  185. # Newer find-debuginfo.sh supports --keep-section, which is preferable. rhbz1465997
  186. %global _find_debuginfo_opts --keep-section .rustc
  187. %endif
  188. %if !%{with newrpm}
  189. Obsoletes: rust-debuginfo < %{version}-%{release}
  190. %else
  191. %ifnarch x86_64
  192. Obsoletes: rust-debuginfo < %{version}-%{release}
  193. %endif
  194. %endif
  195. # Use hardening ldflags.
  196. %global rustflags -Clink-arg=-Wl,-z,relro,-z,now
  197. %if %{without bundled_llvm} && "%{llvm_root}" != "%{_prefix}"
  198. # https://github.com/rust-lang/rust/issues/40717
  199. %global library_path $(%{llvm_root}/bin/llvm-config --libdir)
  200. %endif
  201. %description
  202. Rust is a systems programming language that runs blazingly fast, prevents
  203. segfaults, and guarantees thread safety.
  204. This package includes the Rust compiler and documentation generator.
  205. %package std-static
  206. Summary: Standard library for Rust
  207. Group: programming
  208. %description std-static
  209. This package includes the standard libraries for building applications
  210. written in Rust.
  211. %package debugger-common
  212. Summary: Common debugger pretty printers for Rust
  213. Group: programming
  214. BuildArch: noarch
  215. %description debugger-common
  216. This package includes the common functionality for %{name}-gdb and %{name}-lldb.
  217. %package gdb
  218. Summary: GDB pretty printers for Rust
  219. Group: programming
  220. BuildArch: noarch
  221. Requires: gdb
  222. Requires: %{name}-debugger-common = %{version}-%{release}
  223. %description gdb
  224. This package includes the rust-gdb script, which allows easier debugging of Rust
  225. programs.
  226. %if %{with lldb}
  227. %package lldb
  228. Summary: LLDB pretty printers for Rust
  229. Group: programming
  230. # It could be noarch, but lldb has limited availability
  231. #BuildArch: noarch
  232. Requires: lldb
  233. Requires: python3-lldb
  234. Requires: %{name}-debugger-common = %{version}-%{release}
  235. %description lldb
  236. This package includes the rust-lldb script, which allows easier debugging of Rust
  237. programs.
  238. %endif
  239. %package doc
  240. Summary: Documentation for Rust
  241. Group: documentation
  242. # NOT BuildArch: noarch
  243. # Note, while docs are mostly noarch, some things do vary by target_arch.
  244. # Koji will fail the build in rpmdiff if two architectures build a noarch
  245. # subpackage differently, so instead we have to keep its arch.
  246. %description doc
  247. This package includes HTML documentation for the Rust programming language and
  248. its standard library.
  249. %package -n cargo
  250. Summary: Rust's package manager and build tool
  251. Version: %{cargo_version}
  252. Group: programming
  253. # For tests:
  254. BuildRequires: git
  255. # Cargo is not much use without Rust
  256. Requires: rust
  257. %description -n cargo
  258. Cargo is a tool that allows Rust projects to declare their various dependencies
  259. and ensure that you'll always get a repeatable build.
  260. %package -n cargo-doc
  261. Summary: Documentation for Cargo
  262. Version: %{cargo_version}
  263. Group: programming
  264. BuildArch: noarch
  265. # Cargo no longer builds its own documentation
  266. # https://github.com/rust-lang/cargo/pull/4904
  267. Requires: rust-doc = %{rustc_version}-%{release}
  268. %description -n cargo-doc
  269. This package includes HTML documentation for Cargo.
  270. %package -n rustfmt
  271. Summary: Tool to find and fix Rust formatting issues
  272. Version: %{rustfmt_version}
  273. Group: programming
  274. Requires: cargo
  275. Obsoletes: rustfmt-preview < 1.0.0
  276. %description -n rustfmt
  277. A tool for formatting Rust code according to style guidelines.
  278. %package -n clippy
  279. Summary: Lints to catch common mistakes and improve your Rust code
  280. Version: %{clippy_version}
  281. Group: programming
  282. License: MPLv2.0
  283. Requires: cargo
  284. # /usr/bin/clippy-driver is dynamically linked against internal rustc libs
  285. Requires: %{name} = %{rustc_version}-%{release}
  286. Obsoletes: clippy-preview < 1.0.0
  287. %description -n clippy
  288. A collection of lints to catch common mistakes and improve your Rust code.
  289. %package src
  290. Summary: Sources for the Rust standard library
  291. Group: programming
  292. BuildArch: noarch
  293. %description src
  294. This package includes source files for the Rust standard library. It may be
  295. useful as a reference for code completion tools in various editors.
  296. %if %{with miri}
  297. %package miri
  298. Summary: An interpreter for Rust's mid-level intermediate representation
  299. Group: programming
  300. Requires: rust = %{rustc_version}-%{release}
  301. %description miri
  302. An experimental interpreter for Rust's mid-level intermediate representation
  303. (MIR). It can run binaries and test suites of cargo projects and detect certain
  304. classes of undefined behavior.
  305. %endif
  306. %package analyzer
  307. Summary: A modular compiler frontend for the Rust language
  308. Group: programming
  309. Requires: rust = %{rustc_version}-%{release}
  310. %description analyzer
  311. rust-analyzer is a modular compiler frontend for the Rust language.
  312. %if %{with newrpm}
  313. # debuginfo is available on x86_64 only
  314. %ifarch x86_64
  315. %debug_package
  316. %else
  317. %global _build_id_links none
  318. %global __debug_install_post %{nil}
  319. %global debug_package %{nil}
  320. %endif
  321. %else
  322. %global _build_id_links none
  323. %global __debug_install_post %{nil}
  324. %global debug_package %{nil}
  325. %endif
  326. %prep
  327. %ifarch %{bootstrap_arches}
  328. %setup -q -n %{bootstrap_root} -T -b %{bootstrap_source}
  329. ./install.sh --components=cargo,rustc,rust-std-%{rust_triple} \
  330. --prefix=%{local_rust_root} --disable-ldconfig
  331. test -f '%{local_rust_root}/bin/cargo'
  332. test -f '%{local_rust_root}/bin/rustc'
  333. %endif
  334. %setup -q -n %{rustc_package}
  335. %autopatch -p1
  336. sed -i.try-py3 -e '/try python2.7/i try python3 "$@"' ./configure
  337. %if %without bundled_llvm
  338. rm -rf src/llvm-project/
  339. mkdir -p src/llvm-project/libunwind/
  340. %endif
  341. # We never enable emscripten.
  342. rm -rf src/llvm-emscripten/
  343. # Remove other unused vendored libraries
  344. rm -rf vendor/curl-sys/curl/
  345. rm -rf vendor/*jemalloc-sys*/jemalloc/
  346. rm -rf vendor/libmimalloc-sys/c_src/mimalloc/
  347. rm -rf vendor/libz-sys/src/zlib/
  348. rm -rf vendor/libz-sys/src/zlib-ng/
  349. rm -rf vendor/lzma-sys/xz-*/
  350. rm -rf vendor/openssl-src/openssl/
  351. %if %{without bundled_libgit2}
  352. rm -rf vendor/libgit2-sys/libgit2/
  353. %endif
  354. %if %{without bundled_libssh2}
  355. rm -rf vendor/libssh2-sys/libssh2/
  356. %endif
  357. # This only affects the transient rust-installer, but let it use our dynamic xz-libs
  358. sed -i.lzma -e '/LZMA_API_STATIC/d' src/bootstrap/src/core/build_steps/tool.rs
  359. # rename bundled license for packaging
  360. if [ -e vendor/backtrace-sys/src/libbacktrace/LICENSE ]; then
  361. cp -a vendor/backtrace-sys/src/libbacktrace/LICENSE{,-libbacktrace}
  362. fi
  363. %if %{with bundled_llvm} && 0%{?epel}
  364. mkdir -p cmake-bin
  365. ln -s /usr/bin/cmake cmake-bin/cmake
  366. %global cmake_path $PWD/cmake-bin
  367. %endif
  368. %if %{without bundled_llvm} && %{with llvm_static}
  369. # Static linking to distro LLVM needs to add -lffi
  370. # https://github.com/rust-lang/rust/issues/34486
  371. sed -i.ffi -e '$a #[link(name = "ffi")] extern {}' \
  372. src/librustc_llvm/lib.rs
  373. %endif
  374. # The configure macro will modify some autoconf-related files, which upsets
  375. # cargo when it tries to verify checksums in those files. If we just truncate
  376. # that file list, cargo won't have anything to complain about.
  377. find vendor -name .cargo-checksum.json \
  378. -exec sed -i.uncheck -e 's/"files":{[^}]*}/"files":{ }/' '{}' '+'
  379. %build
  380. %if %{without bundled_libgit2}
  381. export LIBGIT2_SYS_USE_PKG_CONFIG=1
  382. %endif
  383. %if %{without bundled_libssh2}
  384. export LIBSSH2_SYS_USE_PKG_CONFIG=1
  385. %endif
  386. %{?cmake_path:export PATH=%{cmake_path}:$PATH}
  387. %{?library_path:export LIBRARY_PATH="%{library_path}"}
  388. %{?rustflags:export RUSTFLAGS="%{rustflags}"}
  389. # We're going to override --libdir when configuring to get rustlib into a
  390. # common path, but we'll fix the shared libraries during install.
  391. %global common_libdir %{_prefix}/lib
  392. %global rustlibdir %{common_libdir}/rustlib
  393. %ifarch x86_64
  394. %if %{with newrpm}
  395. %define enable_debuginfo --debuginfo-level=0 --debuginfo-level-std=2
  396. %else
  397. %define enable_debuginfo --debuginfo-level=0
  398. %global debug_package %{nil}
  399. %endif
  400. %else
  401. %define enable_debuginfo --debuginfo-level=0
  402. %global debug_package %{nil}
  403. %endif
  404. # Some builders have relatively little memory for their CPU count.
  405. # At least 2GB per CPU is a good rule of thumb for building rustc.
  406. ncpus=$(/usr/bin/getconf _NPROCESSORS_ONLN)
  407. max_cpus=$(( ($(LANG=C free -g | awk '/^Mem:/{print $2}') + 1) / 2 ))
  408. if [ "$max_cpus" -ge 1 -a "$max_cpus" -lt "$ncpus" ]; then
  409. ncpus="$max_cpus"
  410. fi
  411. %if %{with clang}
  412. export CC=clang
  413. export CXX=clang++
  414. export LDFLAGS="$LDFLAGS -fuse-ld=lld"
  415. export RUSTFLAGS="$RUSTFLAGS -C linker=clang -C link-arg=-fuse-ld=lld"
  416. %endif
  417. # workaround for https://github.com/rust-lang/rust/issues/69953
  418. # --set rust.deny-warnings=false
  419. %configure \
  420. --disable-option-checking \
  421. --docdir=%{_pkgdocdir} \
  422. --libdir=%{common_libdir} \
  423. --build=%{rust_triple} --host=%{rust_triple} --target=%{rust_triple} \
  424. --enable-local-rust --local-rust-root=%{local_rust_root} \
  425. --set build.build-stage=2 \
  426. --set build.doc-stage=2 \
  427. --set build.install-stage=2 \
  428. --set build.test-stage=2 \
  429. --set build.optimized-compiler-builtins=false \
  430. --set build.rustfmt=/bin/true \
  431. %{!?with_bundled_llvm: --llvm-root=%{llvm_root} \
  432. %{!?llvm_has_filecheck: --disable-codegen-tests} \
  433. %{!?with_llvm_static: --enable-llvm-link-shared } } \
  434. --disable-llvm-static-stdcpp \
  435. --disable-rpath \
  436. %{enable_debuginfo} \
  437. --set rust.codegen-units-std=1 \
  438. --enable-extended \
  439. --tools=cargo,clippy,rustfmt,rust-analyzer,src \
  440. --enable-vendor \
  441. --enable-verbose-tests \
  442. --release-channel=%{channel} \
  443. --dist-compression-formats=gz \
  444. --release-description="Vine Linux %{version}-%{release}" \
  445. %{nil}
  446. %{__python3} ./x.py build -j "$ncpus"
  447. %{__python3} ./x.py doc
  448. %install
  449. rm -rf %{buildroot}
  450. %{?cmake_path:export PATH=%{cmake_path}:$PATH}
  451. %{?library_path:export LIBRARY_PATH="%{library_path}"}
  452. %{?rustflags:export RUSTFLAGS="%{rustflags}"}
  453. %if %{with clang}
  454. export CC=clang
  455. export CXX=clang++
  456. export RUSTFLAGS="$RUSTFLAGS -C linker=clang -C link-arg=-fuse-ld=lld"
  457. %endif
  458. DESTDIR=%{buildroot} ./x.py install
  459. #DESTDIR=%{buildroot} ./x.py install src
  460. # Make sure the shared libraries are in the proper libdir
  461. %if "%{_libdir}" != "%{common_libdir}"
  462. mkdir -p %{buildroot}%{_libdir}
  463. find %{buildroot}%{common_libdir} -maxdepth 1 -type f -name '*.so' \
  464. -exec mv -v -t %{buildroot}%{_libdir} '{}' '+'
  465. %endif
  466. # The shared libraries should be executable for debuginfo extraction.
  467. find %{buildroot}%{_libdir} -maxdepth 1 -type f -name '*.so' \
  468. -exec chmod -v +x '{}' '+'
  469. # The libdir libraries are identical to those under rustlib/. It's easier on
  470. # library loading if we keep them in libdir, but we do need them in rustlib/
  471. # to support dynamic linking for compiler plugins, so we'll symlink.
  472. (cd "%{buildroot}%{rustlibdir}/%{rust_triple}/lib" &&
  473. find ../../../../%{_lib} -maxdepth 1 -name '*.so' |
  474. while read lib; do
  475. if [ -f "${lib##*/}" ]; then
  476. # make sure they're actually identical!
  477. cmp "$lib" "${lib##*/}"
  478. ln -v -f -s -t . "$lib"
  479. fi
  480. done)
  481. # Remove installer artifacts (manifests, uninstall scripts, etc.)
  482. find %{buildroot}%{rustlibdir} -maxdepth 1 -type f -exec rm -v '{}' '+'
  483. # Remove backup files from %%configure munging
  484. find %{buildroot}%{rustlibdir} -type f -name '*.orig' -exec rm -v '{}' '+'
  485. # https://fedoraproject.org/wiki/Changes/Make_ambiguous_python_shebangs_error
  486. # We don't actually need to ship any of those python scripts in rust-src anyway.
  487. find %{buildroot}%{rustlibdir}/src -type f -name '*.py' -exec rm -v '{}' '+'
  488. # FIXME: __os_install_post will strip the rlibs
  489. # -- should we find a way to preserve debuginfo?
  490. # Remove unwanted documentation files (we already package them)
  491. # Remove unwanted documentation files (we already package them)
  492. rm -f %{buildroot}%{_docdir}/%{name}/README.md
  493. rm -f %{buildroot}%{_docdir}/%{name}/COPYRIGHT
  494. rm -f %{buildroot}%{_docdir}/%{name}/LICENSE
  495. rm -f %{buildroot}%{_docdir}/%{name}/LICENSE-APACHE
  496. rm -f %{buildroot}%{_docdir}/%{name}/LICENSE-MIT
  497. rm -f %{buildroot}%{_docdir}/%{name}/LICENSE-THIRD-PARTY
  498. rm -f %{buildroot}%{_docdir}/%{name}/*.old
  499. # Sanitize the HTML documentation
  500. find %{buildroot}%{_docdir}/%{name}/html -empty -delete
  501. find %{buildroot}%{_docdir}/%{name}/html -type f -exec chmod -x '{}' '+'
  502. # Create the path for crate-devel packages
  503. mkdir -p %{buildroot}%{_datadir}/cargo/registry
  504. # Cargo no longer builds its own documentation
  505. # https://github.com/rust-lang/cargo/pull/4904
  506. mkdir -p %{buildroot}%{_docdir}/cargo
  507. ln -sT ../rust/html/cargo/ %{buildroot}%{_docdir}/cargo/html
  508. rm -f %{buildroot}%{_bindir}/*.old
  509. %if %{without lldb}
  510. rm -f %{buildroot}%{_bindir}/rust-lldb
  511. rm -f %{buildroot}%{rustlibdir}/etc/lldb_*.py*
  512. rm -f %{buildroot}%{rustlibdir}/etc/lldb_commands
  513. %endif
  514. %if %{with bundled_llvm}
  515. rm -rf %{buildroot}/home
  516. %endif
  517. # We don't want Rust copies of LLVM tools (rust-lld, rust-llvm-dwp)
  518. rm -rf %{buildroot}%{rustlibdir}/%{rust_triple}/bin/gcc-ld
  519. rm -f %{buildroot}%{rustlibdir}/%{rust_triple}/bin/*
  520. %check
  521. %if %{with test}
  522. %{?cmake_path:export PATH=%{cmake_path}:$PATH}
  523. %{?library_path:export LIBRARY_PATH="%{library_path}"}
  524. %{?rustflags:export RUSTFLAGS="%{rustflags}"}
  525. %if %{with clang}
  526. export CC=clang
  527. export CXX=clang++
  528. export LD=ld.lld
  529. export RUSTFLAGS="$RUSTFLAGS -C linker=ld.lld -C link-arg=-fuse-ld=lld"
  530. %endif
  531. # The results are not stable on koji, so mask errors and just log it.
  532. %{__python3} ./x.py test --no-fail-fast || :
  533. %{__python3} ./x.py test --no-fail-fast cargo || :
  534. %{__python3} ./x.py test --no-fail-fast clippy || :
  535. %{__python3} ./x.py test --no-fail-fast rustfmt || :
  536. %endif
  537. %files
  538. %license COPYRIGHT LICENSE-APACHE LICENSE-MIT
  539. #license src/libbacktrace/LICENSE-libbacktrace
  540. %doc README.md
  541. %{_bindir}/rustc
  542. %{_bindir}/rustdoc
  543. %{_libdir}/*.so
  544. %{_mandir}/man1/rustc.1*
  545. %{_mandir}/man1/rustdoc.1*
  546. %dir %{rustlibdir}
  547. %dir %{rustlibdir}/%{rust_triple}
  548. %dir %{rustlibdir}/%{rust_triple}/lib
  549. %{rustlibdir}/%{rust_triple}/lib/*.so
  550. %files std-static
  551. %dir %{rustlibdir}
  552. %dir %{rustlibdir}/%{rust_triple}
  553. %dir %{rustlibdir}/%{rust_triple}/lib
  554. %{rustlibdir}/%{rust_triple}/lib/*.rlib
  555. %files debugger-common
  556. %dir %{rustlibdir}
  557. %dir %{rustlibdir}/etc
  558. %{rustlibdir}/etc/rust_types.py*
  559. %files gdb
  560. %{_bindir}/rust-gdb
  561. %{rustlibdir}/etc/gdb_*.py*
  562. %exclude %{_bindir}/rust-gdbgui
  563. %if %with lldb
  564. %files lldb
  565. %{_bindir}/rust-lldb
  566. %{rustlibdir}/etc/lldb_*.py*
  567. %{rustlibdir}/etc/lldb_commands
  568. %endif
  569. %files doc
  570. %docdir %{_docdir}/%{name}
  571. %dir %{_docdir}/%{name}
  572. %dir %{_docdir}/%{name}/html
  573. %{_docdir}/%{name}/html/*/
  574. %{_docdir}/%{name}/html/*.html
  575. %{_docdir}/%{name}/html/*.css
  576. %{_docdir}/%{name}/html/*.js
  577. %{_docdir}/%{name}/html/robots.txt
  578. %{_docdir}/%{name}/html/releases.md
  579. %files -n cargo
  580. %license src/tools/cargo/LICENSE-APACHE src/tools/cargo/LICENSE-MIT src/tools/cargo/LICENSE-THIRD-PARTY
  581. %doc src/tools/cargo/README.md
  582. %{_bindir}/cargo
  583. %{_mandir}/man1/cargo*.1*
  584. %dir %{_sysconfdir}/bash_completion.d
  585. %{_sysconfdir}/bash_completion.d/cargo
  586. %dir %{_datadir}/zsh
  587. %dir %{_datadir}/zsh/site-functions
  588. %{_datadir}/zsh/site-functions/_cargo
  589. %dir %{_datadir}/cargo
  590. %dir %{_datadir}/cargo/registry
  591. %files -n cargo-doc
  592. %docdir %{_docdir}/cargo
  593. %dir %{_docdir}/cargo
  594. %{_docdir}/cargo/html
  595. %files -n rustfmt
  596. %{_bindir}/rustfmt
  597. %{_bindir}/cargo-fmt
  598. %doc src/tools/rustfmt/{README,CHANGELOG,Configurations}.md
  599. %license src/tools/rustfmt/LICENSE-{APACHE,MIT}
  600. %files -n clippy
  601. %{_bindir}/cargo-clippy
  602. %{_bindir}/clippy-driver
  603. %doc src/tools/clippy/{README.md,CHANGELOG.md}
  604. %license src/tools/clippy/LICENSE*
  605. %files src
  606. %dir %{rustlibdir}
  607. %{rustlibdir}/src
  608. %files analyzer
  609. %{_bindir}/rust-analyzer
  610. %{_libexecdir}/rust-analyzer-proc-macro-srv
  611. %if %{with miri}
  612. %files miri
  613. %{_bindir}/miri
  614. %{_bindir}/cargo-miri
  615. %endif
  616. %changelog
  617. * Fri Sep 06 2024 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.81.0-1
  618. - new upstream release.
  619. * Thu Sep 05 2024 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.80.1-1
  620. - new upstream release.
  621. * Sat Jul 27 2024 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.80.0-1
  622. - new upstream release.
  623. * Thu Jun 13 2024 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.79.0-1
  624. - new upstream release.
  625. * Mon May 06 2024 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.78.0-1
  626. - new upstream release.
  627. * Thu Mar 28 2024 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.77.0-1
  628. - new upstream release.
  629. * Fri Feb 09 2024 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.76.0-1
  630. - new upstream release.
  631. * Fri Dec 29 2023 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.75.0-1
  632. - new upstream release.
  633. * Tue Dec 19 2023 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.74.1-1
  634. - new upstream release.
  635. * Fri Nov 17 2023 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.74.0-1
  636. - new upstream release.
  637. * Fri Oct 06 2023 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.73.0-1
  638. - new upstream release.
  639. * Sun Oct 01 2023 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.72.1-1
  640. - new upstream release.
  641. * Fri Aug 25 2023 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.72.0-1
  642. - new upstream release.
  643. * Fri Jul 14 2023 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.71.0-1
  644. - new upstream release.
  645. * Sun Jun 04 2023 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.70.0-1
  646. - new upstream release.
  647. * Thu Apr 20 2023 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.69.0-1
  648. - new upstream release.
  649. - dropped rust-analysis.
  650. * Wed Mar 29 2023 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.68.2-1
  651. - new upstream release.
  652. * Tue Mar 28 2023 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.68.1-1
  653. - new upstream release.
  654. * Fri Mar 10 2023 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.68.0-1
  655. - new upstream release.
  656. * Fri Feb 10 2023 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.67.1-1
  657. - new upstream release.
  658. * Fri Jan 27 2023 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.67.0-1
  659. - new upstream release.
  660. * Wed Jan 11 2023 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.66.1-1
  661. - new upstream release.
  662. * Fri Dec 16 2022 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.66.0-1
  663. - new upstream release.
  664. * Fri Nov 04 2022 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.65.0-1
  665. - new upstream release.
  666. * Fri Sep 23 2022 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.64.0-1
  667. - new upstream release.
  668. * Fri Aug 12 2022 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.63.0-1
  669. - new upstream release.
  670. * Wed Jul 20 2022 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.62.1-1
  671. - new upstream release.
  672. * Fri Jul 01 2022 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.62.0-1
  673. - new upstream release.
  674. * Sat May 21 2022 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.61.0-1
  675. - new upstream release.
  676. * Fri Apr 22 2022 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.60.0-1
  677. - new upstream release.
  678. * Fri Feb 25 2022 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.59.0-1
  679. - new upstream release.
  680. * Fri Jan 21 2022 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.58.1-1
  681. - new upstream release.
  682. * Fri Jan 14 2022 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.58.0-1
  683. - new upstream release.
  684. * Fri Dec 03 2021 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.57.0-1
  685. - new upstream release.
  686. * Tue Nov 02 2021 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.56.1-1
  687. - new upstream release.
  688. * Fri Oct 22 2021 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.56.0-1
  689. - new upstream release.
  690. * Wed Sep 15 2021 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.55.0-1
  691. - new upstream release.
  692. * Wed Aug 11 2021 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.54.0-2
  693. - rebuilt with current toolchain.
  694. * Fri Jul 30 2021 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.54.0-1
  695. - new upstream release.
  696. * Mon Jun 21 2021 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.53.0-1
  697. - new upstream release.
  698. - dropped a package: rust-miri.
  699. * Sun Jun 13 2021 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.52.1-1
  700. - new upstream release.
  701. * Mon May 10 2021 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.52.0-1
  702. - new upstream release.
  703. - dropped Patch0 and 1: merged to upstream.
  704. * Sun Apr 18 2021 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.51.0-2
  705. - rebuilt with llvm-12.
  706. * Tue Mar 30 2021 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.51.0-1
  707. - new upstream release.
  708. * Sun Feb 21 2021 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.50.0-1
  709. - new upstream release.
  710. * Wed Jan 27 2021 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.49.0-1
  711. - new upstream release.
  712. * Sat Dec 12 2020 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.48.0-1
  713. - new upstream release.
  714. * Fri Oct 16 2020 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.47.0-1
  715. - new upstream release.
  716. * Thu Sep 24 2020 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.46.0-1
  717. - new upstream release.
  718. * Thu Mar 26 2020 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.42.0-1
  719. - new upstream release.
  720. - separated debuginfo.
  721. * Sun Dec 22 2019 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.40.0-1
  722. - new upstream release.
  723. * Sat Sep 28 2019 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.38.0-1
  724. - new upstream release.
  725. - erased "-preview" from the name of subpackages.
  726. * Wed Dec 05 2018 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.30.1-1
  727. - new upstream release.
  728. - dropped Patch1.
  729. - added subpackages cargo, cargo-doc, rustformat-preview, rls-preview, clippy-preview and rust-analysis.
  730. * Fri Jan 05 2018 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.23.0-1
  731. - Update to 1.23.0 (stable).
  732. * Tue Jan 02 2018 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.23.0-0.beta1
  733. - initial build for Vine Linux.
  734. - Update to 1.23.0-beta.
  735. - built a bootstrap rpm.
  736. * Thu Nov 23 2017 Josh Stone <jistone@redhat.com> - 1.22.1-1
  737. - Update to 1.22.1.
  738. * Thu Oct 12 2017 Josh Stone <jistone@redhat.com> - 1.21.0-1
  739. - Update to 1.21.0.
  740. * Mon Sep 11 2017 Josh Stone <jistone@redhat.com> - 1.20.0-2
  741. - ABI fixes for ppc64 and s390x.
  742. * Thu Aug 31 2017 Josh Stone <jistone@redhat.com> - 1.20.0-1
  743. - Update to 1.20.0.
  744. - Add a rust-src subpackage.
  745. * Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.19.0-4
  746. - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
  747. * Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.19.0-3
  748. - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
  749. * Mon Jul 24 2017 Josh Stone <jistone@redhat.com> - 1.19.0-2
  750. - Use find-debuginfo.sh --keep-section .rustc
  751. * Thu Jul 20 2017 Josh Stone <jistone@redhat.com> - 1.19.0-1
  752. - Update to 1.19.0.
  753. * Thu Jun 08 2017 Josh Stone <jistone@redhat.com> - 1.18.0-1
  754. - Update to 1.18.0.
  755. * Mon May 08 2017 Josh Stone <jistone@redhat.com> - 1.17.0-2
  756. - Move shared libraries back to libdir and symlink in rustlib
  757. * Thu Apr 27 2017 Josh Stone <jistone@redhat.com> - 1.17.0-1
  758. - Update to 1.17.0.
  759. * Mon Mar 20 2017 Josh Stone <jistone@redhat.com> - 1.16.0-3
  760. - Make rust-lldb arch-specific to deal with lldb deps
  761. * Fri Mar 17 2017 Josh Stone <jistone@redhat.com> - 1.16.0-2
  762. - Limit rust-lldb arches
  763. * Thu Mar 16 2017 Josh Stone <jistone@redhat.com> - 1.16.0-1
  764. - Update to 1.16.0.
  765. - Use rustbuild instead of the old makefiles.
  766. - Update bootstrapping to include rust-std and cargo.
  767. - Add a rust-lldb subpackage.
  768. * Thu Feb 09 2017 Josh Stone <jistone@redhat.com> - 1.15.1-1
  769. - Update to 1.15.1.
  770. - Require rust-rpm-macros for new crate packaging.
  771. - Keep shared libraries under rustlib/, only debug-stripped.
  772. - Merge and clean up conditionals for epel7.
  773. * Fri Dec 23 2016 Josh Stone <jistone@redhat.com> - 1.14.0-2
  774. - Rebuild without bootstrap binaries.
  775. * Thu Dec 22 2016 Josh Stone <jistone@redhat.com> - 1.14.0-1
  776. - Update to 1.14.0.
  777. - Rewrite bootstrap logic to target specific arches.
  778. - Bootstrap ppc64, ppc64le, s390x. (thanks to Sinny Kumari for testing!)
  779. * Thu Nov 10 2016 Josh Stone <jistone@redhat.com> - 1.13.0-1
  780. - Update to 1.13.0.
  781. - Use hardening flags for linking.
  782. - Split the standard library into its own package
  783. - Centralize rustlib/ under /usr/lib/ for multilib integration.
  784. * Thu Oct 20 2016 Josh Stone <jistone@redhat.com> - 1.12.1-1
  785. - Update to 1.12.1.
  786. * Fri Oct 14 2016 Josh Stone <jistone@redhat.com> - 1.12.0-7
  787. - Rebuild with LLVM 3.9.
  788. - Add ncurses-devel for llvm-config's -ltinfo.
  789. * Thu Oct 13 2016 Josh Stone <jistone@redhat.com> - 1.12.0-6
  790. - Rebuild with llvm-static, preparing for 3.9
  791. * Fri Oct 07 2016 Josh Stone <jistone@redhat.com> - 1.12.0-5
  792. - Rebuild with fixed eu-strip (rhbz1380961)
  793. * Fri Oct 07 2016 Josh Stone <jistone@redhat.com> - 1.12.0-4
  794. - Rebuild without bootstrap binaries.
  795. * Thu Oct 06 2016 Josh Stone <jistone@redhat.com> - 1.12.0-3
  796. - Bootstrap aarch64.
  797. - Use jemalloc's MALLOC_CONF to work around #36944.
  798. - Apply pr36933 to really disable armv7hl NEON.
  799. * Sat Oct 01 2016 Josh Stone <jistone@redhat.com> - 1.12.0-2
  800. - Protect .rustc from rpm stripping.
  801. * Fri Sep 30 2016 Josh Stone <jistone@redhat.com> - 1.12.0-1
  802. - Update to 1.12.0.
  803. - Always use --local-rust-root, even for bootstrap binaries.
  804. - Remove the rebuild conditional - the build system now figures it out.
  805. - Let minidebuginfo do its thing, since metadata is no longer a note.
  806. - Let rust build its own compiler-rt builtins again.
  807. * Sat Sep 03 2016 Josh Stone <jistone@redhat.com> - 1.11.0-3
  808. - Rebuild without bootstrap binaries.
  809. * Fri Sep 02 2016 Josh Stone <jistone@redhat.com> - 1.11.0-2
  810. - Bootstrap armv7hl, with backported no-neon patch.
  811. * Wed Aug 24 2016 Josh Stone <jistone@redhat.com> - 1.11.0-1
  812. - Update to 1.11.0.
  813. - Drop the backported patches.
  814. - Patch get-stage0.py to trust existing bootstrap binaries.
  815. - Use libclang_rt.builtins from compiler-rt, dodging llvm-static issues.
  816. - Use --local-rust-root to make sure the right bootstrap is used.
  817. * Sat Aug 13 2016 Josh Stone <jistone@redhat.com> 1.10.0-4
  818. - Rebuild without bootstrap binaries.
  819. * Fri Aug 12 2016 Josh Stone <jistone@redhat.com> - 1.10.0-3
  820. - Initial import into Fedora (#1356907), bootstrapped
  821. - Format license text as suggested in review.
  822. - Note how the tests already run in parallel.
  823. - Undefine _include_minidebuginfo, because it duplicates ".note.rustc".
  824. - Don't let checks fail the whole build.
  825. - Note that -doc can't be noarch, as rpmdiff doesn't allow variations.
  826. * Tue Jul 26 2016 Josh Stone <jistone@redhat.com> - 1.10.0-2
  827. - Update -doc directory ownership, and mark its licenses.
  828. - Package and declare licenses for libbacktrace and hoedown.
  829. - Set bootstrap_base as a global.
  830. - Explicitly require python2.
  831. * Thu Jul 14 2016 Josh Stone <jistone@fedoraproject.org> - 1.10.0-1
  832. - Initial package, bootstrapped