]> birchwood-abbey.net Git - mit-scheme.git/commitdiff
Rework dist scripts to work from freshly-cloned repo.
authorChris Hanson <org/chris-hanson/cph>
Tue, 2 Feb 2021 09:02:27 +0000 (01:02 -0800)
committerChris Hanson <org/chris-hanson/cph>
Tue, 2 Feb 2021 09:13:34 +0000 (01:13 -0800)
This prevents the distribution tarballs from containing backup files and any
other random crap lying around in the working directory.

(cherry picked from commit 99d2ac63f0899d9e866454a5549e1e323fe110d5)

dist/make-doc-files
dist/make-macosx-app
dist/make-native-files
dist/make-src-files
dist/shared.sh

index 2b531d5e37176589b4beb8f26147208fe6d74193..ad6ed600f75aa6766812f1466534a4b73cc80dfb 100755 (executable)
@@ -25,7 +25,7 @@
 # outputs: doc image tar, formatted doc tars
 
 . "$(dirname "${0}")"/shared.sh
-make_output_dir
+restore_release_vars
 
 BUILD_DIR=doc-build
 PLUGINS_WITH_DOC=(blowfish gdbm imail)
@@ -43,7 +43,10 @@ make_archive_dir ()
 }
 
 notify "Building documentation"
-unpack_dist_file_to "${DIST_DIR}" "${BUILD_DIR}"
+unpack_dist_dir "${DIST_DIR}"
+my_rm_rf "${BUILD_DIR}"
+my_mv "${DIST_DIR}" "${BUILD_DIR}"
+cleanup_file "${BUILD_DIR}"
 run_command "${DOC_OUT}"-build "${BUILD_DIR}"/doc build_docs
 for PLUGIN in "${PLUGINS_WITH_DOC[@]}"; do
     run_command_append "${DOC_OUT}"-build "${BUILD_DIR}"/src/"${PLUGIN}" \
index 0a24c146ac4dc69220c252f59a34e7026fdc93fb..25d99853d12b73d75f317c661f02d7c952426323 100755 (executable)
@@ -29,22 +29,21 @@ system_args ()
     (( ${#} >= 2 )) || usage
     DIST_TYPE=${1}
     ARCH=${2}
+    shift 2
 }
 ARGS_FUNCTION=system_args
 
 system_usage ()
 {
     echo "usage: ${PROGRAM} TYPE ARCH [OPTIONS]"
-    usage_arg_type
+    standard_args_usage
     echo "  ARCH must be 'i386' or 'x86-64'"
     echo "  OPTIONS are passed to the configure script"
 }
 USAGE_FUNCTION=system_usage
 
 . "$(dirname "${0}")"/shared.sh
-make_output_dir
-
-shift 2
+restore_release_vars
 
 OUT=${MACOSX_OUT}-${ARCH}
 ARCH_BASE=${DIST_DIR}-${ARCH}
@@ -61,7 +60,7 @@ make_dmg ()
 {
     new_temp_dir "${DMG_DIR}"
     local APP_DIR="MIT:GNU Scheme ${RELEASE}.app"
-    my_mv "${DIST_DIR}"/src/mit-scheme.app "${DMG_DIR}"/"${APP_DIR}"
+    my_mv "${ARCH_BASE}"/src/mit-scheme.app "${DMG_DIR}"/"${APP_DIR}"
     my_ln_s /Applications "${DMG_DIR}"/.
     my_rm_f "${DMG_FILE}"
     create-dmg --volname "MIT-GNU Scheme ${RELEASE}" "${DMG_FILE}" "${DMG_DIR}"
@@ -69,14 +68,15 @@ make_dmg ()
 }
 
 notify "Compiling executable"
-unpack_dist_file_to "${ARCH_BASE}" "${DIST_DIR}"
-run_command "${OUT}"-compile "${DIST_DIR}"/src compile "${@}"
+unpack_dist_dir "${ARCH_BASE}"
+run_command "${OUT}"-compile "${ARCH_BASE}"/src compile "${@}"
 
 notify "Building application bundle"
 VERSION_STRING=${RELEASE} \
-    run_command "${OUT}"-buildapp "${DIST_DIR}"/src etc/macosx/make-app.sh
+    run_command "${OUT}"-buildapp "${ARCH_BASE}"/src etc/macosx/make-app.sh
 
 notify "Building disk image"
 run_command "${OUT}"-makedmg "${TL_DIR}" make_dmg
 
+cleanup_temp_files
 notify_finished
index 1bdea8fd6c552feec2b534d77991bd7084e68c2a..ce188ae46bd41658ffbb7feac5a2c1bd852d00a3 100755 (executable)
@@ -24,6 +24,8 @@
 # inputs: source tar
 # outputs: binary tar
 
+umask go-w
+
 system_args ()
 {
     (( ${#} == 2 )) || usage
@@ -35,15 +37,14 @@ ARGS_FUNCTION=system_args
 system_usage ()
 {
     echo "usage: ${PROGRAM} TYPE ARCH"
-    usage_arg_type
-    echo "  ARCH must be one of 'i386', 'x86-64', or 'svm1'"
+    standard_args_usage
+    echo "  ARCH must be a supported native-code architecture,"
+    echo "    such as 'x86-64' or 'aarch64le'"
 }
 USAGE_FUNCTION=system_usage
 
 . "$(dirname "${0}")"/shared.sh
-make_output_dir
-
-shift 2
+restore_release_vars
 
 build ()
 {
@@ -66,13 +67,12 @@ clean ()
 OUT_ROOT=${NATIVE_OUT}-${ARCH}
 
 notify "Building binaries for arch ${ARCH}"
-unpack_dist_file_to "${DIST_DIR}" "${DIST_DIR}"
+unpack_dist_dir "${DIST_DIR}"
 run_command "${OUT_ROOT}"-compile "${DIST_DIR}"/src build
 run_command "${OUT_ROOT}"-clean "${DIST_DIR}"/src clean
 
 notify "Making tarball"
-fixup_perms "${DIST_DIR}"
 make_tar_file "${OUT_ROOT}" "${DIST_DIR}"-"${ARCH}" "${DIST_DIR}"
-cleanup_temp_files
 
+cleanup_temp_files
 notify_finished
index 2e8afae8943db5b882115c27b44ce1e7792d8362..642b1199b6c6407ddf4dd95d3f56a1ecf5620976 100755 (executable)
 # inputs: git source tree
 # outputs: changelog, source tar
 
+system_args ()
+{
+    (( ${#} <= 2 )) || usage
+    DIST_TYPE=${1:-standard}
+    GIT_BRANCH=${2:-master}
+}
+ARGS_FUNCTION=system_args
+
+system_usage ()
+{
+    echo "usage: ${PROGRAM} TYPE [BRANCH]"
+    standard_args_usage
+    echo "  BRANCH is the git branch to use"
+}
+USAGE_FUNCTION=system_usage
+
 . "$(dirname "${0}")"/shared.sh
 reset_output_dir
 
-notify "Creating the changelog"
-my_rm_f "${CHANGELOG}"
-run_command "${CHANGELOG}" "${SOURCE_TREE}" git log --name-status
-make_read_only "${CHANGELOG}"
+GIT_REPO=https://git.savannah.gnu.org/git/"${PROJECT_NAME}".git
 
-notify "Creating the distribution directory"
-new_temp_dir "${DIST_DIR}"
-my_cp "${CHANGELOG}" "${DIST_DIR}"/.
-for FILE in src tests doc dist/Makefile; do
-    my_cp "${SOURCE_TREE}"/"${FILE}" "${DIST_DIR}"/.
-done
-my_mkdir "${DIST_DIR}"/etc
-my_cp "${SOURCE_TREE}"/etc/xscheme.el "${DIST_DIR}"/etc/.
+notify "Cloning the source tree"
+run_command "${SRC_OUT}"-clone . git clone -b "${GIT_BRANCH}" "${GIT_REPO}"
+cleanup_file "${PROJECT_NAME}"
 
-# Clean up dot files from source tree
-my_find "${DIST_DIR}" -name '.*' -exec rm -f '{}' \;
-
-reconf ()
+generate_changelog ()
 {
-    if [[ -f configure ]]; then
-       my_configure
-       my_make distclean
-    else
-       cmd autoconf
-    fi
+    git log --name-status > ../"${CHANGELOG}"
+    make_read_only ../"${CHANGELOG}"
 }
 
-notify "Configuring the distribution directory"
-run_command "${SRC_OUT}"-config "${DIST_DIR}"/src ./Setup.sh
-run_command "${DOC_OUT}"-config "${DIST_DIR}"/doc reconf
+notify "Creating the changelog"
+run_command "${SRC_OUT}"-changelog "${PROJECT_NAME}" generate_changelog
+my_rm_rf "${PROJECT_NAME}"/.git
 
-# Clean up after autoconf
-find "${DIST_DIR}" -type d -name autom4te.cache | xargs rm -rf
-fixup_perms "${DIST_DIR}"
+notify "Setting release number"
+set_release_vars "${PROJECT_NAME}"
+my_mv "${PROJECT_NAME}" "${DIST_DIR}"
+cleanup_file "${DIST_DIR}"
+
+notify "Configuring the source tree"
+run_command "${SRC_OUT}"-config "${DIST_DIR}"/src ./Setup.sh
+run_command_append "${SRC_OUT}"-config "${DIST_DIR}"/doc autoconf
 
 notify "Creating archive file"
 make_tar_file "${SRC_OUT}" "${DIST_DIR}"
 
+notify "Cleaning up"
+my_rm_rf "${PROJECT_NAME}"/"${DIST_DIR}"
+
+cleanup_temp_files
 notify_finished
index 3696e3a82ebd14e125de22c0721a75f9561fa1e3..9236e3dbf2dd83b711b2850d7f0cd4327fdf1ac1 100644 (file)
@@ -21,7 +21,7 @@
 # 02110-1301, USA.
 
 set -ae
-umask 022
+umask 0002
 
 # Capture standard out so we can send messages there even when it's
 # redirected.
@@ -30,7 +30,6 @@ exec 3>&1
 TL_DIR=$(pwd)
 PROGRAM=${0}
 PROJECT_NAME=mit-scheme
-SOURCE_TREE=${PROJECT_NAME}
 
 usage ()
 {
@@ -41,10 +40,10 @@ usage ()
 standard_usage ()
 {
     echo "usage: ${PROGRAM} TYPE"
-    usage_arg_type
+    standard_args_usage
 }
 
-usage_arg_type ()
+standard_args_usage ()
 {
     echo "  TYPE must be 'snapshot' to specify today's date"
     echo "    or 'standard' to specify standard release"
@@ -56,18 +55,42 @@ standard_args ()
     DIST_TYPE=${1:-standard}
 }
 
-source_missing ()
-{
-    echo "${SOURCE_TREE}: directory not found"
-    exit 1
-}
+${ARGS_FUNCTION:-standard_args} "${@}"
 
-[[ -d ${SOURCE_TREE} ]] || source_missing
+CHANGELOG=changelog.txt
+TAR_SUFFIX=.tar.gz
 
-${ARGS_FUNCTION:-standard_args} "${@}"
+OUTPUT_DIR=${TL_DIR}/.out
+RELEASE_OUT=${OUTPUT_DIR}/release
+SRC_OUT=${OUTPUT_DIR}/src
+DOC_OUT=${OUTPUT_DIR}/doc
+LIARC_OUT=${OUTPUT_DIR}/liarc
+NATIVE_OUT=${OUTPUT_DIR}/native
+MACOSX_OUT=${OUTPUT_DIR}/macosx
+
+PLUGINS=(blowfish gdbm mcrypt edwin imail x11 x11-screen)
+
+set_release_vars ()
+{
+    local -r SOURCE_TREE=${1}
+    case ${DIST_TYPE} in
+        snapshot)
+           RELEASE=$(date +%Y%m%d)
+           ;;
+        standard)
+           RELEASE=$(get_release "${SOURCE_TREE}")
+           ;;
+        *)
+           usage
+           ;;
+    esac
+    DIST_DIR=${PROJECT_NAME}-${RELEASE}
+    echo "${RELEASE}" > "${RELEASE_OUT}"
+}
 
 get_release ()
 {
+    local -r SOURCE_TREE=${1}
     fgrep Release "${SOURCE_TREE}"/src/runtime/version.scm \
        | awk 'BEGIN { OFS = "." }
               NF == 4 { print $3, $4 }
@@ -77,31 +100,20 @@ get_release ()
        | tr -d \(\)\'\"
 }
 
-case ${DIST_TYPE} in
-    snapshot)
-       RELEASE=$(date +%Y%m%d)
-       ;;
-    standard)
-       RELEASE=$(get_release)
-       ;;
-    *)
-       usage
-       ;;
-esac
-
-CHANGELOG=changelog.txt
-TAR_SUFFIX=.tar.gz
-
-DIST_DIR=${PROJECT_NAME}-${RELEASE}
-
-OUTPUT_DIR=${TL_DIR}/.out
-SRC_OUT=${OUTPUT_DIR}/src
-DOC_OUT=${OUTPUT_DIR}/doc
-LIARC_OUT=${OUTPUT_DIR}/liarc
-NATIVE_OUT=${OUTPUT_DIR}/native
-MACOSX_OUT=${OUTPUT_DIR}/macosx
+restore_release_vars ()
+{
+    guarantee_file "${RELEASE_OUT}"
+    RELEASE=$(cat "${RELEASE_OUT}")
+    DIST_DIR=${PROJECT_NAME}-${RELEASE}
+}
 
-PLUGINS=(blowfish gdbm mcrypt edwin imail x11 x11-screen)
+guarantee_file ()
+{
+    if [[ ! -f ${1} ]]; then
+       echo "Missing required file: ${1}" >&2
+       exit 1
+    fi
+}
 
 notify ()
 {
@@ -128,7 +140,7 @@ cmd ()
 reset_output_dir ()
 {
     my_rm_rf "${OUTPUT_DIR}"
-    cmd mkdir "${OUTPUT_DIR}"
+    my_mkdir "${OUTPUT_DIR}"
 }
 
 make_output_dir ()
@@ -257,38 +269,25 @@ make_tar_file ()
     make_read_only "${TAR_FILE}"
 }
 
-unpack_dist_file_to ()
+unpack_dist_dir ()
 {
     local SOURCE=${1}
-    local DEST=${2}
-    guarantee_tar "${SOURCE}"
-    new_temp_dir "${DEST}"
-    unpack_into_existing_dir "${SOURCE}" "${DEST}"
-}
-
-unpack_into_existing_dir ()
-{
-    my_untar "${1}" -C "${2}" --strip-components 1
+    guarantee_file "${SOURCE}""${TAR_SUFFIX}"
+    my_rm_rf "${SOURCE}"
+    my_untar "${SOURCE}"
+    cleanup_file "${SOURCE}"
 }
 
-guarantee_tar ()
-{
-    guarantee_file "${1}""${TAR_SUFFIX}"
-}
+# Keep track of temp files and clean them up.
 
-guarantee_file ()
+cleanup_file ()
 {
-    if [[ ! -f ${1} ]]; then
-       echo "No source file: ${1}"
-       exit 1
-    fi
+    TEMP_FILES+=("${@}")
 }
 
-# Keep track of temp files and clean them up.
-
 new_temp_file ()
 {
-    TEMP_FILES+=("${@}")
+    cleanup_file "${@}"
     my_rm_rf "${@}"
 }