diff --git a/releng/jigdo-gen-md5-list b/releng/jigdo-gen-md5-list new file mode 100755 index 00000000..381c441b --- /dev/null +++ b/releng/jigdo-gen-md5-list @@ -0,0 +1,175 @@ +#!/bin/sh + +# Copyright (c) 2010, 2011 George Danchev +# Copyright (c) 2010, 2011 Thomas Schmitt +# This script is distributed according to the terms of the GNU GPL v2. +# This should be better rewritten in C at some future point. Ref: pwd code. + +# Create a list of MD5sums encoded in hexidecimal format and print to standard output + +# Format Description +# A line in the emerging file is to be composed as follows: +# +# The MD5 checksum of the file content must be encoded in 32 hex digits +# [0-9afAF] +# +# Next come two blanks. +# +# The byte size of the file content must be encoded in 12 decimal digits +# or blanks. +# +# Next come two blanks. +# +# The rest of the line up to the newline character is a semi-literal file +# address. Its basename has to be the same as the basename of the data file +# when it is used as one of the input files for the jigdo file generator. + +# The semi-literal address and the address mapping define what will be +# listed as file address in the jigdo file. +# The address may bear at its start a literal text that shall be recognized by +# the address mapping (e.g. -jigdo-map) of the jigdo file generator. +# The rest of the address must be usable as file address in both situations: +# When the jigdo file gets generated, and when the jigdo file gets read +# to inflate the template file into the original payload image. +# The address mappings at both occasions can be used to adapt to a change +# of the absolute location of the listed files. +# Between both mappings, the parent directory is represented by a symbolic +# text, like "Debian:". + +# A simple strategy to cope with this is to write absolute paths into the +# .md5 file, and to use matching absolute paths in the -jigdo-map +# directives. Keep in mind that mapping is purely literal. Symbolic links +# are neither resolved nor can they confuse the mapping. + +set -e + +SELF=jigdo-gen-md5-list +VER=0.2 + +OPT_ABSOLUTE=1 + +# On FreeBSD there is "md5" rather than "md5sum". +# Furthermore, the FreeBSD shell reports missing commands to inherited stderr, +# regardless that the attempt itself has redirected stderr. Thus a sub shell +# is needed to hide the protest. +if ( md5sum --help ) >/dev/null 2>&1 +then + md5_cmd=md5sum +elif ( md5 -s test ) >/dev/null 2>&1 +then + md5_cmd=md5 +else + echo "$0 : Programs md5sum and md5 failed to work" >&2 + exit 2 +fi + +usage() { + cat << USAGE +usage: $SELF [option] DIR FILE ... + -a, --make-absolute make absolute paths, avoiding any symlinks (default) + -l, --keep-literal leave paths untouched, literally as supplied + -v, --version print version + -h, --help print help + -e, --examples print examples +USAGE +} + +examples() { + cat << EXAMPLES +examples: + $SELF datadir datafile + $SELF --keep-literal datadir datafile + find . -type f | xargs $SELF + find . -exec $SELF '{}' ';' +EXAMPLES +} + +md5list() { + item="$1" + if test $OPT_ABSOLUTE -eq 1; then + dn=`dirname "$item"` # dirname + fn=`basename "$item"` # filename + od=`pwd -P` # old dir + cd "$dn" || exit 1 + item=`pwd -P`/"$fn" # absolute physical file path, avoiding all symlinks + cd "$od" || exit 1 + fi + if test "$md5_cmd" = "md5sum" + then + MD5=`md5sum "$item" | awk '{print $1}'` + elif test "$md5_cmd" = "md5" + then + MD5=`md5 -q "$item"` + else + echo "$0 : No MD5 program found" >&2 + exit 2 + fi + SIZ=`ls -ld "$item" | awk '{print $5}'` + printf '%32s %12s %s\n' "$MD5" "$SIZ" "$item" +} + +walkdir() { + DR="$1" + for item in `find "$DR" -type f` + do + md5list "$item" + done +} + + +# main() +if test "$1" = "" ; then + usage + exit 1 +fi + +case "$1" in + --make-absolute|-a) + OPT_ABSOLUTE=1; + shift; + ;; + --keep-literal|-l) + OPT_ABSOLUTE=0; + shift; + ;; + --version|-v) + printf '%s %s\n' "$SELF" "$VER" + exit 0 + ;; + --help|-h) + usage + exit 0 + ;; + --examples|-e) + examples + exit 0 +# *) +# usage +# exit 1 +# ;; +esac + +for i in "$@" +do + + if test -d "$i" ; then + DR="$i" + if test $OPT_ABSOLUTE -eq 1; then + od=`pwd -P` # old dir + cd "$DR" || exit 1 + DR=`pwd -P` # absolute physical dir path, avoiding all symlinks + cd "$od" || exit 1 + fi + walkdir "$DR" + elif test -f "$i" ; then + FL="$i" + md5list "$FL" + else + usage + exit 1 + fi; + +done + +exit 0 + diff --git a/releng/jigdo-gen-md5-list.1 b/releng/jigdo-gen-md5-list.1 new file mode 100644 index 00000000..ae6ff061 --- /dev/null +++ b/releng/jigdo-gen-md5-list.1 @@ -0,0 +1,30 @@ +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.38.2. +.TH JIGDO-GEN-MD5-LIST "1" "October 2010" "jigdo-gen-md5-list 0.1" "User Commands" +.SH NAME +jigdo-gen-md5-list \- create a list of MD5sums encoded in hexidecimal format and print to standard output +.SH DESCRIPTION +usage: jigdo\-gen\-md5\-list [option] DIR FILE ... +.TP +\fB\-a\fR, \fB\-\-make\-absolute\fR +make absolute paths, avoiding any symlinks (default) +.TP +\fB\-l\fR, \fB\-\-keep\-literal\fR +leave paths untouched, literally as supplied +.TP +\fB\-v\fR, \fB\-\-version\fR +print version +.TP +\fB\-h\fR, \fB\-\-help\fR +print help +.TP +\fB\-e\fR, \fB\-\-examples\fR +print examples +.SH FORMAT + +File format is described in the beginning of the script itself. + +.SH "SEE ALSO" +xorriso(1), jigdo-lite(1), jigit-mkimage(1) + +.SH AUTHOR +Written by George Danchev and Thomas Schmitt diff --git a/xorriso/make_xorriso_standalone.sh b/xorriso/make_xorriso_standalone.sh index 2388a035..1c7b9202 100755 --- a/xorriso/make_xorriso_standalone.sh +++ b/xorriso/make_xorriso_standalone.sh @@ -241,8 +241,12 @@ cat version.h.in >> "$lone_dir"/version.h.in create_dir "$lone_dir"/libjte goto_dir "$current_dir"/jte-develop copy_files *.[ch] "$lone_dir"/libjte -copy_files bin/jigdo-gen-md5-list doc/jigdo-gen-md5-list.1 "$lone_dir"/libjte copy_files COPYRIGHT "$lone_dir"/libjte +# +# Now using libisoburn/releng/jigdo-gen-md5-list because in jigit it is +# restricted to Linux and FreeBSD. +goto_dir "$current_dir"/libisoburn-develop/releng +copy_files jigdo-gen-md5-list jigdo-gen-md5-list.1 "$lone_dir"/libjte # libburn