Bug 1969310 - sudo fails to build in Fedora 35+: Expectation failed at ./regress/testhelpers.c:98:
Summary: sudo fails to build in Fedora 35+: Expectation failed at ./regress/testhelper...
Keywords:
Status: CLOSED RAWHIDE
Alias: None
Product: Fedora
Classification: Fedora
Component: sudo
Version: 35
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Radovan Sroka
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks: F35FTBFS F36FTBFS, RAWHIDEFTBFS PYTHON3.10
TreeView+ depends on / blocked
 
Reported: 2021-06-08 07:43 UTC by Tomáš Hrnčiar
Modified: 2021-08-25 20:29 UTC (History)
10 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2021-08-25 20:29:29 UTC
Type: Bug


Attachments (Terms of Use)

Description Tomáš Hrnčiar 2021-06-08 07:43:31 UTC
sudo fails to build in Fedora 35+

https://fedoraproject.org/wiki/Changes/Broken_RPATH_will_fail_rpmbuild 

Related section in packaging guidelines.
https://docs.fedoraproject.org/en-US/packaging-guidelines/#_beware_of_rpath

+ /usr/lib/rpm/check-rpaths
*******************************************************************************
*
* WARNING: 'check-rpaths' detected a broken RPATH OR RUNPATH and will cause
*          'rpmbuild' to fail. To ignore these errors, you can set the
*          '$QA_RPATHS' environment variable which is a bitmask allowing the
*          values below. The current value of QA_RPATHS is 0x0000.
*
*    0x0001 ... standard RPATHs (e.g. /usr/lib); such RPATHs are a minor
*               issue but are introducing redundant searchpaths without
*               providing a benefit. They can also cause errors in multilib
*               environments.
*    0x0002 ... invalid RPATHs; these are RPATHs which are neither absolute
*               nor relative filenames and can therefore be a SECURITY risk
*    0x0004 ... insecure RPATHs; these are relative RPATHs which are a
*               SECURITY risk
*    0x0008 ... the special '$ORIGIN' RPATHs are appearing after other
*               RPATHs; this is just a minor issue but usually unwanted
*    0x0010 ... the RPATH is empty; there is no reason for such RPATHs
*               and they cause unneeded work while loading libraries
*    0x0020 ... an RPATH references '..' of an absolute path; this will break
*               the functionality when the path before '..' is a symlink
*          
*
* Examples:
* - to ignore standard and empty RPATHs, execute 'rpmbuild' like
*   $ QA_RPATHS=$(( 0x0001|0x0010 )) rpmbuild my-package.src.rpm
* - to check existing files, set $RPM_BUILD_ROOT and execute check-rpaths like
*   $ RPM_BUILD_ROOT=<top-dir> /usr/lib/rpm/check-rpaths
*  
*******************************************************************************
ERROR   0002: file '/usr/bin/sudo' contains an invalid runpath '/usr/libexec/sudo' in [/usr/libexec/sudo]
ERROR   0002: file '/usr/bin/sudoreplay' contains an invalid runpath '/usr/libexec/sudo' in [/usr/libexec/sudo]
ERROR   0002: file '/usr/bin/cvtsudoers' contains an invalid runpath '/usr/libexec/sudo' in [/usr/libexec/sudo]
ERROR   0002: file '/usr/sbin/visudo' contains an invalid runpath '/usr/libexec/sudo' in [/usr/libexec/sudo]
ERROR   0002: file '/usr/sbin/sudo_sendlog' contains an invalid runpath '/usr/libexec/sudo' in [/usr/libexec/sudo]
ERROR   0002: file '/usr/sbin/sudo_logsrvd' contains an invalid runpath '/usr/libexec/sudo' in [/usr/libexec/sudo]
ERROR   0002: file '/usr/libexec/sudo/sesh' contains an invalid runpath '/usr/libexec/sudo' in [/usr/libexec/sudo]
ERROR   0002: file '/usr/libexec/sudo/python_plugin.so' contains an invalid runpath '/usr/libexec/sudo' in [/usr/libexec/sudo]
ERROR   0002: file '/usr/libexec/sudo/system_group.so' contains an invalid runpath '/usr/libexec/sudo' in [/usr/libexec/sudo]
ERROR   0002: file '/usr/libexec/sudo/sudoers.so' contains an invalid runpath '/usr/libexec/sudo' in [/usr/libexec/sudo]
ERROR   0002: file '/usr/libexec/sudo/sample_approval.so' contains an invalid runpath '/usr/libexec/sudo' in [/usr/libexec/sudo]
ERROR   0002: file '/usr/libexec/sudo/group_file.so' contains an invalid runpath '/usr/libexec/sudo' in [/usr/libexec/sudo]
ERROR   0002: file '/usr/libexec/sudo/audit_json.so' contains an invalid runpath '/usr/libexec/sudo' in [/usr/libexec/sudo]

For the build logs, see:
https://copr-be.cloud.fedoraproject.org/results/@python/python3.10/fedora-rawhide-x86_64/02238144-sudo/

For all our attempts to build sudo with Python 3.10, see:
https://copr.fedorainfracloud.org/coprs/g/python/python3.10/package/sudo/

Testing and mass rebuild of packages is happening in copr. You can follow these instructions to test locally in mock if your package builds with Python 3.10:
https://copr.fedorainfracloud.org/coprs/g/python/python3.10/

Let us know here if you have any questions.

Python 3.10 will be included in Fedora 35. To make that update smoother, we're building Fedora packages with early pre-releases of Python 3.10.
A build failure prevents us from testing all dependent packages (transitive [Build]Requires), so if this package is required a lot, it's important for us to get it fixed soon.
We'd appreciate help from the people who know this package best, but if you don't want to work on this now, let us know so we can try to work around it on our side.

Comment 1 Miro Hrončok 2021-06-19 10:57:47 UTC
Could you please respond and rebuild sudo with Python 3.10? Thanks

Comment 2 Miro Hrončok 2021-06-19 11:10:04 UTC
Is this runpath really invalid? /usr/libexec/sudo

Comment 3 Charalampos Stratakis 2021-06-22 14:29:12 UTC
(In reply to Miro Hrončok from comment #2)
> Is this runpath really invalid? /usr/libexec/sudo

The issue is fixed on the latest rpm, which should land in rawhide quite soon.

Comment 4 Miro Hrončok 2021-06-23 09:00:10 UTC
Attempting a build with RPM 4.17 beta which should have fixed bz1973304.

Comment 5 Miro Hrončok 2021-06-23 09:09:10 UTC
OK, that was fixed, but only to reveal the real issue.

Expectation failed at ./regress/testhelpers.c:98:
  actual is <<sudo.debug was called with arguments: (DEBUG.ERROR, 'My demo purpose plugin shows this ERROR level debug message') 
sudo.debug was called with arguments: (DEBUG.INFO, 'My demo purpose plugin shows this INFO level debug message') 
LogHandler.emit was called
LogHandler.emit was called
sudo.options_as_dict was called with arguments: (('ModulePath=SRC_DIR/example_debugging.py', 'ClassName=DebugDemoPlugin'),) 
sudo.options_as_dict returned result: [('ClassName', 'DebugDemoPlugin'), ('ModulePath', 'SRC_DIR/example_debugging.py')] 
>>: actual_content
  expected to be <<sudo.debug was called with arguments: (<DEBUG.ERROR: 2>, 'My demo purpose plugin shows this ERROR level debug message') 
sudo.debug was called with arguments: (<DEBUG.INFO: 6>, 'My demo purpose plugin shows this INFO level debug message') 
LogHandler.emit was called
LogHandler.emit was called
sudo.options_as_dict was called with arguments: (('ModulePath=SRC_DIR/example_debugging.py', 'ClassName=DebugDemoPlugin'),) 
sudo.options_as_dict returned result: [('ClassName', 'DebugDemoPlugin'), ('ModulePath', 'SRC_DIR/example_debugging.py')] 
>>: expected_output
Expectation failed at ./regress/testhelpers.c:228:
  actual is <<0>>: verify_content(stored_str, reference_path)
  not expected to be <<0>>: 0
Expectation failed at ./regress/check_python_examples.c:555:
  actual is <<0>>: verify_log_lines(expected_path("check_example_debugging_%s.log", debug_spec))
  not expected to be <<0>>: 0
FAILED: testcase check_example_debugging("c_calls@diag") at ./regress/check_python_examples.c:1591
The output of the plugin:
The error output of the plugin:
Running test check_example_debugging("c_calls@info") ... 
Expectation failed at ./regress/testhelpers.c:98:
  actual is <<__init__ @ SRC_DIR/example_debugging.py:58 calls C function:
sudo.debug was called with arguments: (DEBUG.ERROR, 'My demo purpose plugin shows this ERROR level debug message') 
__init__ @ SRC_DIR/example_debugging.py:63 calls C function:
sudo.debug was called with arguments: (DEBUG.INFO, 'My demo purpose plugin shows this INFO level debug message') 
handle @ logging/__init__.py calls C function:
LogHandler.emit was called
handle @ logging/__init__.py calls C function:
LogHandler.emit was called
__init__ @ SRC_DIR/example_debugging.py:85 calls C function:
sudo.options_as_dict was called with arguments: (('ModulePath=SRC_DIR/example_debugging.py', 'ClassName=DebugDemoPlugin'),) 
sudo.options_as_dict returned result: [('ClassName', 'DebugDemoPlugin'), ('ModulePath', 'SRC_DIR/example_debugging.py')] 
>>: actual_content
  expected to be <<__init__ @ SRC_DIR/example_debugging.py:58 calls C function:
sudo.debug was called with arguments: (<DEBUG.ERROR: 2>, 'My demo purpose plugin shows this ERROR level debug message') 
__init__ @ SRC_DIR/example_debugging.py:63 calls C function:
sudo.debug was called with arguments: (<DEBUG.INFO: 6>, 'My demo purpose plugin shows this INFO level debug message') 
handle @ logging/__init__.py calls C function:
LogHandler.emit was called
handle @ logging/__init__.py calls C function:
LogHandler.emit was called
__init__ @ SRC_DIR/example_debugging.py:85 calls C function:
sudo.options_as_dict was called with arguments: (('ModulePath=SRC_DIR/example_debugging.py', 'ClassName=DebugDemoPlugin'),) 
sudo.options_as_dict returned result: [('ClassName', 'DebugDemoPlugin'), ('ModulePath', 'SRC_DIR/example_debugging.py')] 
>>: expected_output
Expectation failed at ./regress/testhelpers.c:228:
  actual is <<0>>: verify_content(stored_str, reference_path)
  not expected to be <<0>>: 0
Expectation failed at ./regress/check_python_examples.c:555:
  actual is <<0>>: verify_log_lines(expected_path("check_example_debugging_%s.log", debug_spec))
  not expected to be <<0>>: 0
FAILED: testcase check_example_debugging("c_calls@info") at ./regress/check_python_examples.c:1592


Hence, restoring the needinfo.

Comment 6 Peter Czanik 2021-06-24 03:48:44 UTC
Upgrading sudo to version 1.9.7+ should resolve the Python 3.10 problem. See changelog at https://www.sudo.ws/stable.html#1.9.7p1

Comment 7 Fedora Release Engineering 2021-07-11 04:22:59 UTC
Dear Maintainer,

your package has an open Fails To Build From Source bug for Fedora 35.
Action is required from you.

If you can fix your package to build, perform a build in koji, and either create
an update in bodhi, or close this bug without creating an update, if updating is
not appropriate [1]. If you are working on a fix, set the status to ASSIGNED to
acknowledge this. If you have already fixed this issue, please close this Bugzilla report.

Following the policy for such packages [2], your package will be orphaned if
this bug remains in NEW state more than 8 weeks (not sooner than 2021-08-03).

A week before the mass branching of Fedora 36 according to the schedule [3],
any packages not successfully rebuilt at least on Fedora 34 will be
retired regardless of the status of this bug.

[1] https://docs.fedoraproject.org/en-US/fesco/Updates_Policy/
[2] https://docs.fedoraproject.org/en-US/fesco/Fails_to_build_from_source_Fails_to_install/
[3] https://fedorapeople.org/groups/schedule/f-36/f-36-key-tasks.html

Comment 8 Miro Hrončok 2021-07-12 11:52:24 UTC
The package no longer fails to build with Python 3.10.0b4.

I will take care of the rebuild.

Please note that the standard library enum implementation was reverted upstream to the Python 3.9 version; if the failure was enum related (such as tests expecting a specific Enum.__repr__ value) it will likely happen again with Python 3.11.

https://mail.python.org/archives/list/python-dev@python.org/message/LSTMFAPSPD3BGZ4D6HQFODXZVB3PLYKF/

Comment 9 Ben Cotton 2021-08-10 13:06:55 UTC
This bug appears to have been reported against 'rawhide' during the Fedora 35 development cycle.
Changing version to 35.

Comment 10 Matthew Miller 2021-08-25 20:29:29 UTC
I am pretty sure this is fixed. I just built sudo for rawhide with no problems.


Note You need to log in before you can comment on or make changes to this bug.