From Mageia wiki
Jump to: navigation, search


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
  1. But a cople one that needed to be rebuilt first (see above "mismatch") such as perl-IO-Interface & perl-Params-Validate
  2. Most could be rebuild in pass#1 (but for those with "(needs XXX)" commment)
  3. 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:

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