diff --git a/Admin/Windows/Cygwin/isabelle/init.bat b/Admin/Windows/Cygwin/isabelle/init.bat --- a/Admin/Windows/Cygwin/isabelle/init.bat +++ b/Admin/Windows/Cygwin/isabelle/init.bat @@ -1,11 +1,11 @@ @echo off cd "%~dp0" cd ".." set CYGWIN=nodosfilewarning echo Initializing Cygwin ... -"bin\dash" /isabelle/rebaseall polyml-5.5.0 +"bin\dash" /isabelle/rebaseall "bin\bash" /isabelle/postinstall diff --git a/Admin/Windows/Cygwin/isabelle/rebaseall b/Admin/Windows/Cygwin/isabelle/rebaseall --- a/Admin/Windows/Cygwin/isabelle/rebaseall +++ b/Admin/Windows/Cygwin/isabelle/rebaseall @@ -1,16 +1,16 @@ #!/bin/dash PATH=/bin FILE_LIST="$(mktemp)" CONTRIB="$(cygpath -u "$(cygpath -w /)\..")" -for NAME in "$@" +for DIR in "$CONTRIB/polyml-5.5.0" do - find "$CONTRIB/$NAME" -name "*.dll" >> "$FILE_LIST" + find "$DIR" -name "*.dll" >> "$FILE_LIST" done dash /bin/rebaseall -T "$FILE_LIST" rm -f "$FILE_LIST" diff --git a/Admin/lib/Tools/makedist_bundles b/Admin/lib/Tools/makedist_bundles --- a/Admin/lib/Tools/makedist_bundles +++ b/Admin/lib/Tools/makedist_bundles @@ -1,178 +1,187 @@ #!/usr/bin/env bash # # DESCRIPTION: re-package Isabelle distribution with add-on components ## diagnostics PRG=$(basename "$0") function usage() { echo echo "Usage: isabelle $PRG ARCHIVE" echo echo " Re-package Isabelle source distribution with add-on components" echo " and post-hoc patches for platform families linux, macos, windows." echo echo " Add-on components are that of the running Isabelle version!" echo exit 1 } function fail() { echo "$1" >&2 exit 2 } ## arguments [ "$#" -ne 1 ] && usage ARCHIVE="$1"; shift [ -f "$ARCHIVE" ] || fail "Bad source archive: $ARCHIVE" ARCHIVE_DIR="$(cd $(dirname "$ARCHIVE"); echo "$PWD")" ISABELLE_NAME="$(basename "$ARCHIVE" .tar.gz)" ## main export COPYFILE_DISABLE=true for PLATFORM_FAMILY in linux macos windows do echo echo "*** $PLATFORM_FAMILY ***" TMP="/var/tmp/isabelle-makedist$$" mkdir "$TMP" || fail "Cannot create directory $TMP" ISABELLE_TARGET="$TMP/$ISABELLE_NAME" tar -C "$TMP" -x -z -f "$ARCHIVE" # bundled components mkdir -p "$ARCHIVE_DIR/contrib" echo "#bundled components" >> "$ISABELLE_TARGET/etc/components" for CATALOG in main "$PLATFORM_FAMILY" bundled "bundled-$PLATFORM_FAMILY" do CATALOG_FILE="$ISABELLE_HOME/Admin/components/$CATALOG" if [ -f "$CATALOG_FILE" ] then echo "catalog ${CATALOG}" { while { unset REPLY; read -r; test "$?" = 0 -o -n "$REPLY"; } do case "$REPLY" in \#* | "") ;; *) COMPONENT="$REPLY" COMPONENT_DIR="$ISABELLE_TARGET/contrib/$COMPONENT" case "$COMPONENT" in jedit_build*) ;; *) echo " component $COMPONENT" CONTRIB="$ARCHIVE_DIR/contrib/${COMPONENT}.tar.gz" if [ ! -f "$CONTRIB" ]; then REMOTE="$ISABELLE_COMPONENT_REPOSITORY/${COMPONENT}.tar.gz" echo " download $REMOTE" perl -MLWP::Simple -e "getprint '$REMOTE';" > "$CONTRIB" perl -e "exit((stat('${CONTRIB}'))[7] == 0 ? 0 : 1);" && exit 2 fi tar -C "$ISABELLE_TARGET/contrib" -x -z -f "$CONTRIB" if [ -f "$COMPONENT_DIR/etc/settings" -o -f "$COMPONENT_DIR/etc/components" ] then echo "contrib/$COMPONENT" >> "$ISABELLE_TARGET/etc/components" fi ;; esac ;; esac done } < "$CATALOG_FILE" fi done # platform-specific patches case "$PLATFORM_FAMILY" in linux) OTHER_PLATFORMS='-name "x86*-darwin" -o -name "x86*-cygwin" -o -name "x86*-windows"' ;; macos) OTHER_PLATFORMS='-name "x86*-linux" -o -name "x86*-cygwin" -o -name "x86*-windows"' perl -pi -e "s,lookAndFeel=.*,lookAndFeel=com.apple.laf.AquaLookAndFeel,g;" \ -e "s,delete-line.shortcut=.*,delete-line.shortcut=C+d,g;" \ -e "s,delete.shortcut2=.*,delete.shortcut2=A+d,g;" \ "$TMP/$ISABELLE_NAME/src/Tools/jEdit/dist/properties/jEdit.props" ;; windows) OTHER_PLATFORMS='-name "x86*-linux" -o -name "x86*-darwin"' perl -pi -e "s,lookAndFeel=.*,lookAndFeel=com.sun.java.swing.plaf.windows.WindowsLookAndFeel,g;" \ "$TMP/$ISABELLE_NAME/src/Tools/jEdit/dist/properties/jEdit.props" cp "$ISABELLE_HOME/Admin/Windows/launch4j/Isabelle.exe" "$ISABELLE_TARGET/Isabelle2013.exe" cp "$ISABELLE_HOME/Admin/Windows/Cygwin/Cygwin-Setup.bat" \ "$ISABELLE_HOME/Admin/Windows/Cygwin/Cygwin-Terminal.bat" "$ISABELLE_TARGET" + for NAME in init.bat postinstall rebaseall + do + cp -a "$ISABELLE_HOME/Admin/Windows/Cygwin/isabelle/$NAME" \ + "$ISABELLE_TARGET/contrib/cygwin/isabelle/." + done + + perl -pi -e "s,/bin/rebaseall.*,/isabelle/rebaseall,g;" \ + "$ISABELLE_TARGET/contrib/cygwin/etc/postinstall/autorebase.bat.done" + for NAME in ANNOUNCE README NEWS COPYRIGHT CONTRIBUTORS contrib/README do FILE="$ISABELLE_TARGET/$NAME" { echo '' echo '' echo '' echo '' echo '' echo "${NAME}" echo '' echo '' echo '
'
         perl -w -p -e "s/&/&/g; s//>/g; s/'/'/g; s/\"/"/g;" "$FILE"
         echo '
' echo '' } > "${FILE}.html" done ;; *) ;; esac # purge other platforms ( cd "$ISABELLE_TARGET" for DIR in $(eval find contrib $OTHER_PLATFORMS | sort) do echo "removing $DIR" rm -rf "$DIR" done ) # archive BUNDLE_ARCHIVE="${ARCHIVE_DIR}/${ISABELLE_NAME}_${PLATFORM_FAMILY}.tar.gz" echo "packaging $(basename "$BUNDLE_ARCHIVE")" tar -C "$TMP" -c -z -f "$BUNDLE_ARCHIVE" "$ISABELLE_NAME" # clean up rm -rf "$TMP" done diff --git a/Admin/lib/Tools/makedist_cygwin b/Admin/lib/Tools/makedist_cygwin --- a/Admin/lib/Tools/makedist_cygwin +++ b/Admin/lib/Tools/makedist_cygwin @@ -1,84 +1,79 @@ #!/usr/bin/env bash # # DESCRIPTION: produce pre-canned Cygwin distribution for Isabelle ## global parameters CYGWIN_MIRROR="http://isabelle.in.tum.de/cygwin_2013" ## diagnostics PRG=$(basename "$0") function usage() { echo echo "Usage: isabelle $PRG" echo echo " Produce pre-canned Cygwin distribution for Isabelle." echo exit 1 } function fail() { echo "$1" >&2 exit 2 } ## arguments [ "$#" -ne 0 ] && usage ## main TARGET="$PWD/cygwin" # download [ ! -e "$TARGET" ] || fail "Target already exists: \"$TARGET\"" mkdir -p "$TARGET/isabelle" || fail "Failed to create target directory: \"$TARGET\"" perl -MLWP::Simple -e "getprint '$CYGWIN_MIRROR/setup.exe';" > "$TARGET/isabelle/cygwin.exe" chmod +x "$TARGET/isabelle/cygwin.exe" "$TARGET/isabelle/cygwin.exe" -h /dev/null || exit 2 # install "$TARGET/isabelle/cygwin.exe" \ --site "$CYGWIN_MIRROR" --no-verify \ --local-package-dir 'C:\temp' \ --root "$(cygpath -w "$TARGET")" \ --packages libgmp3,make,perl,python,rlwrap,vim \ --no-shortcuts --no-startmenu --no-desktop --quiet-mode [ "$?" = 0 -a -e "$TARGET/etc" ] || exit 2 # patches for NAME in hosts protocols services networks passwd group do rm "$TARGET/etc/$NAME" done ln -s cygperl5_14.dll "$TARGET/bin/cygperl5_14_2.dll" rm "$TARGET/Cygwin.bat" -for NAME in init.bat postinstall rebaseall -do - cp -a "$ISABELLE_HOME/Admin/Windows/Cygwin/isabelle/$NAME" "$TARGET/isabelle/." -done - # archive DATE=$(date +%Y%m%d) tar -C "$TARGET/.." -cz -f "cygwin-${DATE}.tar.gz" cygwin