Fix [22d2341c9d]: Building extensions for Tk 8 and Tcl 8 in a Tcl 9 e… #1881
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |