Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

makeinfo/6.7-GCCcore-9.3.0 needs perl libraries #12067

Closed
justbennet opened this issue Feb 1, 2021 · 14 comments · Fixed by #13163
Closed

makeinfo/6.7-GCCcore-9.3.0 needs perl libraries #12067

justbennet opened this issue Feb 1, 2021 · 14 comments · Fixed by #13163
Milestone

Comments

@justbennet
Copy link
Contributor

I got an error when installing makeinfo-6.7-GCCcore-9.3.0.eb as a dependency for BWA-0.7.17-GCC-9.3.0.eb because the CentOS system perl-Data-Dumper wasn't installed. The check was for that and perl-Encode.

From the installation error log,

checking Perl version and modules... no
configure: error: perl >= 5.7.3 with Encode and Data::Dumper required by Texinfo.
 (at easybuild/software/EasyBuild/4.3.2/lib/python3.6/site-packages/easybuild/tools/run.py:533 in parse_cmd_output)

I ran yum install -y perl-Data-Dumper and reran the eb installation of BWA-0.7.17-GCC-9.3.0.eb and it succeeded.

Should makeinfo-6.7-GCCcore-9.3.0.eb have Perl-5.30.2-GCCcore-9.3.0.eb as a dependency or build-dependency, as the Perl-5.30.2-GCCcore-9.3.0.eb installs both Encode and Data::Dumper and would keep all the Perl within the GCCcore-9.3.0 family?

@boegel
Copy link
Member

boegel commented Feb 2, 2021

Yes, adding Perl as a build dependency for makeinfo should help in dancing around this problem...

Are you up for opening a pull request for this?

@boegel boegel added this to the 4.x milestone Feb 2, 2021
@justbennet
Copy link
Contributor Author

I can give it a try. I think it really depends on two sub-libraries. The proper way to do that would be to list those as the dependencies, and they will force installation of the base Perl, correct?

@justbennet
Copy link
Contributor Author

That should be a dependency, yes, not just a build dependency, I think. If it gets removed from the OS after EB installs makeinfo, then

[bennet@studentpc3 ~]$ makeinfo --help
Can't locate Data/Dumper.pm in @INC (@INC contains: CODE(0x26ddb38) /sw/arcts/EasyBuilt/software/makeinfo/6.7-GCCcore-9.3.0/lib/texinfo /sw/arcts/EasyBuilt/software/makeinfo/6.7-GCCcore-9.3.0/share/texinfo/lib/Text-Unidecode/lib /sw/arcts/EasyBuilt/software/makeinfo/6.7-GCCcore-9.3.0/share/texinfo/lib/Unicode-EastAsianWidth/lib /sw/arcts/EasyBuilt/software/makeinfo/6.7-GCCcore-9.3.0/share/texinfo/lib/libintl-perl/lib /sw/arcts/EasyBuilt/software/makeinfo/6.7-GCCcore-9.3.0/share/texinfo /sw/arcts/EasyBuilt/software/makeinfo/6.7-GCCcore-9.3.0/share/texinfo /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /sw/arcts/EasyBuilt/software/makeinfo/6.7-GCCcore-9.3.0/share/texinfo/Texinfo/Common.pm line 2455.
BEGIN failed--compilation aborted at /sw/arcts/EasyBuilt/software/makeinfo/6.7-GCCcore-9.3.0/share/texinfo/Texinfo/Common.pm line 2455.
Compilation failed in require at /sw/arcts/EasyBuilt/software/makeinfo/6.7-GCCcore-9.3.0/bin/makeinfo line 98.
BEGIN failed--compilation aborted at /sw/arcts/EasyBuilt/software/makeinfo/6.7-GCCcore-9.3.0/bin/makeinfo line 98.

Or should this be something that people should install via the OS? Some comments in Slack lead me to believe that people want to minimize the modules required for each EC.

@justbennet
Copy link
Contributor Author

Tried to this, but adding Perl as a dependency creates a circular reference. From Slack, Sat, Feb 6.

ake_s 2:27:02 PM (Eastern time)
Yes, Perl depends on groff which depends on makeinfo. Can be worked around, but it's not worth the trouble

@akesandgren
Copy link
Contributor

akesandgren commented Feb 7, 2021

I'm currently trying to fix this circular dependency.
1 - create Perl-minimal with no extensions, no man pages (since no groff, and thus needs a fix to perl.py which assumes groff is there and man pages to be built)
2 - create makeinfo-minimal using Perl-minimal as full dep, mainly since building groff requires perl too.
3 - build normal groff using makeinfo-minimal as builddep
4 - build Perl using new groff
5 - build real makeinfo using Perl as dep as it really needs it during runs, at least in some situations.

@akesandgren
Copy link
Contributor

The above works, the question now is if we want to do this.

@boegel ?

@justbennet
Copy link
Contributor Author

I was wondering about the seeming inconsistency, but also whether there should be a list of some sort of packages that should be installed as part of the OS system for EasyBuild system toolchain to be fully enabled? Maybe I'm not phrasing that correctly, but hopefully the meaning is clear.

These two Perl libraries would be on it, and I think maybe it would not be bad to include the libraries and Python libraries needed for using GitHub integration on the list, as well.

People with more experience than me should decide which is the better course.

@boegel
Copy link
Member

boegel commented Apr 10, 2021

@akesandgren Just Perl without extensions is not enough for makeinfo though? The Data::Dumper and Encode extensions are required?

@akesandgren
Copy link
Contributor

The minimal makeinfo I have has:
configopts = '--disable-perl-xs --disable-perl-api-texi-build --disable-pod-simple-texinfo-tests
and uses a Perl-minimal as builddep, which has no extra modules, just plain Perl.

I could PR them but I'd perfer to get the versionsuffix part fixed first, i.e. should it be -base, -bare, -minimal, or somthing else?

@justbennet
Copy link
Contributor Author

Are the configure options removing things from a standard Perl installation? If they are, then 'minimal' might be better. It's used with Linux installations to imply a functional but far from usual installation, so it might be good to continue that connotation?

To me, seeing 'base' as a prefix would imply just the package with default options (or very close).

I am not a fan of 'bare'.

@akesandgren
Copy link
Contributor

The version I intended is pure perl tar file, nothing added, nothing removed.

@justbennet
Copy link
Contributor Author

Oh, jeez, sorry. I meant makeinfo not Perl, but same principles.

@akesandgren
Copy link
Contributor

akesandgren commented Apr 13, 2021

The minimal makeinfo easyconfig I have has some features turned off so it doesn't need more than basic perl.

@akesandgren
Copy link
Contributor

Solved by #13163

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment