1) sono suddivise in troppi file
2) quelle base sovrascrivono quelle di slackware. Di quelle base a me serve solamente glibc-solibs perchè senza non posso fare ldd e altro, così mi converto manualmente la glibc-solibs di slackware32
Visto che tanto quei pacchetti li installo sempre tutti, mi sono fatto una multilib all-in-one.
ecco lo script
Codice: Seleziona tutto
#!/bin/bash
if ! env|grep -q WGETOPT;then
WGETOPT=-q
fi
SLACK=${SLACK:-13.1}
PKGNAME=compat32-multilibs
VERSION=0.1_$SLACK
ARCH=x86_64
BUILD=1mt
MIRROR=http://ftp.osuosl.org/pub/slackware/slackware-$SLACK/slackware
CWD=`pwd`
TMP=${TMP:-/tmp/buildpkgs/$PKGNAME}
FILES=$TMP/files
PKG=$TMP/$PKGNAME-package
SRC=$TMP/src-$VERSION
PKGTMP=$SRC/pkgtmp
rm -rf $SRC $PKG
mkdir -p $TMP $PKG $SRC $PKGTMP $FILES
DOINST=$PKG/install/doinst.sh
mkdir -p $PKG/install/
mkdir -p $PKG/usr/doc/$PKGNAME-$VERSION
>$PKG/usr/doc/$PKGNAME-$VERSION/packages.txt
cp $0 $PKG/usr/doc/$PKGNAME-$VERSION/createpackage.sh
> $DOINST
PACKS=$(echo "
BASE_LIBS
aaa_elflibs glibc-solibs
GROUP_A
bzip2 cups cxxlibs dbus e2fsprogs util-linux-ng
openssl-solibs_NONEEDED
GROUP_AP
mpg123 mysql
GROUP_D
libtool
GROUP_L
alsa-lib alsa-oss atk audiofile cairo dbus-glib esound expat freetype gamin glib2
libart_lgpl libexif libgphoto2 libidn libjpeg libmng libpng libtermcap libtiff libxml2
hal jasper lcms libxslt ncurses svgalib v4l-utils popt qt readline sdl zlib
gtk+2 pango seamonkey-solibs
GROUP_N
curl cyrus-sasl gnutls libgcrypt libgpg-error openldap-client
openssl
GROUP_X
fontconfig glew libFS libICE libSM
libX11 libXScrnSaver libXTrap libXau libXaw libXcomposite libXcursor
libXdamage libXdmcp libXevie libXext libXfixes libXfont libXfontcache
libXft libXi libXinerama libXmu libXp libXpm libXprintUtil libXrandr
libXrender libXres libXt libXtst libXv libXvMC libXxf86dga libXxf86misc
libXxf86vm
libdmx libdrm libfontenc libxcb
mesa pixman
")
MANIFEST=$FILES/MANIFEST-$VERSION
wget $WGETOPT -c -O $MANIFEST.bz2 $MIRROR/MANIFEST.bz2
bzip2 -qdk $MANIFEST.bz2 >/dev/null 2>&1
TXZ=""
cat $MANIFEST|while read ROW;do
cd $SRC
if [ "${ROW:0:13}" == "|| Package:" ];then
# inizio pacchetto
SPLIT=($(echo "$ROW"|sed -r 's#^.*Package:.*\./([a-z]*)/(.*)-([^-]*)-([^-]*)-([^\.]*)\.(t.z).*$#\1 \2 \3 \4 \5 \6#'))
PACKLOC=${SPLIT[0]}
PACKNM=${SPLIT[1]}
PACKVER=${SPLIT[2]}
PACKARCH=${SPLIT[3]}
PACKBUILD=${SPLIT[4]}
PACKEXT=${SPLIT[5]}
PACKNAME=$PACKNM-$PACKVER-$PACKARCH-$PACKBUILD
PACKFILE=$FILES/$PACKNAME.$PACKEXT
PACKURL=$MIRROR/$PACKLOC/$PACKNAME.$PACKEXT
if echo $PACKS|grep -q " $PACKNM ";then
echo "PACKAGE: $PACKNM - ver: $PACKVER - arch: $PACKARCH - build: $PACKBUILD - ext: $PACKEXT - group: $PACKLOC"
else
echo -ne "skipping package: $PACKLOC/$PACKNM \r"
SPLIT=""
fi
continue
fi
if [ -z "$SPLIT" ];then continue;fi
if [ "${ROW:0:2}" == "++" ]||[ "${ROW:0:2}" == "||" ];then continue;fi
echo "Download 32bit package"
wget $WGETOPT -c $PACKURL -O $PACKFILE
rm -rf $PKGTMP
mkdir -p $PKGTMP
echo "Exploding package"
cd $PKGTMP
( umask 000; tar xf $PACKFILE install usr/lib/ lib/ usr/bin/ usr/i486-slackware-linux/ etc/gtk-2.0/ etc/pango/ 2>/dev/null)
if [ -e install/doinst.sh ];then cp -f install/doinst.sh $SRC/$PACKNAME.sh;fi
# Take care of 32bit binaries:
if [ "$PACKNM" = "gtk+2" -o "$PACKNM" = "pango" ]; then
find usr/bin -type f ! -name "*-32" -exec mv {} {}-32 \;
elif [ -d usr/bin ]; then
mkdir ./32
find usr/bin -type f -exec mv {} ./32 \;
rm -rf usr/bin/*
mv ./32 usr/bin/
fi
if [ "$PACKNM" = "gtk+2" -o "$PACKNM" = "pango" ]; then
cat install/doinst.sh | grep -v '( cd usr/bin' | grep -v '( cd usr/doc' >> $DOINST
if [ "$PACKNM" = "gtk+2" ]; then
echo "config etc/gtk-2.0/i486-slackware-linux/im-multipress.conf.new" >> $DOINST
fi
elif [ "$PACKNM" = "glibc-solibs" ];then
mv $DOINST $DOINST.2
cat install/doinst.sh |grep -v -e glibc.sh.new -e glibc.csh.new > $DOINST
cat $DOINST.2 >>$DOINST
rm $DOINST.2
elif [ -f install/doinst.sh ]; then
cat install/doinst.sh |grep -v "etc/ld.so.conf" |grep -E '(usr/bin |lib |lib/)' |sed -e 's#usr/bin#usr/bin/32#g' >> $DOINST
fi
if [ "$PACKNM" = "cxxlibs" ]; then
mkdir -p usr/lib
for OLIB in $(find usr/i486-slackware-linux/lib -type f -maxdepth 1) ; do cp -a $OLIB usr/lib/; done
cat install/doinst.sh | grep '/i486-slackware-linux' | sed -e 's#/i486-slackware-linux##g' >> $DOINST
fi
if [ "$PACKNM" = "qt" -o "$PACKNM" = "qt3" ]; then
cat install/doinst.sh | grep -v 'usr/bin' | grep -v 'opt/kde3/bin' >>$DOINST
fi
echo "Merging package"
rm -rf install/
find -type d -exec mkdir -p $PKG/{} \;
find ! -type d -exec mv -f {} $PKG/{} \;
echo $PACKNAME >> $PKG/usr/doc/$PKGNAME-$VERSION/packages.txt
rm -rf $PKGTMP
SPLIT=""
echo
done
cat <<EOT > $PKG/install/slack-desc
# HOW TO EDIT THIS FILE:
# The "handy ruler" below makes it easier to edit a package description. Line
# up the first '|' above the ':' following the base package name, and the '|'
# on the right side marks the last column you can put a character in. You must
# make exactly 11 lines for the formatting to be correct. It's also
# customary to leave one space after the ':'.
|-----handy-ruler------------------------------------------------------|
compat32-multilibs: Multilib 32bit compatibility for Slackware64
compat32-multilibs:
compat32-multilibs:
compat32-multilibs:
compat32-multilibs:
compat32-multilibs:
compat32-multilibs:
compat32-multilibs:
compat32-multilibs:
compat32-multilibs:
compat32-multilibs:
EOT
cd $PKG
makepkg -l n -c n $CWD/$PKGNAME-$VERSION-$ARCH-$BUILD.txz
ed ecco i pacchetti per 13.1 e current (c.a. 74Mb l'uno)
compat32-multilibs-0.1_13.1-x86_64-1mt.txz
compat32-multilibs-0.1_current-x86_64-1mt.txz
Che ne pensate?
Ciao
01