Bug#1108052: epics-base: FTBFS: Failed 12/152 subtests
Santiago Vila
sanvila at debian.org
Thu Jun 19 19:51:36 BST 2025
Package: src:epics-base
Version: 7.0.8.1+dfsg1-7
Severity: important
Tags: ftbfs trixie sid help
Dear maintainer:
During a rebuild of all packages in unstable, your package failed to build:
[ please read the notes at the end ]
--------------------------------------------------------------------------------
[...]
debian/rules clean
dh clean
debian/rules override_dh_auto_clean
make[1]: Entering directory '/<<PKGBUILDDIR>>'
# display the network configuration
ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host noprefixroute
valid_lft forever preferred_lft forever
[... snipped ...]
ok 71 - choices.size()==3
ok 72 - choices.size()>0 && choices[0]=="zero"
ok 73 - choices.size()>1 && choices[1]=="one"
ok 74 - choices.size()>2 && choices[2]=="two"
ok 75 - prec_li->val (102043) == 102043 (102043)
ok 76 - prec_i64->val (-9223372036854775808) == epicsInt64(-0x8000000000000000LL) (-9223372036854775808)
ok 77 - prec_i64->val (-9223372036854775808) == epicsInt64(-0x8000000000000000LL) (-9223372036854775808)
ok 78 - "world" == "world"
ok 79 - prec_ai->val (44.4) == 44.4 (44.4)
ok 80 - prec_ai->rval (2143) == 2143 (2143)
ok 81 - prec_mbbi->val (2) == 2 (2)
# testPlain()
Warning: IOC is booting with TOP = "/<<PKGBUILDDIR>>/modules/pva2pva"
but was built with TOP = "/<<PKGBUILDDIR>>"
Warning: Registration already done.
############################################################################
## EPICS R7.0.8.1
## Rev. 2025-06-19T10:29+0000
## Rev. Date build date/time:
############################################################################
ok 82 - mask ({1}) == pvd::BitSet().set(root->getSubFieldT("li")->getFieldOffset()) ({1})
ok 83 - li (102042) == 102042
ok 84 - mask ({2}) == pvd::BitSet().set(root->getSubFieldT("si")->getFieldOffset()) ({2})
ok 85 - si (hello) == hello
ok 86 - mask ({3}) == pvd::BitSet().set(root->getSubFieldT("ai")->getFieldOffset()) ({3})
ok 87 - ai (42.2) == 42.2
ok 88 - mask ({4}) == pvd::BitSet().set(root->getSubFieldT("mbbi")->getFieldOffset()) ({4})
ok 89 - mbbi (1) == 1
ok 90 - prec_li->val (102043) == 102043 (102043)
ok 91 - "world" == "world"
ok 92 - prec_ai->val (44.4) == 44.4 (44.4)
ok 93 - prec_mbbi->val (2) == 2 (2)
# testFilter
Warning: IOC is booting with TOP = "/<<PKGBUILDDIR>>/modules/pva2pva"
but was built with TOP = "/<<PKGBUILDDIR>>"
Warning: Registration already done.
############################################################################
## EPICS R7.0.8.1
## Rev. 2025-06-19T10:29+0000
## Rev. Date build date/time:
############################################################################
ok 94 - dbPutField("TEST", dbr=5, count=9, ...) -> 0
ok 95 - dbGetField("TEST", dbrType=5, nRequest=9 ...) match
ok 96 - dbGetField("TEST.{"arr":{"s":5}}", dbrType=5, nRequest=4 ...) match
ok 97 - dbGetField("TEST.{"arr":{"i":2}}", dbrType=5, nRequest=5 ...) match
ok 98 - dut.value ({5}[9, 7, 5, 3, 1]) == {5}[9, 7, 5, 3, 1]
ok
testpdb.t ..........
1..99
# Refs before
# Cnt Field = 37 (0)
# Cnt PDBGroupChannel = 0 (0)
# Cnt PDBGroupMonitor = 0 (0)
# Cnt PDBGroupPV = 0 (0)
# Cnt PDBGroupPut = 0 (0)
# Cnt PDBProvider = 0 (0)
# Cnt PDBSingleChannel = 0 (0)
# Cnt PDBSingleMonitor = 0 (0)
# Cnt PDBSinglePV = 0 (0)
# Cnt PDBSinglePut = 0 (0)
# Cnt PVField = 0 (0)
# Cnt Thread = 0 (0)
Warning: IOC is booting with TOP = "/<<PKGBUILDDIR>>/modules/pva2pva"
but was built with TOP = "/<<PKGBUILDDIR>>"
############################################################################
## EPICS R7.0.8.1
## Rev. 2025-06-19T10:29+0000
## Rev. Date build date/time:
############################################################################
# test single get
ok 1 - value (1) == 1
ok 2 - display.limitHigh (100) == 100
ok 3 - display.limitLow (-100) == -100
ok 4 - value (10) == 10
# test group get
# get non-atomic
ok 5 - fld1.value (3) == 3
ok 6 - fld2.value (30) == 30
ok 7 - fld3.value (4) == 4
ok 8 - fld4.value (40) == 40
# get atomic
ok 9 - fld1.value (3) == 3
ok 10 - fld2.value (30) == 30
ok 11 - fld3.value (4) == 4
ok 12 - fld4.value (40) == 40
# test single put
ok 13 - dbPutField("rec1", 10, ...) -> 0 (Ok)
ok 14 - dbGetField("rec1", 10) -> 2.000000e+00 == 2.000000e+00
# test group put
ok 15 - dbPutField("rec3", 10, ...) -> 0 (Ok)
ok 16 - dbPutField("rec4", 10, ...) -> 0 (Ok)
ok 17 - dbPutField("rec3.RVAL", 5, ...) -> 0 (Ok)
ok 18 - dbPutField("rec4.RVAL", 5, ...) -> 0 (Ok)
ok 19 - dbPutField("rec3", 10, ...) -> 0 (Ok)
ok 20 - dbPutField("rec4", 10, ...) -> 0 (Ok)
ok 21 - dbPutField("rec3.RVAL", 5, ...) -> 0 (Ok)
ok 22 - dbPutField("rec4.RVAL", 5, ...) -> 0 (Ok)
ok 23 - dbGetField("rec3", 10) -> 3.000000e+00 == 3.000000e+00
ok 24 - dbGetField("rec4", 10) -> 5.000000e+00 == 5.000000e+00
ok 25 - dbGetField("rec3.RVAL", 5) -> 30 == 30
ok 26 - dbGetField("rec4.RVAL", 5) -> 40 == 40
# test single monitor
ok 27 - dbPutField("rec1", 10, ...) -> 0 (Ok)
# subscribe to rec1.VAL
ok 28 - mon.wait(3.0)
# Initial event
ok 29 - mon.event.event==pvac::MonitorEvent::Data
ok 30 - mon.changed.get(0)
ok 31 - value (1) == 1
ok 32 - display.limitHigh (100) == 100
ok 33 - display.limitLow (-100) == -100
ok 34 - !mon.poll()
# trigger new VALUE event
ok 35 - dbPutField("rec1", 10, ...) -> 0 (Ok)
# Wait for event
ok 36 - mon.wait(3.0)
ok 37 - mon.event.event==pvac::MonitorEvent::Data
ok 38 - mon.changed.get(mon.root->getSubFieldT("timeStamp.userTag")->getFieldOffset())
ok 39 - mon.changed ({1, 3, 4, 5, 7, 8}) == pvd::BitSet() .set(mon.root->getSubFieldT("value")->getFieldOffset()) .set(mon.root->getSubFieldT("alarm.severity")->getFieldOffset()) .set(mon.root->getSubFieldT("alarm.status")->getFieldOffset()) .set(mon.root->getSubFieldT("alarm.message")->getFieldOffset()) .set(mon.root->getSubFieldT("timeStamp.secondsPastEpoch")->getFieldOffset()) .set(mon.root->getSubFieldT("timeStamp.nanoseconds")->getFieldOffset()) ({1, 3, 4, 5, 7, 8})
ok 40 - value (11) == 11
ok 41 - !mon.poll()
# trigger new PROPERTY event
ok 42 - dbPutField("rec1.HOPR", 10, ...) -> 0 (Ok)
# Wait for event
ok 43 - mon.wait(3.0)
ok 44 - mon.event.event==pvac::MonitorEvent::Data
ok 45 - mon.changed.get(mon.root->getSubFieldT("display.limitHigh")->getFieldOffset())
ok 46 - mon.changed.get(mon.root->getSubFieldT("display.limitLow")->getFieldOffset())
ok 47 - display.limitHigh (50) == 50
ok 48 - display.limitLow (-100) == -100
ok 49 - !mon.poll()
# test group monitor
ok 50 - dbPutField("rec3", 10, ...) -> 0 (Ok)
ok 51 - dbPutField("rec4", 10, ...) -> 0 (Ok)
ok 52 - dbPutField("rec3.RVAL", 5, ...) -> 0 (Ok)
ok 53 - dbPutField("rec4.RVAL", 5, ...) -> 0 (Ok)
# subscribe to grp1
# Wait for initial event
ok 54 - mon.wait(3.0)
# Initial event
ok 55 - mon.event.event==pvac::MonitorEvent::Data
ok 56 - fld1.value (3) == 3
ok 57 - fld2.value (30) == 30
ok 58 - fld3.value (4) == 4
ok 59 - fld4.value (40) == 40
ok 60 - fld1.display.limitHigh (200) == 200
ok 61 - fld1.display.limitLow (-200) == -200
ok 62 - fld2.display.limitHigh (2.14748e+09) == 2.14748e+09
ok 63 - fld2.display.limitLow (-2.14748e+09) == -2.14748e+09
ok 64 - !mon.poll()
ok 65 - dbPutField("rec3", 10, ...) -> 0 (Ok)
# Wait for event
ok 66 - mon.wait(3.0)
# event
ok 67 - mon.event.event==pvac::MonitorEvent::Data
ok 68 - mon.changed.get(mon.root->getSubFieldT("fld1.timeStamp.userTag")->getFieldOffset())
ok 69 - mon.changed ({74, 76, 77, 78, 80, 81}) == pvd::BitSet() .set(mon.root->getSubFieldT("fld1.value")->getFieldOffset()) .set(mon.root->getSubFieldT("fld1.alarm.severity")->getFieldOffset()) .set(mon.root->getSubFieldT("fld1.alarm.status")->getFieldOffset()) .set(mon.root->getSubFieldT("fld1.alarm.message")->getFieldOffset()) .set(mon.root->getSubFieldT("fld1.timeStamp.secondsPastEpoch")->getFieldOffset()) .set(mon.root->getSubFieldT("fld1.timeStamp.nanoseconds")->getFieldOffset()) ({74, 76, 77, 78, 80, 81})
ok 70 - fld1.value (32) == 32
# test group monitor w/ triggers
ok 71 - dbPutField("rec5", 10, ...) -> 0 (Ok)
ok 72 - dbPutField("rec6", 10, ...) -> 0 (Ok)
ok 73 - dbPutField("rec5.RVAL", 5, ...) -> 0 (Ok)
# subscribe to grp2
# Wait for initial event
ok 74 - mon.wait(3.0)
# Initial event
ok 75 - mon.event.event==pvac::MonitorEvent::Data
ok 76 - fld1.value (5) == 5
ok 77 - fld2.value (6) == 6
ok 78 - fld3.value (0) == 0
ok 79 - !mon.poll()
ok 80 - dbPutField("rec5.RVAL", 5, ...) -> 0 (Ok)
ok 81 - dbPutField("rec5", 10, ...) -> 0 (Ok)
ok 82 - dbPutField("rec6", 10, ...) -> 0 (Ok)
# Wait for event
ok 83 - mon.wait(3.0)
# event
ok 84 - mon.event.event==pvac::MonitorEvent::Data
# structure
# structure record
# structure _options
# uint queueSize 0
# boolean atomic true
# epics:nt/NTScalar:1.0 fld1
# double value 15
# alarm_t alarm
# int severity 0
# int status 0
# string message NO_ALARM
# structure timeStamp
# long secondsPastEpoch 1750329140
# int nanoseconds 566331903
# int userTag 0
# structure display
# double limitLow 0
# double limitHigh 0
# string description
# string units
# int precision 0
# enum_t form
# int index 0
# string[] choices [Default, String, Binary, Decimal, Hex, Exponential, Engineering]
# control_t control
# double limitLow 0
# double limitHigh 0
# double minStep 0
# valueAlarm_t valueAlarm
# boolean active false
# double lowAlarmLimit nan
# double lowWarningLimit nan
# double highWarningLimit nan
# double highAlarmLimit nan
# int lowAlarmSeverity 0
# int lowWarningSeverity 0
# int highWarningSeverity 0
# int highAlarmSeverity 0
# byte hysteresis 0
# epics:nt/NTScalar:1.0 fld2
# double value 16
# alarm_t alarm
# int severity 0
# int status 0
# string message NO_ALARM
# structure timeStamp
# long secondsPastEpoch 1750329140
# int nanoseconds 566333313
# int userTag 0
# structure display
# double limitLow 0
# double limitHigh 0
# string description
# string units
# int precision 0
# enum_t form
# int index 0
# string[] choices [Default, String, Binary, Decimal, Hex, Exponential, Engineering]
# control_t control
# double limitLow 0
# double limitHigh 0
# double minStep 0
# valueAlarm_t valueAlarm
# boolean active false
# double lowAlarmLimit nan
# double lowWarningLimit nan
# double highWarningLimit nan
# double highAlarmLimit nan
# int lowAlarmSeverity 0
# int lowWarningSeverity 0
# int highWarningSeverity 0
# int highAlarmSeverity 0
# byte hysteresis 0
# epics:nt/NTScalar:1.0 fld3
# int value 0
# alarm_t alarm
# int severity 0
# int status 0
# string message
# structure timeStamp
# long secondsPastEpoch 1750329140
# int nanoseconds 566266203
# int userTag 0
# structure display
# double limitLow -2.14748e+09
# double limitHigh 2.14748e+09
# string description
# string units
# int precision 0
# enum_t form
# int index 0
# string[] choices [Default, String, Binary, Decimal, Hex, Exponential, Engineering]
# control_t control
# double limitLow -2.14748e+09
# double limitHigh 2.14748e+09
# double minStep 0
# valueAlarm_t valueAlarm
# boolean active false
# double lowAlarmLimit nan
# double lowWarningLimit nan
# double highWarningLimit nan
# double highAlarmLimit nan
# int lowAlarmSeverity 0
# int lowWarningSeverity 0
# int highWarningSeverity 0
# int highAlarmSeverity 0
# byte hysteresis 0
ok 85 - mon.changed.get(OFF("fld1.timeStamp.userTag"))
ok 86 - mon.changed.get(OFF("fld2.timeStamp.userTag"))
ok 87 - mon.changed ({6, 8, 9, 10, 12, 13, 40, 42, 43, 44, 46, 47}) == pvd::BitSet() .set(OFF("fld1.value")) .set(OFF("fld1.alarm.severity")) .set(OFF("fld1.alarm.status")) .set(OFF("fld1.alarm.message")) .set(OFF("fld1.timeStamp.secondsPastEpoch")) .set(OFF("fld1.timeStamp.nanoseconds")) .set(OFF("fld2.value")) .set(OFF("fld2.alarm.severity")) .set(OFF("fld2.alarm.status")) .set(OFF("fld2.alarm.message")) .set(OFF("fld2.timeStamp.secondsPastEpoch")) .set(OFF("fld2.timeStamp.nanoseconds")) ({6, 8, 9, 10, 12, 13, 40, 42, 43, 44, 46, 47})
ok 88 - fld1.value (15) == 15
ok 89 - fld2.value (16) == 16
ok 90 - fld3.value (0) == 0
ok 91 - !mon.poll()
# test w/ server side filters
ok 92 - value ({9}[9, 8, 7, 6, 5, 4, 3, 2, 1]) == {9}[9, 8, 7, 6, 5, 4, 3, 2, 1]
ok 93 - value ({5}[9, 7, 5, 3, 1]) == {5}[9, 7, 5, 3, 1]
ok 94 - epics::atomic::get(PDBProvider::num_instances) (1) == 1u (1)
ok 95 - prov.unique()
# Refs after
# Cnt Field = 53 (16)
# Cnt PDBGroupChannel = 0 (0)
# Cnt PDBGroupMonitor = 0 (0)
# Cnt PDBGroupPV = 0 (0)
# Cnt PDBGroupPut = 0 (0)
# Cnt PDBProvider = 0 (0)
# Cnt PDBSingleChannel = 0 (0)
# Cnt PDBSingleMonitor = 0 (0)
# Cnt PDBSinglePV = 0 (0)
# Cnt PDBSinglePut = 0 (0)
# Cnt PVField = 0 (0)
# Cnt Thread = 0 (0)
# Cnt pvac::ClientChannel::Impl = 0 (0)
# Cnt pvac::ClientProvider::Impl = 0 (0)
# Cnt pvac::Getter = 0 (0)
# Cnt pvac::Infoer = 0 (0)
# Cnt pvac::Monitor::Impl = 0 (0)
# Cnt pvac::Putter = 0 (0)
# Cnt pvac::RPCer = 0 (0)
# check to see that all dbChannel are closed before IOC shuts down
ok 96 - epics::atomic::get(PDBProvider::num_instances) (0) == 0u (0)
ok 97 - epics::atomic::get(PDBGroupChannel::num_instances) (0) == 0u (0)
ok 98 - epics::atomic::get(PDBGroupPV::num_instances) (0) == 0u (0)
ok 99 - epics::atomic::get(PDBSinglePV::num_instances) (0) == 0u (0)
ok
testgroupconfig.t ..
1..10
# test_parse()
ok 1 - Warnings:
ok 2 - !conf.groups["grpa"].atomic
ok 3 - conf.groups["grpa"].atomic_set
ok 4 - conf.groups["grpa"].fields["fld"].type (simple) == "simple" (simple)
ok 5 - conf.groups["grpa"].fields["fld"].channel (rec.VAL) == "rec.VAL" (rec.VAL)
ok 6 - conf.groups["grpa"].fields["fld"].putorder (-4) == -4 (-4)
ok 7 - conf.groups["grpa"].fields[""].type (top) == "top" (top)
# test_fail()
ok 8 - catch expected exception: Error while completing parsing
ok 9 - catch expected exception: Group field def. can't contain Object (too deep)
ok 10 - catch expected exception: Can't assign value in this context
ok
testdbf_copy.t .....
1..53
# testPVD2DBR_scalar(double, DBF_DOUBLE)
ok 1 - buf (42.2) == expect (42.2)
# testPVD2DBR_scalar(double, DBF_USHORT)
ok 2 - buf (42) == expect (42)
# testPVD2DBR_scalar(int, DBF_LONG)
ok 3 - buf (42) == expect (42)
# testPVD2DBR_scalar(int, DBF_STRING)
ok 4 - buf (42) == expect (42)
# testPVD2DBR_scalar(long, DBF_INT64)
ok 5 - buf (42) == expect (42)
# testPVD2DBR_scalar(long, DBF_STRING)
ok 6 - buf (42) == expect (42)
# testPVD2DBR_scalar(ushort, DBF_USHORT)
ok 7 - buf (41) == expect (41)
# testPVD2DBR_scalar(byte, DBF_CHAR)
ok 8 - buf ()) == expect (41)
# testPVD2DBR_scalar(string, DBF_STRING)
ok 9 - buf (hello) == expect (hello)
# testPVD2DBR_scalar(string, DBF_LONG)
ok 10 - buf (-100) == expect (-100)
# testPVD2DBR_enum()
ok 11 - ival (1) == 1 (1)
ok 12 - !!top->getSubField("value")
ok 13 - ival (1) == 1 (1)
ok 14 - ival (1) == 1u (1)
ok 15 - std::string(sval) (one) == "one" (one)
# testPVD2DBR_array()
ok 16 - nreq (3) == 3 (3)
ok 17 - sarr[0] (1) == arr[0] (1)
ok 18 - sarr[1] (2) == arr[1] (2)
ok 19 - sarr[2] (3) == arr[2] (3)
ok 20 - nreq (3) == 3 (3)
ok 21 - sarr[0*MAX_STRING_SIZE+0] (1) == '1' (1)
ok 22 - int(sarr[0*MAX_STRING_SIZE+1]) (0) == int('\0') (0)
ok 23 - sarr[1*MAX_STRING_SIZE+0] (2) == '2' (2)
ok 24 - int(sarr[1*MAX_STRING_SIZE+1]) (0) == int('\0') (0)
ok 25 - sarr[2*MAX_STRING_SIZE+0] (3) == '3' (3)
ok 26 - int(sarr[2*MAX_STRING_SIZE+1]) (0) == int('\0') (0)
# testDBR2PVD_scalar(double, double)
ok 27 - actual (42.2) == expect (42.2)
ok 28 - changed.get(top->getSubFieldT("value")->getFieldOffset())
# testDBR2PVD_scalar(ushort, double)
ok 29 - actual (42) == expect (42)
ok 30 - changed.get(top->getSubFieldT("value")->getFieldOffset())
# testDBR2PVD_scalar(int, int)
ok 31 - actual (-41) == expect (-41)
ok 32 - changed.get(top->getSubFieldT("value")->getFieldOffset())
# testDBR2PVD_scalar(string, int)
ok 33 - actual (-41) == expect (-41)
ok 34 - changed.get(top->getSubFieldT("value")->getFieldOffset())
# testDBR2PVD_scalar(string, string)
ok 35 - actual (hello) == expect (hello)
ok 36 - changed.get(top->getSubFieldT("value")->getFieldOffset())
# testDBR2PVD_scalar(int, string)
ok 37 - actual (-42) == expect (-42)
ok 38 - changed.get(top->getSubFieldT("value")->getFieldOffset())
# testDBR2PVD_enum()
# structure
# structure value
# string[] choices [zero, one, two]
# int index 2
# {3}
ok 39 - actual (2) == expect (2)
ok 40 - changed.get(top->getSubFieldT("value.index")->getFieldOffset())
# testDBR2PVD_enum()
# structure
# structure value
# string[] choices [zero, one, two]
# int index 2
# {3}
ok 41 - actual (2) == expect (2)
ok 42 - changed.get(top->getSubFieldT("value.index")->getFieldOffset())
# testDBR2PVD_array()
ok 43 - arr.size() (3) == 3u (3)
ok 44 - arr[0] (1) == 1 (1)
ok 45 - arr[1] (2) == 2 (2)
ok 46 - arr[2] (3) == 3 (3)
ok 47 - changed.get(top->getSubFieldT("value")->getFieldOffset())
ok 48 - arr.size() (4) == 4u (4)
ok 49 - arr[0] (4) == 4 (4)
ok 50 - arr[1] (5) == 5 (5)
ok 51 - arr[2] (6) == 6 (6)
ok 52 - arr[3] (7) == 7 (7)
ok 53 - changed.get(top->getSubFieldT("value")->getFieldOffset())
ok
All tests successful.
Test Summary Report
-------------------
testpvif.t (Wstat: 0 Tests: 98 Failed: 0)
TODO passed: 40
Files=6, Tests=343, 2 wallclock secs ( 0.03 usr 0.01 sys + 0.07 cusr 0.03 csys = 0.14 CPU)
Result: PASS
-------------------
make[6]: Leaving directory '/<<PKGBUILDDIR>>/modules/pva2pva/testApp/O.linux-x86_64'
make[5]: Leaving directory '/<<PKGBUILDDIR>>/modules/pva2pva/testApp'
/usr/bin/make -C ./iocBoot runtests
make[5]: Entering directory '/<<PKGBUILDDIR>>/modules/pva2pva/iocBoot'
/usr/bin/make -C ./iocimagedemo runtests
make[6]: Entering directory '/<<PKGBUILDDIR>>/modules/pva2pva/iocBoot/iocimagedemo'
make[6]: Nothing to be done for 'runtests'.
make[6]: Leaving directory '/<<PKGBUILDDIR>>/modules/pva2pva/iocBoot/iocimagedemo'
/usr/bin/make -C ./iocputlog runtests
make[6]: Entering directory '/<<PKGBUILDDIR>>/modules/pva2pva/iocBoot/iocputlog'
make[6]: Nothing to be done for 'runtests'.
make[6]: Leaving directory '/<<PKGBUILDDIR>>/modules/pva2pva/iocBoot/iocputlog'
/usr/bin/make -C ./iocpvalink runtests
make[6]: Entering directory '/<<PKGBUILDDIR>>/modules/pva2pva/iocBoot/iocpvalink'
make[6]: Nothing to be done for 'runtests'.
make[6]: Leaving directory '/<<PKGBUILDDIR>>/modules/pva2pva/iocBoot/iocpvalink'
/usr/bin/make -C ./iocutag runtests
make[6]: Entering directory '/<<PKGBUILDDIR>>/modules/pva2pva/iocBoot/iocutag'
make[6]: Nothing to be done for 'runtests'.
make[6]: Leaving directory '/<<PKGBUILDDIR>>/modules/pva2pva/iocBoot/iocutag'
/usr/bin/make -C ./iocwfdemo runtests
make[6]: Entering directory '/<<PKGBUILDDIR>>/modules/pva2pva/iocBoot/iocwfdemo'
make[6]: Nothing to be done for 'runtests'.
make[6]: Leaving directory '/<<PKGBUILDDIR>>/modules/pva2pva/iocBoot/iocwfdemo'
make[5]: Leaving directory '/<<PKGBUILDDIR>>/modules/pva2pva/iocBoot'
make[4]: Leaving directory '/<<PKGBUILDDIR>>/modules/pva2pva'
make[3]: Leaving directory '/<<PKGBUILDDIR>>/modules'
Tests failed in:
/<<PKGBUILDDIR>>/modules/pvAccess/testApp/O.linux-x86_64
make[2]: *** [configure/RULES_TOP:62: runtests] Error 1
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[1]: *** [debian/rules:51: override_dh_auto_test] Error 2
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
make: *** [debian/rules:29: binary] Error 2
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2
--------------------------------------------------------------------------------
The above is just how the build ends and not necessarily the most relevant part.
If required, the full build log is available here:
https://people.debian.org/~sanvila/build-logs/202506/
About the archive rebuild: The build was made on virtual machines from AWS,
using sbuild and a reduced chroot with only build-essential packages.
In this particular case, the build was made on AWS machines of type
m7a.medium and r7a.medium. Incidentally, those machines have a single CPU,
but at this point it's not clear yet if that's the condition which triggers
the build failure or, for example, the fact that they are overall slower
than other instance types, or maybe some other reason.
If you could not reproduce the bug using GRUB_CMDLINE_LINUX="nr_cpus=1"
please contact me privately, as I am willing to provide ssh access to a
virtual machine where the bug is fully reproducible.
Disclaimer: Please note that this is probably a violation of
Debian Policy 4.2, and the only reason I'm initially reporting
it as "important" is to avoid discussing about the severity.
If this is really a bug in one of the build-depends, please use
reassign and add an affects on src:epics-base, so that this is still
visible in the BTS web page for this package.
Note: In some similar cases the only reasonable fix is
to "import os" and skipif(os.cpu_count() == 1) the affected tests.
Thanks.
More information about the debian-science-maintainers
mailing list