Contents
- 1 Introduction
- 2 Pass 0 for urpmi: Filesys-Df, Locale-gettext, URPM & XML-LibXML
- 3 Pass 1 : pkgs just depending on base perl, that will enable to rebuild perl pkgs further in the dep tree
- 4 2nd pass:
- 5 3nd pass:
- 6 4nd pass:
- 7 5nd pass:
- 8 6th pass:
- 9 7th pass: important packages linked with libperl
- 10 8th pass: packages generating a perl subpkg or linked with libperl.so
- 11 9th step: create a local stage2 image and test it
- 12 For references : deps for base packages
Introduction
When a new major perl version is packaged, all binary perl modules and all packages linked with libperl.so must be rebuilt.
However there's a trick for rebuilding the first packages in order to bootstrap the new perl.
In order to minimize cauldron disrupting, we'll usually rebuild the packages into core/updates_testing. Once we've enough rebuild pkgs, they'll be moved into core/release and then any remaining pkg will be fixed.
Pass 0 for urpmi: Filesys-Df, Locale-gettext, URPM & XML-LibXML
Bootstrapping is tricky, there's a script for that at rebuild_perl_iurt that needs to be run for each architecture :
perl (not really needed as iurt/rebuild_perl_iurt will build it though it could catch a build error not seen locally) # ~/git/mga/iurt/rebuild_perl_iurt: perl-File-Sync perl-Filesys-Df perl-List-MoreUtils # NOT REALLY? perl-List-MoreUtils-XS perl-Locale-gettext perl-Test-LeakTrace perl-URPM perl-XML-LibXML
Note that those won't be signed and will need to be rebuild properly on the BS in order to be signed
./_rebuild_with_BS.sh perl-File-Sync ./_rebuild_with_BS.sh perl-Filesys-Df ./_rebuild_with_BS.sh perl-List-MoreUtils-XS ./_rebuild_with_BS.sh perl-List-MoreUtils # NOT REALLY ? ./_rebuild_with_BS.sh perl-Locale-gettext ./_rebuild_with_BS.sh perl-URPM ./_rebuild_with_BS.sh perl-XML-LibXML ./_rebuild_with_BS.sh perl
Pass 1 : pkgs just depending on base perl, that will enable to rebuild perl pkgs further in the dep tree
This list was generated by using "urpmf --requires libperl.so" then sorted by deps :
More urgent (those are frequent deps):
perl-Params-Validate perl-Params-Util perl-Scalar-List-Utils perl-Glib perl-Digest-SHA1 perl-B-COW -> perl-Clone perl-List-MoreUtils-XS perl-List-SomeUtils-XS perl-Data-Dumper perl-Class-XSAccessor perl-BSD-Resource perl-Encode
Less Urgent:
perl-List-BinarySearch-XS perl-XS-Object-Magic perl-PerlX-Maybe-XS perl-Class-C3-XS perl-Package-Stash-XS perl-JSON-XS perl-HTTP-Parser-XS perl-Readonly-XS perl-Ref-Util-XS perl-Type-Tiny-XS perl-Email-Address-XS perl-HTTP-XSCookies perl-URI-Escape-XS perl-URL-Encode-XS perl-XS-Parse-Sublike perl-XString perl-JavaScript-Minifier-XS perl-BackupPC-XS perl-Math-Pari perl-Math-Random-ISAAC-XS perl-Math-Random-MT perl-Cpanel-JSON-XS perl-Data-BitStream-XS perl-CSS-Minifier-XS perl-CBOR-XS perl-Language-Befunge-Vector-XS perl-Text-Levenshtein-XS perl-Text-CSV_XS perl-Variable-Magic perl-B-Hooks-OP-Check -> perl-B-Hooks-OP-Check-StashChange / perl-B-Hooks-Parser / perl-bareword-filehandles perl-Crypt-CAST5 perl-Crypt-Cracklib perl-Crypt-DH-GMP perl-Crypt-DES perl-Crypt-IDEA perl-Crypt-OpenSSL-Bignum perl-Crypt-OpenSSL-DSA perl-Crypt-OpenSSL-Random perl-Crypt-OpenSSL-X509 perl-Crypt-RC6 perl-Crypt-Rijndael perl-Crypt-SMIME perl-Crypt-Twofish perl-Crypt-Twofish2 perl-Crypt-UnixCrypt_XS perl-Convert-Bencode_XS perl-DBI perl-Digest-MD5 perl-RPM2 perl-Curses
Really less urgent:
apache-mod_perl perl-Acme-Damn perl-Algorithm-Cluster perl-Algorithm-FastPermute perl-Alias perl-App-Stacktrace perl-Array-RefElem perl-Audio-DSP perl-Authen-PAM perl-autobox perl-autovivification perl-BDB perl-BerkeleyDB perl-B-Flags perl-B-Hooks-EndOfScope NO: noarch? perl-B-Hooks-OP-Annotation perl-B-Hooks-OP-PPAddr perl-Bit-Vector perl-Cache-FastMmap perl-CGI-SpeedyCGI perl-Chemistry-MolecularMass perl-Class-MethodMaker perl-Clone-Fast perl-Compress-Bzip2 perl-Compress-LZF perl-Compress-LZO perl-Convert-Binary-C perl-Convert-Scalar perl-Convert-UUlib perl-Crypt-Blowfish perl-Crypt-Curve25519 perl-Crypt-DES perl-Crypt-RIPEMD160 perl-CryptX perl-Data-Undump perl-Date-Simple perl-DB_File perl-Devel-Callsite perl-Devel-Leak perl-Devel-PPPort perl-Devel-Size perl-Device-SerialPort perl-Digest-CRC perl-Digest-GOST perl-Digest-JHash perl-Digest-Keccak perl-Digest-MD2 perl-Digest-MD4 perl-Digest-MD5-M4p perl-Digest-Nilsimsa perl-Digest-SHA perl-Digest-SHA3 perl-Digest-Whirlpool perl-DVD-Read perl-Encode-HanConvert perl-Encode-HanExtra perl-EV perl-Event perl-Event-Lib perl-File-FcntlLock perl-File-FnMatch perl-File-LibMagic perl-File-Lockf perl-Filesys-Statvfs perl-Filter perl-Function-Parameters perl-GD perl-Geo-IP perl-Graphics-TIFF perl-GSSAPI perl-GTop perl-Guard perl-Hash-NoRef perl-Hash-SafeKeys perl-Heimdal-Kadm5 perl-HTML-Parser perl-HTML-Strip perl-HTML-T5 perl-HTML-TagReader perl-HTML-Template-Pro perl-Imager perl-Image-Epeg perl-Image-PNG-Libpng perl-Image-Sane perl-indirect perl-Internals perl-IO-AIO perl-IO-Epoll perl-IO-Interface (lib/IO/Interface.c: loadable library and perl binaries are mismatched (got first handshake key 0xeb80080, needed 0xf380080)) perl-IO-Tty perl-IO-Tty-Util perl-IPC-ShareLite perl-IPC-SysV perl-Jcode perl-JSON-DWIW perl-JSON-Parse perl-Libconf perl-libintl-perl perl-Linux-Clone perl-Linux-Inotify2 perl-Linux-Personality perl-Linux-Pid perl-Linux-Prctl perl-Linux-Sysfs perl-Mail-Transport-Dbx perl-Math-BigInt-GMP perl-Math-CDF perl-Math-Cephes perl-Math-Decimal64 perl-Math-GMP perl-Math-GMPf perl-Math-GMPq perl-Math-GMPz perl-Math-Int64 perl-Math-Libm perl-Math-MPFR perl-Math-Prime-Util-GMP perl-Math-Random perl-MIDI-ALSA perl-Module-Load-Util perl-Module-ScanDeps perl-Mozilla-LDAP perl-Msgcat perl-MusicBrainz-DiscID perl-NetAddr-IP perl-Net-Bluetooth perl-Net-CUPS perl-Net-Curl perl-Net-Gadu perl-Net-LibIDN perl-Net-NIS perl-Net-RawIP perl-Newt perl-Opcodes perl-OpenGL perl-PadWalker perl-PAR-Packer perl-Parse-ExuberantCTags perl-PathTools perl-pcsc-perl perl-Perl-Destruct-Level perl-PerlIO-eol perl-PerlIO-gzip perl-PerlIO-utf8_strict perl-PerlIO-Util perl-Pg perl-POSIX-Regex perl-Prima perl-Proc-FastSpawn perl-Proc-ProcessTable perl-Proc-Wait3 perl-Quota perl-Sane perl-Scalar-Util-LooksLikeNumber perl-SDL perl-Search-Xapian perl-Sereal-Decoder perl-Set-Object perl-Socket perl-Socket6 perl-Sort-Key perl-Sort-Key-Top perl-Statistics-CaseResampling perl-String-Approx perl-String-CRC32 perl-String-Similarity perl-SWISH-API-Stat perl-Sys-CPU perl-Sys-Hostname-FQDN perl-Sys-Load perl-Sys-MemInfo perl-Tcl perl-Term-ReadKey perl-Term-ReadLine-Gnu perl-Term-Size perl-Test-Taint perl-Text-CharWidth perl-Text-ExtractWords perl-Text-Fuzzy perl-Text-Hspell perl-Text-Hunspell perl-Text-Iconv perl-Text-LevenshteinXS perl-Text-Soundex perl-threads perl-Thread-IID perl-Time-Piece perl-Time-Warp perl-Tk perl-true perl-Unicode-Collate perl-Unicode-CheckUTF8 perl-Unicode-LineBreak (needs perl-Encode-HanExtra via perl-MIME-Charset) perl-Unicode-Normalize perl-Unix-Mknod perl-Unix-Processors perl-Unix-Syslog perl-UUID perl-Video-ivtv perl-Want perl-WeakRef perl-WWW-Curl perl-Wx perl-X11-GUITest perl-XML-Bare perl-XML-Fast perl-XML-SAX-ExpatXS perl-YAML-LibYAML perl-YAML-Syck
2nd pass:
More urgent:
perl-Class-Load-XS: needs perl-Clone & perl-Params-Util perl-Glib-Object-Introspection / perl-Pango / perl-Cairo (needs perl-Glib) perl-Net-SSLeay (needs Socket) perl-RPM4: needs perl(Digest::SHA1)
Less urgent:
perl-Algorithm-Combinatorics perl-Algorithm-Permute perl-bareword-filehandles perl-B-Compiling (needs perl-Params-Util) perl-B-Hooks-OP-Check-StashChange (needs B-Hooks-OP-Check) perl-B-Utils perl-CDB_File (needs B-Cow) perl-Crypt-MySQL (needs Digest-SHA1) perl-Crypt-OpenSSL-EC (needs perl-Crypt-OpenSSL-Bignum) perl-Crypt-OpenSSL-RSA (needs perl-Crypt-OpenSSL-Random) perl-Data-Peek perl-Data-Structure-Util (needs Digest::MD5) perl-Data-UUID perl-Date-Pcalc (needs Bit::Vector) perl-DBD-Firebird perl-DBD-MariaDB (needs DBI) perl-DBD-mysql perl-DBD-Pg perl-DBD-SQLite perl-DBD-Sybase perl-Devel-Size perl-Encode-EUCJPASCII (needs Encode) perl-Encode-JIS2K (needs Encode) perl-File-RsyncP perl-FCGI perl-forks (needs Acme-Damn) perl-Fuse (needs perl-Filesys-Statvfs & perl-Unix-Mknod) perl-HTML-Tidy perl-HTML-Tidy5 perl-Inline-Python perl-Math-Factor-XS: lib/Params/Validate/XS.c: loadable library and perl binaries are mismatched (got first handshake key 0xeb80080, needed 0xf380080) perl-Math-Int128 (needs Int64) perl-Math-Prime-XS: needs perl-Params-Validate too perl-Math-Prime-Util (needs perl-Math-Prime-Util-GMP) perl-MIME-Base64 perl-MIME-Explode perl-multidimensional (needs perl-B-Hooks-OP-Check) perl-Net-Patricia (needs Socket6) perl-Net-Pcap (needs Socket) perl-Devel-Caller (needs PadWalker) perl-Devel-Cover (needs HTML-Parser) perl-OpenGL-GLUT (needs OpenGL) perl-PPI-XS (needs perl-Clone perl-Params-Util) perl-rpm-build-perl (needs Encode) perl-Scope-Upper perl-SDLx-Betweener (needs Moose & SDL) perl-Search-Xapian (needs Devel-Leak) perl-Sereal-Encoder (needs Sereal::Decoder) perl-SGML-Parser-OpenSP (needs perl-Class-XSAccessor) perl-Sort-Key-IPv4 needs Sort::Key perl-Sub-Identify perl-Sub-Name perl-Sys-Mmap perl-Sys-Syslog perl-threads-shared perl-Template-Toolkit (needs Test::LeakTrace) perl-Text-Levenshtein-Flexible (needs Test::LeakTrace) perl-Time-HiRes needs XSLoader perl-Tk-TableMatrix (needs Tk) perl-Unicode-Map perl-Unicode-String perl-Unicode-UTF8 perl-Wx-GLCanvas (needs perl-Wx) perl-XML-LibXSLT
3nd pass:
perl-B-Hooks-Parser (needs perl-B-Hooks-OP-Check & perl-Variable-Magic) perl-Cairo-GObject (needs Cairo) perl-Compress-Raw-Bzip2 perl-Compress-Raw-Lzma perl-Compress-Raw-Zlib perl-Crypt-OpenSSL-ECDSA (needs perl-Crypt-OpenSSL-EC) perl-Crypt-SSLeay (needs perl-Net-SSLeay & MIME::Base64) perl-Data-UUID-LibUUID (needs MIME::Base64) perl-DateTime (needs Sub-Identity) perl-Devel-Declare (needs perl-B-Hooks-OP-Check & perl-Variable-Magic) perl-Devel-LexAlias (needs Devel-Caller) perl-Devel-NYTProf (needs perl-Sub-Name) perl-GooCanvas2-CairoTypes (needsCairo) perl-Gtk2 (needs Cairo & Pango) perl-IO-Socket-Multicast (needs IO::Interface) perl-LWP-Protocol-https (needsperl-Clone perl-HTML-Parser perl-Net-SSLeay) (humm it's a noarch pkg!!!) perl-Moose (needs Sub-Name) perl-Net-DNS-SEC (needs MIME::Base64) perl-Net-SSH-Perl (needs perl-Crypt-Curve25519 perl-Crypt-IDEA perl-CryptX perl-Math-GMP perl-String-CRC32) perl-PDL (needs perl-OpenGL-GLUT) perl-Razor-Agent (needs perl-Net-SSLeay) perl-Search-Tools perl-Unicode-Map8 (needs Unicode::String) perl-XML-Parser (needsperl-Clone perl-HTML-Parser perl-Net-SSLeay)
4nd pass:
perl-Compress-Bzip2 perl-Compress-LZF perl-Compress-LZO perl-Net-DBus (needs perl-Net-SSLeay, Time-HiRes & perl-IO-Socket-SSL perl-LWP-Protocol-https perl-XML-Parser) perl-Gimp (needs Gtk2) perl-Gtk2-GladeXML perl-Gtk2-ImageView perl-Gtk2-Notify perl-Gtk2-TrayIcon perl-Gtk2-Unique (needs Gtk2) perl-Goo-Canvas (needs Gtk2) perl-MooseX-Role-WithOverloading (needs Moose) perl-TryCatch (needs perl-Devel-Declare)
5nd pass:
perl-Net-DBus-GLib (needs Net-DBus) # Some new pkgs introduced since latest major perl rebuild: perl-Coro perl-Linux-DVB perl-Math-ConvexHull-MonotoneChain perl-Sub-Prototype perl-Text-Aspell
6th pass:
(for p in $(for i in perl*;do rpm -qpl $i|fgrep -q .so&&echo $i;done);do rpm -qpR $p|fgrep -q libperl||rpm -qp --qf '%{sourcerpm}\n' $p;done) > /tmp/2rebuild.lst
- But a cople one that needed to be rebuilt first (see above "mismatch") such as perl-IO-Interface & perl-Params-Validate
- Most could be rebuild in pass#1 (but for those with "(needs XXX)" commment)
- Those are not detected by "urpmf-fast --requires libperl.so" (so idem on check.mageia.org) but will blow up when running other perl modules testsuite that depends on them!
6a: first those know to be used (and thus to break) by other modules testsuites
perl-Lingua-Stem-Snowball (perl-KinoSearch1 (lib/Lingua/Stem/Snowball.c: loadable library and perl binaries are mismatched…) perl-Params-Classify (lib/Params/Classify.c: loadable library and perl binaries are mismatched…) perl-Scalar-String (Scalar/String.c: loadable library and perl binaries are mismatched…) perl-Syntax-Keyword-Match (needs perl-XS-Parse-Keyword) (not linked with libperl.so but pkgs usng it will see: Error: Can't load '/usr/lib/perl5/vendor_perl/auto/Syntax/Keyword/Match/Match.so' for module Syntax::Keyword::Match: /usr/lib/perl5/vendor_perl/auto/Syntax/Keyword/Match/Match.so: undefined symbol: Perl_croak_memory_wrap…) perl-Clownfish-CFC (needs Devel::PPPort) perl-Clownfish (needs perl-Clownfish-CFC & Devel::PPPort) (Can't load '/usr/lib64/perl5/vendor_perl/auto/Clownfish/Clownfish.so' for module Clownfish: /usr/lib64/perl5/vendor_perl/auto/Clownfish/Clownfish.so: undefined symbol: Perl_newRV_noinc)
6b: the other who would only be caught while running perl modules depending on them:
libguestfs libsolv obexftp openipmi perl-Attribute-Storage perl-Authen-DecHpwd (needs Digest::CRC & Scalar/String.c: loadable library and perl binaries are mismatched…) perl-Authen-Krb5 perl-Authen-Libwrap perl-Boost-Geometry-Utils perl-Compress-Zstd perl-Config-Augeas perl-Crypt-Eksblowfish (lib/Params/Classify.c: loadable library and perl binaries are mismatched…) perl-Data-Dump-Streamer perl-Data-MessagePack perl-Data-Util (needs perl-Variable-Magic) perl-Devel-MAT (needs perl-XS-Parse-Keyword & perl-Syntax-Keyword-Match) perl-Devel-MAT-Dumper perl-Devel-Refcount (needs XSLoader) perl-Device-Cdio perl-Encode-Detect perl-File-Map perl-Gazelle (needs Guard perl-FCGI perl-List-MoreUtils perl-List-MoreUtils-XS perl-Proc-Wait3 perl-Hash-FieldHash (needs perl-Test-LeakTrace) perl-HTML-Escape (needs perl-Params-Util) perl-Image-Imlib2 perl-KinoSearch1 (needs perl-Lingua-Stem-Snowball lib/Lingua/Stem/Snowball.c: loadable library and perl binaries are mismatched…) perl-Lchown perl-Lexical-SealRequireHints perl-Lexical-Var perl-Linux-Epoll perl-List-Keywords (needs perl-XS-Parse-Keyword) perl-Lucy (needs perl-Clownfish) (Can't load '/usr/lib64/perl5/vendor_perl/auto/Clownfish/Clownfish.so' for module Clownfish: /usr/lib64/perl5/vendor_perl/auto/Clownfish/Clownfish.so: undefined symbol: Perl_newRV_noinc) perl-Marpa-R2 (needs perl-Clone perl-HTML-Parser perl-Params-Util) perl-Math-Clipper perl-Mouse (needs perl-Test-LeakTrace) perl-Net-Rendezvous-Publish-Backend-Howl (needs perl-Want) perl-Object-Pad (needs perl-XS-Parse-Keyword perl-XS-Parse-Sublike) perl-PerlIO-Layers perl-POSIX-RT-Signal (needs perl-Params-Util) perl-Sentinel perl-Socket-Packet perl-Syntax-Keyword-Try (needs perl-XS-Parse-Keyword) perl-Sys-Sendfile perl-Sys-Virt perl-Text-BibTeX perl-Text-Xslate perl-Thread-SigMask perl-Time-y2038 perl-Unicode-CaseFold perl-UV perl-Wx-Scintilla (needs Wx) perl-XML-Easy (Params/Classify.c: loadable library and perl binaries are mismatched) perl-XS-Parse-Keyword
7th pass: important packages linked with libperl
vim
8th pass: packages generating a perl subpkg or linked with libperl.so
apache-mod_perl -> perl-Apache-SSLLookup c-icap claws-mail clearsilver concordance cpuinfo cyrus-imapd deltarpm dpm-perl ekg2 epic5 freeradius fungw genders gnumeric graphicsmagick graphviz hexchat hivex imagemagick inn irssi kvirc lfc libapreq2 libdnf libprelude libproxy libyui ming net-snmp net-snmp nginx openbabel openmortal openscap ossp_uuid pidgin pilot-link postgresql13 postgresql15 redland-bindings rrdtool rxvt-unicode subversion weechat wml zinnia znc-modperl
9th step: create a local stage2 image and test it
The next step is to to build & test a stage2 image.
Basically one has to :
- locally rebuild the drakx-installer-stage2 package.
- test it:
- inject the SQFS image from the freshly built pkg into a local mirror in install/stage2/. See eg this mirror
- run it:
- either in a VM by
- either using drakx-in-chroot (See Drakx-installer tips and tricks for details)
One should just try a cople steps before aborting. If there's an error after a cople step, everything is OK.
If there's an error, usually we need to include a missing perl module now needed by some of the modules used by drakx. One needs to edit perl-install/install/share/list.xml (See history, eg [1], [2], [3], [4], [5], [6] or [7] for past examples).
It would be nice (but less important) to also rebuild & test the alternative drakx-installer-rescue image.
For references : deps for base packages
Those importants needs the following perl pkgs to be rebuild in order to be installable (not listing noarch perl modules from Core/Release)
perl-URPM needs (for building & running)
- perl
- perl-File-Sync
- perl-base
- perl-devel
urpmi needs:
- for building
- perl
- perl-Clone
- perl-Digest-SHA1
- perl-File-Sync
- perl-HTML-Parser
- perl-IO-Tty
- perl-Locale-gettext
- perl-Net-SSLeay
- perl-URPM
- perl-XML-LibXML
- perl-XML-Parser
- perl-base
- perl_checker
- for running:
- perl-Filesys-Df
- perl-Locale-gettext
- perl-URPM
- perl-XML-LibXML
- perl-base
iurt needs:
- for building
- perl
- perl-Digest-SHA1
- perl-File-Lockf
- perl-Net-SSLeay
- perl-RPM4
- perl-Sys-Load
- perl-base
- for running:
- perl
- perl-Digest-SHA1
- perl-File-Lockf
- perl-File-Sync
- perl-Filesys-Df
- perl-Locale-gettext
- perl-Net-SSLeay
- perl-RPM4
- perl-Sys-Load
- perl-URPM
- perl-XML-LibXML
- perl-base