mirror of the now-defunct rocklinux.org
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

55 lines
1.4 KiB

  1. #!/bin/bash
  2. if [ "$#" -lt 2 -o -z "$1" -o -z "${1##-*}" ]; then
  3. echo ""
  4. echo "Usage: $0 <pkg-name> <install-command>"
  5. echo ""
  6. echo "E.g.:"
  7. echo ""
  8. echo " cd /usr/local/src/foobar-1.0"
  9. echo " ./configure && make"
  10. echo " mkpkg foobar make install"
  11. echo ""
  12. exit 1
  13. fi
  14. pkg=$1; shift
  15. slog=`mktemp` wlog=`mktemp` flog=`mktemp`
  16. if [ "$(uname -m)" = "ppc" ]; then
  17. SYSEXIT="exit"
  18. else
  19. SYSEXIT="_exit"
  20. fi
  21. strace -o $slog -F -f -q -e open,creat,`
  22. `mkdir,mknod,link,symlink,rename,utime,chdir,`
  23. `execve,fork,vfork,$SYSEXIT,exit_group -p $$ &
  24. strace_pid=$!; sleep 1; cd $PWD
  25. "$@"
  26. sleep 1; kill -INT $strace_pid; sleep 1
  27. /usr/lib/fl_stparse -w $wlog < $slog
  28. touch /var/adm/flists/$pkg
  29. {
  30. /usr/lib/fl_wrparse -s -r / -p "$pkg" < $wlog
  31. for x in flists packages dependencies descs cksums md5sums ; do
  32. echo "$pkg: var/adm/$x/$pkg" ; done
  33. } | cat /var/adm/flists/$pkg - |
  34. egrep -v '^[^ ]+: (dev|proc|tmp)(/|$)' | sort -u > $flog
  35. cat $flog > /var/adm/flists/$pkg
  36. cd /
  37. egrep -v "^$pkg: var/adm/" var/adm/flists/$pkg | cut -f2- -d' ' | \
  38. xargs cksum > var/adm/cksums/$pkg
  39. egrep -v "^$pkg: var/adm/" var/adm/flists/$pkg | cut -f2- -d' ' | \
  40. xargs md5sum > var/adm/md5sums/$pkg
  41. touch var/adm/{dependencies,descs}/$pkg
  42. echo "Package Name and Version: $pkg 0000 mkpkg" > var/adm/packages/$pkg
  43. echo "[ Created package $pkg with" $( wc -l < $flog ) "files. ]"
  44. rm -f $wlog $slog $flog