mirror of
https://github.com/xcat2/xcat-dep.git
synced 2026-10-12 08:12:34 +00:00
fix(xcat-dep): build the perl deps a service node cannot reach
dnf install xCATsn on an EL service node does not resolve. Against the repositories a service node has -- BaseOS and AppStream from copycds, plus xcat-core and xcat-dep -- it reports "nothing provides" for perl-IO-Tty, perl(IO::Pty), perl-Crypt-CBC, perl-Crypt-Rijndael, perl(Expect) and perl(HTML::Form), and per release for perl-Crypt-SSLeay, perl-Net-Telnet and perl-Digest-SHA1. The service node then has no xcatd, and every hierarchical case fails. packages-manifest.conf assumed CRB and EPEL stand behind every EL target. That holds for a management node and not for a service node, so those packages were built only for rocky-10-riscv64-xcat, the one target with no EPEL. Each EL target section now lists the perl packages BaseOS and AppStream do not carry. mockbuild-perl-packages.pl had no table entry for perl-IO-Tty, so no target could build it. Its sources move to IO-Tty 1.20 with a spec. In 1.12 the Makefile.PL pty probe only takes the address of each candidate function, the current toolchain drops that reference, the build then defines HAVE__GETPTY on a glibc that has no _getpty, and IO/Tty/Tty.so fails to load. 1.20 calls the function in the probe. perl-Net-DNS stays out. An EL10 service node needs it, this tree holds 0.80, and 0.80 has no KEY resource record that xCAT's ddns.pm builds. Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
This commit is contained in:
@@ -187,6 +187,14 @@ my %meta = (
|
||||
rpm_arch => 'noarch',
|
||||
module => 'IO::Stty',
|
||||
},
|
||||
'perl-IO-Tty' => {
|
||||
mode => 'spec',
|
||||
pkg_dir => "$repo_root/perl-IO-Tty",
|
||||
spec => "$repo_root/perl-IO-Tty/perl-IO-Tty.spec",
|
||||
rpm_name => 'perl-IO-Tty',
|
||||
rpm_arch => 'native',
|
||||
module => 'IO::Tty',
|
||||
},
|
||||
'perl-Mail-Sender' => {
|
||||
mode => 'srpm',
|
||||
pkg_dir => "$repo_root/perl-Mail-Sender",
|
||||
@@ -274,6 +282,7 @@ my @default_order = qw(
|
||||
perl-HTML-Form
|
||||
perl-HTTP-Async
|
||||
perl-IO-Stty
|
||||
perl-IO-Tty
|
||||
perl-Net-HTTPS-NB
|
||||
perl-Net-Telnet
|
||||
perl-Sys-Virt
|
||||
|
||||
+66
-14
@@ -43,14 +43,25 @@
|
||||
# run (no tolerated failures).
|
||||
#
|
||||
#
|
||||
# Per-EL perl set: a perl module is required from xcat-dep only on the releases
|
||||
# where neither the base OS nor EPEL provides it; on the other releases EPEL/OS
|
||||
# supplies it (so `dnf install xCAT` pulls the OS/EPEL copy, not xcat-dep's).
|
||||
# Per-EL perl set. A management node can enable CRB and EPEL. A SERVICE NODE cannot: it reads
|
||||
# the OS install tree copycds made -- BaseOS and AppStream only -- plus xcat-core and xcat-dep.
|
||||
# So every perl package xCAT-server requires that BaseOS and AppStream do not carry is built
|
||||
# here, for every EL target, or `dnf install xCATsn` on the service node does not resolve. The
|
||||
# set differs per release because EL moves these packages between CRB, EPEL and AppStream:
|
||||
# perl-Crypt-CBC, perl-Crypt-Rijndael, perl-Expect, perl-HTML-Form, perl-IO-Tty
|
||||
# on every EL target. Only EPEL carries perl-HTML-Form, on every release.
|
||||
# perl-Crypt-SSLeay on el8 and el9 (EPEL) and el10 (no repository carries it).
|
||||
# perl-Net-Telnet on el8 and el9 (EPEL) and el10 (no repository carries it).
|
||||
# perl-Digest-SHA1 on el8 (CRB) and el10 (EPEL); el9 AppStream carries it.
|
||||
# perl-Sys-Virt omitted on el8 -- provided by EPEL on AlmaLinux 8.
|
||||
# perl-HTML-Form on el8, and on el10 for riscv64 only -- provided by EPEL on el9/el10
|
||||
# x86_64 and ppc64le; riscv64 has no EPEL, and perl-xCAT requires it.
|
||||
# perl-Crypt-SSLeay only on el10 -- provided by the OS/EPEL on el8/el9.
|
||||
# perl-Net-Telnet only on el10 -- provided by the OS/EPEL on el8/el9.
|
||||
# A package the base OS itself provides stays out, so the OS copy keeps winning. perl-IO-Tty is
|
||||
# the deliberate exception: CRB carries it on el8 and el9, a service node reads no CRB, and one
|
||||
# repository serves both roles. See perl-IO-Tty/Build-notes.
|
||||
#
|
||||
# An EL10 service node also needs perl-Net-DNS, which only EPEL carries there. It is NOT listed:
|
||||
# this tree holds Net-DNS 0.80, which has no KEY resource record, and xCAT builds one in
|
||||
# ddns.pm. Listing 0.80 would replace a working copy with a broken one on every EL10 management
|
||||
# node as well. That gap waits for the version bump.
|
||||
#
|
||||
# conserver-xcat is NOT pulled by `dnf install xCAT` (goconserver superseded it),
|
||||
# but it is built for every target anyway because some users still deploy it.
|
||||
@@ -64,10 +75,17 @@ ipmitool-xcat=>= 1.8.18-4
|
||||
ipxe-xcat=2.0.0
|
||||
syslinux-xcat=>= 6.03-1
|
||||
xnba-undi=>= 1.21.1-1
|
||||
perl-Crypt-CBC=2.33
|
||||
perl-Crypt-Rijndael=1.13
|
||||
perl-Crypt-SSLeay=0.72
|
||||
perl-Digest-SHA1=2.13
|
||||
perl-Expect=1.35
|
||||
perl-HTML-Form=6.07
|
||||
perl-HTTP-Async=>= 0.30-3
|
||||
perl-IO-Stty=>= 0.04-5
|
||||
perl-IO-Tty=1.20
|
||||
perl-Net-HTTPS-NB=>= 0.14-3
|
||||
perl-Net-Telnet=3.04
|
||||
xCAT-genesis-base=>= 2:2.18.0
|
||||
|
||||
[alma+epel-8-ppc64le]
|
||||
@@ -79,10 +97,17 @@ ipmitool-xcat=>= 1.8.18-4
|
||||
ipxe-xcat=2.0.0
|
||||
syslinux-xcat=>= 6.03-1
|
||||
xnba-undi=>= 1.21.1-1
|
||||
perl-Crypt-CBC=2.33
|
||||
perl-Crypt-Rijndael=1.13
|
||||
perl-Crypt-SSLeay=0.72
|
||||
perl-Digest-SHA1=2.13
|
||||
perl-Expect=1.35
|
||||
perl-HTML-Form=6.07
|
||||
perl-HTTP-Async=>= 0.30-3
|
||||
perl-IO-Stty=>= 0.04-5
|
||||
perl-IO-Tty=1.20
|
||||
perl-Net-HTTPS-NB=>= 0.14-3
|
||||
perl-Net-Telnet=3.04
|
||||
xCAT-genesis-base=>= 2:2.18.0
|
||||
|
||||
[alma+epel-9-x86_64]
|
||||
@@ -94,9 +119,16 @@ ipmitool-xcat=>= 1.8.18-4
|
||||
ipxe-xcat=2.0.0
|
||||
syslinux-xcat=>= 6.03-1
|
||||
xnba-undi=>= 1.21.1-1
|
||||
perl-Crypt-CBC=2.33
|
||||
perl-Crypt-Rijndael=1.13
|
||||
perl-Crypt-SSLeay=0.72
|
||||
perl-Expect=1.35
|
||||
perl-HTML-Form=6.07
|
||||
perl-HTTP-Async=>= 0.30-3
|
||||
perl-IO-Stty=>= 0.04-5
|
||||
perl-IO-Tty=1.20
|
||||
perl-Net-HTTPS-NB=>= 0.14-3
|
||||
perl-Net-Telnet=3.04
|
||||
perl-Sys-Virt=11.10.0
|
||||
xCAT-genesis-base=>= 2:2.18.0
|
||||
|
||||
@@ -109,9 +141,16 @@ ipmitool-xcat=>= 1.8.18-4
|
||||
ipxe-xcat=2.0.0
|
||||
syslinux-xcat=>= 6.03-1
|
||||
xnba-undi=>= 1.21.1-1
|
||||
perl-Crypt-CBC=2.33
|
||||
perl-Crypt-Rijndael=1.13
|
||||
perl-Crypt-SSLeay=0.72
|
||||
perl-Expect=1.35
|
||||
perl-HTML-Form=6.07
|
||||
perl-HTTP-Async=>= 0.30-3
|
||||
perl-IO-Stty=>= 0.04-5
|
||||
perl-IO-Tty=1.20
|
||||
perl-Net-HTTPS-NB=>= 0.14-3
|
||||
perl-Net-Telnet=3.04
|
||||
perl-Sys-Virt=11.10.0
|
||||
xCAT-genesis-base=>= 2:2.18.0
|
||||
|
||||
@@ -124,9 +163,15 @@ ipmitool-xcat=>= 1.8.18-4
|
||||
ipxe-xcat=2.0.0
|
||||
syslinux-xcat=>= 6.03-1
|
||||
xnba-undi=>= 1.21.1-1
|
||||
perl-Crypt-CBC=2.33
|
||||
perl-Crypt-Rijndael=1.13
|
||||
perl-Crypt-SSLeay=0.72
|
||||
perl-Digest-SHA1=2.13
|
||||
perl-Expect=1.35
|
||||
perl-HTML-Form=6.07
|
||||
perl-HTTP-Async=>= 0.30-3
|
||||
perl-IO-Stty=>= 0.04-5
|
||||
perl-IO-Tty=1.20
|
||||
perl-Net-HTTPS-NB=>= 0.14-3
|
||||
perl-Net-Telnet=3.04
|
||||
perl-Sys-Virt=11.10.0
|
||||
@@ -141,9 +186,15 @@ ipmitool-xcat=>= 1.8.18-4
|
||||
ipxe-xcat=2.0.0
|
||||
syslinux-xcat=>= 6.03-1
|
||||
xnba-undi=>= 1.21.1-1
|
||||
perl-Crypt-CBC=2.33
|
||||
perl-Crypt-Rijndael=1.13
|
||||
perl-Crypt-SSLeay=0.72
|
||||
perl-Digest-SHA1=2.13
|
||||
perl-Expect=1.35
|
||||
perl-HTML-Form=6.07
|
||||
perl-HTTP-Async=>= 0.30-3
|
||||
perl-IO-Stty=>= 0.04-5
|
||||
perl-IO-Tty=1.20
|
||||
perl-Net-HTTPS-NB=>= 0.14-3
|
||||
perl-Net-Telnet=3.04
|
||||
perl-Sys-Virt=11.10.0
|
||||
@@ -167,22 +218,23 @@ ipmitool-xcat=>= 1.8.18-4
|
||||
ipxe-xcat=2.0.0
|
||||
syslinux-xcat=>= 6.03-1
|
||||
xnba-undi=>= 1.21.1-1
|
||||
perl-Crypt-SSLeay=0.72
|
||||
perl-HTML-Form=6.07
|
||||
perl-HTTP-Async=>= 0.30-3
|
||||
perl-IO-Stty=>= 0.04-5
|
||||
perl-Net-HTTPS-NB=>= 0.14-3
|
||||
perl-Net-Telnet=3.04
|
||||
perl-Sys-Virt=11.10.0
|
||||
perl-Crypt-Blowfish=2.14
|
||||
perl-Crypt-CBC=2.33
|
||||
perl-Crypt-Rijndael=1.13
|
||||
perl-Crypt-SSLeay=0.72
|
||||
perl-Digest-SHA1=2.13
|
||||
perl-Expect=1.35
|
||||
perl-HTML-Form=6.07
|
||||
perl-HTTP-Async=>= 0.30-3
|
||||
perl-IO-Stty=>= 0.04-5
|
||||
perl-IO-Tty=1.20
|
||||
perl-Mail-Sender=0.903
|
||||
perl-Net-DNS=0.80
|
||||
perl-Net-HTTPS-NB=>= 0.14-3
|
||||
perl-Net-IP=1.26
|
||||
perl-Net-Telnet=3.04
|
||||
perl-Path-Class=0.37
|
||||
perl-Sys-Virt=11.10.0
|
||||
|
||||
# [common] is NOT a build target. It describes the SHARED repository the OpenEmbedded Genesis
|
||||
# release is published into (<repo-dep>/common), which lives beside the per-EL cells and is
|
||||
|
||||
+17
-1
@@ -1 +1,17 @@
|
||||
For RHEL 8, run "rpmbuild --rebuild perl-IO-Tty-1.12-13.fc29.src.rpm".
|
||||
IO-Tty 1.12 and older do not build on EL8 or newer. Makefile.PL probes each pty
|
||||
function by compiling a program that only takes its address; the current
|
||||
toolchain drops that reference, so the probe reports _getpty as present, the
|
||||
build defines HAVE__GETPTY, and IO/Tty/Tty.so then fails to load with
|
||||
"undefined symbol: _getpty". IO-Tty 1.20 calls the function in the probe, so
|
||||
the link fails and the probe answers correctly.
|
||||
|
||||
Source: https://cpan.metacpan.org/authors/id/T/TO/TODDR/IO-Tty-1.20.tar.gz
|
||||
|
||||
xcat-dep ships IO-Tty 1.20-1. EL8 PowerTools carries 1.12-11 and EL9 CRB carries
|
||||
1.16-4, so the xcat-dep rpm outranks the distribution copy on a management node
|
||||
that enables those repositories. Both distribution builds load correctly; they
|
||||
are shadowed because a service node reads no CRB and one repository serves both
|
||||
roles. 1.20 is the same upstream release the distributions package, with the same
|
||||
license, the same vendor paths and the same perl(IO::Tty) provides, so the higher
|
||||
version is an upgrade and not a fork. EL10 CRB carries 1.20-7, which outranks
|
||||
1.20-1, so the distribution copy still wins there.
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -1,159 +0,0 @@
|
||||
#
|
||||
# - IO::Tty -
|
||||
# This spec file was automatically generated by cpan2rpm [ver: 2.027]
|
||||
# The following arguments were used:
|
||||
# IO-Tty-1.07.tar.gz --no-upgrade-chk
|
||||
# For more information on cpan2rpm please visit: http://perl.arix.com/
|
||||
#
|
||||
|
||||
%define pkgname IO-Tty
|
||||
%define filelist %{pkgname}-%{version}-filelist
|
||||
%define NVR %{pkgname}-%{version}-%{release}
|
||||
%define maketest 1
|
||||
|
||||
name: perl-IO-Tty
|
||||
summary: IO-Tty - Pseudo ttys and constants
|
||||
version: 1.07
|
||||
release: 2%{?dist}
|
||||
vendor: Roland Giersig <RGiersig@cpan.org>
|
||||
packager: Arix International <cpan2rpm@arix.com>
|
||||
license: Artistic
|
||||
group: Applications/CPAN
|
||||
url: http://www.cpan.org
|
||||
buildroot: %{_tmppath}/%{name}-%{version}-%(id -u -n)
|
||||
prefix: %(echo %{_prefix})
|
||||
source: IO-Tty-1.07.tar.gz
|
||||
|
||||
BuildRequires: gcc
|
||||
BuildRequires: make
|
||||
BuildRequires: perl-interpreter
|
||||
BuildRequires: perl-devel
|
||||
BuildRequires: perl(ExtUtils::MakeMaker)
|
||||
BuildRequires: perl-generators
|
||||
|
||||
%description
|
||||
"IO::Tty" is used internally by "IO::Pty" to create a pseudo-tty.
|
||||
You wouldn't want to use it directly except to import constants, use
|
||||
"IO::Pty". For a list of importable constants, see
|
||||
IO::Tty::Constant.
|
||||
|
||||
Windows is now supported, but ONLY under the Cygwin
|
||||
environment, see <http://sources.redhat.com/cygwin/>.
|
||||
|
||||
Please note that pty creation is very system-dependend. From my
|
||||
experience, any modern POSIX system should be fine. Find below a list
|
||||
of systems that "IO::Tty" should work on. A more detailed table
|
||||
(which is slowly getting out-of-date) is available from the project
|
||||
pages document manager at SourceForge
|
||||
<http://sourceforge.net/projects/expectperl/>.
|
||||
|
||||
If you have problems on your system and your system is listed in the
|
||||
"verified" list, you probably have some non-standard setup, e.g. you
|
||||
compiled your Linux-kernel yourself and disabled ptys (bummer!).
|
||||
Please ask your friendly sysadmin for help.
|
||||
|
||||
If your system is not listed, unpack the latest version of "IO::Tty",
|
||||
do a 'perl Makefile.PL; make; make test; uname -a' and send me
|
||||
(RGiersig@cpan.org) the results and I'll see what I can deduce from
|
||||
that. There are chances that it will work right out-of-the-box...
|
||||
|
||||
If it's working on your system, please send me a short note with
|
||||
details (version number, distribution, etc. 'uname -a' and 'perl -V'
|
||||
is a good start; also, the output from "perl Makefile.PL" contains a
|
||||
lot of interesting info, so please include that as well) so I can get
|
||||
an overview. Thanks!
|
||||
|
||||
#
|
||||
# This package was generated automatically with the cpan2rpm
|
||||
# utility. To get this software or for more information
|
||||
# please visit: http://perl.arix.com/
|
||||
#
|
||||
|
||||
%prep
|
||||
%setup -q -n %{pkgname}-%{version}
|
||||
chmod -R u+w %{_builddir}/%{pkgname}-%{version}
|
||||
|
||||
%build
|
||||
grep -rsl '^#!.*perl' . |
|
||||
grep -v '.bak$' |xargs --no-run-if-empty \
|
||||
%__perl -MExtUtils::MakeMaker -e 'MY->fixin(@ARGV)'
|
||||
CFLAGS="$RPM_OPT_FLAGS"
|
||||
%{__perl} Makefile.PL `%{__perl} -MExtUtils::MakeMaker -e ' print qq|PREFIX=%{buildroot}%{_prefix}| if \$ExtUtils::MakeMaker::VERSION =~ /5\.9[1-6]|6\.0[0-5]/ '`
|
||||
%{__make}
|
||||
%if %maketest
|
||||
%{__make} test
|
||||
%endif
|
||||
|
||||
%install
|
||||
[ "%{buildroot}" != "/" ] && rm -rf %{buildroot}
|
||||
|
||||
%{__make} pure_install DESTDIR=%{buildroot}
|
||||
|
||||
cmd=/usr/share/spec-helper/compress_files
|
||||
[ -x $cmd ] || cmd=/usr/lib/rpm/brp-compress
|
||||
[ -x $cmd ] && $cmd
|
||||
|
||||
# SuSE Linux
|
||||
if [ -e /etc/SuSE-release -o -e /etc/UnitedLinux-release ]
|
||||
then
|
||||
%{__mkdir_p} %{buildroot}/var/adm/perl-modules
|
||||
%{__cat} `find %{buildroot} -name "perllocal.pod"` \
|
||||
| %{__sed} -e s+%{buildroot}++g \
|
||||
> %{buildroot}/var/adm/perl-modules/%{name}
|
||||
fi
|
||||
|
||||
# remove special files
|
||||
find %{buildroot} -name "perllocal.pod" \
|
||||
-o -name ".packlist" \
|
||||
-o -name "*.bs" \
|
||||
|xargs -i rm -f {}
|
||||
|
||||
# no empty directories
|
||||
find %{buildroot}%{_prefix} \
|
||||
-type d -depth \
|
||||
-exec rmdir {} \; 2>/dev/null
|
||||
|
||||
%{__perl} -MFile::Find -le '
|
||||
find({ wanted => \&wanted, no_chdir => 1}, "%{buildroot}");
|
||||
print "%doc README";
|
||||
for my $x (sort @dirs, @files) {
|
||||
push @ret, $x unless indirs($x);
|
||||
}
|
||||
print join "\n", sort @ret;
|
||||
|
||||
sub wanted {
|
||||
return if /auto$/;
|
||||
|
||||
local $_ = $File::Find::name;
|
||||
my $f = $_; s|^\Q%{buildroot}\E||;
|
||||
return unless length;
|
||||
return $files[@files] = $_ if -f $f;
|
||||
|
||||
$d = $_;
|
||||
/\Q$d\E/ && return for reverse sort @INC;
|
||||
$d =~ /\Q$_\E/ && return
|
||||
for qw|/etc %_prefix/man %_prefix/bin %_prefix/share|;
|
||||
|
||||
$dirs[@dirs] = $_;
|
||||
}
|
||||
|
||||
sub indirs {
|
||||
my $x = shift;
|
||||
$x =~ /^\Q$_\E\// && $x ne $_ && return 1 for @dirs;
|
||||
}
|
||||
' > %filelist
|
||||
|
||||
[ -z %filelist ] && {
|
||||
echo "ERROR: empty %files listing"
|
||||
exit -1
|
||||
}
|
||||
|
||||
%clean
|
||||
[ "%{buildroot}" != "/" ] && rm -rf %{buildroot}
|
||||
|
||||
%files -f %filelist
|
||||
%defattr(-,root,root)
|
||||
|
||||
%changelog
|
||||
* Fri Apr 4 2008 root@node1.cluster
|
||||
- Initial build.
|
||||
Binary file not shown.
@@ -0,0 +1,63 @@
|
||||
Name: perl-IO-Tty
|
||||
Version: 1.20
|
||||
Release: 1%{?dist}
|
||||
Summary: Perl interface to pseudo tty's
|
||||
License: (GPL+ or Artistic) and BSD
|
||||
URL: https://metacpan.org/release/IO-Tty
|
||||
Source0: https://cpan.metacpan.org/authors/id/T/TO/TODDR/IO-Tty-%{version}.tar.gz
|
||||
BuildRequires: coreutils
|
||||
BuildRequires: findutils
|
||||
BuildRequires: gcc
|
||||
BuildRequires: make
|
||||
BuildRequires: perl-interpreter
|
||||
BuildRequires: perl-devel
|
||||
BuildRequires: perl-generators
|
||||
BuildRequires: perl(Config)
|
||||
BuildRequires: perl(Cwd)
|
||||
BuildRequires: perl(Exporter)
|
||||
BuildRequires: perl(ExtUtils::MakeMaker)
|
||||
BuildRequires: perl(Carp)
|
||||
BuildRequires: perl(DynaLoader)
|
||||
BuildRequires: perl(IO::File)
|
||||
BuildRequires: perl(IO::Handle)
|
||||
BuildRequires: perl(POSIX)
|
||||
BuildRequires: perl(strict)
|
||||
BuildRequires: perl(vars)
|
||||
BuildRequires: perl(Test::More)
|
||||
BuildRequires: perl(warnings)
|
||||
Requires: perl(:MODULE_COMPAT_%(eval "`perl -V:version`"; echo $version))
|
||||
|
||||
# Do not "provide" the private perl libs.
|
||||
%{?perl_default_filter}
|
||||
|
||||
%description
|
||||
IO::Tty and IO::Pty provide an interface to pseudo tty's.
|
||||
|
||||
%prep
|
||||
%setup -q -n IO-Tty-%{version}
|
||||
|
||||
%build
|
||||
perl Makefile.PL INSTALLDIRS=vendor OPTIMIZE="%{optflags}"
|
||||
make %{?_smp_mflags}
|
||||
|
||||
%install
|
||||
make pure_install DESTDIR=%{buildroot}
|
||||
find %{buildroot} -type f -name .packlist -delete
|
||||
find %{buildroot} -type f -name '*.bs' -empty -delete
|
||||
%{_fixperms} %{buildroot}
|
||||
|
||||
%check
|
||||
make test
|
||||
|
||||
%files
|
||||
%doc ChangeLog README
|
||||
%{perl_vendorarch}/auto/IO/
|
||||
%{perl_vendorarch}/IO/
|
||||
%{_mandir}/man3/IO::Pty.3*
|
||||
%{_mandir}/man3/IO::Tty.3*
|
||||
%{_mandir}/man3/IO::Tty::Constant.3*
|
||||
|
||||
%changelog
|
||||
* Fri Sep 04 2026 Daniel Hilst <392820+dhilst@users.noreply.github.com> - 1.20-1
|
||||
- Build IO-Tty 1.20. 1.12 mis-detects _getpty on EL8 and newer and the module
|
||||
then fails to load.
|
||||
Reference in New Issue
Block a user