[Pkg-pascal-devel] Bug#968245: fpc: autopkgtest failure.

peter green plugwash at p10link.net
Wed Aug 19 01:47:22 BST 2020

On 11/08/2020 16:27, peter green wrote:
> Package: fpc
> Version: 3.2.0+dfsg-5
> Severity: serious
> The autopkgtest for fpc 3.2.0 is failing
>> Compiling utests.pp
>> PPU Loading /usr/lib/x86_64-linux-gnu/fpc/3.2.0/units/x86_64-linux/fcl-base/custapp.ppu
>> PPU Source: custapp.pp not available
>> Recompiling CustApp, checksum changed for /tmp/autopkgtest-lxc.6w1qz1lt/downtmp/build.rui/src/fpcsrc/rtl/units/x86_64-linux/sysutils.ppu
>> custapp.pp(14,58) Fatal: Can't find unit CustApp used by cgiapp
>> Fatal: Compilation aborted
> It looks like the testsuite is trying (and failing) to use custapp.ppu from the package in conjunction with a
> locally-built sysutils.ppu. Afaict the test needs to either use the sysutils from the package or build it's own custapp
> unit.

Ok, tracked down that issue, it seems that building the makefiles also built the rtl, I have added a step in the
script to clean up any units built during the makefile build process before proceeding with the tests.

The second issue I ran into was that the version lists in fpcsrc/tests/utils/testsuite/utests.pp were
inconsistent with each other. This strongly suggest that upstream have never actually run the testsuite
on 3.2.0.

The third issue was that there were a number of unexpected failures.


Some of these seem to be newly introduced tests, but others do seem like they may be regressions.

Nevertheless the current state of the fpc ecosystem in testing is not really viable. Some rc bug fixes
are being blocked from migrating and many packages are present but not buildable on ppc64el in testing
since unstable has fpc on ppc64el but testing doesn't. We need 3.2.0 in testing to move forward.

As such if noone comes up with a better idea I intend to make an upload adding these to the list of
expected failures.

I have only tested on amd64 so far, but I will try and test on the other architectures before upload
and adjust the expected failures list for those architectures too.

Anyway a work in progress debdiff is attatched.
-------------- next part --------------
diff -Nru fpc-3.2.0+dfsg/debian/changelog fpc-3.2.0+dfsg/debian/changelog
--- fpc-3.2.0+dfsg/debian/changelog	2020-08-07 15:24:16.000000000 +0000
+++ fpc-3.2.0+dfsg/debian/changelog	2020-08-18 19:53:55.000000000 +0000
@@ -1,3 +1,23 @@
+fpc (3.2.0+dfsg-6) UNRELEASED; urgency=medium
+  * Make autopkgtest more verbose.
+  * Fix issue with autopkgtest trying to use a packaged fcl with a locally
+    built rtl by cleaning up the rtl that is built during makefile generation
+    (Closes: )
+  * Fix version lists in utests.pp
+  * Make autopkgtest use unified diff to report changes in failures.
+  * Update list of expected test failures
+    + add test/tarray15
+    + add webtbs/tw12038
+    + add webtbs/tw17904
+    + add webtbs/tw22744b
+    + add webtbf/tw25862
+    + add webtbs/tw26481
+    + add webtbs/tw2886
+    + add webtbs/tw29957
+ -- Peter Michael Green <plugwash at debian.org>  Tue, 18 Aug 2020 19:53:55 +0000
 fpc (3.2.0+dfsg-5) unstable; urgency=medium
   * Disable optimizations when building for m68k.
diff -Nru fpc-3.2.0+dfsg/debian/patches/fix-utest-version-lists.patch fpc-3.2.0+dfsg/debian/patches/fix-utest-version-lists.patch
--- fpc-3.2.0+dfsg/debian/patches/fix-utest-version-lists.patch	1970-01-01 00:00:00.000000000 +0000
+++ fpc-3.2.0+dfsg/debian/patches/fix-utest-version-lists.patch	2020-08-18 19:53:55.000000000 +0000
@@ -0,0 +1,25 @@
+Description: fix version lists in utests.pp
+ utests.pp has three version lists, the first defining an enumerated type
+ and then the second two defining textual versions and svn branches
+ for each enumeration entry.
+ Unfortunately the first list was not consistent with each other resulting
+ in a compile error. This patch expands the first list to match the
+ others.
+Author: Peter Michael Green <plugwash at debian.org>
+--- fpc-3.2.0+dfsg.orig/fpcsrc/tests/utils/testsuite/utests.pp
++++ fpc-3.2.0+dfsg/fpcsrc/tests/utils/testsuite/utests.pp
+@@ -211,7 +211,11 @@ type
+     ver_3_0_3,
+     ver_3_0_4,
+     ver_3_0_5,
+-    ver_3_1_1);
++    ver_3_1_1,
++    ver_3_2_0,
++    ver_3_2_1,
++    ver_3_3_1
+ const
+   ver_trunk = high (known_versions);
diff -Nru fpc-3.2.0+dfsg/debian/patches/series fpc-3.2.0+dfsg/debian/patches/series
--- fpc-3.2.0+dfsg/debian/patches/series	2020-08-07 13:56:04.000000000 +0000
+++ fpc-3.2.0+dfsg/debian/patches/series	2020-08-18 19:53:55.000000000 +0000
@@ -22,3 +22,4 @@
diff -Nru fpc-3.2.0+dfsg/debian/source/timestamps fpc-3.2.0+dfsg/debian/source/timestamps
--- fpc-3.2.0+dfsg/debian/source/timestamps	2020-08-07 15:24:16.000000000 +0000
+++ fpc-3.2.0+dfsg/debian/source/timestamps	2020-08-18 19:53:55.000000000 +0000
@@ -212,6 +212,7 @@
 fpcsrc/rtl/unix/dl.pp 2020-05-14T13:54+00:00
 fpcsrc/rtl/unix/timezone.inc 2020-05-14T13:54+00:00
 fpcsrc/tests/test/units/sysutils/texpfncase.pp 2020-05-14T13:54+00:00
+fpcsrc/tests/utils/testsuite/utests.pp 2020-08-19T00:44+00:00
 fpcsrc/utils/fpcm/fpcmmain.pp 2020-05-14T13:54+00:00
 fpcsrc/utils/fpcm/fpmake.pp 2020-05-14T13:54+00:00
 fpcsrc/utils/fpcres/fpcres.pas 2020-05-14T13:54+00:00
diff -Nru fpc-3.2.0+dfsg/debian/tests/ref_fail_x86_64-linux fpc-3.2.0+dfsg/debian/tests/ref_fail_x86_64-linux
--- fpc-3.2.0+dfsg/debian/tests/ref_fail_x86_64-linux	2020-06-06 08:34:37.000000000 +0000
+++ fpc-3.2.0+dfsg/debian/tests/ref_fail_x86_64-linux	2020-08-18 19:53:55.000000000 +0000
@@ -6,6 +6,7 @@
 # code comment: this test will work only as soon as we have global dfa
 # pass instead of fail
@@ -24,10 +25,16 @@
 # code comment: This test needs C libraries
 Note: This test needs C libraries
 # pass instead of fail
@@ -38,5 +45,6 @@
 # fails upstream with "-Fd" but not with "-Cg -O2 -Fd"
 # assembler test that doesn't fail...
 # Maybe only fails under Kylix
diff -Nru fpc-3.2.0+dfsg/debian/tests/run-upstream-testsuite fpc-3.2.0+dfsg/debian/tests/run-upstream-testsuite
--- fpc-3.2.0+dfsg/debian/tests/run-upstream-testsuite	2020-06-06 08:34:37.000000000 +0000
+++ fpc-3.2.0+dfsg/debian/tests/run-upstream-testsuite	2020-08-18 19:53:26.000000000 +0000
@@ -3,7 +3,7 @@
 # It is licensed under the same license as the fpc package
 set -e # Make sure the test fails if a command fails
+echo starting run-upstream-testsuite
 FULL_TARGET=`fpc -iSP`-`fpc -iSO` # x86_64-linux
 FPC_VER=`fpc -iV`
@@ -18,13 +18,18 @@
+echo about to run debian/rules makefiles
 [ "$MAKEMAKEFILES" = "true" ] && debian/rules makefiles
-# Generate missing configuration file for testsuite
+echo debian/rules makefiles builds the rtl which caused problems later
+echo so clean up the rtl that was just built.
+find . -name '*.o' -delete
+find . -name '*.ppu' -delete
+echo Generate missing configuration file for testsuite
 [ -f ${UTESTS}.cfg ] || grep '^  Def' ${UTESTS}.pp > ${UTESTS}.cfg
-# If the make target is run without intervention, the units target is build and
-# installed, while we want to test with the installed units.
+echo If the make target is run without intervention, the units target is build and
+echo installed, while we want to test with the installed units.
 [ -d ${TESTUNITDIR} ] || mkdir ${TESTUNITDIR}
 for FILE in ${LIBDIR}/units/$FULL_TARGET/*/*.[op]* ; do
 	[ -h ${TESTUNITDIR}/${FILE##*/} ] || ln -s ${FILE} ${TESTUNITDIR}
@@ -33,28 +38,28 @@
 echo Compiled > ${TESTUNITDIRROOT}/fpcunit-stamp.${FULL_TARGET}
 echo Compiled > ${TESTUNITDIRROOT}/packages-stamp.${FULL_TARGET}
-# Some tests need additional objects, lets make them first (why are they not
-# automatically build?)
+echo 'Some tests need additional objects, lets make them first (why are they not'
+echo 'automatically build?)'
 mkdir -p fpcsrc/tests/test/cg/obj/${FULL_TARGET##*-}/${FULL_TARGET%%-*} #linux/x86_64
 make -C fpcsrc/tests create_c_objects TEST_FPC=`which fpc` TEST_CCOMPILER=gcc
-# Run the real test suite; this doesn't fail on its own
+echo 'Run the real test suite; this does not fail on its own'
 LC_ALL=C.UTF-8 make -C fpcsrc/tests all TEST_FPC=`which fpc`
-# The next line just creates some nice output
+echo The next line just creates some nice output
 make -C fpcsrc/tests digest TEST_FPC=`which fpc`
-# Let's save some of the output
+echo Let\'s save some of the output
 if [ -n "${ADT_ARTIFACTS}" ] ; then
 	cp -p fpcsrc/tests/output/${FULL_TARGET}/faillist ${ADT_ARTIFACTS}
 	cp -p fpcsrc/tests/output/${FULL_TARGET}/log ${ADT_ARTIFACTS}
 	cp -p fpcsrc/tests/output/${FULL_TARGET}/longlog ${ADT_ARTIFACTS}
-# Compare the new results with known results if we have them
+echo Compare the new results with known results if we have them
 if [ -f ${REF_FILE} ] ; then
 	echo Difference between expected failures and current failures:
-	diff ${REF_FILE} fpcsrc/tests/output/${FULL_TARGET}/faillist || true
+	diff -u ${REF_FILE} fpcsrc/tests/output/${FULL_TARGET}/faillist || true
 	echo "Checking (and fail if so) for new failures:"
 	if diff ${REF_FILE} fpcsrc/tests/output/${FULL_TARGET}/faillist | grep \>\  >/dev/null ; then
@@ -67,7 +72,7 @@
     echo "No reference file found for $FULL_TARGET. Please consider adding one."
-# For debugging, add clean target
+echo For debugging, add clean target
 if [ -n "$CLEAN" ] ; then
 	make -C fpcsrc/tests digest TEST_FPC=`which fpc`
 	debian/rules clean-makefiles

More information about the Pkg-pascal-devel mailing list