Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- ADMIN_DIR=/var/lib/dpkg
- APT_SOURCES_DIR=/etc/apt/sources.list.d
- APT_PKGDB_DIR=/var/lib/apt/lists
- CHROOT_DIR=""
- #based on https://github.com/s243a/woof-next/blob/e6590c1044adc0a182a9b299129ed707b7bd95d2/builders/deb-build.sh#L80
- prepare_dirs() {
- for aDir in "$CHROOT_DIR" "$CHROOT_DIR$APT_SOURCES_DIR" "$CHROOT_DIR$APT_PKGDB_DIR"; do
- [ ! -z "`which realpath`" ] && aDir=$(realpath -m "$aDir")
- mkdir -p "$aDir"
- done
- ! [ -e $CHROOT_DIR$ADMIN_DIR/status ] && echo > $CHROOT_DIR$ADMIN_DIR/status
- ! [ -e $CHROOT_DIR$ADMIN_DIR/available ] && echo > $CHROOT_DIR$ADMIN_DIR/available
- }
- #based on https://github.com/s243a/woof-next/blob/e6590c1044adc0a182a9b299129ed707b7bd95d2/builders/deb-build.sh#L457
- function update_pkg_status(){
- #Probably better just to call remove_pkg_status instead of processing args.
- #while [ ! -z $1 ];
- # case $1 in
- # --status=*)
- # shift
- # ;;
- # *)
- # break
- # ;;
- # esac
- {
- echo \
- "Package: $1
- Status: install ok installed
- Priority: $2
- Section: $3
- Maintainer: unspecified
- Architecture: $ARCH
- Version: $4"
- [ "${5%,}" ] && echo "Depends: ${5%,}"
- echo "Description: $1 installed by deb-build.sh
- "
- } >> "$CHROOT_DIR$ADMIN_DIR/status"
- }
- #based on https://pastebin.com/cRcR6yE2
- AWK_PRG="BEGIN{FS=\"|\"}
- {
- PACKAGE=\$2
- print \"Package: \" PACKAGE
- VERSION = \$3
- #TODO make PACKAGE regular expression safe
- gsub(/[+]/,\"\\\\+\",PACKAGE)
- gsub(PACKAGE,\"\",VERSION)
- gsub(/^_/,\"\",VERSION)
- print \"Version: \" \$3
- ARCH = \$1
- gsub(/.*_/,\"\",ARCH)
- if ( ARCH == i386 ){
- print \"Architecture: \" ARCH
- } else if ( ARCH = noarch ){
- print \"Architecture: noarch\"
- }
- #TODO Architecture: \$1 but trimmed after last _ check that it is like i386
- print \"Maintainer: unspecified\"
- print \"Priority: \" PRIORITY
- print \"Section: \" \$5
- }
- "
- function append_statuses(){
- for aFile in "$@"; do
- aFile=$(realpath -m $aFile)
- if [[ aFile = */woof-installed-packages ]]; then
- PRIORITY=required
- ESSENTIAL=yes
- else
- PRIORITY=optional
- ESSENTIAL=no
- fi
- cat "$aFile" | awk --assign PRIORITY="$PRIORITY" "$AWK_PRG" >> "$CHROOT_DIR$ADMIN_DIR/status"
- done
- }
- mv $CHROOT_DIR$ADMIN_DIR/status $CHROOT_DIR$ADMIN_DIR/status_back$$
- prepare_dirs
- append_statuses /var/packages/woof-installed-packages /var/packages/user-installed-packages
- #TODO symlink file lists
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement