diff options
author | dkf <donal.k.fellows@manchester.ac.uk> | 2020-11-27 18:13:10 (GMT) |
---|---|---|
committer | dkf <donal.k.fellows@manchester.ac.uk> | 2020-11-27 18:13:10 (GMT) |
commit | 266473758846d72e8c701adaf2ce93a4679aaabc (patch) | |
tree | a23ae0b6de159e1f09435247ab97f606b5bc4e24 | |
parent | 3c86724fcf6c05cb3ca83ccaffa2fbc94cf44251 (diff) | |
parent | 0cb78052e48dae9b266b3a8291a1d5c65b1e2487 (diff) | |
download | tcl-266473758846d72e8c701adaf2ce93a4679aaabc.zip tcl-266473758846d72e8c701adaf2ce93a4679aaabc.tar.gz tcl-266473758846d72e8c701adaf2ce93a4679aaabc.tar.bz2 |
Added single-file distributions of Tcl for all main platforms.
These are *UNOFFICIAL* builds as they do not correspond to particular releases.
The macOS build is packaged in a .dmg with a README that explains how to run it
as the binary is not signed or notarized (and this is unlikely to change).
-rw-r--r-- | .github/workflows/onefiledist.yml | 138 | ||||
-rwxr-xr-x | tools/addVerToFile.tcl | 9 |
2 files changed, 147 insertions, 0 deletions
diff --git a/.github/workflows/onefiledist.yml b/.github/workflows/onefiledist.yml new file mode 100644 index 0000000..0fb6ba5 --- /dev/null +++ b/.github/workflows/onefiledist.yml @@ -0,0 +1,138 @@ +name: Build Binaries +on: [push] +jobs: + linux: + name: Linux + runs-on: ubuntu-16.04 + defaults: + run: + shell: bash + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Prepare + run: | + touch generic/tclStubInit.c generic/tclOOStubInit.c + mkdir 1dist + echo "VER_PATH=$(cd tools; pwd)/addVerToFile.tcl" >> $GITHUB_ENV + working-directory: . + - name: Configure + run: ./configure --disable-symbols --disable-shared --enable-zipfs + working-directory: unix + - name: Build + run: | + make tclsh tclzipfile + make shell SCRIPT="$VER_PATH $GITHUB_ENV" + echo "TCL_ZIP=`pwd`/`echo libtcl*.zip`" >> $GITHUB_ENV + working-directory: unix + - name: Package + run: | + cat ../unix/tclsh $TCL_ZIP > tclsh${TCL_PATCHLEVEL}_unofficial + chmod +x tclsh${TCL_PATCHLEVEL}_unofficial + tar -cf tclsh${TCL_PATCHLEVEL}_unofficial.tar tclsh${TCL_PATCHLEVEL}_unofficial + working-directory: 1dist + - name: Upload + uses: actions/upload-artifact@v2 + with: + name: Tclsh ${{ env.TCL_PATCHLEVEL }} Linux single-file build (unofficial) + path: 1dist/*.tar + macos: + name: macOS + runs-on: macos-latest + defaults: + run: + shell: bash + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Checkout create-dmg + uses: actions/checkout@v2 + with: + repository: create-dmg/create-dmg + ref: v1.0.8 + path: create-dmg + - name: Prepare + run: | + mkdir 1dist + touch generic/tclStubInit.c generic/tclOOStubInit.c || true + echo "VER_PATH=$(cd tools; pwd)/addVerToFile.tcl" >> $GITHUB_ENV + echo "CREATE_DMG=$(cd create-dmg;pwd)/create-dmg" >> $GITHUB_ENV + - name: Configure + run: ./configure --disable-symbols --disable-shared --enable-zipfs + working-directory: unix + - name: Build + run: | + make tclsh tclzipfile + make shell SCRIPT="$VER_PATH $GITHUB_ENV" + echo "TCL_BIN=`pwd`/tclsh" >> $GITHUB_ENV + echo "TCL_ZIP=`pwd`/`echo libtcl*.zip`" >> $GITHUB_ENV + working-directory: unix + - name: Package + run: | + mkdir contents + cat $TCL_BIN $TCL_ZIP > contents/tclsh${TCL_PATCHLEVEL}_unofficial + chmod +x contents/tclsh${TCL_PATCHLEVEL}_unofficial + cat > contents/README.txt <<EOF + This is a single-file executable developer preview of Tcl $TCL_PATCHLEVEL + + It is not intended as an official release at all, so it is unsigned and unnotarized. + Use strictly at your own risk. + + To run it, you need to copy the executable out and run: + xattr -d com.apple.quarantine tclsh${TCL_PATCHLEVEL}_unofficial + to mark the executable as runnable on your machine. + EOF + $CREATE_DMG \ + --volname "Tcl $TCL_PATCHLEVEL (unofficial)" \ + --window-pos 200 120 \ + --window-size 800 400 \ + "Tcl-$TCL_PATCHLEVEL-(unofficial).dmg" \ + "contents/" + working-directory: 1dist + - name: Upload + uses: actions/upload-artifact@v2 + with: + name: Tclsh ${{ env.TCL_PATCHLEVEL }} macOS single-file build (unofficial) + path: 1dist/*.dmg + win: + name: Windows + runs-on: windows-latest + defaults: + run: + shell: bash + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Install MSYS2 + uses: msys2/setup-msys2@v2 + - name: Prepare + run: | + touch generic/tclStubInit.c generic/tclOOStubInit.c + echo "VER_PATH=$(cd tools; pwd)/addVerToFile.tcl" >> $GITHUB_ENV + mkdir 1dist + working-directory: . + - name: Configure + run: ./configure --disable-symbols --disable-shared --enable-zipfs + working-directory: win + - name: Build + run: | + make binaries libraries tclzipfile + echo "TCL_ZIP=`pwd`/`echo libtcl*.zip`" >> $GITHUB_ENV + working-directory: win + - name: Package + run: | + cat ../win/tclsh*.exe $TCL_ZIP > combined.exe + working-directory: 1dist + - name: Get Exact Version + run: | + ./combined.exe $VER_PATH $GITHUB_ENV + working-directory: 1dist + - name: Set Executable Name + run: | + mv combined.exe tclsh${TCL_PATCHLEVEL}_unofficial.exe + working-directory: 1dist + - name: Upload + uses: actions/upload-artifact@v2 + with: + name: Tclsh ${{ env.TCL_PATCHLEVEL }} Windows single-file build (unofficial) + path: '1dist/*_unofficial.exe' diff --git a/tools/addVerToFile.tcl b/tools/addVerToFile.tcl new file mode 100755 index 0000000..bfc39e2 --- /dev/null +++ b/tools/addVerToFile.tcl @@ -0,0 +1,9 @@ +#!/usr/bin/env tclsh +if {$argc < 1} { + error "need a filename argument" +} +lassign $argv filename +set f [open $filename a] +puts $f "TCL_VERSION=[info tclversion]" +puts $f "TCL_PATCHLEVEL=[info patchlevel]" +close $f |