aboutsummaryrefslogtreecommitdiffstats
path: root/rebuild_perl_iurt
diff options
context:
space:
mode:
Diffstat (limited to 'rebuild_perl_iurt')
-rwxr-xr-xrebuild_perl_iurt42
1 files changed, 26 insertions, 16 deletions
diff --git a/rebuild_perl_iurt b/rebuild_perl_iurt
index 8bfed5c..c18da8e 100755
--- a/rebuild_perl_iurt
+++ b/rebuild_perl_iurt
@@ -23,33 +23,43 @@ if [ -z "$perlchroot" ]; then
exit 1
fi
-iurt --repository $repository --shell -r $distro $arch --use-old-chroot $perlchroot --chrooted-urpmi -m $media -- $repository <<"EOF"
+iurt --repository $repository --shell -r $distro $arch --use-old-chroot $perlchroot --chrooted-urpmi -m $media -- $repository <<EOF
set -x
set -e
-skip() { echo $*; }
+skip() { echo \$*; }
sudo urpmi.update -a
sudo urpmi --auto mgarepo
mkdir -p ~/.mgarepo
-perl -pe 's/svn\+ssh:/svn:/' /etc/mgarepo.conf > ~/.mgarepo/config
-perlapis_path=$HOME/perlapis.txt
-[ -e $perlapis_path ] || rpm -q --provides perl-base | grep ^libperl.so. > $perlapis_path
-for p in perl perl-Test-LeakTrace perl-List-MoreUtils-XS perl-List-MoreUtils perl-URPM perl-Locale-gettext; do mgarepo getsrpm -n $p; done
+perl -pe 's/svn\\+ssh:/svn:/' /etc/mgarepo.conf > ~/.mgarepo/config
+perlapis_path=\$HOME/perlapis.txt
+[ -e \$perlapis_path ] || rpm -q --provides perl-base | grep ^libperl.so. > \$perlapis_path
+for p in perl perl-Test-LeakTrace perl-PerlIO-utf8_strict perl-List-MoreUtils-XS perl-List-MoreUtils perl-URPM perl-Locale-gettext; do mgarepo getsrpm -n \$p; done
rpm -ivh --nodeps *.src.rpm
sudo urpmi --auto --no-verify-rpm rpmbuild/SPECS/*.spec
-rpmbuild -ba rpmbuild/SPECS/perl.spec
-sudo rpm -Uvh --nodeps --force $(ls rpmbuild/RPMS/*/perl-*.rpm | grep -v debuginfo)
-rpmbuild -ba rpmbuild/SPECS/perl-Test-LeakTrace.spec
+rpmbuild --target $arch -ba rpmbuild/SPECS/perl.spec
+sudo rpm -Uvh --nodeps --force \$(ls rpmbuild/RPMS/*/perl-*.rpm | grep -v debuginfo)
+rpmbuild --target $arch -ba rpmbuild/SPECS/perl-Test-LeakTrace.spec
sudo rpm -Uvh --force rpmbuild/RPMS/*/perl-Test-LeakTrace*.rpm
-rpmbuild -ba rpmbuild/SPECS/perl-List-MoreUtils-XS.spec
+rpmbuild --target $arch -ba rpmbuild/SPECS/perl-List-MoreUtils-XS.spec
sudo rpm -Uvh --force rpmbuild/RPMS/*/perl-List-MoreUtils-XS*.rpm
-PERL5LIB=$(rpm -ql perl-List-MoreUtils-XS perl-List-MoreUtils | perl -ne 's!/List/MoreUtils.pm!! && print') LIST_MOREUTILS_PP=1 rpmbuild -ba rpmbuild/SPECS/perl-List-MoreUtils.spec
+PERL5LIB=\$(rpm -ql perl-List-MoreUtils-XS perl-List-MoreUtils | perl -ne 's!/List/MoreUtils.pm!! && print') LIST_MOREUTILS_PP=1 rpmbuild --target $arch -ba rpmbuild/SPECS/perl-List-MoreUtils.spec
sudo rpm -Uvh --force rpmbuild/RPMS/*/perl-List-MoreUtils-*.rpm
-rpmbuild -ba rpmbuild/SPECS/perl-URPM.spec
-rpmbuild -ba rpmbuild/SPECS/perl-Locale-gettext.spec
+rpmbuild --target $arch -ba rpmbuild/SPECS/perl-URPM.spec
+rpmbuild --target $arch -ba rpmbuild/SPECS/perl-Locale-gettext.spec
sudo rpm -Uvh --force rpmbuild/RPMS/*/perl-URPM-*.rpm rpmbuild/RPMS/*/perl-Locale-gettext-*.rpm
-updatepkgs() { spec=$1; toupdate=; while read line; do set -- $line; name=$1; path=$2; rpm -q $name --quiet && toupdate="$toupdate $path"; done < <(rpm -q --specfile $spec --qf '%{name} rpmbuild/RPMS/%{arch}/%{name}-%{version}-%{release}.%{arch}.rpm\n' | egrep -v -- '-(debuginfo|__restore__)-'); [ -n "$toupdate" ] && sudo rpm -Uvh --force $toupdate; }
-rebuild() { p=$1; mgarepo getsrpm -n $p; rpm -ivh @*:$p-*.src.rpm; spec=rpmbuild/SPECS/$p.spec; sudo urpmi --auto --no-verify-rpm $spec; rpmbuild -ba $spec; updatepkgs $spec; }
-pkgs=$(LC_ALL=C rpm -q --qf '%{SOURCERPM}\n' --whatrequires $(cat $perlapis_path) | perl -lne '/^(\S+)-[^-]+-[^-]+$/ and print $1' | uniq); for p in $pkgs; do rebuild $p; done
+updatepkgs() { spec=\$1; toupdate=; while read line; do set -- \$line; name=\$1; path=\$2; rpm -q \$name --quiet && toupdate="\$toupdate \$path"; done < <(rpm -q --target $arch --specfile \$spec --qf '%{name} rpmbuild/RPMS/%{arch}/%{name}-%{version}-%{release}.%{arch}.rpm\n' | egrep -v -- '-(debuginfo|__restore__)-'); [ -n "\$toupdate" ] && sudo rpm -Uvh --force \$toupdate; }
+rebuild() { p=\$1; mgarepo getsrpm -n \$p; rpm -ivh @*:\$p-*.src.rpm; spec=rpmbuild/SPECS/\$p.spec; sudo urpmi --auto --no-verify-rpm \$spec; rpmbuild --target $arch -ba \$spec; updatepkgs \$spec; }
+pkgs=\$(LC_ALL=C rpm -q --qf '%{SOURCERPM}\n' --whatrequires \$(cat \$perlapis_path) | perl -lne '/^(\S+)-[^-]+-[^-]+$/ and print \$1' | uniq); for p in \$pkgs; do rebuild \$p; done
EOF
echo $perlchroot
+
+cat <<EOF
+# ONCE THAT IS DONE, WE CAN REBUILD OTHER PERL PKGS USING THE REGULAR BS:
+# ========================================================================
+# Use the following to rebuild binary packages _not_ depending on libperl.so:
+# Those will install w/o dep issue but will fail at runtime with eg:
+# lib/RPM2.c: loadable library and perl binaries are mismatched (got handshake key 0xcd00080, needed 0xed00080)
+(for i in perl*;do rpm -qpl \$i|fgrep -q .so&&echo \$i;done>>/tmp/PERLBIN)
+(for i in \$(</tmp/PERLBIN);do rpm -qpR \$i|fgrep -q libperl||rpm -qp --qf '%{sourcerpm}\n' \$i;done>>/tmp/PERLBIN2)
+EOF