diff options
author | Silvino Silva <silvino@bk.ru> | 2019-03-04 16:46:25 +0000 |
---|---|---|
committer | Silvino Silva <silvino@bk.ru> | 2019-03-04 16:46:25 +0000 |
commit | e0a5c6deb7ca4845763083ae7b4f6901e36deefc (patch) | |
tree | baf772a443f48c3dfa6e7c88adc4f68cd82b1e4b /core/scripts/backup-ports.sh | |
parent | fed632cea589a4fc730dc852538cb40ca6f559fa (diff) | |
parent | 947ffc14fd8f0987d094210659bbacc38c1637f5 (diff) | |
download | doc-e0a5c6deb7ca4845763083ae7b4f6901e36deefc.tar.gz |
release 0.4.3
Diffstat (limited to 'core/scripts/backup-ports.sh')
-rw-r--r-- | core/scripts/backup-ports.sh | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/core/scripts/backup-ports.sh b/core/scripts/backup-ports.sh new file mode 100644 index 0000000..b5667e4 --- /dev/null +++ b/core/scripts/backup-ports.sh @@ -0,0 +1,104 @@ +#!/bin/bash + +DEST_SYS=/usr/ports/releases/stable +DEST_ARC=/usr/ports/releases/archives + +#PRT_GET_FLAGS="-fr -if -is" +PRT_GET_FLAGS="-fr" + +# Build Name = R1 (System number) D1 (Droid/Machine number) +BUILD_NAME="R1D9" +#echo "Give build NAME;" +#echo "${DEST_ARC}/NAME-0.0.0.targ.gz" +#read BUILD_NAME + +echo "Give build CRUX_RELEASE.VERSION (3.4.X);" +echo "${DEST_ARC}/${BUILD_NAME}-VERSION.tar.gz" +read BUILD_VERSION + +mkdir -p ${DEST_SYS} +mkdir -p ${DEST_ARC} + +backup_collections() { + + # backup collection packages + while read COLL_VERSION; do + COLL_NAME=$(echo $COLL_VERSION | cut -d "-" -f 1) + COLL_RELEASE=$(echo $COLL_VERSION | cut -d "-" -f 2) + + while read PORT_NAME; do + # get installed version not version on ports + PACKAGE=$(grep "^${PORT_NAME}#" ${DEST_SYS}/all-installed.pkg) + echo "Backing up package: ${PACKAGE}" + + # check if binary package exist + if [ ! -f /usr/ports/packages/${PACKAGE} ]; then + echo "Building package: ${PACKAGE};" + sudo prt-get update ${PRT_GET_FLAGS} ${PORT_NAME} + fi + + if [ -f /usr/ports/packages/${PACKAGE} ]; then + echo ${PACKAGE} >> ${DEST_SYS}/${COLL_NAME}-backup.pkg + tar rvf ${DEST_SYS}/${COLL_NAME}-${COLL_RELEASE}.tar --directory=/usr/ports/packages ${PACKAGE} + else + echo "Package ${PACKAGE} from ${PORT_NAME} port not found." + echo ${PACKAGE} >> ${DEST_SYS}/${COLL_NAME}-${COLL_RELEASE}-notfound.pkg + fi + done < ${DEST_SYS}/${COLL_NAME}-installed.pkg + done < ${DEST_SYS}/ports_versions.pkg +} + +create_metadata() { + echo "${BUILD_NAME}-${BUILD_VERSION}" >> ${DEST_SYS}/build_version + + # archive pkgutils data + tar --xattrs -zcpf ${DEST_SYS}/pkg-db.tar.gz /var/lib/pkg/db . + + # archive ports data + tar --xattrs -zcpf ${DEST_SYS}/etc_ports.tar.gz --directory=/etc/ports . + + # must be using gwak instead of sed + prt-get listinst -v | sed 's/ /#/g' | sed 's/$/.pkg.tar.gz/g' > ${DEST_SYS}/all-installed.pkg + + if [ -f ${DEST_SYS}/ports_versions ]; then + rm ${DEST_SYS}/ports_versions.pkg + fi + + for filename in /etc/ports/*.git; do + source $filename + + echo "${NAME} port collection release (exp; ${BUILD_VERSION}):" + + read RELEASE + echo ${NAME}-${RELEASE} >> ${DEST_SYS}/ports_versions.pkg + + # backup ports collection + echo "Backing up collection: ${NAME}" + tar --xattrs -zcpf ${DEST_SYS}/${NAME}-ports-${RELEASE}.tar.gz \ + --directory=/usr/ports/${NAME} \ + --exclude=.git/ \ + . + + # create list of installed packages + prt-get printf "%i %p %n\n" | grep "yes /usr/ports/${NAME}" | cut -d " " -f 3 > ${DEST_SYS}/${NAME}-installed.pkg + done +} + +create_archive() { + echo "Creating ${DEST_ARC}/${BUILD_NAME}-${BUILD_VERSION}.tar.gz ..." + tar --xattrs -zcpf ${DEST_ARC}/${BUILD_NAME}-${BUILD_VERSION}.tar.gz --directory=${DEST_SYS} . +} + +update_host() { + echo "Creating links to /usr/ports/installed" + rm -r /usr/ports/installed + pkg_installed + + echo "Creating ports page" + portspage --title=${BUILD_NAME}-${BUILD_VERSION} /usr/ports/installed > /usr/ports/installed/index.html +} + +create_metadata +backup_collections +create_archive +update_host |