Anthony Towns wrote: > > > Looking at the source it seems more "based on" than "inspired by", > > > particular to "rpmstrap" itself, though the "functions" and "scripts/*" > > > files sure seem more derivative than just coincidently similar. If > > > so, it's in violation of debootstrap's license (by not including > > > debootstrap's copyright text), and it seems fairly rude to relicense it > > > from debootstrap's BSD-ish license to GPLv2+, not to mention expunging > > > my name and copyright notice from the source, and for that matter all > > > references to debootstrap. > > > > > > Removing the copyright's a license violation, and presumably renders the > > > program undistributable and unpackagable, afaics. > > > > > > At least Bastian Blank's cdebootstrap was written from scratch to > > > justify its different license and lack of recognition. Colour me > > > unimpressed.
Sam Hart wrote: > > For what it's worth, rpmstrap as it is today is actually based on a tool > > developed in house at Progeny. This tool could only bootstrap Fedora > > Core 2 at a specific revision. Looking at that code now and comparing it > > to what I see inside of debootstrap, the only real similarities I see > > are that they both have functions common to /many/ other shell scripts > > (usage(), die(), warn(), trace()). Anthony, I've been using shell functions with these names (and the expected corresponding behaviors) in shell scripts I write for years now, so you're probably going to need to accuse me of copyright infringement in shell-lib.sh[1] in the XFree86 and X.Org packages as well. > > I will have to check the legacy on this tool used internally at Progeny > > to ensure nothing came from debootstrap, but to the best of my knowledge > > it did not. In fact, looking at this internal tool now, it is only 314 > > lines of code, 153 of which are lists of FC2 packages, so it doesn't > > seem likely to share any common ancestry with debootstrap. > > I have just been given permission to post the original internal tool > used at Progeny which rpmstrap is based upon, in case anyone would care > to check the legacy for debootstrap code. > > This original tool was also called "rpmstrap" and was written from > scratch by Branden Robinson. It does not contain any code borrowed from > debootstrap. I assert this to be the case. I'm easily capable of writing the trivial shell script that constitutes the original "rpmstrap", and the modifications I made to it subsequently. For your edification, I'm attaching the SVN commit log for "rpmstrap" up to and including my last change to it. None of this is rocket science. Oh, what the hell, how about I attach the diff of each commit as well, making it all the easier to identify the exact spots where I absconded with debootstrap code, mustache twitching! > The first appearance of rpmstrap in the internal Progeny svn is the > following code: > http://hackers.progeny.com/~sam/rpmstrap/legacy/rpmstrap-original > > The most current revision of rpmstrap in the same svn is: > http://hackers.progeny.com/~sam/rpmstrap/legacy/rpmstrap > > This is the actual base for what is now rpmstrap as I maintain. It is > also why the current rpmstrap is GPLv2. > > The one thing I have just realized is that the current rpmstrap script > does not actually have Branden's name in it as an author (although his > name does exist in some of the suite scripts). I will rectify this > shortly and apologize for the oversight. Well, only if there's any of my original nasty kludge *left*. I kind of hope it isn't. :) (Okay, you can keep usage()/trace()/warn()/die(), but as for the rest... :) ) The original rpmstrap I wrote was done in haste, but it was not plagiarized. The accusation would be amusing if it weren't so insulting. [1] http://necrotic.deadbeast.net/svn/xorg-x11/trunk/debian/shell-lib.sh (There, trace() is not present, but a similar function, observe(), is. Neither function is an example of anything more than highly trivial and idiomatic shell usage.) -- Branden Robinson | GPG signed/encrypted mail welcome [EMAIL PROTECTED] | 1024D/9C0BCBFB Progeny Linux Systems | D5F6 D4C9 E25B 3D37 068C | 72E8 0F42 191A 9C0B CBFB
------------------------------------------------------------------------ r16721 | branden | 2005-02-15 12:06:40 -0500 (Tue, 15 Feb 2005) | 2 lines Install i386, not i686, version of openssl on x86_64 systems. ------------------------------------------------------------------------ r15950 | branden | 2004-10-01 12:22:58 -0500 (Fri, 01 Oct 2004) | 3 lines Fix erroneous architecture string in x86 glibc package for x86_64. ------------------------------------------------------------------------ r15943 | branden | 2004-09-29 15:35:44 -0500 (Wed, 29 Sep 2004) | 13 lines Add command-line options -h | --help, -l | --list, and -v | --verbose. The new -l | --list feature simply prints the list of required RPMs and exits. Stop hard-coding target directory name. Make the user specify it as an operand. Add usage message. Improve diagnostics. ------------------------------------------------------------------------ r15942 | branden | 2004-09-29 14:16:28 -0500 (Wed, 29 Sep 2004) | 4 lines Add i386 packages that had bitrotted away. rpmstrap works on i386 now. This time for sure! ------------------------------------------------------------------------ r15941 | branden | 2004-09-29 13:59:26 -0500 (Wed, 29 Sep 2004) | 4 lines Remove duplicate entry for e2fsprogs on x86. Renumber remaining passes. ------------------------------------------------------------------------ r15937 | branden | 2004-09-28 18:08:36 -0500 (Tue, 28 Sep 2004) | 6 lines Add ix86 support. Complain about unrecognized architectures. Add copyright notice and license statement (GPL). ------------------------------------------------------------------------ r15718 | branden | 2004-07-28 14:29:15 -0500 (Wed, 28 Jul 2004) | 6 lines Check in initial version of RPM bootstrap script, which prepares an RPM-based chroot environment (like debootstrap does for Debian systems). Only AMD64 is supported at present. ------------------------------------------------------------------------
Index: rpmstrap =================================================================== --- rpmstrap (revision 15718) +++ rpmstrap (revision 15937) @@ -2,6 +2,24 @@ # $Progeny$ +# Copyright 2004 Progeny Linux Systems, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# Author: Branden Robinson + PROGNAME=${0##*/} CHROOTDIR="./rpm-chroot" # Define DEBUG to "yes" if you want debugging output. @@ -22,7 +40,9 @@ exit 1 } -RPMS=$(cat <<EOF +case "$(uname -m)" in + x86_64) + RPMS=$(cat <<EOF 0:setup-2.5.33-1.noarch.rpm 1:filesystem-2.2.4-1.x86_64.rpm 2:basesystem-8.0-3.noarch.rpm @@ -110,7 +130,74 @@ 55:wget-1.9.1-5.x86_64.rpm 56:yum-2.0.7-1.1.noarch.rpm EOF -) + ) + ;; + i[3456]86) + RPMS=$(cat <<EOF +0:setup-2.5.33-1.noarch.rpm +1:filesystem-2.2.4-1.i386.rpm +2:basesystem-8.0-3.noarch.rpm +3:tzdata-2003d-2.noarch.rpm +4:glibc-common-2.3.3-27.i386.rpm +5:libgcc-3.3.3-7.i386.rpm +6:glibc-2.3.3-27.i386.rpm +7:mktemp-1.5-7.i386.rpm +8:termcap-11.0.1-18.1.noarch.rpm +9:libtermcap-2.0.8-38.i386.rpm +10:bash-2.05b-38.i386.rpm +11:ncurses-5.4-5.i386.rpm +12:zlib-1.2.1.1-2.1.i386.rpm +13:info-4.6-3.i386.rpm +14:libselinux-1.11.4-1.i386.rpm +15:findutils-4.1.7-25.i386.rpm +16:grep-2.5.1-26.i386.rpm +17:libattr-2.4.1-4.i386.rpm +18:libacl-2.2.7-5.i386.rpm +19:cracklib-2.7-27.1.i386.rpm +20:cracklib-dicts-2.7-27.1.i386.rpm +21:libstdc++-3.3.3-7.i386.rpm +22:db4-4.2.52-3.1.i386.rpm +23:glib-1.2.10-12.1.1.i386.rpm +24:glib2-2.4.0-1.i386.rpm +25:sed-4.0.8-4.i386.rpm +26:gawk-3.1.3-7.i386.rpm +27:fedora-release-2-5.i386.rpm +28:psmisc-21.4-2.i386.rpm +29:iproute-2.4.7-14.i386.rpm +30:iputils-20020927-13.i386.rpm +31:shadow-utils-4.0.3-21.i386.rpm +32:chkconfig-1.3.9-1.1.i386.rpm +33:e2fsprogs-1.35-7.1.i386.rpm +34:e2fsprogs-1.35-7.1.i386.rpm +35:ethtool-1.8-3.1.i386.rpm +36:mingetty-1.07-2.i386.rpm +37:net-tools-1.60-25.i386.rpm +38:popt-1.9.1-0.3.i386.rpm +39:coreutils-5.2.1-7.i386.rpm +40:beecrypt-3.1.0-3.i386.rpm +41:bzip2-libs-1.0.2-12.1.i386.rpm +42:bzip2-1.0.2-12.1.i386.rpm +43:elfutils-libelf-0.95-2.i386.rpm +44:elfutils-0.95-2.i386.rpm +45:gdbm-1.8.0-22.1.i386.rpm +46:gmp-4.1.2-14.i386.rpm +47:krb5-libs-1.3.3-1.i386.rpm +48:openssl-0.9.7a-35.i386.rpm +49:libxml2-2.6.8-1.i386.rpm +50:readline-4.3-10.1.i386.rpm +51:python-2.3.3-6.i386.rpm +52:libxml2-python-2.6.8-1.i386.rpm +53:rpm-4.3.1-0.3.i386.rpm +54:rpm-python-4.3.1-0.3.i386.rpm +55:wget-1.9.1-5.i386.rpm +56:yum-2.0.7-1.1.noarch.rpm +EOF + ) + ;; + *) + die "architecture $(uname -m) unrecognized" + ;; +esac if [ $(id -u) -ne 0 ]; then die "must have root privileges to create chroot"
Index: rpmstrap =================================================================== --- rpmstrap (revision 15937) +++ rpmstrap (revision 15941) @@ -168,29 +168,28 @@ 31:shadow-utils-4.0.3-21.i386.rpm 32:chkconfig-1.3.9-1.1.i386.rpm 33:e2fsprogs-1.35-7.1.i386.rpm -34:e2fsprogs-1.35-7.1.i386.rpm -35:ethtool-1.8-3.1.i386.rpm -36:mingetty-1.07-2.i386.rpm -37:net-tools-1.60-25.i386.rpm -38:popt-1.9.1-0.3.i386.rpm -39:coreutils-5.2.1-7.i386.rpm -40:beecrypt-3.1.0-3.i386.rpm -41:bzip2-libs-1.0.2-12.1.i386.rpm -42:bzip2-1.0.2-12.1.i386.rpm -43:elfutils-libelf-0.95-2.i386.rpm -44:elfutils-0.95-2.i386.rpm -45:gdbm-1.8.0-22.1.i386.rpm -46:gmp-4.1.2-14.i386.rpm -47:krb5-libs-1.3.3-1.i386.rpm -48:openssl-0.9.7a-35.i386.rpm -49:libxml2-2.6.8-1.i386.rpm -50:readline-4.3-10.1.i386.rpm -51:python-2.3.3-6.i386.rpm -52:libxml2-python-2.6.8-1.i386.rpm -53:rpm-4.3.1-0.3.i386.rpm -54:rpm-python-4.3.1-0.3.i386.rpm -55:wget-1.9.1-5.i386.rpm -56:yum-2.0.7-1.1.noarch.rpm +34:ethtool-1.8-3.1.i386.rpm +35:mingetty-1.07-2.i386.rpm +36:net-tools-1.60-25.i386.rpm +37:popt-1.9.1-0.3.i386.rpm +38:coreutils-5.2.1-7.i386.rpm +39:beecrypt-3.1.0-3.i386.rpm +40:bzip2-libs-1.0.2-12.1.i386.rpm +41:bzip2-1.0.2-12.1.i386.rpm +42:elfutils-libelf-0.95-2.i386.rpm +43:elfutils-0.95-2.i386.rpm +44:gdbm-1.8.0-22.1.i386.rpm +45:gmp-4.1.2-14.i386.rpm +46:krb5-libs-1.3.3-1.i386.rpm +47:openssl-0.9.7a-35.i386.rpm +48:libxml2-2.6.8-1.i386.rpm +49:readline-4.3-10.1.i386.rpm +50:python-2.3.3-6.i386.rpm +51:libxml2-python-2.6.8-1.i386.rpm +52:rpm-4.3.1-0.3.i386.rpm +53:rpm-python-4.3.1-0.3.i386.rpm +54:wget-1.9.1-5.i386.rpm +55:yum-2.0.7-1.1.noarch.rpm EOF ) ;;
Index: rpmstrap =================================================================== --- rpmstrap (revision 15941) +++ rpmstrap (revision 15942) @@ -150,7 +150,9 @@ 13:info-4.6-3.i386.rpm 14:libselinux-1.11.4-1.i386.rpm 15:findutils-4.1.7-25.i386.rpm +15:pcre-4.5-2.i386.rpm 16:grep-2.5.1-26.i386.rpm +16:words-2-22.noarch.rpm 17:libattr-2.4.1-4.i386.rpm 18:libacl-2.2.7-5.i386.rpm 19:cracklib-2.7-27.1.i386.rpm @@ -161,7 +163,7 @@ 24:glib2-2.4.0-1.i386.rpm 25:sed-4.0.8-4.i386.rpm 26:gawk-3.1.3-7.i386.rpm -27:fedora-release-2-5.i386.rpm +27:fedora-release-2-4.i386.rpm 28:psmisc-21.4-2.i386.rpm 29:iproute-2.4.7-14.i386.rpm 30:iputils-20020927-13.i386.rpm @@ -173,6 +175,15 @@ 36:net-tools-1.60-25.i386.rpm 37:popt-1.9.1-0.3.i386.rpm 38:coreutils-5.2.1-7.i386.rpm +38:pam-0.77-40.i386.rpm +38:initscripts-7.53-1.i386.rpm +38:SysVinit-2.85-25.i386.rpm +38:util-linux-2.12-18.i386.rpm +38:sysklogd-1.4.1-16.i386.rpm +38:dev-3.3.13-1.i386.rpm +38:which-2.16-2.i386.rpm +38:modutils-2.4.26-16.i386.rpm +38:procps-3.2.0-1.1.i386.rpm 39:beecrypt-3.1.0-3.i386.rpm 40:bzip2-libs-1.0.2-12.1.i386.rpm 41:bzip2-1.0.2-12.1.i386.rpm
Index: rpmstrap =================================================================== --- rpmstrap (revision 15942) +++ rpmstrap (revision 15943) @@ -21,9 +21,8 @@ # Author: Branden Robinson PROGNAME=${0##*/} -CHROOTDIR="./rpm-chroot" -# Define DEBUG to "yes" if you want debugging output. DEBUG= +SHOW_LIST= trace () { if [ -n "$DEBUG" ]; then @@ -40,6 +39,56 @@ exit 1 } +usage () { + cat <<EOF +Usage: $PROGNAME { -h | --help } + $PROGNAME { -l | --list } + $PROGNAME [ -v | --verbose ] DIRECTORY +Create a chroot environment in DIRECTORY using a minimal set of RPM packages. + +Options: + -h, --help display this message and exit + -l, --list list RPMs required for chroot creation and exit + -v, --verbose print verbose status messages +EOF +} + +# Parse command line. +TEMP=$(getopt --options hlv \ + --longoptions help,list,verbose \ + -n "$PROGNAME" -- "$@") + +if [ $? -ne 0 ]; then + echo "$PROGNAME: error while getting options" >&2 +fi + +eval set -- "$TEMP" + +while :; do + case "$1" in + -h|--help) + usage + exit 0 + ;; + -l|--list) + SHOW_LIST=yes + ;; + -v|--verbose) + DEBUG=yes + ;; + --) + # End of option arguments. + shift + break + ;; + *) + die "unrecognized option; use \"$PROGNAME --help\" for help" + exit 2 + ;; + esac + shift +done + case "$(uname -m)" in x86_64) RPMS=$(cat <<EOF @@ -209,15 +258,21 @@ ;; esac +if [ -n "$SHOW_LIST" ]; then + echo "$RPMS" | sed 's/[[:digit:]]\+://' + exit 0 +fi + +if [ $# -ne 1 ]; then + die "specify a directory to install to; use \"$PROGNAME --help\" for help" +fi + +CHROOTDIR="$1" + if [ $(id -u) -ne 0 ]; then die "must have root privileges to create chroot" fi -# Process command-line arguments. -if [ -n "$1" ]; then - CHROOTDIR="$1" -fi - trace "creating chroot directory" if [ -e "$CHROOTDIR" ]; then die "chroot directory $CHROOTDIR already exists; aborting"
Index: rpmstrap =================================================================== --- rpmstrap (revision 15943) +++ rpmstrap (revision 15950) @@ -100,7 +100,7 @@ 5:libgcc-3.3.3-7.i386.rpm 5:libgcc-3.3.3-7.x86_64.rpm 6:glibc-2.3.3-27.x86_64.rpm -6:glibc-2.3.3-27.i686.rpm +6:glibc-2.3.3-27.i386.rpm 7:mktemp-1.5-7.x86_64.rpm 8:termcap-11.0.1-18.1.noarch.rpm 9:libtermcap-2.0.8-38.x86_64.rpm
Index: rpmstrap =================================================================== --- rpmstrap (revision 15950) +++ rpmstrap (revision 16721) @@ -168,7 +168,7 @@ 47:krb5-libs-1.3.3-1.x86_64.rpm 47:krb5-libs-1.3.3-1.i386.rpm 48:openssl-0.9.7a-35.x86_64.rpm -48:openssl-0.9.7a-35.i686.rpm +48:openssl-0.9.7a-35.i386.rpm 49:libxml2-2.6.8-1.x86_64.rpm 49:libxml2-2.6.8-1.i386.rpm 50:readline-4.3-10.1.x86_64.rpm