Note: This bug is displayed in read-only format because the product is no longer active in Red Hat Bugzilla.
RHEL Engineering is moving the tracking of its product development work on RHEL 6 through RHEL 9 to Red Hat Jira (issues.redhat.com). If you're a Red Hat customer, please continue to file support cases via the Red Hat customer portal. If you're not, please head to the "RHEL project" in Red Hat Jira and file new tickets here. Individual Bugzilla bugs in the statuses "NEW", "ASSIGNED", and "POST" are being migrated throughout September 2023. Bugs of Red Hat partners with an assigned Engineering Partner Manager (EPM) are migrated in late September as per pre-agreed dates. Bugs against components "kernel", "kernel-rt", and "kpatch" are only migrated if still in "NEW" or "ASSIGNED". If you cannot log in to RH Jira, please consult article #7032570. That failing, please send an e-mail to the RH Jira admins at rh-issues@redhat.com to troubleshoot your issue as a user management inquiry. The email creates a ServiceNow ticket with Red Hat. Individual Bugzilla bugs that are migrated will be moved to status "CLOSED", resolution "MIGRATED", and set with "MigratedToJIRA" in "Keywords". The link to the successor Jira issue will be found under "Links", have a little "two-footprint" icon next to it, and direct you to the "RHEL project" in Red Hat Jira (issue links are of type "https://issues.redhat.com/browse/RHEL-XXXX", where "X" is a digit). This same link will be available in a blue banner at the top of the page informing you that that bug has been migrated.

Bug 1624051

Summary: perl(Inline::C) Missing Runtime Requirements: gcc, make, glibc-devel
Product: Red Hat Enterprise Linux 7 Reporter: Will Braswell <william.braswell>
Component: perl-InlineAssignee: perl-maint-list
Status: CLOSED WONTFIX QA Contact: BaseOS QE - Apps <qe-baseos-apps>
Severity: high Docs Contact:
Priority: unspecified    
Version: 7.5CC: ppisar
Target Milestone: rc   
Target Release: ---   
Hardware: All   
OS: All   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2018-08-31 08:13:30 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Attachments:
Description Flags
test file used in "Actual results" and "Expected results" sections none

Description Will Braswell 2018-08-30 18:38:17 UTC
Created attachment 1479877 [details]
test file used in "Actual results" and "Expected results" sections

Description of problem:

Perl's Inline::C module is a kind of C compiler interface for Perl.
Inline::C must call an underlying C compiler every time it runs, by default GCC and associated programs like the C preprocessor "cc1", etc.
Thus, Inline::C requires a full valid C build environment at runtime.
It is not sufficient to have the C packages as build requirements, they must be runtime requirements.
I believe these are the only 3 RPM packages which must be added to the runtime "Requires" section of the RPM spec file:
gcc
make
glibc-devel

There is a possibility that "make" is not strictly required every time for Inline::C to function properly, but since so many C build processes use make it is probably safest to include it we can.


Version-Release number of selected component (if applicable):
I think this affects all versions?


How reproducible:
Inline::C can not actually run without a C build environment, very reproducible!


Steps to Reproduce:
1.  Install Inline::C
2.  Remove or disable C build environment if present
3.  Run any Inline::C tests and watch them fail

Actual results:

$ perl t/02_inline_c.t
1..16
# [[[ Beginning Inline::C Pre-Test Loading ]]]
# [[[ Beginning Selection Of Tests From The Inline::C Cookbook ]]]
not ok 1 - Inline::C, define greet() lives
#   Failed test 'Inline::C, define greet() lives'
#   at t/02_inline_c.t line 47.
# died: Error in eval, have $EVAL_ERROR =
# 
# BEGIN EVAL ERROR
# 
# Running Mkbootstrap for eval_10_9980 ()
# chmod 644 "eval_10_9980.bs"
# "/usr/bin/perl" "/home/wbraswell/perl5/lib/perl5/ExtUtils/xsubpp"  -typemap "/usr/share/perl/5.22/ExtUtils/typemap"   eval_10_9980.xs > eval_10_9980.xsc && mv eval_10_9980.xsc eval_10_9980.c
# x86_64-linux-gnu-gcc -c  -I"/home/wbraswell/repos_github/rperl-latest/t" -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g   -DVERSION=\"0.00\" -DXS_VERSION=\"0.00\" -fPIC "-I/usr/lib/x86_64-linux-gnu/perl/5.22/CORE"   eval_10_9980.c
# x86_64-linux-gnu-gcc: error trying to exec 'cc1': execvp: No such file or directory
# Makefile:331: recipe for target 'eval_10_9980.o' failed
# make: *** [eval_10_9980.o] Error 1
# 
# A problem was encountered while attempting to compile and install your Inline
# C code. The command that failed was:
#   "make > out.make 2>&1" with error code 2
# 
# The build directory was:
# /home/wbraswell/repos_github/rperl-latest/_Inline/build/eval_10_9980
# 
# To debug the problem, cd to the build directory, and inspect the output files.
# 
# Environment PATH = '/home/wbraswell/github_repos/physicsperl-latest/script:/home/wbraswell/github_repos/mathperl-latest/script:/home/wbraswell/github_repos/rperl-latest/script:.:script:bin:/home/wbraswell/script:/home/wbraswell/bin:/home/wbraswell/perl5/bin:/home/wbraswell/bin:/home/wbraswell/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin'
#  at (eval 10) line 1.
# 	...propagated at /home/wbraswell/perl5/lib/perl5/Inline/C.pm line 931.
# BEGIN failed--compilation aborted at (eval 10) line 1.
# 
# 
# END EVAL ERROR
# 
# croaking at /home/wbraswell/perl5/lib/perl5/Test/Exception.pm line 353.
[[[ LOTS MORE ERRORS NOT SHOWN HERE ]]]

Expected results:

$ perl t/02_inline_c.t
1..16
# [[[ Beginning Inline::C Pre-Test Loading ]]]
# [[[ Beginning Selection Of Tests From The Inline::C Cookbook ]]]
ok 1 - Inline::C, define greet() returns correct value
ok 2 - Inline::C, call greet() returns correct value
ok 3 - Inline::C, define greet_bind() returns correct value
ok 4 - Inline::C, call greet_bind() returns correct value
ok 5 - Inline::C, define JAxH() returns correct value
ok 6 - Inline::C, call JAxH() returns correct value
ok 7 - Inline::C, define greetings_char() returns correct value
ok 8 - Inline::C, call greetings_char() returns correct value
ok 9 - Inline::C, define greetings_sv() returns correct value
ok 10 - Inline::C, call greetings_sv() returns correct value
ok 11 - Inline::C, define greetings_void() returns correct value
ok 12 - Inline::C, call greetings_void() returns correct value
ok 13 - Inline::C, define change() returns correct value
ok 14 - Inline::C, call change() returns correct value
ok 15 - Inline::C, call change(), correctly change variable 1
ok 16 - Inline::C, call change(), correctly change variable 2


Additional info:
The test file "02_inline_c.t" is attached for convenience, although you can also test it out with any of your own Inline::C programs such as "Hello, World!" etc.

Comment 2 Petr Pisar 2018-08-31 08:13:30 UTC
I confirm that perl-Inline package is missing a declaration of run-time dependencies on "make" and "gcc" (glibc-devel is an internal implementation of gcc). And the fix is adding them to the package.

However, perl-Inline package is not supported by Red Hat. It is delivered from Optional repository and the repository contains unsupported software provided only for users convenience to rebuild other supported packages from their sources.

If you despite that insist in fixing perl-Inline, please contact Red Hat support team that will help you to escalate this issue.