Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package tcl for openSUSE:Factory checked in at 2026-09-04 12:35:44 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/tcl (Old) and /work/SRC/openSUSE:Factory/.tcl.new.1265 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "tcl" Fri Sep 4 12:35:44 2026 rev:75 rq:1375403 version:8.6.18 Changes: -------- --- /work/SRC/openSUSE:Factory/tcl/tcl.changes 2026-06-08 14:05:47.172462457 +0200 +++ /work/SRC/openSUSE:Factory/.tcl.new.1265/tcl.changes 2026-09-04 12:35:45.637787423 +0200 @@ -1,0 +2,27 @@ +Wed Aug 26 12:28:00 UTC 2026 - Martin Pluskal <[email protected]> + +- Split the test suite into a multibuild "test" flavour: the main + build no longer runs it (%check measured 326s of a 471s build on + aarch64) and no longer pulls in the timezone build dependency; + the test flavour builds only a src.rpm +- Do not build the test flavour in the Factory rings and staging, + which set %_with_ringdisabled +- Modernise the spec: drop the obsolete BuildRoot, Group, defattr + and PreReq tags, brace all macros, use %autosetup and %make_build +- Point URL, Source0 and the description at tcl-lang.org; the + tcl.tk domain no longer resolves at all +- Run the full test suite: drop the 31-entry known-failures + whitelist, every id of which passes again (47159 tests, 43939 + passed, 3220 skipped, 0 failed on aarch64); only the riscv64 and + qemu-only entries are kept +- Fail the build on a crashed or aborted test run, which previously + passed silently: the pipeline reported tee's exit status, and + tests/all.tcl returns 0 even on failures unless ERROR_ON_FAILURES + is set +- Drop the dead s390 test guard; only s390x still exists +- Drop the ppc64 tcl-64bit and tcl-devel-64bit Obsoletes, added in + 2009 for the SLE10-era biarch packages +- Drop the %post scriptlet removing a /usr/lib/tcl8.6 compat symlink + from the pre-2005 layout; no tcl 8.6 package has ever created it + +------------------------------------------------------------------- New: ---- _multibuild ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ tcl.spec ++++++ --- /var/tmp/diff_new_pack.qCnnUr/_old 2026-09-04 12:35:47.127839738 +0200 +++ /var/tmp/diff_new_pack.qCnnUr/_new 2026-09-04 12:35:47.129839808 +0200 @@ -16,44 +16,56 @@ # +%global flavor @BUILD_FLAVOR@%{nil} +%if "%{flavor}" == "test" +%define psuffix -test +%bcond_without test +%global debug_package %{nil} +%else +%define psuffix %{nil} +%bcond_with test +%endif +%define origname tcl + %if 0%{!?_rpmmacrodir:1} %define _rpmmacrodir %{_rpmconfigdir}/macros.d %endif - -Name: tcl -URL: http://www.tcl.tk -Version: 8.6.18 -Release: 0 %define rrc %{nil} -%define TCL_MINOR %(echo %version | cut -c1-3) +%define TCL_MINOR %(echo %{version} | cut -c1-3) %define itclver 4.3.7 -BuildRoot: %{_tmppath}/%{name}-%{version}-build +%define scriptdir %{_libdir}/tcl +Name: %{origname}%{psuffix} +Version: 8.6.18 +Release: 0 Summary: The Tcl Programming Language License: TCL -Group: Development/Languages/Tcl -Provides: itcl = %itclver -Provides: tclsh -Provides: tclsh%{TCL_MINOR} -Obsoletes: itcl < %itclver -# Require the extension from the SQLite package instead of shipping -# the embedded copy, which might be outdated. -Requires: sqlite3-tcl -# bug437293 -%ifarch ppc64 -Obsoletes: tcl-64bit -%endif -# -PreReq: /bin/rm -Source0: http://prdownloads.sourceforge.net/tcl/%{name}%{version}%{rrc}-src.tar.gz +URL: https://www.tcl-lang.org +Source0: https://prdownloads.sourceforge.net/tcl/%{origname}%{version}%{rrc}-src.tar.gz Source1: tcl-rpmlintrc Source2: baselibs.conf Source3: macros.tcl Patch0: tcl-fix-socket-13.1.patch BuildRequires: autoconf -BuildRequires: pkg-config +BuildRequires: pkgconfig BuildRequires: zlib-devel -# Required for test suite: +%if %{with test} +# Required for the test suite only. BuildRequires: timezone +%endif +%if %{without test} +# Require the extension from the SQLite package instead of shipping +# the embedded copy, which might be outdated. +Requires: sqlite3-tcl +Provides: itcl = %{itclver} +Provides: tclsh +Provides: tclsh%{TCL_MINOR} +Obsoletes: itcl < %{itclver} +%endif +# The rings and staging build every flavour unless told otherwise; the test +# suite has no business in the bootstrap ring. +%if %{with test} && 0%{?_with_ringdisabled} +ExclusiveArch: do_not_build +%endif %description Tcl (Tool Command Language) is a very powerful but easy to learn @@ -63,20 +75,15 @@ mature yet evolving language that is truly cross platform, easily deployed and highly extensible. -For more information on Tcl see http://www.tcl.tk and -http://wiki.tcl.tk . +For more information on Tcl see https://www.tcl-lang.org and +https://wiki.tcl-lang.org . +%if %{without test} %package devel Summary: Header Files and C API Documentation for Tcl -Group: Development/Libraries/Tcl -Requires: tcl = %version -# bug437293 -%ifarch ppc64 -Obsoletes: tcl-devel-64bit -%endif -Obsoletes: itcl-devel < %itclver -Provides: itcl-devel = %itclver -# +Requires: tcl = %{version} +Provides: itcl-devel = %{itclver} +Obsoletes: itcl-devel < %{itclver} %description devel This package contains header files and documentation needed for writing @@ -85,11 +92,11 @@ This package is not needed for writing extensions or applications in the Tcl language itself. +%endif %prep -%setup -q -n %name%version -%patch -P 0 -if ! test -d pkgs/itcl%itclver; then +%autosetup -p0 -n %{origname}%{version} +if ! test -d pkgs/itcl%{itclver}; then : New itcl version: pkgs/itcl* . Please update the %%itclver macro acordingly. exit 1 fi @@ -100,57 +107,26 @@ %build %global _lto_cflags %{_lto_cflags} -ffat-lto-objects -%define scriptdir %_libdir/tcl -export TCL_PACKAGE_PATH="%scriptdir:%_datadir/tcl" -export TCL_LIBRARY="%scriptdir/tcl%TCL_MINOR" +export TCL_PACKAGE_PATH="%{scriptdir}:%{_datadir}/tcl" +export TCL_LIBRARY="%{scriptdir}/tcl%{TCL_MINOR}" cd unix autoconf %configure \ --enable-man-symlinks \ --enable-man-compression=gzip \ --without-tzdata -make %{?_smp_mflags} \ - PACKAGE_DIR="%scriptdir" +%make_build \ + PACKAGE_DIR="%{scriptdir}" %check +%if %{with test} cd unix -# Some of the regressioin tests write to $HOME, so better redirect them +# Some of the regression tests write to $HOME, so better redirect them mkdir home export HOME=$PWD/home -# Run the testsuite to gather some data for the profile-based -# optimisation and let rpmbuild fail on unexpected test failures. +# Only arch-specific known failures are left; the 31 ids that used to be +# listed here all pass again on current Tcl and were dropped. cat > known-failures <<EOF -async-4.2 -async-4.3 -chan-17.4 -chan-io-53.9 -clock-33.5a -clock-33.8 -clock-33.8a -event-7.5 -event-11.4 -event-12.4 -exec-19.1 -http-3.25 -interp-34.9 -interp-34.13 -interp-36.7 -io-53.9 -msgcat-14.2 -socket_inet6-2.13 -timer-1.1 -timer-2.1 -timer-3.2 -timer-6.4 -timer-6.5 -thread-7.24 -thread-7.25 -thread-7.28 -thread-7.29 -thread-7.30 -thread-7.31 -thread-20.9 -thread-21.16 %ifarch riscv64 binary-40.3 %endif @@ -159,55 +135,64 @@ thread-16.2 %endif EOF -%ifnarch s390 s390x +%ifnarch s390x +# pipefail so that an aborted or crashed run fails the build: tests/all.tcl +# exits 0 even on failures unless ERROR_ON_FAILURES is set, and without +# pipefail the pipeline below would only ever report tee's status. +set -o pipefail make test 2>&1 | tee testresults -grep FAILED testresults | grep -Fvwf known-failures && exit 1 +# known-failures is empty on most arches, and `grep -Fvwf` on an empty +# pattern file exits 1 instead of passing every line through -- which would +# silently tolerate ALL failures. Filter only when there is something to filter. +if test -s known-failures; then + grep FAILED testresults | grep -Fvwf known-failures && exit 1 +else + grep FAILED testresults && exit 1 +fi +%endif %endif exit 0 %install +%if %{without test} make -C unix install install-private-headers \ - INSTALL_ROOT=%buildroot -rm -f %buildroot%scriptdir/tcl%TCL_MINOR/ldAix -ln -sf tclsh%TCL_MINOR %buildroot%_prefix/bin/tclsh -ln -sf tclsh.1.gz %buildroot%_mandir/man1/tclsh%TCL_MINOR.1.gz -mkdir -p %buildroot%_datadir/tcl -install -D %{S:3} -m 644 %buildroot%_rpmmacrodir/macros.tcl + INSTALL_ROOT=%{buildroot} +rm -f %{buildroot}%{scriptdir}/tcl%{TCL_MINOR}/ldAix +ln -sf tclsh%{TCL_MINOR} %{buildroot}%{_bindir}/tclsh +ln -sf tclsh.1.gz %{buildroot}%{_mandir}/man1/tclsh%{TCL_MINOR}.1.gz +mkdir -p %{buildroot}%{_datadir}/tcl +install -D -m 0644 %{SOURCE3} %{buildroot}%{_rpmmacrodir}/macros.tcl # The information in TCL_LIBS is not needed for shared libraries # and we don't support static linking. -sed -i "/^TCL_LIBS=/s/'.*'$//" %buildroot%_libdir/tclConfig.sh -sed -i "/^Libs.private: /s/ .*$//" %buildroot%_libdir/pkgconfig/tcl.pc - -%if "%_lib" == "lib64" -%post -test -L /usr/lib/tcl%TCL_MINOR && /bin/rm -f /usr/lib/tcl%TCL_MINOR -exit 0 +sed -i "/^TCL_LIBS=/s/'.*'$//" %{buildroot}%{_libdir}/tclConfig.sh +sed -i "/^Libs.private: /s/ .*$//" %{buildroot}%{_libdir}/pkgconfig/tcl.pc %endif +%if %{without test} %files -%defattr(-,root,root,755) %doc README.md changes license.terms ChangeLog* -%docdir %_mandir/mann -%doc %_mandir/man1/* -%doc %_mandir/mann/* -%_prefix/bin/* -%_libdir/lib*.so -%_datadir/tcl -%scriptdir -%exclude %scriptdir/*/*.a -%exclude %scriptdir/*/*Config.sh -%exclude %scriptdir/*/tclAppInit.c -%_rpmmacrodir/macros.tcl +%docdir %{_mandir}/mann +%doc %{_mandir}/man1/* +%doc %{_mandir}/mann/* +%{_bindir}/* +%{_libdir}/lib*.so +%{_datadir}/tcl +%{scriptdir} +%exclude %{scriptdir}/*/*.a +%exclude %{scriptdir}/*/*Config.sh +%exclude %{scriptdir}/*/tclAppInit.c +%{_rpmmacrodir}/macros.tcl %files devel -%defattr(-,root,root) -%doc %_mandir/man3/* -%_includedir/* -%scriptdir/*/tclAppInit.c -%attr(0644,root,root) %_libdir/*.a -%attr(0644,root,root) %scriptdir/*/*.a -%scriptdir/*/*Config.sh -%_libdir/*Config.sh -%_libdir/pkgconfig/* +%doc %{_mandir}/man3/* +%{_includedir}/* +%{scriptdir}/*/tclAppInit.c +%attr(0644,root,root) %{_libdir}/*.a +%attr(0644,root,root) %{scriptdir}/*/*.a +%{scriptdir}/*/*Config.sh +%{_libdir}/*Config.sh +%{_libdir}/pkgconfig/* + +%endif ++++++ _multibuild ++++++ <multibuild> <flavor>test</flavor> </multibuild>
