Advertisement
ALTracer

build-ipk.sh

Jul 4th, 2019
387
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.81 KB | None | 0 0
  1. #!/bin/sh
  2. ## OPKG package forger
  3.  
  4. MIN_PARAMS=2
  5. if [ $# -lt $MIN_PARAMS ] || [ ! -d "$2" ]; then
  6.     echo " Usage: $0 yourpackage.ipk IPK_BASE_FOLDER"
  7.     exit 1
  8. fi
  9.  
  10. IPKFILE="$1"
  11. IPKDIR="$2"
  12. IPKAR="True" ## Set as True to generate debian-archive AR IPK
  13.  
  14. runchecks(){
  15.     if [ ! -d control ] || [ ! -d data ]; then
  16.         echo " ERROR: IPK folders 'control', 'data' missing."
  17.         exit 1
  18.     fi
  19.     debian_binary=$(cat debian_binary)
  20.     if [ "$debian_binary" != "2.0" ]; then
  21.         echo " ERROR: incompatible or missing debian_binary"
  22.         exit 1
  23.     fi
  24. }
  25.  
  26. runfixes(){
  27.     mkdir -pv control data
  28.     touch control/control
  29.     find './control' -name '*inst' -print0 2>/dev/null | xargs chmod -v a+x
  30.     find './control' -name '*rm'   -print0 2>/dev/null | xargs chmod -v a+x
  31. }
  32.  
  33. forgecontrol(){
  34.     echo " Collecting control.tar ..."
  35.     tar -cvf control.tar --numeric-owner --group=0 --owner=0 -C control ./
  36.  
  37.     echo " Compressing control.tar.gz ..."
  38.     gzip -9v < control.tar > control.tar.gz
  39. }
  40.  
  41. forgedata(){
  42.     echo " Collecting data.tar ..."
  43.     tar -cvf data.tar --numeric-owner --group=0 --owner=0 -C data ./
  44.  
  45.     echo " Compressing data.tar.gz ..."
  46.     gzip -9v < "data.tar" > "data.tar.gz"
  47. }
  48.  
  49. forgeipk(){
  50.     echo " Collecting packagetemp.tar ..."
  51.     tar -cvf packagetemp.tar --numeric-owner --group=0 --owner=0 ./debian_binary ./control.tar.gz ./data.tar.gz
  52.  
  53.     echo " Compressing $IPKFILE ..."
  54.     gzip -0v < packagetemp.tar > "$IPKFILE"
  55.  
  56.     echo " Done. Created: $IPKFILE"
  57.  
  58.     if [ -n "$IPKAR" ]; then
  59.         echo " Compressing debian-archive"
  60.         rm "$IPKFILE"
  61.         ar rv "$IPKFILE" debian_binary ./data.tar.gz ./control.tar.gz
  62.     fi
  63. }
  64.  
  65. clean(){
  66.     rm -v data.tar data.tar.gz control.tar control.tar.gz
  67.     rm -v packagetemp.tar
  68. }
  69.  
  70. ##main(){
  71. cd "$IPKDIR" || exit 1
  72. if ! runchecks
  73.     then runfixes
  74.     exit 1
  75. fi
  76. forgecontrol && \
  77. forgedata && \
  78. forgeipk #&& \
  79. #clean
  80. #}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement