From 4dd6d96c16adeee22e88c167f3b8deef683939e1 Mon Sep 17 00:00:00 2001 From: Patrick Spek Date: Tue, 5 Nov 2019 09:17:39 +0100 Subject: Update scripts --- bin/build-release.sh | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++ bin/mkchecksum.sh | 36 +++++++++++++++++++++++++++------ bin/mkrelease.sh | 43 ++++++++++++++++++++++++++++++++++------ bin/release-ftp.sh | 43 ---------------------------------------- 4 files changed, 123 insertions(+), 55 deletions(-) create mode 100755 bin/build-release.sh delete mode 100755 bin/release-ftp.sh (limited to 'bin') diff --git a/bin/build-release.sh b/bin/build-release.sh new file mode 100755 index 0000000..0c32d14 --- /dev/null +++ b/bin/build-release.sh @@ -0,0 +1,56 @@ +#! /usr/bin/env sh + +readonly BASEDIR=$(CDPATH="" cd -- "$(dirname -- "$0")/.." && pwd -P) + +main() +{ + # Handle opts + opts "$@" + shift "$OPTS" + unset OPTS + + # Show help + [ "$OPT_HELP_ONLY" ] && usage && exit 0 + [ -z "$1" ] && usage && exit 1 + + # Build Rakudo Star from the release tarball + mkdir -p -- "$BASEDIR/work/build" + cd -- "$BASEDIR/work/build" + tar xzf "$BASEDIR/work/release/rakudo-star-$1.tar.gz" + cd "rakudo-star-$1" + perl Configure.pl --prefix="$BASEDIR/work/install" --backend=moar --gen-moar +} + +opts() +{ + OPTS=0 + + while getopts ":h" opt + do + case "$opt" in + h) OPT_HELP_ONLY=1 ;; + *) + printf "Invalid option passed: %s\n" "$OPTARG" >&2 + ;; + esac + done +} + +usage() +{ + cat < + +Build Rakudo Star from a release tarball in $BASEDIR/work/release. This tarball +can be easily made using mkrelease.sh in this repository. This will not install +Raku in $BASEDIR/work/install, only build all the required components needed +for testing. + +Options: + -h Show this help text and exit. +EOF +} + +main "$@" diff --git a/bin/mkchecksum.sh b/bin/mkchecksum.sh index 45f3416..5a7ac1f 100755 --- a/bin/mkchecksum.sh +++ b/bin/mkchecksum.sh @@ -2,11 +2,14 @@ main() { - if [ -z "$1" ] - then - usage - exit 1 - fi + # Handle opts + opts "$@" + shift "$OPTS" + unset OPTS + + # Show help + [ "$OPT_HELP_ONLY" ] && usage && exit 0 + [ -z "$1" ] && usage && exit 1 printf "md5 %s\n" "$(md5sum "$1" | cut -f1 -d" ")" printf "sha1 %s\n" "$(sha1sum "$1" | cut -f1 -d" ")" @@ -16,9 +19,30 @@ main() printf "sha512 %s\n" "$(sha512sum "$1" | cut -f1 -d" ")" } +opts() +{ + OPTS=0 + + while getopts ":h" opt + do + case "$opt" in + h) OPT_HELP_ONLY=1 ;; + *) + printf "Invalid option passed: %s\n" "$OPTARG" >&2 + ;; + esac + done +} + usage() { - printf "NYI\n" + cat < + +Make a number of checksums of a given file. +EOF } main "$@" diff --git a/bin/mkrelease.sh b/bin/mkrelease.sh index 67df86d..b5de149 100755 --- a/bin/mkrelease.sh +++ b/bin/mkrelease.sh @@ -4,20 +4,51 @@ readonly BASEDIR=$(CDPATH="" cd -- "$(dirname -- "$0")/.." && pwd -P) main() { - if [ -z "$1" ] - then - usage - exit 1 - fi + # Handle opts + opts "$@" + shift "$OPTS" + unset OPTS + # Show help + [ "$OPT_HELP_ONLY" ] && usage && exit 0 + [ -z "$1" ] && usage && exit 1 + + # Make the release cd -- "$BASEDIR" make -f tools/star/Makefile all VERSION="$1" make -f tools/star/Makefile release VERSION="$1" } +opts() +{ + OPTS=0 + + while getopts ":h" opt + do + case "$opt" in + h) OPT_HELP_ONLY=1 ;; + *) + printf "Invalid option passed: %s\n" "$OPTARG" >&2 + ;; + esac + done +} + usage() { - print "NYI\n" + cat < + +Make a releasable tarball of Rakudo Star. You must specify a version number, +which will be used to name the tarball. The tarball will be put in +$BASEDIR/work/release. You will still have to manually create checksums and a +PGP signature. + +Options: + -h Show this help text and exit. +EOF } main "$@" diff --git a/bin/release-ftp.sh b/bin/release-ftp.sh deleted file mode 100755 index 046b872..0000000 --- a/bin/release-ftp.sh +++ /dev/null @@ -1,43 +0,0 @@ -#! /usr/bin/env sh - -readonly BASEDIR=$(CDPATH="" cd -- "$(dirname -- "$0")/.." && pwd -P) -readonly DISTNAME="rakudo-star-$CI_COMMIT_REF_NAME" - -main() -{ - if list_releases | grep -Fq "$DISTNAME" - then - printf "A release named %s already exists!\n" "$DISTNAME" - exit 1 - fi - - upload_release -} - -list_releases() -{ - lftp -e <<-EOI - open $FTP_HOST:${FTP_PORT:-21}; - user sftp://$FTP_USER $FTP_PASSWORD; - cd ${FTP_DIR:-rakudo-star}; - ls; - bye; - EOI -} - -upload_release() -{ - checksums=$(mktemp) - $BASEDIR/bin/mkchecksum.sh "work/release/$DISTNAME" > "$checksums" - - lftp -e <<-EOI - open $FTP_HOST:${FTP_PORT:-21}; - user sftp://$FTP_USER $FTP_PASSWORD; - cd ${FTP_DIR:-rakudo-star}; - put work/release/$DISTNAME; - put $checksums -o $DISTNAME.checksums.txt; - bye; - EOI -} - -main "$@" -- cgit v1.1