pkgsrc-WIP-changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
rust: drop docs from bootstrap kit and speed up install.sh.
Module Name: pkgsrc-wip
Committed By: Havard Eidnes <he%NetBSD.org@localhost>
Pushed By: he
Date: Tue May 25 22:38:48 2021 +0200
Changeset: e3b1a7deffac00c4d8e215421767c3f24b93726c
Modified Files:
rust/Makefile
rust/distinfo
rust/patches/patch-src_tools_rust-installer_install-template.sh
Log Message:
rust: drop docs from bootstrap kit and speed up install.sh.
When building the bootstrap kit, drop "docs" and "compiler-docs"
from the build. This will make the install of the bootstrap kit
a lot faster, since it drops 5-6.000 files from the kit, which would
need to be processed by the install.sh script. Note that this will
also impact the rust-bin package, since we also use the bootstrap
kits for installation there for the ports we maintain locally. To
get these "docs" sub-sets installed, use the full "lang/rust" normal
build and/or a corresponding binary package.
Also, speed up the install.sh script (via install-template.sh) by
significantly reducing the number of forks in the inner loop.
Instead of relying on "grep", "sed" and "cut" for pattern matching,
substitution and field extraction, use case/esac and parameter
expansion modification to do the same, i.e. using in-shell mechanisms.
Submitted upstream, ref.
https://github.com/rust-lang/rust-installer/pull/111
On an emulated (and loaded...) armv7 system, this reduced the time
(as shown with csh "time") for a test rig of install.sh (which
doesn't even actually do the file copying etc.) from
13000.143u 48616.601s 14:21:27.13 119.2% 57+151k 598+7367io 0pf+0w
to
3247.518u 9754.898s 3:45:48.70 95.9% 31+75k 927+4952io 14pf+0w
(This is with the "docs" and "compiler-docs" still in the bootstrap kit.)
Bump PKGREVISION.
To see a diff of this commit:
https://wip.pkgsrc.org/cgi-bin/gitweb.cgi?p=pkgsrc-wip.git;a=commitdiff;h=e3b1a7deffac00c4d8e215421767c3f24b93726c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
diffstat:
rust/Makefile | 11 +-
rust/distinfo | 2 +-
...ch-src_tools_rust-installer_install-template.sh | 148 ++++++++++++++++++++-
3 files changed, 157 insertions(+), 4 deletions(-)
diffs:
diff --git a/rust/Makefile b/rust/Makefile
index eea932e858..759e741f7e 100644
--- a/rust/Makefile
+++ b/rust/Makefile
@@ -2,6 +2,7 @@
DISTNAME= rustc-1.52.1-src
PKGNAME= ${DISTNAME:S/rustc/rust/:S/-src//}
+PKGREVISION= 1
CATEGORIES= lang
MASTER_SITES= https://static.rust-lang.org/dist/
@@ -76,7 +77,9 @@ CHECK_SSP_SUPPORTED= no
# some may chose to mostly build faster,
# and deal with any failures due to deadlocks
.if !empty(rust.MAKE_JOBS_SAFE)
-MAKE_JOBS_SAFE= ${rust.MAKE_JOBS_SAFE}
+. if ${rust.MAKE_JOBS_SAFE:tl} == "yes"
+MAKE_JOBS_SAFE= yes
+. endif
.endif
.if !empty(rust.BUILD_TARGET)
@@ -90,6 +93,12 @@ BUILD_TARGET?= dist
BUILD_TARGET?= build
.endif
+.if ${BUILD_TARGET} == "dist"
+# Reduce size of bootstrap:
+CONFIGURE_ARGS+= --disable-docs
+CONFIGURE_ARGS+= --disable-compiler-docs
+.endif
+
.if !empty(MACHINE_PLATFORM:MNetBSD-*-powerpc) || \
!empty(MACHINE_PLATFORM:MNetBSD-*-earmv7hf) || \
!empty(TARGET:Marmv7-unknown-netbsd-eabihf)
diff --git a/rust/distinfo b/rust/distinfo
index 189789eee2..e5a8f3d69b 100644
--- a/rust/distinfo
+++ b/rust/distinfo
@@ -128,7 +128,7 @@ SHA1 (patch-src_tools_cargo_src_cargo_core_profiles.rs) = 3aac5d54a6fe96b9559552
SHA1 (patch-src_tools_cargo_tests_testsuite_build.rs) = 10e6c1253adac0262b000aec7636fa0d2ebb666c
SHA1 (patch-src_tools_rls_rls_src_cmd.rs) = fade3e60fecac5c4e4d4ee5bee82659b4eb385b7
SHA1 (patch-src_tools_rls_rls_src_server_io.rs) = 51af64526db55abcf6b4b3165df314a16cf62e34
-SHA1 (patch-src_tools_rust-installer_install-template.sh) = f2ec6dced2be1fa23773d5827503ad07d0913dc2
+SHA1 (patch-src_tools_rust-installer_install-template.sh) = 9f93da54d9a126390d1ec9d1430241f876c8ba3f
SHA1 (patch-vendor_cc-1.0.60_src_lib.rs) = 42ddba7dfbec922e5ef948b97ff8c70bae1b0113
SHA1 (patch-vendor_cc_src_lib.rs) = 27d8b8b6d9a607362152069a206298854f517460
SHA1 (patch-vendor_libc_src_unix_solarish_mod.rs) = 804ea03be546fef0d2bd37d7f8abb26d38a7892b
diff --git a/rust/patches/patch-src_tools_rust-installer_install-template.sh b/rust/patches/patch-src_tools_rust-installer_install-template.sh
index adae00e912..f057f115dc 100644
--- a/rust/patches/patch-src_tools_rust-installer_install-template.sh
+++ b/rust/patches/patch-src_tools_rust-installer_install-template.sh
@@ -3,7 +3,12 @@ $NetBSD: patch-src_tools_rust-installer_install-template.sh,v 1.3 2018/11/27 15:
No logging to 'install.log'.
Do not create 'uninstall.sh'.
---- src/tools/rust-installer/install-template.sh.orig 2018-11-07 03:23:50.000000000 +0000
+Rewrite to not use a whole lot of subprocesses just for doing
+pattern matching and substitution in the install phase using "grep"
+and "sed" when shell builtin "case" and "omit shortest match" ops
+should do just fine.
+
+--- src/tools/rust-installer/install-template.sh.orig 2021-03-23 16:15:29.000000000 +0000
+++ src/tools/rust-installer/install-template.sh
@@ -15,20 +15,12 @@ set -u
init_logging() {
@@ -26,7 +31,146 @@ Do not create 'uninstall.sh'.
}
msg() {
-@@ -972,7 +964,6 @@ write_to_file "$TEMPLATE_RUST_INSTALLER_
+@@ -442,8 +434,8 @@ uninstall_components() {
+ local _directive
+ while read _directive; do
+
+- local _command=`echo $_directive | cut -f1 -d:`
+- local _file=`echo $_directive | cut -f2 -d:`
++ local _command=${_directive%%:*}
++ local _file=${_directive#*:}
+
+ # Sanity checks
+ if [ ! -n "$_command" ]; then critical_err "malformed installation directive"; fi
+@@ -549,8 +541,8 @@ install_components() {
+ local _directive
+ while read _directive; do
+
+- local _command=`echo $_directive | cut -f1 -d:`
+- local _file=`echo $_directive | cut -f2 -d:`
++ local _command=${_directive%%:*}
++ local _file=${_directive#*:}
+
+ # Sanity checks
+ if [ ! -n "$_command" ]; then critical_err "malformed installation directive"; fi
+@@ -559,54 +551,45 @@ install_components() {
+ # Decide the destination of the file
+ local _file_install_path="$_dest_prefix/$_file"
+
+- if echo "$_file" | grep "^etc/" > /dev/null
+- then
+- local _f="$(echo "$_file" | sed 's/^etc\///')"
+- _file_install_path="$CFG_SYSCONFDIR/$_f"
+- fi
+-
+- if echo "$_file" | grep "^bin/" > /dev/null
+- then
+- local _f="$(echo "$_file" | sed 's/^bin\///')"
+- _file_install_path="$CFG_BINDIR/$_f"
+- fi
+-
+- if echo "$_file" | grep "^lib/" > /dev/null
+- then
+- local _f="$(echo "$_file" | sed 's/^lib\///')"
+- _file_install_path="$CFG_LIBDIR/$_f"
+- fi
+-
+- if echo "$_file" | grep "^share" > /dev/null
+- then
+- local _f="$(echo "$_file" | sed 's/^share\///')"
+- _file_install_path="$CFG_DATADIR/$_f"
+- fi
+-
+- if echo "$_file" | grep "^share/man/" > /dev/null
+- then
+- local _f="$(echo "$_file" | sed 's/^share\/man\///')"
+- _file_install_path="$CFG_MANDIR/$_f"
+- fi
++ case "$_file" in
++ etc/*)
++ local _f=${_file#"etc/"}
++ _file_install_path="$CFG_SYSCONFDIR/$_f"
++ ;;
++ bin/*)
++ local _f=${_file#"bin/"}
++ _file_install_path="$CFG_BINDIR/$_f"
++ ;;
++ lib/*)
++ local _f=${_file#"lib/"}
++ _file_install_path="$CFG_LIBDIR/$_f"
++ ;;
++ share/man/*)
++ local _f=${_file#"share/man/"}
++ _file_install_path="$CFG_MANDIR/$_f"
++ ;;
++ share/doc/*)
++ # HACK: Try to support overriding --docdir. Paths with the form
++ # "share/doc/$product/" can be redirected to a single --docdir
++ # path. If the following detects that --docdir has been specified
++ # then it will replace everything preceeding the "$product" path
++ # component. The problem here is that the combined rust installer
++ # contains two "products": rust and cargo; so the contents of those
++ # directories will both be dumped into the same directory; and the
++ # contents of those directories are _not_ disjoint. Since this feature
++ # is almost entirely to support 'make install' anyway I don't expect
++ # this problem to be a big deal in practice.
++ if [ "$CFG_DOCDIR" != "<default>" ]; then
++ local _f=${_file#"share/doc/"}
++ _file_install_path="$CFG_DOCDIR/$_f"
++ fi
++ ;;
++ share/*)
++ local _f=${_file#"share/"}
++ _file_install_path="$CFG_DATADIR/$_f"
++ ;;
++ esac
+
+- # HACK: Try to support overriding --docdir. Paths with the form
+- # "share/doc/$product/" can be redirected to a single --docdir
+- # path. If the following detects that --docdir has been specified
+- # then it will replace everything preceeding the "$product" path
+- # component. The problem here is that the combined rust installer
+- # contains two "products": rust and cargo; so the contents of those
+- # directories will both be dumped into the same directory; and the
+- # contents of those directories are _not_ disjoint. Since this feature
+- # is almost entirely to support 'make install' anyway I don't expect
+- # this problem to be a big deal in practice.
+- if [ "$CFG_DOCDIR" != "<default>" ]
+- then
+- if echo "$_file" | grep "^share/doc/" > /dev/null
+- then
+- local _f="$(echo "$_file" | sed 's/^share\/doc\/[^/]*\///')"
+- _file_install_path="$CFG_DOCDIR/$_f"
+- fi
+- fi
+
+ # Make sure there's a directory for it
+ make_dir_recursive "$(dirname "$_file_install_path")"
+@@ -625,14 +608,16 @@ install_components() {
+
+ maybe_backup_path "$_file_install_path"
+
+- if echo "$_file" | grep "^bin/" > /dev/null || test -x "$_src_dir/$_component/$_file"
+- then
+- run cp "$_src_dir/$_component/$_file" "$_file_install_path"
+- run chmod 755 "$_file_install_path"
+- else
+- run cp "$_src_dir/$_component/$_file" "$_file_install_path"
+- run chmod 644 "$_file_install_path"
++ local mode=644
++ if test -x "$_src_dir/$_component/$_file"; then
++ mode=755
+ fi
++ case "$_file" in
++ bin/*) mode=755
++ ;;
++ esac
++ run cp "$_src_dir/$_component/$_file" "$_file_install_path"
++ run chmod $mode "$_file_install_path"
+ critical_need_ok "file creation failed"
+
+ # Update the manifest
+@@ -972,7 +957,6 @@ write_to_file "$TEMPLATE_RUST_INSTALLER_
critical_need_ok "failed to write installer version"
# Install the uninstaller
Home |
Main Index |
Thread Index |
Old Index