Fix for bug [265ff202e9]: Artifacts in a few themed widgets on x11 an… #2150
  
    
      This file contains hidden or 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-9-0-branch" | |
| tags: | |
| - "core-**" | |
| permissions: | |
| contents: read | |
| jobs: | |
| linux: | |
| name: Linux | |
| runs-on: ubuntu-22.04 | |
| defaults: | |
| run: | |
| shell: bash | |
| env: | |
| CC: gcc | |
| CFGOPT: --disable-symbols --disable-shared | |
| steps: | |
| - name: Checkout Tk | |
| uses: actions/checkout@v5 | |
| with: | |
| path: tk | |
| - name: Checkout Tcl 9.1 | |
| uses: actions/checkout@v5 | |
| with: | |
| repository: tcltk/tcl | |
| ref: main | |
| path: tcl | |
| - name: Prepare | |
| 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.1 ${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@v5 | |
| 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-15 | |
| defaults: | |
| run: | |
| shell: bash | |
| env: | |
| CC: gcc | |
| CFGOPT: --disable-symbols --disable-shared | |
| steps: | |
| - name: Checkout Tk | |
| uses: actions/checkout@v5 | |
| with: | |
| path: tk | |
| - name: Checkout Tcl 9.1 | |
| uses: actions/checkout@v5 | |
| with: | |
| repository: tcltk/tcl | |
| ref: main | |
| path: tcl | |
| - name: Checkout create-dmg | |
| uses: actions/checkout@v5 | |
| with: | |
| repository: create-dmg/create-dmg | |
| ref: v1.2.2 | |
| path: create-dmg | |
| - name: Prepare | |
| run: | | |
| mkdir -p install/contents | |
| touch tcl/generic/tclStubInit.c tcl/generic/tclOOStubInit.c || true | |
| touch tk/generic/tkStubInit.c || true | |
| wget https://github.com/culler/macher/releases/download/v1.8/macher | |
| sudo cp macher /usr/local/bin | |
| sudo chmod a+x /usr/local/bin/macher | |
| 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@v5 | |
| 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@v5 | |
| with: | |
| path: tk | |
| - name: Checkout Tcl 9.1 | |
| uses: actions/checkout@v5 | |
| with: | |
| repository: tcltk/tcl | |
| ref: main | |
| path: tcl | |
| - name: Prepare | |
| 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@v5 | |
| with: | |
| name: Wish ${{ env.TCL_PATCHLEVEL }} Windows single-file build (snapshot) | |
| path: install/combined/wish${{ env.TCL_PATCHLEVEL }}_snapshot.exe |