summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2015-02-06 15:56:26 -0800
committerBrian Anderson <banderson@mozilla.com>2015-02-06 15:56:26 -0800
commitacbbd86936c1e363dfa8dd35d4d7f772263d2772 (patch)
tree79df35de29cafa39eec7ef5ad171aea2d7439d83
parentb9c57d8dde2653766f87098fd27ce549b42c47b9 (diff)
downloadrust-installer-acbbd86936c1e363dfa8dd35d4d7f772263d2772.tar.gz
Add a --components flag for selecting which to install/uninstall
-rw-r--r--install-template.sh19
-rwxr-xr-xtest.sh132
2 files changed, 151 insertions, 0 deletions
diff --git a/install-template.sh b/install-template.sh
index 9de2325..2829b27 100644
--- a/install-template.sh
+++ b/install-template.sh
@@ -258,6 +258,7 @@ fi
valopt libdir "$CFG_DESTDIR_PREFIX/lib" "install libraries"
valopt mandir "$CFG_DESTDIR_PREFIX/share/man" "install man pages in PATH"
opt ldconfig 1 "run ldconfig after installation (Linux only)"
+valopt components "" "comma-separated list of components to install"
if [ $HELP -eq 1 ]
then
@@ -406,6 +407,24 @@ if [ ! -n "$components" ]; then
err "unable to find installation components"
fi
+# If the user specified which components to install/uninstall, then validate that they exist
+if [ -n "$CFG_COMPONENTS" ]; then
+ # Remove commas
+ user_components="$(echo "$CFG_COMPONENTS" | sed "s/,/ /g")"
+ for user_component in $user_components; do
+ found=false
+ for my_component in $components; do
+ if [ "$user_component" = "$my_component" ]; then
+ found=true
+ fi
+ done
+ if [ "$found" = false ]; then
+ err "unknown component: $user_component"
+ fi
+ done
+ components="$user_components"
+fi
+
# Using an absolute path to libdir in a few places so that the status
# messages are consistently using absolute paths.
absolutify "$CFG_LIBDIR"
diff --git a/test.sh b/test.sh
index 88fa6d0..e3c15dd 100755
--- a/test.sh
+++ b/test.sh
@@ -575,6 +575,138 @@ combine_install_with_separate_uninstall() {
}
runtest combine_install_with_separate_uninstall
+select_components_to_install() {
+ try sh "$S/gen-installer.sh" \
+ --image-dir="$TEST_DIR/image1" \
+ --work-dir="$WORK_DIR" \
+ --output-dir="$OUT_DIR" \
+ --package-name=rustc \
+ --component-name=rustc
+ try sh "$S/gen-installer.sh" \
+ --image-dir="$TEST_DIR/image3" \
+ --work-dir="$WORK_DIR" \
+ --output-dir="$OUT_DIR" \
+ --package-name=cargo \
+ --component-name=cargo
+ try sh "$S/gen-installer.sh" \
+ --image-dir="$TEST_DIR/image4" \
+ --work-dir="$WORK_DIR" \
+ --output-dir="$OUT_DIR" \
+ --package-name=rust-docs \
+ --component-name=rust-docs
+ try sh "$S/combine-installers.sh" \
+ --work-dir="$WORK_DIR" \
+ --output-dir="$OUT_DIR" \
+ --package-name=rust \
+ --input-tarballs="$OUT_DIR/rustc.tar.gz,$OUT_DIR/cargo.tar.gz,$OUT_DIR/rust-docs.tar.gz"
+ try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR" --components=rustc
+ try test -e "$PREFIX_DIR/bin/program"
+ try test ! -e "$PREFIX_DIR/bin/cargo"
+ try test ! -e "$PREFIX_DIR/baz"
+ try "$WORK_DIR/rust/install.sh --uninstall" --prefix="$PREFIX_DIR"
+ try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR" --components=cargo
+ try test ! -e "$PREFIX_DIR/bin/program"
+ try test -e "$PREFIX_DIR/bin/cargo"
+ try test ! -e "$PREFIX_DIR/baz"
+ try "$WORK_DIR/rust/install.sh --uninstall" --prefix="$PREFIX_DIR"
+ try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR" --components=rust-docs
+ try test ! -e "$PREFIX_DIR/bin/program"
+ try test ! -e "$PREFIX_DIR/bin/cargo"
+ try test -e "$PREFIX_DIR/baz"
+ try "$WORK_DIR/rust/install.sh --uninstall" --prefix="$PREFIX_DIR"
+ try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR" --components=rustc,cargo
+ try test -e "$PREFIX_DIR/bin/program"
+ try test -e "$PREFIX_DIR/bin/cargo"
+ try test ! -e "$PREFIX_DIR/baz"
+ try "$WORK_DIR/rust/install.sh --uninstall" --prefix="$PREFIX_DIR" --components=rustc,cargo,rust-docs
+ try test ! -e "$PREFIX_DIR/bin/program"
+ try test ! -e "$PREFIX_DIR/bin/cargo"
+ try test ! -e "$PREFIX_DIR/baz"
+ try test ! -e "$PREFIX_DIR/lib/packagelib"
+}
+runtest select_components_to_install
+
+select_components_to_uninstall() {
+ try sh "$S/gen-installer.sh" \
+ --image-dir="$TEST_DIR/image1" \
+ --work-dir="$WORK_DIR" \
+ --output-dir="$OUT_DIR" \
+ --package-name=rustc \
+ --component-name=rustc
+ try sh "$S/gen-installer.sh" \
+ --image-dir="$TEST_DIR/image3" \
+ --work-dir="$WORK_DIR" \
+ --output-dir="$OUT_DIR" \
+ --package-name=cargo \
+ --component-name=cargo
+ try sh "$S/gen-installer.sh" \
+ --image-dir="$TEST_DIR/image4" \
+ --work-dir="$WORK_DIR" \
+ --output-dir="$OUT_DIR" \
+ --package-name=rust-docs \
+ --component-name=rust-docs
+ try sh "$S/combine-installers.sh" \
+ --work-dir="$WORK_DIR" \
+ --output-dir="$OUT_DIR" \
+ --package-name=rust \
+ --input-tarballs="$OUT_DIR/rustc.tar.gz,$OUT_DIR/cargo.tar.gz,$OUT_DIR/rust-docs.tar.gz"
+ try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR"
+ try "$WORK_DIR/rust/install.sh --uninstall" --prefix="$PREFIX_DIR" --components=rustc
+ try test ! -e "$PREFIX_DIR/bin/program"
+ try test -e "$PREFIX_DIR/bin/cargo"
+ try test -e "$PREFIX_DIR/baz"
+ try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR"
+ try "$WORK_DIR/rust/install.sh --uninstall" --prefix="$PREFIX_DIR" --components=cargo
+ try test -e "$PREFIX_DIR/bin/program"
+ try test ! -e "$PREFIX_DIR/bin/cargo"
+ try test -e "$PREFIX_DIR/baz"
+ try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR"
+ try "$WORK_DIR/rust/install.sh --uninstall" --prefix="$PREFIX_DIR" --components=rust-docs
+ try test -e "$PREFIX_DIR/bin/program"
+ try test -e "$PREFIX_DIR/bin/cargo"
+ try test ! -e "$PREFIX_DIR/baz"
+ try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR"
+ try "$WORK_DIR/rust/install.sh --uninstall" --prefix="$PREFIX_DIR" --components=rustc,cargo
+ try test ! -e "$PREFIX_DIR/bin/program"
+ try test ! -e "$PREFIX_DIR/bin/cargo"
+ try test -e "$PREFIX_DIR/baz"
+ try "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR"
+ try "$WORK_DIR/rust/install.sh --uninstall" --prefix="$PREFIX_DIR" --components=rustc,cargo,rust-docs
+ try test ! -e "$PREFIX_DIR/bin/program"
+ try test ! -e "$PREFIX_DIR/bin/cargo"
+ try test ! -e "$PREFIX_DIR/baz"
+ try test ! -e "$PREFIX_DIR/lib/packagelib"
+}
+runtest select_components_to_uninstall
+
+invalid_component() {
+ try sh "$S/gen-installer.sh" \
+ --image-dir="$TEST_DIR/image1" \
+ --work-dir="$WORK_DIR" \
+ --output-dir="$OUT_DIR" \
+ --package-name=rustc \
+ --component-name=rustc
+ try sh "$S/gen-installer.sh" \
+ --image-dir="$TEST_DIR/image3" \
+ --work-dir="$WORK_DIR" \
+ --output-dir="$OUT_DIR" \
+ --package-name=cargo \
+ --component-name=cargo
+ try sh "$S/gen-installer.sh" \
+ --image-dir="$TEST_DIR/image4" \
+ --work-dir="$WORK_DIR" \
+ --output-dir="$OUT_DIR" \
+ --package-name=rust-docs \
+ --component-name=rust-docs
+ try sh "$S/combine-installers.sh" \
+ --work-dir="$WORK_DIR" \
+ --output-dir="$OUT_DIR" \
+ --package-name=rust \
+ --input-tarballs="$OUT_DIR/rustc.tar.gz,$OUT_DIR/cargo.tar.gz,$OUT_DIR/rust-docs.tar.gz"
+ expect_output_fail "unknown component" "$WORK_DIR/rust/install.sh" --prefix="$PREFIX_DIR" --components=foo
+}
+runtest invalid_component
+
# Upgrade tests
upgrade_from_v1() {