From 6827b51b5c27f2fc0b21ff3d7b54a821a3d292f3 Mon Sep 17 00:00:00 2001 From: Luiz Angelo Daros de Luca Date: Thu, 4 Oct 2018 20:36:44 -0300 Subject: [PATCH] Multiple fix for build-dist.sh * Added --no-windows, --no-unix and no --no-compress to skip some build steps. * Use cp in a Linux and FreeBSD compatible way * Set 'sed -i' backup extension (Linux and FreeBSD compatible) (Linux regression from f0204c160b3cbdc041a91f2861febab24b7f5f76) * Fix zip location to match tar (fixing also --bin-dest for win32) * Align (y/n) with question in confirm Signed-off-by: Luiz Angelo Daros de Luca --- build/build-dist.sh | 69 +++++++++++++++++++++++++-------------------- 1 file changed, 38 insertions(+), 31 deletions(-) diff --git a/build/build-dist.sh b/build/build-dist.sh index 59766ff..4084ba2 100755 --- a/build/build-dist.sh +++ b/build/build-dist.sh @@ -19,6 +19,9 @@ build-dist options: --dist-root=X set DIST_ROOT, default=dist-staging --src-root=X set SRC_ROOT for git src dir, default=. --bin-dest=X set BIN_DEST where to put tar/zip, default=. + --no-windows do not build for win32 + --no-unix do not build for UNIX + --no-compress do not create zip/tar --dist-clean rm -rf the DIST_ROOT w/out prompts __EOF__ @@ -37,8 +40,7 @@ note() { echo "build-dist NOTE: $1"; } # ask before dangerous things confirm() { [ "$2" ] && return - echo "$1" - printf " y/n: " + printf "%s y/n: " "$1" read r [ "$r" = "y" ] || die "user abort" } @@ -48,10 +50,10 @@ main() { PV="$PRODUCT-$VERSION" dist_clean - stage_unix - stage_win - make_tar - make_zip + $SKIP_UNIX || stage_unix + $SKIP_WIN || stage_win + $SKIP_TAR || make_tar + $SKIP_ZIP || make_zip } # prep DIST_ROOT @@ -70,15 +72,15 @@ stage_unix() { mkdir -p "$DIST_ROOT/unix/$PV" # Copy files into $PV, starting with easyrsa3 as the initial root dir - src_files="easyrsa3/ Licensing/ COPYING.md ChangeLog README.md README.quickstart.md" + src_files="easyrsa3/. Licensing/. COPYING.md ChangeLog README.md README.quickstart.md doc" for f in $src_files do - cp -a "$SRC_ROOT/$f" "$DIST_ROOT/unix/$PV" || die "failed to copy $f" + cp -R "$SRC_ROOT/$f" "$DIST_ROOT/unix/$PV/" || die "failed to copy $f" done - cp -R "$SRC_ROOT/doc" "$DIST_ROOT/unix/$PV/" || die "failed to copy unix doc" - - sed -i "" -e "s/~VER~/$VERSION/" "$DIST_ROOT/unix/$PV/easyrsa" + # FreeBSD does not accept -i without argument in a way also acceptable by GNU sed + sed -i.tmp -e "s/~VER~/$VERSION/" "$DIST_ROOT/unix/$PV/easyrsa" || die "Cannot update easyrsa version" + rm -f "$DIST_ROOT/unix/$PV/easyrsa.tmp" # files not included rm -rf "$DIST_ROOT/unix/$PV/doc/TODO" || die "failed rm TODO" @@ -91,39 +93,28 @@ stage_win() { # make doc dir mkdir -p "$DIST_ROOT/windows/$PV/doc" - for f in $SRC_ROOT/doc/*.md; + for f in doc/*.md README.md README.quickstart.md COPYING.md; do - fname=$(basename "$f" .md) - sed -i "" -e "s/~~~/$VERSION/" "$SRC_ROOT/$f" - python -m markdown "$f" > "$DIST_ROOT/windows/$PV/doc/$fname.html" + # FreeBSD does not accept -i without argument in a way also acceptable by GNU sed + sed -i.tmp -e "s/~~~/$VERSION/" "$SRC_ROOT/$f" || die "Cannot update easyrsa version" + rm -f "$SRC_ROOT/$f.tmp" + python -m markdown "$SRC_ROOT/$f" > "$DIST_ROOT/windows/$PV/${f%.md}.html" || die "Failed to convert markdown to HTML" done - for f in "README" "README.quickstart" "COPYING" - do - python -m markdown $SRC_ROOT/$f.md > $DIST_ROOT/windows/$PV/$f.html - done # Copy files into $PV, starting with easyrsa3 as the initial root dir - src_files="easyrsa3/ ChangeLog COPYING.md" + src_files="easyrsa3/. ChangeLog COPYING.md Licensing distro/windows/Licensing distro/windows/bin" for f in $src_files do - cp -a "$SRC_ROOT/$f" "$DIST_ROOT/windows/$PV" || die "failed to copy $f" + cp -R "$SRC_ROOT/$f" "$DIST_ROOT/windows/$PV/" || die "failed to copy $f" done - src_files="Licensing distro/windows/Licensing" - for f in $src_files - do - cp -R "$SRC_ROOT/$f" "$DIST_ROOT/windows/$PV" || die "failed to copy $f" - done src_files="README-Windows.txt EasyRSA-Start.bat" for f in $src_files do - cp -a "$SRC_ROOT/distro/windows/$f" "$DIST_ROOT/windows/$PV" || die "failed to copy $f" + cp -R "$SRC_ROOT/distro/windows/$f" "$DIST_ROOT/windows/$PV/" || die "failed to copy $f" unix2dos "$DIST_ROOT/windows/$PV/$f" || die "unix2dos conversion failed for $f" done - # create bin dir with windows binaries - cp -v -R "$SRC_ROOT/distro/windows/bin" "$DIST_ROOT/windows/$PV/" || die "failed to copy bin" - # files not included rm -rf "$DIST_ROOT/windows/$PV/doc/TODO" || die "failed rm TODO" @@ -135,10 +126,14 @@ make_tar() { } make_zip() { - (cd "$DIST_ROOT/windows/"; zip -qr "../../$BIN_DEST/${PV}.zip" "$PV") || die "zip failed" + (cd "$DIST_ROOT/windows/"; zip -qr "$BIN_DEST/${PV}.zip" "$PV") || die "zip failed" note "zip file created at: $BIN_DEST/${PV}.zip" } +SKIP_WIN=false +SKIP_UNIX=false +SKIP_ZIP=false +SKIP_TAR=false # parse CLI options: while [ -n "$1" ] do @@ -165,6 +160,18 @@ do --dist-clean) DISTCLEAN=1 ;; + --no-windows) + SKIP_WIN=true + SKIP_ZIP=true + ;; + --no-unix) + SKIP_UNIX=true + SKIP_TAR=true + ;; + --no-compress) + SKIP_ZIP=true + SKIP_TAR=true + ;; help|-h|--help|-help) usage ;;