From 69dd99f961988fa15da8d7f0d63b62f3385419c3 Mon Sep 17 00:00:00 2001 From: Eric Hameleers Date: Fri, 22 Mar 2013 16:47:17 -0700 Subject: Initial commit of a Slackware cross-arch bootstrap framework. --- .../a/rpm2tgz/patches/0001-fix-d-handling.patch.gz | Bin 0 -> 567 bytes ...purious-path-to-rpm-file-with-n-option.patch.gz | Bin 0 -> 651 bytes .../0003-allow-every-user-to-use-rpm2tgz.patch.gz | Bin 0 -> 521 bytes ...0004-produce-more-compliant-slack-desc.patch.gz | Bin 0 -> 707 bytes .../patches/0005-gzip-man-info-pages.patch.gz | Bin 0 -> 792 bytes ...e-use-.txz-format-in-slackware-current.patch.gz | Bin 0 -> 755 bytes ...-for-.txz-packages-and-rpm2txz-symlink.patch.gz | Bin 0 -> 969 bytes .../0008-Avoid-none-values-in-slack-desc.patch.gz | Bin 0 -> 674 bytes .../0009-Add-c-option-just-as-makepkg-c-y.patch.gz | Bin 0 -> 1057 bytes source.local/a/rpm2tgz/rpm2targz | 232 +++++++++++++++++++++ source.local/a/rpm2tgz/rpm2targz.README | 18 ++ source.local/a/rpm2tgz/rpm2tgz.SlackBuild | 97 +++++++++ source.local/a/rpm2tgz/rpmoffset.c | 25 +++ source.local/a/rpm2tgz/slack-desc | 19 ++ 14 files changed, 391 insertions(+) create mode 100644 source.local/a/rpm2tgz/patches/0001-fix-d-handling.patch.gz create mode 100644 source.local/a/rpm2tgz/patches/0002-fix-spurious-path-to-rpm-file-with-n-option.patch.gz create mode 100644 source.local/a/rpm2tgz/patches/0003-allow-every-user-to-use-rpm2tgz.patch.gz create mode 100644 source.local/a/rpm2tgz/patches/0004-produce-more-compliant-slack-desc.patch.gz create mode 100644 source.local/a/rpm2tgz/patches/0005-gzip-man-info-pages.patch.gz create mode 100644 source.local/a/rpm2tgz/patches/0006-should-we-use-.txz-format-in-slackware-current.patch.gz create mode 100644 source.local/a/rpm2tgz/patches/0007-Add-support-for-.txz-packages-and-rpm2txz-symlink.patch.gz create mode 100644 source.local/a/rpm2tgz/patches/0008-Avoid-none-values-in-slack-desc.patch.gz create mode 100644 source.local/a/rpm2tgz/patches/0009-Add-c-option-just-as-makepkg-c-y.patch.gz create mode 100644 source.local/a/rpm2tgz/rpm2targz create mode 100644 source.local/a/rpm2tgz/rpm2targz.README create mode 100755 source.local/a/rpm2tgz/rpm2tgz.SlackBuild create mode 100644 source.local/a/rpm2tgz/rpmoffset.c create mode 100644 source.local/a/rpm2tgz/slack-desc (limited to 'source.local/a/rpm2tgz') diff --git a/source.local/a/rpm2tgz/patches/0001-fix-d-handling.patch.gz b/source.local/a/rpm2tgz/patches/0001-fix-d-handling.patch.gz new file mode 100644 index 0000000..2eea9d2 Binary files /dev/null and b/source.local/a/rpm2tgz/patches/0001-fix-d-handling.patch.gz differ diff --git a/source.local/a/rpm2tgz/patches/0002-fix-spurious-path-to-rpm-file-with-n-option.patch.gz b/source.local/a/rpm2tgz/patches/0002-fix-spurious-path-to-rpm-file-with-n-option.patch.gz new file mode 100644 index 0000000..3464dd2 Binary files /dev/null and b/source.local/a/rpm2tgz/patches/0002-fix-spurious-path-to-rpm-file-with-n-option.patch.gz differ diff --git a/source.local/a/rpm2tgz/patches/0003-allow-every-user-to-use-rpm2tgz.patch.gz b/source.local/a/rpm2tgz/patches/0003-allow-every-user-to-use-rpm2tgz.patch.gz new file mode 100644 index 0000000..046dfc2 Binary files /dev/null and b/source.local/a/rpm2tgz/patches/0003-allow-every-user-to-use-rpm2tgz.patch.gz differ diff --git a/source.local/a/rpm2tgz/patches/0004-produce-more-compliant-slack-desc.patch.gz b/source.local/a/rpm2tgz/patches/0004-produce-more-compliant-slack-desc.patch.gz new file mode 100644 index 0000000..6f6f94b Binary files /dev/null and b/source.local/a/rpm2tgz/patches/0004-produce-more-compliant-slack-desc.patch.gz differ diff --git a/source.local/a/rpm2tgz/patches/0005-gzip-man-info-pages.patch.gz b/source.local/a/rpm2tgz/patches/0005-gzip-man-info-pages.patch.gz new file mode 100644 index 0000000..0e47ea1 Binary files /dev/null and b/source.local/a/rpm2tgz/patches/0005-gzip-man-info-pages.patch.gz differ diff --git a/source.local/a/rpm2tgz/patches/0006-should-we-use-.txz-format-in-slackware-current.patch.gz b/source.local/a/rpm2tgz/patches/0006-should-we-use-.txz-format-in-slackware-current.patch.gz new file mode 100644 index 0000000..9ccdcf2 Binary files /dev/null and b/source.local/a/rpm2tgz/patches/0006-should-we-use-.txz-format-in-slackware-current.patch.gz differ diff --git a/source.local/a/rpm2tgz/patches/0007-Add-support-for-.txz-packages-and-rpm2txz-symlink.patch.gz b/source.local/a/rpm2tgz/patches/0007-Add-support-for-.txz-packages-and-rpm2txz-symlink.patch.gz new file mode 100644 index 0000000..8238281 Binary files /dev/null and b/source.local/a/rpm2tgz/patches/0007-Add-support-for-.txz-packages-and-rpm2txz-symlink.patch.gz differ diff --git a/source.local/a/rpm2tgz/patches/0008-Avoid-none-values-in-slack-desc.patch.gz b/source.local/a/rpm2tgz/patches/0008-Avoid-none-values-in-slack-desc.patch.gz new file mode 100644 index 0000000..d6c1a08 Binary files /dev/null and b/source.local/a/rpm2tgz/patches/0008-Avoid-none-values-in-slack-desc.patch.gz differ diff --git a/source.local/a/rpm2tgz/patches/0009-Add-c-option-just-as-makepkg-c-y.patch.gz b/source.local/a/rpm2tgz/patches/0009-Add-c-option-just-as-makepkg-c-y.patch.gz new file mode 100644 index 0000000..58a345b Binary files /dev/null and b/source.local/a/rpm2tgz/patches/0009-Add-c-option-just-as-makepkg-c-y.patch.gz differ diff --git a/source.local/a/rpm2tgz/rpm2targz b/source.local/a/rpm2tgz/rpm2targz new file mode 100644 index 0000000..5c91c64 --- /dev/null +++ b/source.local/a/rpm2tgz/rpm2targz @@ -0,0 +1,232 @@ +#!/bin/sh +# Copyright 1997, 1998 Patrick Volkerding, Moorhead, MN USA +# Copyright 2002, 2004 Slackware Linux, Inc., Concord, CA USA +# Copyright 2006, 2009 Patrick Volkerding, Sebeka, MN USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +CWD=$(pwd) + +# Breaking the help out into it's own deal +usage() { + echo "$0: Converts RPM format to standard GNU tar + GNU zip format." + echo " (view converted packages with \"less\", install and remove" + echo " with \"installpkg\", \"removepkg\", \"pkgtool\", or manually" + echo " with \"tar\")" + echo + if [ "$(basename $0)" = "rpm2tgz" ]; then + echo "Usage: $0 [OPTION] " + echo " (Outputs \"file.tgz\")" + echo + echo " -s extract the install scripts to /usr/doc/\$PRGNAM-\$VERSION/" + echo " for review." + echo " -S extracts the install scripts to be executed on package installation" + echo " (only pre-install and post-install scripts used)" + echo " USE WITH CAUTION! " + echo " -n name the output package using the rpm's metadata" + echo " -r extract what the rpm's \"requires\" (dependencies)" + echo " as documention to /usr/doc/\$PRGNAM-\$VERSION/" + echo " -d attempt a wellformed slack-desc from the rpm meta data" + echo + else + echo "Usage: $0 " + echo " (Outputs \"file.tar.gz\")" + fi + exit 1; +} + +# Create a new temporary directory with a secure filename: +make_temp_dir() { + if [ -x "$(which mcookie)" ]; then + tempd=/tmp/tmp.$(mcookie) + mkdir -p -m 0755 $tempd + elif [ -x "$(which openssl)" ]; then + tempd=/tmp/tmp.$(dd if=/dev/urandom bs=1k count=1 2> /dev/null | openssl dgst -md5) + mkdir -p -m 0755 $tempd + elif [ -x "$(which md5)" ]; then + tempd=/tmp/tmp.$(dd if=/dev/urandom bs=1k count=1 2> /dev/null | md5) + mkdir -p -m 0755 $tempd + elif [ -x "$(which mktemp)" ]; then + tempd=$(mktemp -d) + chmod 755 $tempd + ## Uncomment for insecure use, but don't blame me: + #else + # tempd=/tmp/tmp.$$ + # mkdir -p -m 0755 $tempd + fi + if [ -d $tempd ]; then # success, return the name of the directory: + echo $tempd + else + echo "ERROR: Could not find mcookie, openssl, or md5." + echo " Exiting since a secure temporary directory could not be made." + exit 1 + fi +} + +# Get the meta data off of the rpm +get_meta_data() { + RPM=$1 + PRGNAM=$(rpm -qp --qf %{NAME} $RPM ) + ARCH=$(rpm -qp --qf %{ARCH} $RPM ) + VERSION=$(rpm -qp --qf %{VERSION} $RPM ) + BUILD=$(rpm -qp --qf %{RELEASE} $RPM ) +} + +if [ "$1" = "" ]; then + usage +fi + +ARGS=$(getopt "hsSndr" $* ) +set -- ${ARGS} +for i; do + case "$1" in + -s) + DOC_SCRIPTS="true" + shift + ;; + -S) + INSTALL_SCRIPTS="true" + shift + ;; + -r) + DOC_REQUIRES="true" + shift + ;; + -d) + DESC="true" + shift + ;; + -n) + META_NAME="true" + shift + ;; + --) + shift + break + ;; + esac +done + + +for i in $* ; do + + # Determine if this is a source or binary RPM. + # If we have getrpmtype, use that. Otherwise, try "file". + if which getrpmtype 1> /dev/null 2> /dev/null; then + if getrpmtype -n $i | grep source 1> /dev/null 2> /dev/null ; then + isSource=1 + else + isSource=0 + fi + else # use file. This works fine on Slackware, and is the default. + if file $i | grep RPM | grep -w src 1> /dev/null 2> /dev/null ; then + isSource=1 + else + isSource=0 + fi + fi + + # Create a temporary directory: + TMPDIR=$(make_temp_dir) + + # Extract the RPM: + ofn=$TMPDIR/$(basename $i .rpm).cpio + if which rpm2cpio 1> /dev/null 2> /dev/null ; then + rpm2cpio $i > $ofn 2> /dev/null + if [ ! $? = 0 ]; then + echo "ERROR: rpm2cpio failed. (maybe $i is not an RPM?)" + rm -rf $TMPDIR + continue + fi + else # less reliable than rpm2cpio... + ( dd ibs=$(rpmoffset < $i) skip=1 if=$i 2> /dev/null | gzip -dc > $ofn 2>/dev/null ) || \ + ( dd ibs=$(rpmoffset < $i) skip=1 if=$i 2> /dev/null | bzip2 -dc > $ofn 2>/dev/null ) + fi + DEST=$TMPDIR + if [ "$isSource" = "1" ]; then + DEST=$DEST/$(basename $(basename $i .rpm) .src) + fi + mkdir -p $DEST + ( cd $DEST + cpio -i -m -d < $ofn 1> /dev/null 2> /dev/null + rm -f $ofn + find . -type d -perm 700 -exec chmod 755 {} \; + ) + + # Save the scripts in the rpm as documentation + if [ "$DOC_SCRIPTS" = "true" ]; then + get_meta_data $i + mkdir -p $TMPDIR/usr/doc/$PRGNAM-$VERSION/ + for state in PREIN POSTIN PREUN POSTUN ; do + if [ "$(rpm -qp --qf %{$state} $i )" != '(none)' ] ; then + rpm -qp --qf %{$state} $i > $TMPDIR/usr/doc/$PRGNAM-$VERSION/$state.script + fi + done + fi + + # Save the scripts in the rpm to be installed + if [ "$INSTALL_SCRIPTS" = "true" ]; then + mkdir -p $TMPDIR/install + echo '#!/bin/sh' > $TMPDIR/install/doinst.sh + for state in PREIN POSTIN ; do + if [ "$(rpm -qp --qf %{$state} $i )" != '(none)' ] ; then + rpm -qp --qf %{$state} $i > $TMPDIR/install/doinst.sh + echo "" >> $TMPDIR/install/doinst.sh + fi + done + fi + + # Save the rpm's requires (dependencies) as documentation + if [ "$DOC_REQUIRES" = "true" ]; then + get_meta_data $i + mkdir -p $TMPDIR/usr/doc/$PRGNAM-$VERSION/ + rpm -qp --qf %{REQUIRES} $i > $TMPDIR/usr/doc/$PRGNAM-$VERSION/README-$PRGNAM-rpm-dependencies.txt + fi + + # Save the rpm's summary and description as the slack-desc + if [ "$DESC" = "true" ]; then + mkdir -p $TMPDIR/install + rpm -qp --qf %{SUMMARY} $i | sed -l 70 -r "s/^(.*)/$PRGNAM: $PRGNAM - \1\n/" > $TMPDIR/install/slack-desc + rpm -qp --qf %{DESCRIPTION} $i | sed -l 70 -r "s/^/$PRGNAM: /" >> $TMPDIR/install/slack-desc + fi + + # If this program was called as "rpm2targz", then repack as a plain + # tar+gz archive. If it was called as "rpm2tgz", use Slackware's + # makepkg to produce the .tgz: + if [ "$(basename $0)" = "rpm2tgz" ]; then + ( + cd $TMPDIR + if [ "$META_NAME" = "true" ]; then + get_meta_data $CWD/$i + makepkg -l y -c n $CWD/$PRGNAM-$VERSION-$ARCH-${BUILD}.tgz + else + makepkg -l y -c n $CWD/$(basename $i .rpm).tgz + fi + ) + else + ( cd $TMPDIR ; tar cf - . ) > $(basename $i .rpm).tar + gzip -9 $(basename $i .rpm).tar + fi + + # Remove temporary directory: + rm -rf $TMPDIR + +done + diff --git a/source.local/a/rpm2tgz/rpm2targz.README b/source.local/a/rpm2tgz/rpm2targz.README new file mode 100644 index 0000000..2ce141c --- /dev/null +++ b/source.local/a/rpm2tgz/rpm2targz.README @@ -0,0 +1,18 @@ + +This package contains 'rpm2targz', a simple utility to convert Red Hat-style +RPM packages into standard tar.gz archives. Converted binary packages can then +be installed/removed using the 'installpkg/removepkg' commands, or 'pkgtool'. + +It's advisable to at least examine the converted package with 'less' to make +sure it won't do anything too crazy to your system. If it does, Patrick +Volkerding and David Cantrell are not responsible, so use this at your own +risk. :-) + +By default, rpm2targz will attempt to use "file" to detect source RPMS, and will +put the contents into a subdirectory in the resulting package. This may not be +portable to other operating systems -- if you're trying to run rpm2targz on an +OS that doesn't have a file that knows RPM types, and you care about this source +RPM feature, you can compile and install David Cantrell's standalone getrpmtype +utility. The getrpmtype.tar.gz source archive can be found in Slackware's +source tree in source/a/rpm2tgz/. + diff --git a/source.local/a/rpm2tgz/rpm2tgz.SlackBuild b/source.local/a/rpm2tgz/rpm2tgz.SlackBuild new file mode 100755 index 0000000..74d820f --- /dev/null +++ b/source.local/a/rpm2tgz/rpm2tgz.SlackBuild @@ -0,0 +1,97 @@ +#!/bin/sh + +# Copyright 2008, 2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# Modified 2012 by Eric Hameleers for ARM port. + + +VERSION=1.2.2 +BUILD=${BUILD:-1} + +# Automatically determine the architecture we're building on: +MARCH=$( uname -m ) +if [ -z "$ARCH" ]; then + case "$MARCH" in + i?86) export ARCH=i486 ;; + armv7hl) export ARCH=$MARCH ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$MARCH ;; + esac +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-rpm2tgz + +rm -rf $PKG +mkdir -p $TMP $PKG + +echo "+===========+" +echo "| rpm2targz |" +echo "+===========+" +cd $TMP +mkdir -p $PKG/usr/bin +cc -o $PKG/usr/bin/rpmoffset $CWD/rpmoffset.c +cat $CWD/rpm2targz > $PKG/usr/bin/rpm2targz + +# Apply some patches: +( cd $PKG/usr/bin + # These are all against "rpm2tgz", so mv it until we are done patching: + mv rpm2targz rpm2tgz + zcat $CWD/patches/0001-fix-d-handling.patch.gz | patch -p1 || exit 1 + zcat $CWD/patches/0002-fix-spurious-path-to-rpm-file-with-n-option.patch.gz | patch -p1 || exit 1 + zcat $CWD/patches/0003-allow-every-user-to-use-rpm2tgz.patch.gz | patch -p1 || exit 1 + zcat $CWD/patches/0004-produce-more-compliant-slack-desc.patch.gz | patch -p1 || exit 1 + # Not applied. Rationale: We do not want to alter the files in the RPM. + #zcat $CWD/patches/0005-gzip-man-info-pages.patch.gz | patch -p1 || exit 1 + # Not applied. Rationale: .tgz works with all versions of Slackware. + # Translated RPMs may be targeting systems with no .txz support. + #zcat $CWD/patches/0006-should-we-use-.txz-format-in-slackware-current.patch.gz | patch -p1 || exit 1 + # OK, I will take this version of the patch, as it doesn't change the + # default behaviour of rpm2tgz. + # mv the script back (wow, this is rather random ;-) + mv rpm2tgz rpm2targz + zcat $CWD/patches/0007-Add-support-for-.txz-packages-and-rpm2txz-symlink.patch.gz | patch -p1 || exit 1 + zcat $CWD/patches/0008-Avoid-none-values-in-slack-desc.patch.gz | patch -p1 || exit 1 + zcat $CWD/patches/0009-Add-c-option-just-as-makepkg-c-y.patch.gz | patch -p1 || exit 1 +) || exit 1 + +( cd $PKG/usr/bin ; ln -sf rpm2targz rpm2tgz ) +( cd $PKG/usr/bin ; ln -sf rpm2targz rpm2txz ) + +chmod 755 $PKG/usr/bin/{rpmoffset,rpm2targz} +mkdir -p $PKG/usr/doc/rpm2targz +cp -a $CWD/rpm2targz.README $PKG/usr/doc/rpm2targz/rpm2targz.README +chown root:root $PKG/usr/doc/rpm2targz/rpm2targz.README +chmod 644 $PKG/usr/doc/rpm2targz/rpm2targz.README +( cd $PKG + find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null +) + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc + +# Build the package: +cd $PKG +/sbin/makepkg -l y -c n $TMP/rpm2tgz-$VERSION-$ARCH-$BUILD.txz + diff --git a/source.local/a/rpm2tgz/rpmoffset.c b/source.local/a/rpm2tgz/rpmoffset.c new file mode 100644 index 0000000..fd09e62 --- /dev/null +++ b/source.local/a/rpm2tgz/rpmoffset.c @@ -0,0 +1,25 @@ + +/* Find how deeply inside an .RPM the real data is */ +/* kept, and report the offset in bytes */ + +/* Wouldn't it be a lot more sane if we could just untar these things? */ + +#include +#include + +/* These offsets keep getting bigger, so we're going to just bite a 2MB */ +/* chunk of RAM right away so that we have enough. Yeah, horrible */ +/* quick and dirty implementation, but hey -- it gets the job done. */ + +#define RPMBUFSIZ 2097152 + +main() +{ + char *buff = malloc(RPMBUFSIZ),*eb,*p; + for (p = buff, eb = buff + read(0,buff,RPMBUFSIZ); p < eb; p++) + if ((*p == '\037' && p[1] == '\213' && p[2] == '\010') || + (*p == 'B' && p[1] == 'Z' && p[2] == 'h' && '1' <= p[3] && p[3] <= '9' )) + printf("%d\n",p - buff), + exit(0); + exit(1); +} diff --git a/source.local/a/rpm2tgz/slack-desc b/source.local/a/rpm2tgz/slack-desc new file mode 100644 index 0000000..8f8861b --- /dev/null +++ b/source.local/a/rpm2tgz/slack-desc @@ -0,0 +1,19 @@ +# 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------------------------------------------------------| +rpm2tgz: rpm2tgz (a tool for converting an RPM archive into a tar+gz one) +rpm2tgz: +rpm2tgz: Converts RPM format to Slackware's GNU tar + GNU zip format. (view +rpm2tgz: converted packages with "less", install and remove with "installpkg", +rpm2tgz: "removepkg", "pkgtool", or manually with "tar"). +rpm2tgz: +rpm2tgz: Converted packages come with no warranty. ;-) +rpm2tgz: +rpm2tgz: +rpm2tgz: +rpm2tgz: -- cgit v1.2.3-79-gdb01