#!/bin/sh set -x # This script documents how this cdrskin version was derived from # a vanilla libburn version. It is not intended nor needed for any # use of cdrskin but included here only to show the technical # relationship between both projects - which are close friends # and issue roughly the same software. # # Package maintainers are advised to cover rather libburn than # cdrskin unless they put only emphasis on the cdrecord emulation # provided by cdrskin. libburn contains cdrskin - cdrskin is an # oscillating, friendly and coordinated fork of libburn. # # Script results are a source tarball and two binaries # one dynamic and one static in respect to system libs. # Both binaries are static in respect to libburn. # # The script is to be run in the directory above the toplevel # directory of libburn resp. cdrskin development. # # The top level directory in the SVN snapshot is named intermediate="./libburn_pykix" # libburn source used: http://libburnia-project.org # Downloaded by: # $ svn co http://libburnia-project.org/libburn/tags/... $intermediate # packed up in a tarball just to save it from inadverted changes by # $ tar czf libburn_svn.tgz $intermediate original="./libburn_svn.tgz" # Historic moments: # original="./libburn_svn_A60815.tgz" # original="./libburn_cdrskin_A60819.tgz" # My changes are in $changes , mainly in $changes/cdrskin changes="./libburn-develop" skin_release="0.8.1" patch_level="" skin_rev="$skin_release""$patch_level" # The result directory and the name of the result tarballs target="./cdrskin-${skin_release}" cdrskin_tarball="./cdrskin-${skin_rev}.tar.gz" cdrskin_tarball_svn="./cdrskin-${skin_rev}.svn.tar.gz" # (This once earned me an embarrassingly blooping source tarball) # compile_dir="$changes" compile_dir="$target" compile_cmd="./cdrskin/compile_cdrskin.sh" compile_static_opts="-static" compile_result="cdrskin/cdrskin" man_to_html_cmd="./cdrskin/convert_man_to_html.sh" man_page_html="cdrskin/man_1_cdrskin.html" bintarget_dynamic="cdrskin_${skin_rev}-amd64-suse10_2" bintarget_static="$bintarget_dynamic"-static if test -d "$changes" then dummy=dummy else echo "$0 : FATAL : no directory $changes" >&2 exit 1 fi for i in "$target" "$intermediate" do if test -e "$i" then echo "$0 : FATAL : already existing $i" >&2 exit 2 fi done if test -f "$original" then dummy=dummy else echo "$0 : FATAL : no file $original" >&2 exit 3 fi # Unpack SVN snapshot. tar xzf "$original" # Rename the directory to the cdrskin name mv "$intermediate" "$target" # Copy the changes from the development tree # cdrskin_dir="$changes"/cdrskin libburn_dir="$changes"/libburn cdrskin_target="$target"/cdrskin libburn_target="$target"/libburn # Create version timestamp timestamp="$(date -u '+%Y.%m.%d.%H%M%S')" echo "$timestamp" echo '#define Cdrskin_timestamP "'"$timestamp"'"' >"$cdrskin_dir"/cdrskin_timestamp.h # Add the cdrskin files if test -e "$cdrskin_target" then rm -rf "$cdrskin_target" fi cp -a "$cdrskin_dir" "$cdrskin_target" # Remove copied vim.swp and binaries rm "$cdrskin_target"/.*.swp rm "$cdrskin_target"/.*.swo rm "$cdrskin_target"/*.o rm "$cdrskin_target"/cdrfifo rm "$cdrskin_target"/cdrskin rm "$cdrskin_target"/cleanup for i in std new make old do if test -e "$cdrskin_target"/cdrskin_"$i" then rm "$cdrskin_target"/cdrskin_"$i" fi done # Remove eventual SVN stuff from cdrskin directory for i in .deps .dirstamp .libs do if test -e "$cdrskin_target"/"$i" then rm -rf "$cdrskin_target"/"$i" fi done # Remove GIFs of cdrskin_eng.html rm "$cdrskin_target"/doener_*.gif "$cdrskin_target"/doener_*.png # Remove automatically generated HTML man page rm "$cdrskin_target"/man_1_cdrskin.html # Remove libcevap rm -rf "$target"/libcevap # Remove all add_ts_changes_to_libburn besides this one for i in "$cdrskin_target"/add_ts_changes_to_libburn* do if test $(basename "$0") = $(basename "$i") then dummy=dummy else rm $i fi done # Remove unwanted SVN stuff (TODO: avoid downloading it) for i in "$target"/.svn "$target"/*/.svn do if test "$i" = "$target"'/*/.svn' then dummy=dummy else if test -e "$i" then rm -rf "$i" fi fi done # Make SVN state tarball for the libburn team tar czf "$cdrskin_tarball_svn" "$target" # Get over dependecy on autotools. Rely only on cc, make et. al. # This is not the same as "make dist" but i can do it without # having to evaluate the quality of said "make dist" # ( cd "$target" ; ./bootstrap ) # Remove unwanted stuff after bootstrap for i in "$target"/autom4te.cache do if echo "$i" | grep '\*' >/dev/null then dummy=dummy else if test -e "$i" then rm -rf "$i" fi fi done # Repair non-portable shell code output of ./bootstrap ( cd "$compile_dir" || exit 1 sed -e 's/^for ac_header in$/test -z 1 \&\& for ac_header in dummy/' \ < ./configure > ./configure-repaired if test "$?" = 0 then echo "$0: Empty 'for ac_header in' found in configure." >&2 fi mv ./configure-repaired ./configure chmod a+rx,go-w,u+w ./configure ) # Pack it up to the new libburn+cdrskin-tarball tar czf "$cdrskin_tarball" "$target" # Produce a static and a dynamic binary, and a HTML man page ( cd "$compile_dir" || exit 1 ./configure make "$compile_cmd" -libburn_svn -O2 -do_strip cp "$compile_result" "../$bintarget_dynamic" if test -n "$compile_static_opts" then "$compile_cmd" $compile_static_opts -libburn_svn -O2 -do_strip cp "$compile_result" "../$bintarget_static" fi # "$compile_cmd" -libburn_svn -O2 -do_diet -do_strip # cp "$compile_result" "../$bintarget_dynamic"_diet "$man_to_html_cmd" mv "$man_page_html" .. ) # Remove the build area # Disable this for debugging the merge process rm -rf "$target" # Show the result ./"$bintarget_dynamic" -version ./"$bintarget_static" -version ls -l "$cdrskin_tarball" ls -l "$bintarget_dynamic" ls -l "$bintarget_static" ls -l $(basename "$man_page_html")