From 33955d69338c3d268bfe9e51aad0c276cf8a1f0a Mon Sep 17 00:00:00 2001 From: dkf Date: Mon, 9 Nov 2020 09:13:57 +0000 Subject: Copied build control files for Github Actions from 8.7 --- .github/workflows/linux-build.yml | 37 +++++++++++++++++++++++++++++++++++++ .github/workflows/win-build.yml | 22 ++++++++++++++++++++++ README.md | 12 +++++++++++- 3 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/linux-build.yml create mode 100644 .github/workflows/win-build.yml diff --git a/.github/workflows/linux-build.yml b/.github/workflows/linux-build.yml new file mode 100644 index 0000000..db46cfd --- /dev/null +++ b/.github/workflows/linux-build.yml @@ -0,0 +1,37 @@ +name: Linux Build and Test +on: [push] +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Configure + working-directory: unix + run: | + mkdir "${HOME}/install dir" + ./configure ${CFGOPT} "--prefix=$HOME/install dir" || (cat config.log && exit 1) + - name: Build + working-directory: unix + run: | + make all + - name: Build Test Harness + working-directory: unix + run: | + make tcltest + - name: Run Tests + working-directory: unix + run: | + make test + - name: Test-Drive Installation + working-directory: unix + run: | + make install + - name: Create Distribution Package + working-directory: unix + run: | + make dist + - name: Convert Documentation to HTML + working-directory: unix + run: | + make html-tcl diff --git a/.github/workflows/win-build.yml b/.github/workflows/win-build.yml new file mode 100644 index 0000000..652b34a --- /dev/null +++ b/.github/workflows/win-build.yml @@ -0,0 +1,22 @@ +name: Windows Build and Test +on: [push] +jobs: + build: + runs-on: windows-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Init MSVC + uses: ilammy/msvc-dev-cmd@v1 + - name: Build + working-directory: win + run: | + nmake -f makefile.vc all + - name: Build Test Harness + working-directory: win + run: | + nmake -f makefile.vc tcltest + - name: Run Tests + working-directory: win + run: | + nmake -f makefile.vc test diff --git a/README.md b/README.md index 3b192a5..25367ce 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,17 @@ This is the **Tcl 8.6.10** source distribution. You can get any source release of Tcl from [our distribution site](https://sourceforge.net/projects/tcl/files/Tcl/). -[![Build Status](https://travis-ci.org/tcltk/tcl.svg?branch=core-8-6-branch)](https://travis-ci.org/tcltk/tcl) +8.6.10 +[![Build Status](https://github.com/tcltk/tcl/workflows/Linux%20Build%20and%20Test/badge.svg?branch=core-8-6-branch)](https://github.com/tcltk/tcl/actions?query=workflow%3A%22Linux+Build+and+Test%22+branch%3Acore-8-6-branch) +[![Build Status](https://github.com/tcltk/tcl/workflows/Windows%20Build%20and%20Test/badge.svg?branch=core-8-6-branch)](https://github.com/tcltk/tcl/actions?query=workflow%3A%22Windows+Build+and+Test%22+branch%3Acore-8-6-branch) +
+8.7a4 +[![Build Status](https://github.com/tcltk/tcl/workflows/Linux%20Build%20and%20Test/badge.svg?branch=core-8-branch)](https://github.com/tcltk/tcl/actions?query=workflow%3A%22Linux+Build+and+Test%22+branch%3Acore-8-branch) +[![Build Status](https://github.com/tcltk/tcl/workflows/Windows%20Build%20and%20Test/badge.svg?branch=core-8-branch)](https://github.com/tcltk/tcl/actions?query=workflow%3A%22Windows+Build+and+Test%22+branch%3Acore-8-branch) +
+9.0a2 +[![Build Status](https://github.com/tcltk/tcl/workflows/Linux%20Build%20and%20Test/badge.svg?branch=main)](https://github.com/tcltk/tcl/actions?query=workflow%3A%22Linux+Build+and+Test%22+branch%3Amain) +[![Build Status](https://github.com/tcltk/tcl/workflows/Windows%20Build%20and%20Test/badge.svg?branch=main)](https://github.com/tcltk/tcl/actions?query=workflow%3A%22Windows+Build+and+Test%22+branch%3Amain) ## Contents 1. [Introduction](#intro) -- cgit v0.12 From 20664f1fa1563c7ad9992f369427f1cd841faf6d Mon Sep 17 00:00:00 2001 From: dkf Date: Tue, 10 Nov 2020 09:26:10 +0000 Subject: Cleaning up the actions and trying to make them behave more usefully on Windows. --- .github/workflows/linux-build.yml | 11 ++++------- .github/workflows/win-build.yml | 7 ++++--- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/.github/workflows/linux-build.yml b/.github/workflows/linux-build.yml index db46cfd..8bb0141 100644 --- a/.github/workflows/linux-build.yml +++ b/.github/workflows/linux-build.yml @@ -3,35 +3,32 @@ on: [push] jobs: build: runs-on: ubuntu-latest + defaults: + run: + shell: bash + working-directory: unix steps: - name: Checkout uses: actions/checkout@v2 - name: Configure - working-directory: unix run: | mkdir "${HOME}/install dir" ./configure ${CFGOPT} "--prefix=$HOME/install dir" || (cat config.log && exit 1) - name: Build - working-directory: unix run: | make all - name: Build Test Harness - working-directory: unix run: | make tcltest - name: Run Tests - working-directory: unix run: | make test - name: Test-Drive Installation - working-directory: unix run: | make install - name: Create Distribution Package - working-directory: unix run: | make dist - name: Convert Documentation to HTML - working-directory: unix run: | make html-tcl diff --git a/.github/workflows/win-build.yml b/.github/workflows/win-build.yml index 652b34a..9c4b6f5 100644 --- a/.github/workflows/win-build.yml +++ b/.github/workflows/win-build.yml @@ -3,20 +3,21 @@ on: [push] jobs: build: runs-on: windows-latest + defaults: + run: + shell: bash + working-directory: win steps: - name: Checkout uses: actions/checkout@v2 - name: Init MSVC uses: ilammy/msvc-dev-cmd@v1 - name: Build - working-directory: win run: | nmake -f makefile.vc all - name: Build Test Harness - working-directory: win run: | nmake -f makefile.vc tcltest - name: Run Tests - working-directory: win run: | nmake -f makefile.vc test -- cgit v0.12 From a376924771b18a3181c6ec57dc631fc357c3fdfe Mon Sep 17 00:00:00 2001 From: culler Date: Tue, 10 Nov 2020 17:50:09 +0000 Subject: Set a default DESTDIR in macosx/GNUmakefile --- macosx/GNUmakefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/macosx/GNUmakefile b/macosx/GNUmakefile index cdeb099..9c8b0e2 100644 --- a/macosx/GNUmakefile +++ b/macosx/GNUmakefile @@ -13,7 +13,7 @@ #------------------------------------------------------------------------------------------------------- # customizable settings -DESTDIR ?= +DESTDIR ?= ${CURDIR}/../../build INSTALL_ROOT ?= ${DESTDIR} BUILD_DIR ?= ${CURDIR}/../../build -- cgit v0.12 From c41e7ffff57b8aea49698caa04d8bedee8f92143 Mon Sep 17 00:00:00 2001 From: culler Date: Tue, 10 Nov 2020 18:47:47 +0000 Subject: backout e56a9f214a --- macosx/GNUmakefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/macosx/GNUmakefile b/macosx/GNUmakefile index 3d88729..93fd843 100644 --- a/macosx/GNUmakefile +++ b/macosx/GNUmakefile @@ -13,7 +13,7 @@ #------------------------------------------------------------------------------------------------------- # customizable settings -DESTDIR ?= ${CURDIR}/../../build +DESTDIR ?= INSTALL_ROOT ?= ${DESTDIR} BUILD_DIR ?= ${CURDIR}/../../build -- cgit v0.12 From 8e61a58c14167041d08246a34671480c02e8427e Mon Sep 17 00:00:00 2001 From: "jan.nijtmans" Date: Fri, 13 Nov 2020 16:55:36 +0000 Subject: Backport [fc1e203728]: backout e56a9f214a. If it was wrong in core-8-branch, it's wrong here too. --- macosx/GNUmakefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/macosx/GNUmakefile b/macosx/GNUmakefile index 9c8b0e2..cdeb099 100644 --- a/macosx/GNUmakefile +++ b/macosx/GNUmakefile @@ -13,7 +13,7 @@ #------------------------------------------------------------------------------------------------------- # customizable settings -DESTDIR ?= ${CURDIR}/../../build +DESTDIR ?= INSTALL_ROOT ?= ${DESTDIR} BUILD_DIR ?= ${CURDIR}/../../build -- cgit v0.12 From a22953bb77fe0c1b7c1ecaa9397dfc12cf5d0a54 Mon Sep 17 00:00:00 2001 From: dkf Date: Sat, 14 Nov 2020 09:31:49 +0000 Subject: Back to powershell --- .github/workflows/win-build.yml | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/.github/workflows/win-build.yml b/.github/workflows/win-build.yml index 9c4b6f5..f7d4ef1 100644 --- a/.github/workflows/win-build.yml +++ b/.github/workflows/win-build.yml @@ -5,8 +5,9 @@ jobs: runs-on: windows-latest defaults: run: - shell: bash + shell: powershell working-directory: win + # Using powershell means we need to explicitly stop on failure steps: - name: Checkout uses: actions/checkout@v2 @@ -14,10 +15,19 @@ jobs: uses: ilammy/msvc-dev-cmd@v1 - name: Build run: | - nmake -f makefile.vc all + &nmake -f makefile.vc all + if ($lastexitcode -ne 0) { + throw "nmake exit code: $lastexitcode" + } - name: Build Test Harness run: | - nmake -f makefile.vc tcltest + &nmake -f makefile.vc tcltest + if ($lastexitcode -ne 0) { + throw "nmake exit code: $lastexitcode" + } - name: Run Tests run: | - nmake -f makefile.vc test + &nmake -f makefile.vc test + if ($lastexitcode -ne 0) { + throw "nmake exit code: $lastexitcode" + } -- cgit v0.12 From b3e4fc2a04cb66d7fb0e7e2acd6c078f7489364b Mon Sep 17 00:00:00 2001 From: dkf Date: Sat, 14 Nov 2020 12:25:38 +0000 Subject: Fixed some tests, added trial macOS build --- .github/workflows/mac-build.yml | 55 +++++++++++++++++++++++++++++++++++++++++ tests/async.test | 4 +-- tests/chanio.test | 7 +++--- tests/exec.test | 7 ++++-- tests/fileSystem.test | 6 +++-- tests/format.test | 14 +++++++---- tests/io.test | 11 ++++++--- tests/socket.test | 4 ++- tests/winFCmd.test | 14 ++++++----- tests/winTime.test | 6 +++-- 10 files changed, 101 insertions(+), 27 deletions(-) create mode 100644 .github/workflows/mac-build.yml diff --git a/.github/workflows/mac-build.yml b/.github/workflows/mac-build.yml new file mode 100644 index 0000000..bd45c89 --- /dev/null +++ b/.github/workflows/mac-build.yml @@ -0,0 +1,55 @@ +name: macOS Build and Test +on: [push] +jobs: + with-Xcode: + runs-on: macos-latest + defaults: + run: + shell: bash + working-directory: macosx + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Prepare + run: touch tclStubInit.c tclOOStubInit.c + working-directory: generic + - name: Build + run: make all + - name: Run Tests + run: make test styles=develop + env: + ERROR_ON_FAILURES: 1 + MAC_CI: 1 + Unix-like: + runs-on: macos-latest + strategy: + matrix: + config_options: [ "--enable-dtrace", "--enable-debug=mem" ] + defaults: + run: + shell: bash + working-directory: unix + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Prepare + run: | + touch tclStubInit.c tclOOStubInit.c + mkdir "$HOME/install dir" + working-directory: generic + - name: Configure + run: ./configure ${CFGOPT} "--prefix=$HOME/install dir" || (cat config.log && exit 1) + env: + CFGOPT: ${{ matrix.config_options }} + - name: Build + run: | + make all tcltest + - name: Run Tests + run: | + make test + env: + ERROR_ON_FAILURES: 1 + MAC_CI: 1 + - name: Trial Installation + run: | + make install diff --git a/tests/async.test b/tests/async.test index 1aef907..86527bf 100644 --- a/tests/async.test +++ b/tests/async.test @@ -21,7 +21,7 @@ catch [list package require -exact Tcltest [info patchlevel]] testConstraint testasync [llength [info commands testasync]] testConstraint threaded [::tcl::pkgconfig get threaded] -testConstraint knownMsvcBug [expr {![info exists ::env(TRAVIS_OS_NAME)] || ![string match windows $::env(TRAVIS_OS_NAME)]}] +testConstraint notWinCI [expr {$::tcl_platform(platform) != "windows" || ![info exists ::env(CI)]}] proc async1 {result code} { global aresult acode @@ -204,7 +204,7 @@ test async-4.2 {async interrupting straight bytecode sequence} -constraints { testasync delete $hm } test async-4.3 {async interrupting loop-less bytecode sequence} -constraints { - testasync threaded knownMsvcBug + testasync threaded notWinCI } -setup { set hm [testasync create async3] } -body { diff --git a/tests/chanio.test b/tests/chanio.test index 58116ba..1f9e19b 100644 --- a/tests/chanio.test +++ b/tests/chanio.test @@ -42,7 +42,8 @@ namespace eval ::tcl::test::io { testConstraint testchannelevent [llength [info commands testchannelevent]] testConstraint testmainthread [llength [info commands testmainthread]] testConstraint testservicemode [llength [info commands testservicemode]] - testConstraint knownMsvcBug [expr {![info exists ::env(TRAVIS_OS_NAME)] || ![string match windows $::env(TRAVIS_OS_NAME)]}] + testConstraint notWinCI [expr { + $::tcl_platform(platform) ne "windows" || ![info exists ::env(CI)]}] testConstraint notOSX [expr {$::tcl_platform(os) ne "Darwin"}] # You need a *very* special environment to do some tests. In particular, @@ -1881,7 +1882,7 @@ test chan-io-20.3 {Tcl_CreateChannel: initial settings} -constraints {unix} -bod } -result {{{} {}} {auto lf}} test chan-io-20.5 {Tcl_CreateChannel: install channel in empty slot} -setup { set path(stdout) [makeFile {} stdout] -} -constraints {stdio knownMsvcBug} -body { +} -constraints {stdio notWinCI} -body { set f [open $path(script) w] chan puts -nonewline $f { chan close stdout @@ -2791,7 +2792,7 @@ test chan-io-29.34 {Tcl_Chan Close, async flush on chan close, using sockets} -s chan puts $s $l } } -} -constraints {socket tempNotMac fileevent knownMsvcBug} -body { +} -constraints {socket tempNotMac fileevent notWinCI} -body { proc accept {s a p} { variable x chan event $s readable [namespace code [list readit $s]] diff --git a/tests/exec.test b/tests/exec.test index b07099b..af7aae5 100644 --- a/tests/exec.test +++ b/tests/exec.test @@ -24,7 +24,8 @@ package require tcltests # All tests require the "exec" command. # Skip them if exec is not defined. testConstraint exec [llength [info commands exec]] -testConstraint noosx [expr {![info exists ::env(TRAVIS_OSX_IMAGE)] || ![string match xcode* $::env(TRAVIS_OSX_IMAGE)]}] +# Some skips when running in a macOS CI environment +testConstraint noosxCI [expr {![info exists ::env(MAC_CI)]}] unset -nocomplain path @@ -671,7 +672,9 @@ test exec-18.2 {exec cat deals with weird file names} -body { # Note that this test cannot be adapted to work on Windows; that platform has # no kernel support for an analog of O_APPEND. OTOH, that means we can assume # that there is a POSIX shell... -test exec-19.1 {exec >> uses O_APPEND} -constraints {exec unix notValgrind noosx} -setup { +# +# This test also fails in some cases when building with macOS +test exec-19.1 {exec >> uses O_APPEND} -constraints {exec unix notValgrind noosxCI} -setup { set tmpfile [makeFile {0} tmpfile.exec-19.1] } -body { # Note that we have to allow for the current contents of the temporary diff --git a/tests/fileSystem.test b/tests/fileSystem.test index c1deb1b..0d7b183 100644 --- a/tests/fileSystem.test +++ b/tests/fileSystem.test @@ -38,7 +38,9 @@ catch { testConstraint testfilesystem [llength [info commands ::testfilesystem]] testConstraint testsetplatform [llength [info commands ::testsetplatform]] testConstraint testsimplefilesystem [llength [info commands ::testsimplefilesystem]] -testConstraint knownMsvcBug [expr {![info exists ::env(TRAVIS_OS_NAME)] || ![string match windows $::env(TRAVIS_OS_NAME)]}] +# Some things fail under all Continuous Integration systems for subtle reasons +# such as CI often running with elevated privileges in a container. +testConstraint notInCIenv [expr {![info exists ::env(CI)]}] cd [tcltest::temporaryDirectory] makeFile "test file" gorp.file @@ -317,7 +319,7 @@ test filesystem-1.37 {file normalisation with '/./'} -body { } -match regexp -result {^(?:[^/]|/(?:[^/]|$))+$} test filesystem-1.38 {file normalisation with volume relative} -setup { set dir [pwd] -} -constraints {win moreThanOneDrive knownMsvcBug} -body { +} -constraints {win moreThanOneDrive notInCIenv} -body { set path "[string range [lindex $drives 0] 0 1]foo" cd [lindex $drives 1] file norm $path diff --git a/tests/format.test b/tests/format.test index ea0e929..11cb4b7 100644 --- a/tests/format.test +++ b/tests/format.test @@ -18,10 +18,14 @@ if {"::tcltest" ni [namespace children]} { # %u output depends on word length, so this test is not portable. testConstraint longIs32bit [expr {int(0x80000000) < 0}] testConstraint longIs64bit [expr {int(0x8000000000000000) < 0}] -testConstraint wideIs64bit \ - [expr {(wide(0x80000000) > 0) && (wide(0x8000000000000000) < 0)}] +testConstraint wideIs64bit [expr { + (wide(0x80000000) > 0) && (wide(0x8000000000000000) < 0)}] testConstraint wideBiggerThanInt [expr {wide(0x80000000) != int(0x80000000)}] -testConstraint knownMsvcBug [expr {![info exists ::env(TRAVIS_OS_NAME)] || ![string match windows $::env(TRAVIS_OS_NAME)]}] +# MSVC uses a broken libc that gets sprintf("%g") wrong. This is a pain +# particularly in Continuous Integration, and there isn't anything much we can +# do about it. +testConstraint notWinCI [expr { + ($::tcl_platform(platform) ne "windows") || ![info exists ::env(CI)]}] test format-1.1 {integer formatting} { format "%*d %d %d %d" 6 34 16923 -12 -1 @@ -274,13 +278,13 @@ test format-6.1 {floating-point zeroes} {eformat} { test format-6.2 {floating-point zeroes} {eformat} { format "%.4e %.4f %.4g" 0.0 0.0 0.0 0.0 } {0.0000e+00 0.0000 0} -test format-6.3 {floating-point zeroes} {eformat knownMsvcBug} { +test format-6.3 {floating-point zeroes} {eformat notWinCI} { format "%#.4e %#.4f %#.4g" 0.0 0.0 0.0 0.0 } {0.0000e+00 0.0000 0.000} test format-6.4 {floating-point zeroes} {eformat} { format "%.0e %.0f %.0g" 0.0 0.0 0.0 0.0 } {0e+00 0 0} -test format-6.5 {floating-point zeroes} {eformat knownMsvcBug} { +test format-6.5 {floating-point zeroes} {eformat notWinCI} { format "%#.0e %#.0f %#.0g" 0.0 0.0 0.0 0.0 } {0.e+00 0. 0.} test format-6.6 {floating-point zeroes} { diff --git a/tests/io.test b/tests/io.test index baf9b1c..e45b5ef 100644 --- a/tests/io.test +++ b/tests/io.test @@ -43,7 +43,10 @@ testConstraint testchannelevent [llength [info commands testchannelevent]] testConstraint testmainthread [llength [info commands testmainthread]] testConstraint testobj [llength [info commands testobj]] testConstraint testservicemode [llength [info commands testservicemode]] -testConstraint knownMsvcBug [expr {![info exists ::env(TRAVIS_OS_NAME)] || ![string match windows $::env(TRAVIS_OS_NAME)]}] +# Some things fail under Windows in Continuous Integration systems for subtle +# reasons such as CI often running with elevated privileges in a container. +testConstraint notWinCI [expr { + $::tcl_platform(platform) ne "windows" || ![info exists ::env(CI)]}] testConstraint notOSX [expr {$::tcl_platform(os) ne "Darwin"}] # You need a *very* special environment to do some tests. In @@ -2230,7 +2233,7 @@ test io-27.5 {FlushChannel, implicit flush when buffer fills and on close} \ set path(pipe) [makeFile {} pipe] set path(output) [makeFile {} output] test io-27.6 {FlushChannel, async flushing, async close} \ - {stdio asyncPipeClose knownMsvcBug} { + {stdio asyncPipeClose notWinCI} { # This test may fail on old Unix systems (seen on IRIX64 6.5) with # obsolete gettimeofday() calls. See Tcl Bugs 3530533, 1942197. file delete $path(pipe) @@ -2834,7 +2837,7 @@ test io-29.31 {Tcl_WriteChars, background flush} stdio { set result } ok test io-29.32 {Tcl_WriteChars, background flush to slow reader} \ - {stdio asyncPipeClose knownMsvcBug} { + {stdio asyncPipeClose notWinCI} { # This test may fail on old Unix systems (seen on IRIX64 6.5) with # obsolete gettimeofday() calls. See Tcl Bugs 3530533, 1942197. file delete $path(pipe) @@ -8068,7 +8071,7 @@ test io-53.17 {[7c187a3773] MBWrite: proper inQueueTail handling} -setup { removeFile out } -result {line 100 line} -test io-54.1 {Recursive channel events} {socket fileevent knownMsvcBug} { +test io-54.1 {Recursive channel events} {socket fileevent notWinCI} { # This test checks to see if file events are delivered during recursive # event loops when there is buffered data on the channel. diff --git a/tests/socket.test b/tests/socket.test index 2060f35..d5f9c94 100644 --- a/tests/socket.test +++ b/tests/socket.test @@ -67,7 +67,9 @@ if {"::tcltest" ni [namespace children]} { ::tcltest::loadTestedCommands -if {[info exists ::env(TRAVIS_OSX_IMAGE)] && [string match xcode* $::env(TRAVIS_OSX_IMAGE)]} { +# A bad interaction between socket creation, macOS, and unattended CI +# environments make this whole file impractical to run; too many weird hangs. +if {[info exists ::env(MAC_CI)]} { return } diff --git a/tests/winFCmd.test b/tests/winFCmd.test index 7c81e81..04c4fd9 100644 --- a/tests/winFCmd.test +++ b/tests/winFCmd.test @@ -29,7 +29,9 @@ testConstraint testchmod [llength [info commands testchmod]] testConstraint cdrom 0 testConstraint exdev 0 testConstraint longFileNames 0 -testConstraint knownMsvcBug [expr {![info exists ::env(TRAVIS_OS_NAME)] || ![string match windows $::env(TRAVIS_OS_NAME)]}] +# Some things fail under all Continuous Integration systems for subtle reasons +# such as CI often running with elevated privileges in a container. +testConstraint notInCIenv [expr {![info exists ::env(CI)]}] proc createfile {file {string a}} { set f [open $file w] @@ -411,7 +413,7 @@ proc MakeFiles {dirname} { test winFCmd-1.38 {TclpRenameFile: check rename of conflicting inodes} -setup { cleanup -} -constraints {win winNonZeroInodes knownMsvcBug} -body { +} -constraints {win winNonZeroInodes notInCIenv} -body { file mkdir td1 foreach {a b} [MakeFiles td1] break file rename -force $a $b @@ -661,7 +663,7 @@ test winFCmd-5.1 {TclpCopyDirectory: calls TraverseWinTree} -setup { test winFCmd-6.1 {TclpRemoveDirectory: errno: EACCES} -setup { cleanup -} -constraints {winVista testfile testchmod knownMsvcBug} -body { +} -constraints {winVista testfile testchmod notInCIenv} -body { file mkdir td1 testchmod 0 td1 testfile rmdir td1 @@ -715,7 +717,7 @@ test winFCmd-6.8 {TclpRemoveDirectory: RemoveDirectory fails} -setup { } -result {1 {tf1 ENOTDIR}} test winFCmd-6.9 {TclpRemoveDirectory: errno == EACCES} -setup { cleanup -} -constraints {winVista testfile testchmod knownMsvcBug} -body { +} -constraints {winVista testfile testchmod notInCIenv} -body { file mkdir td1 testchmod 0 td1 testfile rmdir td1 @@ -733,7 +735,7 @@ test winFCmd-6.11 {TclpRemoveDirectory: attr == -1} -setup { } -returnCodes error -match regexp -result {^/ E(ACCES|EXIST)$} test winFCmd-6.13 {TclpRemoveDirectory: write-protected} -setup { cleanup -} -constraints {winVista testfile testchmod knownMsvcBug} -body { +} -constraints {winVista testfile testchmod notInCIenv} -body { file mkdir td1 testchmod 0 td1 testfile rmdir td1 @@ -962,7 +964,7 @@ test winFCmd-9.1 {TraversalDelete: DOTREE_F} -setup { } -result {} test winFCmd-9.3 {TraversalDelete: DOTREE_PRED} -setup { cleanup -} -constraints {winVista testfile testchmod knownMsvcBug} -body { +} -constraints {winVista testfile testchmod notInCIenv} -body { file mkdir td1/td2 testchmod 0 td1 testfile rmdir -force td1 diff --git a/tests/winTime.test b/tests/winTime.test index 19e4c58..68be966 100644 --- a/tests/winTime.test +++ b/tests/winTime.test @@ -19,7 +19,9 @@ if {"::tcltest" ni [namespace children]} { catch [list package require -exact Tcltest [info patchlevel]] testConstraint testwinclock [llength [info commands testwinclock]] -testConstraint knownMsvcBug [expr {![info exists ::env(TRAVIS_OS_NAME)] || ![string match windows $::env(TRAVIS_OS_NAME)]}] +# Some things fail under all Continuous Integration systems for subtle reasons +# such as CI often running with elevated privileges in a container. +testConstraint notInCIenv [expr {![info exists ::env(CI)]}] # The next two tests will crash on Windows if the check for negative # clock values is not done properly. @@ -41,7 +43,7 @@ test winTime-1.2 {TclpGetDate} {win} { # with the Windows clock. 30 sec really isn't enough, # but how much time does a tester have patience for? -test winTime-2.1 {Synchronization of Tcl and Windows clocks} {testwinclock knownMsvcBug} { +test winTime-2.1 {Synchronization of Tcl and Windows clocks} {testwinclock notInCIenv} { # May fail due to OS/hardware discrepancies. See: # http://support.microsoft.com/default.aspx?scid=kb;en-us;274323 set failed {} -- cgit v0.12 From 346721f3f06a873a372934d4764eb2533aaca105 Mon Sep 17 00:00:00 2001 From: dkf Date: Sun, 15 Nov 2020 08:35:49 +0000 Subject: Fix minor errors --- .github/workflows/linux-build.yml | 3 +++ .github/workflows/win-build.yml | 6 +++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/.github/workflows/linux-build.yml b/.github/workflows/linux-build.yml index 8bb0141..04420dd 100644 --- a/.github/workflows/linux-build.yml +++ b/.github/workflows/linux-build.yml @@ -14,6 +14,9 @@ jobs: run: | mkdir "${HOME}/install dir" ./configure ${CFGOPT} "--prefix=$HOME/install dir" || (cat config.log && exit 1) + - name: Prepare + run: touch tclStubInit.c tclOOStubInit.c + working-directory: generic - name: Build run: | make all diff --git a/.github/workflows/win-build.yml b/.github/workflows/win-build.yml index f7d4ef1..809003b 100644 --- a/.github/workflows/win-build.yml +++ b/.github/workflows/win-build.yml @@ -17,17 +17,17 @@ jobs: run: | &nmake -f makefile.vc all if ($lastexitcode -ne 0) { - throw "nmake exit code: $lastexitcode" + throw "nmake exit code: $lastexitcode" } - name: Build Test Harness run: | &nmake -f makefile.vc tcltest if ($lastexitcode -ne 0) { - throw "nmake exit code: $lastexitcode" + throw "nmake exit code: $lastexitcode" } - name: Run Tests run: | &nmake -f makefile.vc test if ($lastexitcode -ne 0) { - throw "nmake exit code: $lastexitcode" + throw "nmake exit code: $lastexitcode" } -- cgit v0.12 From 3ef704b39c1f9ec4caf502f42325803d2e380f3a Mon Sep 17 00:00:00 2001 From: dkf Date: Sun, 15 Nov 2020 08:38:14 +0000 Subject: Updated README --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 25367ce..fd4ef2a 100644 --- a/README.md +++ b/README.md @@ -8,14 +8,17 @@ site](https://sourceforge.net/projects/tcl/files/Tcl/). 8.6.10 [![Build Status](https://github.com/tcltk/tcl/workflows/Linux%20Build%20and%20Test/badge.svg?branch=core-8-6-branch)](https://github.com/tcltk/tcl/actions?query=workflow%3A%22Linux+Build+and+Test%22+branch%3Acore-8-6-branch) [![Build Status](https://github.com/tcltk/tcl/workflows/Windows%20Build%20and%20Test/badge.svg?branch=core-8-6-branch)](https://github.com/tcltk/tcl/actions?query=workflow%3A%22Windows+Build+and+Test%22+branch%3Acore-8-6-branch) +[![Build Status](https://github.com/tcltk/tcl/workflows/macOS%20Build%20and%20Test/badge.svg?branch=core-8-6-branch)](https://github.com/tcltk/tcl/actions?query=workflow%3A%22macOS+Build+and+Test%22+branch%3Acore-8-6-branch)
8.7a4 [![Build Status](https://github.com/tcltk/tcl/workflows/Linux%20Build%20and%20Test/badge.svg?branch=core-8-branch)](https://github.com/tcltk/tcl/actions?query=workflow%3A%22Linux+Build+and+Test%22+branch%3Acore-8-branch) [![Build Status](https://github.com/tcltk/tcl/workflows/Windows%20Build%20and%20Test/badge.svg?branch=core-8-branch)](https://github.com/tcltk/tcl/actions?query=workflow%3A%22Windows+Build+and+Test%22+branch%3Acore-8-branch) +[![Build Status](https://github.com/tcltk/tcl/workflows/macOS%20Build%20and%20Test/badge.svg?branch=core-8-branch)](https://github.com/tcltk/tcl/actions?query=workflow%3A%22macOS+Build+and+Test%22+branch%3Acore-8-branch)
9.0a2 [![Build Status](https://github.com/tcltk/tcl/workflows/Linux%20Build%20and%20Test/badge.svg?branch=main)](https://github.com/tcltk/tcl/actions?query=workflow%3A%22Linux+Build+and+Test%22+branch%3Amain) [![Build Status](https://github.com/tcltk/tcl/workflows/Windows%20Build%20and%20Test/badge.svg?branch=main)](https://github.com/tcltk/tcl/actions?query=workflow%3A%22Windows+Build+and+Test%22+branch%3Amain) +[![Build Status](https://github.com/tcltk/tcl/workflows/macOS%20Build%20and%20Test/badge.svg?branch=main)](https://github.com/tcltk/tcl/actions?query=workflow%3A%22macOS+Build+and+Test%22+branch%3Amain) ## Contents 1. [Introduction](#intro) -- cgit v0.12 From 807ed7b13c7dc61b771929a4abbcaa6818c8fae6 Mon Sep 17 00:00:00 2001 From: dkf Date: Sun, 15 Nov 2020 09:17:41 +0000 Subject: Added MSYS/gcc build for Windows, renamed Linux build step --- .github/workflows/linux-build.yml | 2 +- .github/workflows/win-build.yml | 37 ++++++++++++++++++++++++++++++++++++- 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/.github/workflows/linux-build.yml b/.github/workflows/linux-build.yml index 04420dd..a2b2a64 100644 --- a/.github/workflows/linux-build.yml +++ b/.github/workflows/linux-build.yml @@ -1,7 +1,7 @@ name: Linux Build and Test on: [push] jobs: - build: + gcc: runs-on: ubuntu-latest defaults: run: diff --git a/.github/workflows/win-build.yml b/.github/workflows/win-build.yml index 809003b..22d40be 100644 --- a/.github/workflows/win-build.yml +++ b/.github/workflows/win-build.yml @@ -1,7 +1,7 @@ name: Windows Build and Test on: [push] jobs: - build: + MSVC: runs-on: windows-latest defaults: run: @@ -31,3 +31,38 @@ jobs: if ($lastexitcode -ne 0) { throw "nmake exit code: $lastexitcode" } + env: + ERROR_ON_FAILURES: 1 + MSYS-gcc: + runs-on: windows-latest + defaults: + run: + shell: bash + working-directory: win + strategy: + matrix: + config_options: [ "--disable-debug", "--enable-debug=mem" ] + # Using powershell means we need to explicitly stop on failure + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Install MSYS2 and Make + run: choco install msys2 make + - name: Prepare + run: | + touch tclStubInit.c tclOOStubInit.c + mkdir "${HOME}/install dir" + working-directory: generic + - name: Configure + run: | + ./configure ${CFGOPT} "--prefix=$HOME/install dir" || (cat config.log && exit 1) + env: + CFGOPT: --enable-64bit ${{ matrix.config_options }} + - name: Build + run: make all + - name: Build Test Harness + run: make tcltest + - name: Run Tests + run: make test + env: + ERROR_ON_FAILURES: 1 -- cgit v0.12 From eff08da703a7f85e7c2c34ee624d0b6ae0cea947 Mon Sep 17 00:00:00 2001 From: dkf Date: Sun, 15 Nov 2020 15:48:43 +0000 Subject: Rethinking how to do a build matrix on several platforms --- .github/workflows/linux-build.yml | 10 +++++++++- .github/workflows/mac-build.yml | 14 ++++++++++---- .github/workflows/win-build.yml | 9 ++++++--- 3 files changed, 25 insertions(+), 8 deletions(-) diff --git a/.github/workflows/linux-build.yml b/.github/workflows/linux-build.yml index a2b2a64..a4fd7b3 100644 --- a/.github/workflows/linux-build.yml +++ b/.github/workflows/linux-build.yml @@ -3,6 +3,12 @@ on: [push] jobs: gcc: runs-on: ubuntu-latest + strategy: + matrix: + symbols: + - "no" + - "mem" + - "all" defaults: run: shell: bash @@ -10,10 +16,12 @@ jobs: steps: - name: Checkout uses: actions/checkout@v2 - - name: Configure + - name: Configure (symbols=${{ matrix.symbols }}) run: | mkdir "${HOME}/install dir" ./configure ${CFGOPT} "--prefix=$HOME/install dir" || (cat config.log && exit 1) + env: + CFGOPT: --enable-symbols=${{ matrix.symbols }} - name: Prepare run: touch tclStubInit.c tclOOStubInit.c working-directory: generic diff --git a/.github/workflows/mac-build.yml b/.github/workflows/mac-build.yml index bd45c89..c78f882 100644 --- a/.github/workflows/mac-build.yml +++ b/.github/workflows/mac-build.yml @@ -24,7 +24,12 @@ jobs: runs-on: macos-latest strategy: matrix: - config_options: [ "--enable-dtrace", "--enable-debug=mem" ] + symbols: + - "no" + - "mem" + dtrace: + - "no" + - "yes" defaults: run: shell: bash @@ -37,10 +42,11 @@ jobs: touch tclStubInit.c tclOOStubInit.c mkdir "$HOME/install dir" working-directory: generic - - name: Configure - run: ./configure ${CFGOPT} "--prefix=$HOME/install dir" || (cat config.log && exit 1) + - name: Configure (symbols=${{ matrix.symbols }} dtrace=${{ matrix.dtrace }}) + # Note that macOS is always a 64 bit platform + run: ./configure --enable-64bit ${CFGOPT} "--prefix=$HOME/install dir" || (cat config.log && exit 1) env: - CFGOPT: ${{ matrix.config_options }} + CFGOPT: --enable-symbols=${{ matrix.symbols }} --enable-dtrace=${{ matrix.dtrace }} - name: Build run: | make all tcltest diff --git a/.github/workflows/win-build.yml b/.github/workflows/win-build.yml index 22d40be..e938609 100644 --- a/.github/workflows/win-build.yml +++ b/.github/workflows/win-build.yml @@ -41,7 +41,10 @@ jobs: working-directory: win strategy: matrix: - config_options: [ "--disable-debug", "--enable-debug=mem" ] + symbols: + - "no" + - "mem" + - "all" # Using powershell means we need to explicitly stop on failure steps: - name: Checkout @@ -53,11 +56,11 @@ jobs: touch tclStubInit.c tclOOStubInit.c mkdir "${HOME}/install dir" working-directory: generic - - name: Configure + - name: Configure (symbols=${{ matrix.symbols }}) run: | ./configure ${CFGOPT} "--prefix=$HOME/install dir" || (cat config.log && exit 1) env: - CFGOPT: --enable-64bit ${{ matrix.config_options }} + CFGOPT: --enable-64bit --enable-symbols=${{ matrix.symbols }} - name: Build run: make all - name: Build Test Harness -- cgit v0.12 From ffa8d1d461a8bbc533e6f978478165c2be425a4e Mon Sep 17 00:00:00 2001 From: dkf Date: Mon, 16 Nov 2020 09:24:33 +0000 Subject: Disable test that fails in CI environments --- tests/fCmd.test | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tests/fCmd.test b/tests/fCmd.test index bb8fb4a..09f91f7 100644 --- a/tests/fCmd.test +++ b/tests/fCmd.test @@ -80,6 +80,7 @@ testConstraint darwin9 [expr { && [package vsatisfies 1.$::tcl_platform(osVersion) 1.9] }] testConstraint notDarwin9 [expr {![testConstraint darwin9]}] +testConstraint notContinuousIntegration [expr {![info exists ::env(CI)]}] testConstraint fileSharing 0 testConstraint notFileSharing 1 @@ -2582,7 +2583,11 @@ test fCmd-30.2 {file readable on 'NTUSER.DAT'} -constraints {win} -body { && [file exists $env(USERPROFILE)/NTUSER.DAT] && [file readable $env(USERPROFILE)/NTUSER.DAT]} } -result {1} -test fCmd-30.3 {file readable on 'pagefile.sys'} -constraints {win} -body { +# At least one CI environment (GitHub Actions) is set up with the page file in +# an unusual location; skip the test if that is so. +test fCmd-30.3 {file readable on 'pagefile.sys'} -constraints { + win notContinuousIntegration +} -body { set r {} if {[info exists env(SystemDrive)]} { set path $env(SystemDrive)/pagefile.sys -- cgit v0.12