Skip to content

Fix [22d2341c9d]: Building extensions for Tk 8 and Tcl 8 in a Tcl 9 e… #1881

Fix [22d2341c9d]: Building extensions for Tk 8 and Tcl 8 in a Tcl 9 e…

Fix [22d2341c9d]: Building extensions for Tk 8 and Tcl 8 in a Tcl 9 e… #1881

Workflow file for this run

name: Build Binaries
on:
push:
branches:
- "main"
- "core-8-branch"
- "core-8-6-branch"
tags:
- "core-**"
permissions:
contents: read
jobs:
linux:
name: Linux
runs-on: ubuntu-20.04
defaults:
run:
shell: bash
env:
CC: gcc
CFGOPT: --disable-symbols --disable-shared
steps:
- name: Checkout Tk
uses: actions/checkout@v4
with:
path: tk
- name: Checkout Tcl 9.0
uses: actions/checkout@v4
with:
repository: tcltk/tcl
ref: main
path: tcl
- name: Setup Environment
run: |
sudo apt-get install libxss-dev libxft-dev
touch tcl/generic/tclStubInit.c tcl/generic/tclOOStubInit.c
touch tk/generic/tkStubInit.c
echo "INST_DIR=$(cd install;pwd)" >> $GITHUB_ENV
echo "VER_PATH=$(cd tcl/tools; pwd)/addVerToFile.tcl" >> $GITHUB_ENV
working-directory: "."
- name: Configure Tcl
run: |
./configure $CFGOPT --prefix=$INST_DIR
working-directory: tcl/unix
- name: Build & Install Tcl
run: |
make binaries libraries install
make shell SCRIPT="$VER_PATH $GITHUB_ENV"
working-directory: tcl/unix
- name: Configure Tk
run: |
./configure $CFGOPT --with-tcl=$INST_DIR/lib --prefix=$INST_DIR
working-directory: tk/unix
- name: Build & Install Tk
run: |
make binaries libraries install
working-directory: tk/unix
# TODO: need the Tk version separately for distro naming below
- name: Package
run: |
cp bin/wish9.0 ${BUILD_NAME}
chmod +x ${BUILD_NAME}
tar -cf ${BUILD_NAME}.tar ${BUILD_NAME}
working-directory: ${{ env.INST_DIR }}
env:
BUILD_NAME: wish${{ env.TCL_PATCHLEVEL }}_snapshot
- name: Upload
uses: actions/upload-artifact@v4
with:
name: Wish ${{ env.TCL_PATCHLEVEL }} Linux single-file build (snapshot)
path: ${{ env.INST_DIR }}/*.tar
- name: Describe Installation Zip Contents
if: ${{ always() }}
run: |
unzip -l wish${{ env.TCL_PATCHLEVEL }}_snapshot || true
working-directory: ${{ env.INST_DIR }}
macos:
name: macOS
runs-on: macos-13
defaults:
run:
shell: bash
env:
CC: gcc
CFGOPT: --disable-symbols --disable-shared
steps:
- name: Checkout Tk
uses: actions/checkout@v4
with:
path: tk
- name: Checkout Tcl 9.0
uses: actions/checkout@v4
with:
repository: tcltk/tcl
ref: main
path: tcl
- name: Checkout create-dmg
uses: actions/checkout@v4
with:
repository: create-dmg/create-dmg
ref: v1.0.8
path: create-dmg
- name: Setup Environment
run: |
mkdir -p install/contents
touch tcl/generic/tclStubInit.c tcl/generic/tclOOStubInit.c
touch tk/generic/tkStubInit.c
echo "INST_DIR=$(cd install;pwd)" >> $GITHUB_ENV
echo "VER_PATH=$(cd tcl/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
working-directory: "."
- name: Configure Tcl
run: |
./configure $CFGOPT --prefix=$INST_DIR
working-directory: tcl/unix
- name: Build & Install Tcl
run: |
make binaries libraries install
make shell SCRIPT="$VER_PATH $GITHUB_ENV"
working-directory: tcl/unix
- name: Configure Tk
run: |
./configure $CFGOPT --with-tcl=$INST_DIR/lib --prefix=$INST_DIR \
--enable-aqua
working-directory: tk/unix
- name: Build & Install Tk
run: |
make binaries libraries install
working-directory: tk/unix
# TODO: need the Tk version separately for distro naming below
- name: Package
run: |
cp ../tk/unix/wish contents/${BUILD_NAME}
chmod +x contents/${BUILD_NAME}
cat > contents/README.txt <<EOF
This is a single-file executable developer preview of Tcl/Tk $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 ${BUILD_NAME}
to mark the executable as runnable on your machine.
EOF
$CREATE_DMG \
--volname "TclTk $TCL_PATCHLEVEL (snapshot)" \
--window-pos 200 120 \
--window-size 800 400 \
"TclTk-$TCL_PATCHLEVEL-(snapshot).dmg" \
"contents/"
working-directory: ${{ env.INST_DIR }}
env:
BUILD_NAME: wish${{ env.TCL_PATCHLEVEL }}_snapshot
- name: Upload
uses: actions/upload-artifact@v4
with:
name: Wish ${{ env.TCL_PATCHLEVEL }} macOS single-file build (snapshot)
path: ${{ env.INST_DIR }}/*.dmg
win:
name: Windows
runs-on: windows-latest
defaults:
run:
shell: msys2 {0}
env:
CC: gcc
CFGOPT: --disable-symbols --disable-shared
steps:
- name: Install MSYS2
uses: msys2/setup-msys2@v2
with:
msystem: MINGW64
install: git mingw-w64-x86_64-toolchain make zip
- name: Checkout Tk
uses: actions/checkout@v4
with:
path: tk
- name: Checkout Tcl 9.0
uses: actions/checkout@v4
with:
repository: tcltk/tcl
ref: main
path: tcl
- name: Setup Environment
run: |
mkdir -p install/combined
touch tcl/generic/tclStubInit.c tcl/generic/tclOOStubInit.c
touch tk/generic/tkStubInit.c
echo "INST_DIR=$(cd install;pwd)" >> $GITHUB_ENV
echo "VER_PATH=$(cd tcl/tools; pwd)/addVerToFile.tcl" >> $GITHUB_ENV
working-directory: "."
- name: Configure Tcl
run: |
./configure $CFGOPT --prefix=$INST_DIR
working-directory: tcl/win
- name: Build & Install Tcl
run: |
make binaries libraries install
$INST_DIR/bin/tclsh* $VER_PATH $GITHUB_ENV
working-directory: tcl/win
- name: Configure Tk
run: |
./configure $CFGOPT --with-tcl=$INST_DIR/lib --prefix=$INST_DIR
working-directory: tk/win
- name: Build & Install Tk
run: |
make all install
echo "TK_BIN=`pwd`/`echo wish*.exe`" >> $GITHUB_ENV
working-directory: tk/win
# TODO: need the Tk version separately for distro naming below
- name: Package
run: |
cp ${TK_BIN} combined/${BUILD_NAME}.exe
working-directory: install
env:
BUILD_NAME: wish${{ env.TCL_PATCHLEVEL }}_snapshot
- name: Upload
uses: actions/upload-artifact@v4
with:
name: Wish ${{ env.TCL_PATCHLEVEL }} Windows single-file build (snapshot)
path: install/combined/wish${{ env.TCL_PATCHLEVEL }}_snapshot.exe