merge-mark #3465
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: Linux | |
on: | |
push: | |
branches: | |
- "main" | |
- "core-8-branch" | |
- "core-8-6-branch" | |
tags: | |
- "core-**" | |
permissions: | |
contents: read | |
defaults: | |
run: | |
shell: bash | |
working-directory: tk/unix | |
env: | |
ERROR_ON_FAILURES: 1 | |
jobs: | |
build: | |
runs-on: ubuntu-22.04 | |
strategy: | |
matrix: | |
compiler: | |
- "gcc" | |
- "clang" | |
config: | |
- "" | |
- "CFLAGS=-DTK_NO_DEPRECATED=1" | |
- "--disable-shared" | |
- "--disable-xft" | |
- "--disable-xss" | |
- "--enable-symbols" | |
steps: | |
- name: Checkout Tk | |
uses: actions/checkout@v4 | |
with: | |
path: tk | |
- name: Checkout Tcl 8.6 | |
uses: actions/checkout@v4 | |
with: | |
repository: tcltk/tcl | |
ref: main | |
path: tcl | |
- name: Setup Environment (compiler=${{ matrix.compiler }}) | |
run: | | |
sudo apt-get install libxss-dev libxft-dev | |
mkdir "$HOME/install dir" | |
touch tk/doc/man.macros tk/generic/tkStubInit.c | |
echo "CFGOPT=$CFGOPT" >> $GITHUB_ENV | |
echo "CC=$COMPILER" >> $GITHUB_ENV | |
echo "TOOL_DIR=$(cd tcl/tools;pwd)" >> $GITHUB_ENV | |
echo "BUILD_CONFIG_ID=$OPTS" >> $GITHUB_ENV | |
working-directory: "." | |
env: | |
CFGOPT: ${{ matrix.config }} | |
COMPILER: ${{ matrix.compiler }} | |
OPTS: ${{ matrix.compiler }}${{ matrix.config }} | |
- name: Configure and Build Tcl | |
run: | | |
./configure $CFGOPT "--prefix=$HOME/install dir" || { | |
cat config.log | |
echo "::warning::Failure during Tcl Configure" | |
exit 1 | |
} | |
make all install || { | |
echo "::warning::Failure during Tcl Build" | |
exit 1 | |
} | |
echo "TCL_CONFIG_PATH=`pwd`" >> $GITHUB_ENV | |
working-directory: tcl/unix | |
- name: Configure (opts=${{ matrix.config }}) | |
run: | | |
./configure $CFGOPT --with-tcl=$TCL_CONFIG_PATH "--prefix=$HOME/install dir" || { | |
cat config.log | |
echo "::error::Failure during Configure" | |
exit 1 | |
} | |
- name: Build | |
run: | | |
make binaries libraries || { | |
echo "::error::Failure during Build" | |
exit 1 | |
} | |
- name: Build Test Harness | |
run: | | |
make tktest || { | |
echo "::error::Failure during Build" | |
exit 1 | |
} | |
- name: Test-Drive Installation | |
run: | | |
make install || { | |
echo "::error::Failure during Install" | |
exit 1 | |
} | |
- name: Create Distribution Package | |
run: | | |
make dist || { | |
echo "::error::Failure during Distribute" | |
exit 1 | |
} | |
- name: Convert Documentation to HTML | |
run: | | |
make html-tk TOOL_DIR=$TOOL_DIR || { | |
echo "::error::Failure during Distribute" | |
exit 1 | |
} | |
- name: Discover Version ID | |
if: ${{ env.BUILD_CONFIG_ID == 'gcc' }} | |
run: | | |
cd /tmp/dist | |
echo "VERSION=`ls -d tk* | sed 's/tk//'`" >> $GITHUB_ENV | |
- name: Upload Source Distribution | |
if: ${{ env.BUILD_CONFIG_ID == 'gcc' }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: Tk ${{ env.VERSION }} Source distribution (snapshot) | |
path: | | |
/tmp/dist/tk* | |
!/tmp/dist/tk*/html/** | |
- name: Upload Documentation Distribution | |
if: ${{ env.BUILD_CONFIG_ID == 'gcc' }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: Tk ${{ env.VERSION }} HTML documentation (snapshot) | |
path: /tmp/dist/tk*/html | |
test: | |
runs-on: ubuntu-22.04 | |
strategy: | |
matrix: | |
compiler: | |
- "gcc" | |
config: | |
- "" | |
- "--disable-xft" | |
- "--enable-symbols" | |
steps: | |
- name: Checkout Tk | |
uses: actions/checkout@v4 | |
with: | |
path: tk | |
- name: Checkout Tcl | |
uses: actions/checkout@v4 | |
with: | |
repository: tcltk/tcl | |
ref: main | |
path: tcl | |
- name: Setup Environment (compiler=${{ matrix.compiler }}) | |
run: | | |
sudo apt-get install libxss-dev libxft-dev xvfb libicu-dev | |
mkdir "$HOME/install dir" | |
touch tk/doc/man.macros tk/generic/tkStubInit.c | |
echo "CFGOPT=$CFGOPT" >> $GITHUB_ENV | |
echo "CC=$COMPILER" >> $GITHUB_ENV | |
working-directory: "." | |
env: | |
CFGOPT: ${{ matrix.config }} | |
COMPILER: ${{ matrix.compiler }} | |
- name: Configure and Build Tcl | |
run: | | |
./configure $CFGOPT "--prefix=$HOME/install dir" || { | |
cat config.log | |
echo "::warning::Failure during Tcl Configure" | |
exit 1 | |
} | |
make all install || { | |
echo "::warning::Failure during Tcl Build" | |
exit 1 | |
} | |
echo "TCL_CONFIG_PATH=`pwd`" >> $GITHUB_ENV | |
working-directory: tcl/unix | |
- name: Configure ${{ matrix.config }} | |
run: | | |
./configure $CFGOPT --with-tcl=$TCL_CONFIG_PATH "--prefix=$HOME/install dir" || { | |
cat config.log | |
echo "::error::Failure during Configure" | |
exit 1 | |
} | |
- name: Build | |
run: | | |
make binaries libraries tktest || { | |
echo "::error::Failure during Build" | |
exit 1 | |
} | |
- name: Run Tests | |
run: | | |
xvfb-run --auto-servernum make test-classic | tee out-classic.txt | |
xvfb-run --auto-servernum make test-ttk | tee out-ttk.txt | |
grep -q "Failed 0" out-classic.txt || { | |
echo "::error::Failure during Test" | |
exit 1 | |
} | |
grep -q "Failed 0" out-ttk.txt || { | |
echo "::error::Failure during Test" | |
exit 1 | |
} | |
timeout-minutes: 10 |