summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordkf <donal.k.fellows@manchester.ac.uk>2020-11-27 18:13:10 (GMT)
committerdkf <donal.k.fellows@manchester.ac.uk>2020-11-27 18:13:10 (GMT)
commit266473758846d72e8c701adaf2ce93a4679aaabc (patch)
treea23ae0b6de159e1f09435247ab97f606b5bc4e24
parent3c86724fcf6c05cb3ca83ccaffa2fbc94cf44251 (diff)
parent0cb78052e48dae9b266b3a8291a1d5c65b1e2487 (diff)
downloadtcl-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.yml138
-rwxr-xr-xtools/addVerToFile.tcl9
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