diff --git a/mockbuild-perl-packages.pl b/mockbuild-perl-packages.pl index 6aa8d61..5633226 100755 --- a/mockbuild-perl-packages.pl +++ b/mockbuild-perl-packages.pl @@ -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 diff --git a/packages-manifest.conf b/packages-manifest.conf index 74d3d9a..cc06442 100644 --- a/packages-manifest.conf +++ b/packages-manifest.conf @@ -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 (/common), which lives beside the per-EL cells and is diff --git a/perl-IO-Tty/Build-notes b/perl-IO-Tty/Build-notes index 89ca933..15f0468 100644 --- a/perl-IO-Tty/Build-notes +++ b/perl-IO-Tty/Build-notes @@ -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. diff --git a/perl-IO-Tty/IO-Tty-1.07.tar.gz b/perl-IO-Tty/IO-Tty-1.07.tar.gz deleted file mode 100644 index a45c07d..0000000 Binary files a/perl-IO-Tty/IO-Tty-1.07.tar.gz and /dev/null differ diff --git a/perl-IO-Tty/IO-Tty-1.20.tar.gz b/perl-IO-Tty/IO-Tty-1.20.tar.gz new file mode 100644 index 0000000..cbe7f01 Binary files /dev/null and b/perl-IO-Tty/IO-Tty-1.20.tar.gz differ diff --git a/perl-IO-Tty/IO-Tty.spec b/perl-IO-Tty/IO-Tty.spec deleted file mode 100644 index 4ce1544..0000000 --- a/perl-IO-Tty/IO-Tty.spec +++ /dev/null @@ -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 -packager: Arix International -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 . - -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 -. - -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. diff --git a/perl-IO-Tty/perl-IO-Tty-1.12-13.fc29.src.rpm b/perl-IO-Tty/perl-IO-Tty-1.12-13.fc29.src.rpm deleted file mode 100644 index 273663f..0000000 Binary files a/perl-IO-Tty/perl-IO-Tty-1.12-13.fc29.src.rpm and /dev/null differ diff --git a/perl-IO-Tty/perl-IO-Tty.spec b/perl-IO-Tty/perl-IO-Tty.spec new file mode 100644 index 0000000..0fcbe77 --- /dev/null +++ b/perl-IO-Tty/perl-IO-Tty.spec @@ -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.