diff options
Diffstat (limited to '.github')
-rw-r--r-- | .github/workflows/linux-build.yml | 5 | ||||
-rw-r--r-- | .github/workflows/mac-build.yml | 11 | ||||
-rw-r--r-- | .github/workflows/onefiledist.yml | 152 | ||||
-rw-r--r-- | .github/workflows/win-build.yml | 9 |
4 files changed, 169 insertions, 8 deletions
diff --git a/.github/workflows/linux-build.yml b/.github/workflows/linux-build.yml index 69580c2..acd0433 100644 --- a/.github/workflows/linux-build.yml +++ b/.github/workflows/linux-build.yml @@ -16,13 +16,12 @@ jobs: matrix: cfgopt: - "" + - "CFLAGS=-DTCL_NO_DEPRECATED=1" - "--disable-shared" - "--enable-symbols" - "--enable-symbols=mem" - "--enable-symbols=all" - "CFLAGS=-ftrapv" - - "CFLAGS=-DTCL_UTF_MAX=4" - - "CFLAGS=-DTCL_UTF_MAX=6" # Duplicated below - "CFLAGS=-m32 CPPFLAGS=-m32 LDFLAGS=-m32 --disable-64bit" defaults: @@ -40,7 +39,7 @@ jobs: sudo apt-get install gcc-multilib libc6-dev-i386 - name: Prepare run: | - touch tclStubInit.c tclOOStubInit.c + touch tclStubInit.c tclOOStubInit.c tclOOScript.h working-directory: generic - name: Configure ${{ matrix.cfgopt }} run: | diff --git a/.github/workflows/mac-build.yml b/.github/workflows/mac-build.yml index 1645bc7..7119f34 100644 --- a/.github/workflows/mac-build.yml +++ b/.github/workflows/mac-build.yml @@ -21,10 +21,12 @@ jobs: uses: actions/checkout@v4 - name: Prepare run: | - touch tclStubInit.c tclOOStubInit.c + touch tclStubInit.c tclOOStubInit.c tclOOScript.h working-directory: generic - name: Build run: make all + env: + CFLAGS: -arch x86_64 -arch arm64 - name: Run Tests run: make test styles=develop env: @@ -49,17 +51,20 @@ jobs: uses: actions/checkout@v4 - name: Prepare run: | - touch tclStubInit.c tclOOStubInit.c + touch tclStubInit.c tclOOStubInit.c tclOOScript.h mkdir "$HOME/install dir" working-directory: generic - name: Configure ${{ matrix.cfgopt }} # Note that macOS is always a 64 bit platform - run: ./configure --enable-64bit --enable-dtrace --enable-framework ${CFGOPT} "--prefix=$HOME/install" || (cat config.log && exit 1) + run: ./configure --enable-dtrace --enable-framework ${CFGOPT} "--prefix=$HOME/install" || (cat config.log && exit 1) env: + CFLAGS: -arch x86_64 -arch arm64 CFGOPT: ${{ matrix.cfgopt }} - name: Build run: | make all tcltest + env: + CFLAGS: -arch x86_64 -arch arm64 - name: Run Tests run: | make test diff --git a/.github/workflows/onefiledist.yml b/.github/workflows/onefiledist.yml new file mode 100644 index 0000000..a9f02c9 --- /dev/null +++ b/.github/workflows/onefiledist.yml @@ -0,0 +1,152 @@ +name: Build Binaries +on: + push: + branches: + - "main" + - "core-8-branch" + tags: + - "core-**" +permissions: + contents: read +jobs: + linux: + name: Linux + runs-on: ubuntu-20.04 + defaults: + run: + shell: bash + steps: + - name: Checkout + uses: actions/checkout@v4 + - 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 + make shell SCRIPT="$VER_PATH $GITHUB_ENV" + echo "TCL_ZIP=`pwd`/`echo libtcl*.zip`" >> $GITHUB_ENV + working-directory: unix + - name: Package + run: | + cp ../unix/tclsh tclsh${TCL_PATCHLEVEL}_snapshot + chmod +x tclsh${TCL_PATCHLEVEL}_snapshot + tar -cf tclsh${TCL_PATCHLEVEL}_snapshot.tar tclsh${TCL_PATCHLEVEL}_snapshot + working-directory: 1dist + - name: Upload + uses: actions/upload-artifact@v3 + with: + name: Tclsh ${{ env.TCL_PATCHLEVEL }} Linux single-file build (snapshot) + path: 1dist/*.tar + macos: + name: macOS + runs-on: macos-11 + defaults: + run: + shell: bash + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Checkout create-dmg + uses: actions/checkout@v4 + 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 + wget https://github.com/culler/macher/releases/download/v1.3/macher + sudo cp macher /usr/local/bin + sudo chmod a+x /usr/local/bin/macher + echo "VER_PATH=$(cd tools; pwd)/addVerToFile.tcl" >> $GITHUB_ENV + echo "CREATE_DMG=$(cd create-dmg;pwd)/create-dmg" >> $GITHUB_ENV + echo "CFLAGS=-arch x86_64 -arch arm64" >> $GITHUB_ENV + - name: Configure + run: ./configure --disable-symbols --disable-shared --enable-zipfs + working-directory: unix + - name: Build + run: | + make tclsh + 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 + cp $TCL_BIN contents/tclsh${TCL_PATCHLEVEL}_snapshot + chmod +x contents/tclsh${TCL_PATCHLEVEL}_snapshot + 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}_snapshot + to mark the executable as runnable on your machine. + EOF + $CREATE_DMG \ + --volname "Tcl $TCL_PATCHLEVEL (snapshot)" \ + --window-pos 200 120 \ + --window-size 800 400 \ + "Tcl-$TCL_PATCHLEVEL-(snapshot).dmg" \ + "contents/" + working-directory: 1dist + - name: Upload + uses: actions/upload-artifact@v3 + with: + name: Tclsh ${{ env.TCL_PATCHLEVEL }} macOS single-file build (snapshot) + path: 1dist/*.dmg + win: + name: Windows + runs-on: windows-2019 + defaults: + run: + shell: msys2 {0} + env: + CC: gcc + CFGOPT: --disable-symbols --disable-shared + steps: + - name: Install MSYS2 + uses: msys2/setup-msys2@v2 + with: + msystem: UCRT64 + install: git mingw-w64-ucrt-x86_64-toolchain make zip + - name: Checkout + uses: actions/checkout@v4 + - 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 $CFGOPT + working-directory: win + - name: Build + run: | + make binaries libraries + echo "TCL_ZIP=`pwd`/`echo libtcl*.zip`" >> $GITHUB_ENV + working-directory: win + - name: Get Exact Version + run: | + ./tclsh*.exe $VER_PATH $GITHUB_ENV + working-directory: win + - name: Set Executable Name + run: | + cp ../win/tclsh*.exe tclsh${TCL_PATCHLEVEL}_snapshot.exe + working-directory: 1dist + - name: Upload + uses: actions/upload-artifact@v3 + with: + name: Tclsh ${{ env.TCL_PATCHLEVEL }} Windows single-file build (snapshot) + path: '1dist/*_snapshot.exe' diff --git a/.github/workflows/win-build.yml b/.github/workflows/win-build.yml index 29ea421..2b772f9 100644 --- a/.github/workflows/win-build.yml +++ b/.github/workflows/win-build.yml @@ -22,7 +22,8 @@ jobs: matrix: cfgopt: - "" - - "OPTS=static,msvcrt" + - "CHECKS=nodep" + - "OPTS=static" - "OPTS=symbols" - "OPTS=symbols STATS=compdbg,memdbg" # Using powershell means we need to explicitly stop on failure @@ -59,6 +60,7 @@ jobs: matrix: cfgopt: - "" + - "CFLAGS=-DTCL_NO_DEPRECATED=1" - "--disable-shared" - "--enable-symbols" - "--enable-symbols=mem" @@ -74,7 +76,7 @@ jobs: uses: actions/checkout@v4 - name: Prepare run: | - touch tclStubInit.c tclOOStubInit.c + touch tclStubInit.c tclOOStubInit.c tclOOScript.h mkdir "${HOME}/install dir" working-directory: generic - name: Configure ${{ matrix.cfgopt }} @@ -88,3 +90,6 @@ jobs: run: make tcltest - name: Run Tests run: make test + +# If you add builds with Wine, be sure to define the environment variable +# CI_USING_WINE when running them so that broken tests know not to run. |