diff --git a/pkg.info b/pkg.info index 595094d..fb4d1a8 100644 --- a/pkg.info +++ b/pkg.info @@ -1,16 +1,41 @@ name: rustc description: The rust programming language compiler version: 1.90.0 +revision: 2 url: https://www.rust-lang.org/ license: Apache-2.0 or MIT architecture: any -depends: ["curl","gcc","glibc","libssh2","lld","llvm-libs","openssl","zlib"] -optional_depends: ["gdb"] -make_depends: ["clang","cmake","libffi","llvm","perl","python3","rustc","gdb","procps-ng"] type: source +depends: + - curl + - gcc + - glibc + - libssh2 + - lld + - llvm-libs + - openssl + - zlib +optional_depends: + - gdb +make_depends: + - clang + - cmake + - libffi + - llvm + - perl + - python3 + - rustc + - gdb + - procps-ng +downloads: + - url: https://static.rust-lang.org/dist/rustc-${BPM_PKG_VERSION}-src.tar.xz + extract_to: ${BPM_SOURCE} + extract_strip_components: 1 + checksum: 6bfeaddd90ffda2f063492b092bfed925c4b8c701579baf4b1316e021470daac split_packages: - name: rustc description: Rust documentation - name: rust-src description: Rust standard library source code - depends: ["rustc"] + depends: + - rustc diff --git a/source.sh b/source.sh index 39d8a45..14a5045 100644 --- a/source.sh +++ b/source.sh @@ -2,15 +2,9 @@ # BPM Expects the source code to be extracted into the automatically created 'source' directory which can be accessed using $BPM_SOURCE # BPM Expects the output files to be present in the automatically created 'output' directory which can be accessed using $BPM_OUTPUT -DOWNLOAD="https://static.rust-lang.org/dist/rustc-${BPM_PKG_VERSION}-src.tar.xz" -FILENAME="${DOWNLOAD##*/}" - # The prepare function is executed in the root of the temp directory -# This function is used for downloading files and putting them into the correct location +# This function is used for putting downloaded files to the correct location or applying patches prepare() { - wget "$DOWNLOAD" - tar -xvf "$FILENAME" --strip-components=1 -C "$BPM_SOURCE" - # Copy rust build config to source directory cp "$BPM_WORKDIR"/config.toml "$BPM_SOURCE"/config.toml } @@ -24,20 +18,31 @@ build() { python3 x.py build -j$(nproc) } +_pick() { + local p="$1" f d; shift + for f; do + [ -d "$BPM_WORKDIR"/output_"$p" ] || { echo "Split package $p not found"; exit 1; } + d="$BPM_WORKDIR"/output_"$p"/"${f#$BPM_OUTPUT}" + mkdir -p "$(dirname "$d")" + mv "$f" "$d" + rmdir -p --ignore-fail-on-non-empty "$(dirname "$f")" + done +} + # The package function is executed in the source directory # This function is used to move the compiled files into the output directory package_rustc() { DESTDIR="$BPM_OUTPUT" python3 x.py install - # Move src subdirectory to rust-src package - mkdir "$BPM_SOURCE"/output-rust-src - install -d "$BPM_SOURCE"/output-rust-src/usr/lib/rustlib/ - mv "$BPM_OUTPUT"/usr/lib/rustlib/src "$BPM_SOURCE"/output-rust-src/usr/lib/rustlib/src - # Remove unnecessary files rm "$BPM_OUTPUT"/usr/lib/rustlib/{components,install.log,rust-installer-version,uninstall.sh} rm "$BPM_OUTPUT"/usr/lib/rustlib/manifest-* + cd "$BPM_OUTPUT" + + # Move src subdirectory to rust-src package + _pick rust-src usr/lib/rustlib/src + # Install package licences install -Dm644 "$BPM_SOURCE"/COPYRIGHT "$BPM_OUTPUT"/usr/share/licenses/rustc/COPYRIGHT install -Dm644 "$BPM_SOURCE"/LICENSE-MIT "$BPM_OUTPUT"/usr/share/licenses/rustc/LICENSE-MIT @@ -45,11 +50,7 @@ package_rustc() { } package_rust-src() { - # Replace 'output' directory with 'output-rust-src' - rmdir "$BPM_OUTPUT" - mv "$BPM_SOURCE"/output-rust-src "$BPM_OUTPUT" - - # Symlink to rust licence directory + # Install package license install -d "$BPM_OUTPUT"/usr/share/licenses/ ln -sf rustc "$BPM_OUTPUT"/usr/share/licenses/rust-src }