Add febootstrap-to-initramfs --files option, version 2.2 2.2
authorRichard Jones <rjones@trick.home.annexia.org>
Mon, 15 Jun 2009 13:57:41 +0000 (14:57 +0100)
committerRichard Jones <rjones@trick.home.annexia.org>
Mon, 15 Jun 2009 13:57:41 +0000 (14:57 +0100)
configure.ac
febootstrap-to-initramfs.pod
febootstrap-to-initramfs.sh

index cbed71b..e6b6df0 100644 (file)
@@ -17,7 +17,7 @@ dnl Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 dnl
 dnl Written by Richard W.M. Jones <rjones@redhat.com>
 
-AC_INIT(febootstrap,2.1)
+AC_INIT(febootstrap,2.2)
 AM_INIT_AUTOMAKE
 
 AC_CHECK_PROG(PERLDOC,[perldoc],[perldoc],[no])
index be5985c..951cc10 100644 (file)
@@ -4,7 +4,7 @@ febootstrap-to-initramfs - Convert febootstrap root to initramfs (cpio) file.
 
 =head1 SYNOPSIS
 
- febootstrap-to-initramfs DIR > initrd.img
+ febootstrap-to-initramfs [--files=filelist] DIR > initrd.img
 
 =head1 DESCRIPTION
 
@@ -20,6 +20,21 @@ The permissions inside the initrd image are corrected automatically
 (see the discussion of fakeroot logfile in the L<febootstrap(8)>
 page).  You do I<not> need to run this command as root.
 
+=head1 OPTIONS
+
+=over 4
+
+=item --files=filelist
+
+C<filelist> should be a file containing a list of the files to be
+added to the initramfs (one per line).  Only those files are added and
+any others are ignored.
+
+When the C<--files> option is not given, all files in C<DIR> are added
+to the initramfs image.
+
+=back
+
 =head1 /init
 
 Normal initramfs images start by executing the program or script
index 93d415a..83c661c 100755 (executable)
 
 unset CDPATH
 
+TEMP=`getopt \
+        -o '' \
+        --long files:,help \
+        -n febootstrap-to-initramfs -- "$@"`
+if [ $? != 0 ]; then
+    echo "febootstrap-to-initramfs: problem parsing the command line arguments"
+    exit 1
+fi
+eval set -- "$TEMP"
+
+files=
+
+usage ()
+{
+    echo "Usage: febootstrap-to-initramfs [--files=filelist] DIR"
+    echo "Please read febootstrap-to-initramfs(8) man page for more information."
+}
+
+while true; do
+    case "$1" in
+       --files)
+           files=$2
+           shift 2;;
+       --help)
+           usage
+           exit 0;;
+       --)
+           shift
+           break;;
+       *)
+           echo "Internal error!"
+           exit 1;;
+    esac
+done
+
 if [ $# -ne 1 ]; then
-    echo "febootstrap-to-initramfs DIR > initrd.img"
+    usage
     exit 1
 fi
 
@@ -35,8 +70,17 @@ fi
 set -e
 
 if [ -f fakeroot.log ]; then
-    fakeroot -i fakeroot.log \
-    sh -c 'find -not -name fakeroot.log -a -print0 | cpio -o -0 -H newc | gzip --best'
+    if [ -z "$files" ]; then
+       fakeroot -i fakeroot.log \
+       sh -c 'find -not -name fakeroot.log -a -print0 | cpio -o -0 -H newc | gzip --best'
+    else
+       fakeroot -i fakeroot.log \
+       sh -c 'cpio -o -H newc | gzip --best' < $files
+    fi
 else
-    find -not -name fakeroot.log -a -print0 | cpio -o -0 -H newc | gzip --best
+    if [ -z "$files" ]; then
+       find -not -name fakeroot.log -a -print0 | cpio -o -0 -H newc | gzip --best
+    else
+       cpio -o -H newc < $files | gzip --best
+    fi
 fi