#1120232 libur-perl: FTBFS: dh_auto_test: error: /usr/bin/perl Build test --verbose 1 returned exit code 255

Package:
src:libur-perl
Source:
src:libur-perl
Submitter:
Santiago Vila
Date:
2025-11-06 16:31:02 UTC
Severity:
normal
Tags:
#1120232#5
Date:
2025-11-06 11:59:16 UTC
From:
To:
Dear maintainer:

During a rebuild of all packages in unstable, this package failed to build.

Below you will find the last part of the build log (probably the most
relevant part, but not necessarily). If required, the full build log
is available here:

https://people.debian.org/~sanvila/build-logs/202511/

About the archive rebuild: The build was made on virtual machines from AWS,
using sbuild and a reduced chroot with only build-essential packages.

If you cannot reproduce the bug please contact me privately, as I
am willing to provide ssh access to a virtual machine where the bug is
fully reproducible.

If this is really a bug in one of the build-depends, please use
reassign and add an affects on src:libur-perl, so that this is still
visible in the BTS web page for this package.

Thanks.
--------------------------------------------------------------------------------
[...]
 debian/rules clean
dh clean
   dh_clean
 debian/rules binary
dh binary
   dh_update_autotools_config
   dh_autoreconf
   dh_auto_configure
	/usr/bin/perl Build.PL --installdirs vendor --config optimize="-g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2" --config ld="x86_64-linux-gnu-gcc -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wl,-z,relro"
WARNING: the following files are missing in your kit:
	lib/UR/Namespace/Command/Sys/ClassBrowser/assets/css/bootstrap-responsive.min.css
	lib/UR/Namespace/Command/Sys/ClassBrowser/assets/css/bootstrap.min.css
	lib/UR/Namespace/Command/Sys/ClassBrowser/assets/css/class-browser.css
	lib/UR/Namespace/Command/Sys/ClassBrowser/assets/css/treeview-icons.png
	lib/UR/Namespace/Command/Sys/ClassBrowser/assets/js/bootstrap.min.js

[... snipped ...]

ok 38 - Gryphon's foo is the same as Eagle's
ok 39 - '$gryphon isa C3Animal::Gryphon' isa 'C3Animal::Gryphon'
ok 40 - '$gryphon isa C3Animal::Lion' isa 'C3Animal::Lion'
ok 41 - '$gryphon isa C3Animal::Eagle' isa 'C3Animal::Eagle'
ok 42 - Gryphon's MRO is C3
ok 43 - Lion is higher precendence than Eagle
ok 44 - Eagle is higher precendence than UR::Object
ok 45 - Gryphon is using Eagle's foo
ok 46 - Gryphon is using Eagle's foo
ok 47 - Make sure we installed species sub in Animal
ok 48 - Make sure we installed species sub in Eagle
ok 49 - Gryphon called Eagle's species sub
1..49
ok
Resolving parameter 'some_objects' from command argument 'name:Alice/Bob'... found 2
Resolving parameter 'some_objects' from command argument 'name in ['Alice','Bob']'... found 2
Resolving parameter 'some_objects' from command argument 'Alice,Bob'... found 2
t/URT/t/resolve_param_value_from_cmdline_text.t ...........................
1..3
ok 1 - list of names specified by colon
ok 2 - list of names specified by "in clause"
ok 3 - list of names
ok
t/URT/t/services/url-router.t .............................................
1..18
ok 1 - Created a UrlRouter
ok 2 - GET non-matching path returns 404
ok 3 - Run route for GET /thing
ok 4 - Run route for POST /thing
ok 5 - Run route for PUT /thing
ok 6 - Run route for DELETE /thing
ok 7 - Run route that returns PSGI struct
ok 8 - Created UrlRouter
ok 9 - Match route with subref
ok 10 - Did not match subref route with different method
ok 11 - Did not match subref route with non-matching string
ok 12 - Created UrlRouter
ok 13 - Run route matching regex
ok 14 - Callback saw the matches
ok 15 - Run route matching regex
ok 16 - Callback saw the matches
ok 17 - Did not match regex with non-matching path
ok 18 - Did not match regex with different method
ok
t/URT/t/services/webserver.t ..............................................
1..43
ok 1 - Created WebServer service
ok 2 - Can change port before socket is created
ok 3 - Change port back to undef
ok 4 - Can change host before socket is created
ok 5 - Change host back to undef
ok 6 - Forced port to be filled in
ok 7 - autogenerated port matches server's sockport
ok 8 - autogenerated port matches server's sockhost
ok 9 - Setting port after socket creation fails
ok 10 - Exception looks correct
ok 11 - Setting host after socket creation fails
ok 12 - Exception looks correct
ok 13 - Created WebServer service
ok 14 - An object of class 'UR::Service::WebServer::Server' isa 'UR::Service::WebServer::Server'
ok 15 - setup_listener
ok 16 - server is listening on random port: 45603
ok 17 - Default listening on localhost
ok 18 - Connected
ok 19 - Delete WebServer
ok 20 - Connection to deleted WebServer failed: Connection refused
ok 21 - Create WebServer service specifying port
ok 22 - setup_listener
ok 23 - Listen port is correct
ok 24 - Connected
ok 25 - Created WebServer service
ok 26 - timeout
ok 27 - Create WebServer service
ok 28 - Request handler was invoked
ok 29 - Request method matches request
ok 30 - Request path matches request
ok 31 - Request handler was invoked
ok 32 - Request method matches request
ok 33 - Request path matches request
ok 34 - Create file handler for directory
ok 35 - Got data for file1
ok 36 - Got 404 for non-existent file
ok 37 - Got data for file2
ok 38 - Got data for file3
ok 39 - Create file handler for directory
ok 40 - Got data for file1
ok 41 - Got 404 for non-existent file
ok 42 - Got data for file2
ok 43 - Got data for file3
ok
t/URT/t/ur_data_type_for_data_source_data_type.t ..........................
1..2
ok 1 - data type with paren suffix matches upper case result
ok 2 - lower case data type matches upper case result
ok
t/Vending/t/buy_a_different_change.t ......................................
1..18
ok 1 - Got the Vending::Machine instance
ok 2 - Added a nickel to the change
ok 3 - Added a dime to the change
ok 4 - Added a nickel to the change
ok 5 - Added a dime to the change
ok 6 - Added a nickel to the change
ok 7 - Added a dime to the change
ok 8 - Added a nickel to the change
ok 9 - Added a dime to the change
ok 10 - Added a nickel to the change
ok 11 - Added a dime to the change
ok 12 - Defined "Orange" product
ok 13 - Added an orange to slot A
ok 14 - Inserted a dollar
ok 15 - Got back five items
ok 16 - One of them was an Orange
ok 17 - One of them was a nickel
ok 18 - Three of them were dimes
ok
t/Vending/t/buy_a_get_change_back.t .......................................
1..9
ok 1 - Got the Vending::Machine instance
ok 2 - Added a quarter to the change
ok 3 - Added a dime to the change
ok 4 - defined Battery product
ok 5 - Inserted a dollar
ok 6 - Got back three items
ok 7 - One of them was a Battery
ok 8 - One of them was a quarter
ok 9 - One of them was a dime
ok
t/Vending/t/buy_a_not_enough_change.t .....................................
1..16
ok 1 - Got the Vending::Machine instance
ok 2 - Added a quarter to the change
ok 3 - Defined 'Orange' product
ok 4 - Added an orange to slot A
ok 5 - Inserted a dollar
ok 6 - Got no items
ok 7 - Error message indicated not enough change
ok 8 - Coin return got us one thing back
ok 9 - The returned thing was a dollar
ok 10 - The returned thing was worth 100 cents
ok 11 - There is one item still in the inventory
ok 12 - It was an Orange
ok 13 - The orange is in slot a
ok 14 - Nothing in the bank
ok 15 - One thing in the change dispenser
ok 16 - It is a quarter
ok
t/Vending/t/buy_b_not_enough_money.t ......................................
1..12
ok 1 - Got the Vending::Machine instance
ok 2 - Defined Candy product
ok 3 - Added Candy to slot a
ok 4 - Inserted a quarter
ok 5 - Inserted a quarter
ok 6 - Inserted a quarter
ok 7 - Inserted a nickel
ok 8 - Got back no items
ok 9 - Error message indicates we did not enter enough money
ok 10 - Coin return got back 4 items
ok 11 - Three of them were quarters
ok 12 - One of them was a nickel
ok
t/Vending/t/buy_b_with_exact_change.t .....................................
1..10
ok 1 - Got the Vending::Machine instance
ok 2 - Created a product type Apple
ok 3 - Got object for slot b
ok 4 - Added an Apple inventory item to slot b
ok 5 - Inserted a quarter
ok 6 - Inserted a quarter
ok 7 - Inserted a quarter
ok 8 - Inserted a quarter
ok 9 - Got back one item
ok 10 - It was an Apple
ok
t/Vending/t/coin_return.t .................................................
1..6
ok 1 - Got the Vending::Machine instance
ok 2 - Inserted a quarter
ok 3 - Inserted a quarter
ok 4 - Got back two items
ok 5 - Item 1 is a quarter
ok 6 - Item 2 is a quarter
ok
t/above.t .................................................................
1..4
ok 1 - created working directory /tmp/pkG6ikVqyK
ok 2 - used the expected module
ok 3 - Got the original module, not the 2nd one, and not an error.
ok 4 - Got the original module, not the 2nd one, and not an error.
ok
t/alternate_namespace_layout/t/01_namespace.t .............................
1..13
ok 1 - Namespace name
ok 2 - get_member_class
ok 3 - get_member_class returned the right class
ok 4 - get_material_classes returned expected number of items
ok 5 - An object of class 'URTAlternate::Car::Type' isa 'UR::Object::Type'
ok 6 - An object of class 'URTAlternate::DataSource::Meta::Type' isa 'UR::Object::Type'
ok 7 - An object of class 'URTAlternate::DataSource::TheDB::Type' isa 'UR::Object::Type'
ok 8 - An object of class 'URTAlternate::Person::Type' isa 'UR::Object::Type'
ok 9 - An object of class 'URTAlternate::Vocabulary::Type' isa 'UR::Object::Type'
ok 10 - get_material_classes
ok 11 - An object of class 'URTAlternate::DataSource::Meta' isa 'UR::DataSource'
ok 12 - An object of class 'URTAlternate::DataSource::TheDB' isa 'UR::DataSource'
ok 13 - get_data_sources
ok
t/alternate_namespace_layout/t/02_update_classes.t ........................ skipped: this always fails during cpanm install for an unknown reason
t/class_browser/internal.t ................................................
1..38
ok 1 - Created ClassBrowser command
ok 2 - _generate__class_name_cache
ok 3 - _load_class_info_from_modules_on_filesystem
ok 4 - Get directory tree cache
ok 5 - Tree root has children
ok 6 - Tree root name
ok 7 - Tree root data
ok 8 - Root has 3 children
ok 9 - get_child Color.pm
ok 10 - Color.pm has no children
ok 11 - get_child Something.pm
ok 12 - Something.pm has no children
ok 13 - Getting non-existent child returns nothing
ok 14 - Get child directory "Something"
ok 15 - directory "Something" has children
ok 16 - get_child SubClass1.pm
ok 17 - SubClass1.pm has no children
ok 18 - get_child SubClass2.pm
ok 19 - SubClass2.pm has no children
ok 20 - _load_class_info_from_modules_on_filesystem
ok 21 - Get name tree cache
ok 22 - Tree root has children
ok 23 - Tree root name
ok 24 - Tree root data
ok 25 - Root has 2 children
ok 26 - get child Color
ok 27 - Color has no children
ok 28 - Get child "Something"
ok 29 - "Something" has 2 children
ok 30 - Get child SubClass1
ok 31 - SubClass1 has no children
ok 32 - Get child SubClass2
ok 33 - SubClass2 has no children
ok 34 - _load_class_info_from_modules_on_filesystem
ok 35 - Get inheritance tree cache
ok 36 - Tree root has children
ok 37 - UR::Object is the tree root
ok 38 - Inheritance tree
ok
t/newnamespace/01_command_define_namespace.t ..............................
1..14
ok 1 - make temp dir
ok 2 - create UR::Namespace::Command::Define::Namespace
ok 3 - execute
ok 4 - Namespace object created
ok 5 - Metadata data source object created
ok 6 - NewNamespace.pm module exists
ok 7 - NewNamespace directory exists
ok 8 - NewNamespace/DataSource directory exists
ok 9 - NewNamespace/DataSource/Meta.pm module exists
ok 10 - NewNamespace/Vocabulary.pm module exists
ok 11 - Message adding NewNamespace
ok 12 - Message adding vocabulary
ok 13 - Message adding meta datasource
ok 14 - Message adding metaDB dump file
ok

Test Summary Report
-------------------
t/URT/t/63c_view_with_subviews.t                                        (Wstat: 256 (exited 1) Tests: 31 Failed: 1)
  Failed test:  27
  Non-zero exit status: 1
Files=273, Tests=7473, 101 wallclock secs ( 0.69 usr  0.31 sys + 85.06 cusr 11.76 csys = 97.82 CPU)
Result: FAIL
Failed 1/273 test programs. 1/7473 subtests failed.
dh_auto_test: error: /usr/bin/perl Build test --verbose 1 returned exit code 255
make: *** [debian/rules:7: binary] Error 25
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2
--------------------------------------------------------------------------------

#1120232#10
Date:
2025-11-06 16:29:09 UTC
From:
To:
Control: tag -1 + confirmed

# Creating view with toolkit json
# Creating view with toolkit xml
# Creating view with toolkit text
# Creating view with toolkit json
# Creating view with toolkit xml

#   Failed test 'content matches!'
#   at t/URT/t/63c_view_with_subviews.t line 152.
#          got: '<?xml version="1.0"?>
# <object type="Acme::Cat::Set" id="Acme::Cat/And/owner_id/O:�O:111�">
#   <display_name>(Acme::Cat::Set  owner_id => 111)</display_name>
#   <label_name>Set</label_name>
#   <types>
#     <isa type="Acme::Cat::Set"/>
#     <isa type="Acme::Animal::Set"/>
#     <isa type="UR::Object::Set"/>
#     <isa type="UR::Value"/>
#     <isa type="UR::Object"/>
#   </types>
#   <aspect name="members">
#     <object type="Acme::Cat" id="222">
#       <display_name>222</display_name>
#       <label_name>Cat</label_name>
#       <types>
#         <isa type="Acme::Cat"/>
#         <isa type="Acme::Animal"/>
#         <isa type="UR::Object"/>
#       </types>
#     </object>
#     <object type="Acme::Cat" id="333">
#       <display_name>333</display_name>
#       <label_name>Cat</label_name>
#       <types>
#         <isa type="Acme::Cat"/>
#         <isa type="Acme::Animal"/>
#         <isa type="UR::Object"/>
#       </types>
#     </object>
#   </aspect>
# </object>
# '
#     expected: '<?xml version="1.0"?>
# <object type="Acme::Cat::Set" id="Acme::Cat/And/owner_id/O:O:111">
#   <display_name>(Acme::Cat::Set  owner_id => 111)</display_name>
#   <label_name>Set</label_name>
#   <types>
#     <isa type="Acme::Cat::Set"/>
#     <isa type="Acme::Animal::Set"/>
#     <isa type="UR::Object::Set"/>
#     <isa type="UR::Value"/>
#     <isa type="UR::Object"/>
#   </types>
#   <aspect name="members">
#     <object type="Acme::Cat" id="222">
#       <display_name>222</display_name>
#       <label_name>Cat</label_name>
#       <types>
#         <isa type="Acme::Cat"/>
#         <isa type="Acme::Animal"/>
#         <isa type="UR::Object"/>
#       </types>
#     </object>
#     <object type="Acme::Cat" id="333">
#       <display_name>333</display_name>
#       <label_name>Cat</label_name>
#       <types>
#         <isa type="Acme::Cat"/>
#         <isa type="Acme::Animal"/>
#         <isa type="UR::Object"/>
#       </types>
#     </object>
#   </aspect>
# </object>
# '
# Creating view with toolkit text
# Looks like you failed 1 test of 31.
t/URT/t/63c_view_with_subviews.t ..........................................
ok 1 - Acme::Value::Years=HASH(0x55a59a0a09d0) has id 88 and display name 88 yrs
ok 2 - Acme::Value::Years=HASH(0x55a59a0a6628) has id 22 and display name 22 yrs
ok 3 - made a test person object to have cats
ok 4 - made a test cat 1
ok 5 - made a test cat 2
ok 6 - got expected cat list for the owner
ok 7 - got a set object representing the test person's set of cats: (Acme::Cat::Set  owner_id => 111)
#
# VIEW: Acme::Person as json...
#
ok 8 - got an text view for the person
ok 9 - json view of Acme::Person generated content
ok 10 - path exists to expected content for toolkit json
ok 11 - content matches!
#
# VIEW: Acme::Person as xml...
#
ok 12 - got an text view for the person
ok 13 - xml view of Acme::Person generated content
ok 14 - path exists to expected content for toolkit xml
ok 15 - content matches!
#
# VIEW: Acme::Person as text...
#
ok 16 - got an text view for the person
ok 17 - text view of Acme::Person generated content
ok 18 - path exists to expected content for toolkit text
ok 19 - content matches!
#
# VIEW: Acme::Cat::Set as json...
#
ok 20 - got an text view for the person
ok 21 - json view of Acme::Cat::Set generated content
ok 22 - path exists to expected content for toolkit json
ok 23 - content matches!
#
# VIEW: Acme::Cat::Set as xml...
#
ok 24 - got an text view for the person
ok 25 - xml view of Acme::Cat::Set generated content
ok 26 - path exists to expected content for toolkit xml
not ok 27 - content matches!
#
# VIEW: Acme::Cat::Set as text...
#
ok 28 - got an text view for the person
ok 29 - text view of Acme::Cat::Set generated content
ok 30 - path exists to expected content for toolkit text
ok 31 - content matches!
1..31
Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/31 subtests



So the diff is
- # <object type="Acme::Cat::Set" id="Acme::Cat/And/owner_id/O:O:111">
+ # <object type="Acme::Cat::Set" id="Acme::Cat/And/owner_id/O:�O:111�">


I note that there are 2 places in the code (lib/UR/Object/View/Default/Xsl.pm
and lib/UR/Object/View/Default/Xml.pm) with:

     # remove invalid XML entities
     $doc_string =~ s/[^\x09\x0A\x0D\x20-\x{D7FF}\x{E000}-\x{FFFD}\x{10000}-\x{10FFFF}]//go;

and

     # remove invalid XML entities
     $xml_content =~ s/[^\x09\x0A\x0D\x20-\x{D7FF}\x{E000}-\x{FFFD}\x{10000}-\x{10FFFF}]//go;


Looks like these assumpetions are not correct anymore …


Cheers,
gregor