about summary refs log tree commit diff stats
path: root/linux/scripts/backup-ports.sh
diff options
context:
space:
mode:
Diffstat (limited to 'linux/scripts/backup-ports.sh')
-rw-r--r--linux/scripts/backup-ports.sh136
1 files changed, 136 insertions, 0 deletions
diff --git a/linux/scripts/backup-ports.sh b/linux/scripts/backup-ports.sh
new file mode 100644
index 0000000..bac18e5
--- /dev/null
+++ b/linux/scripts/backup-ports.sh
@@ -0,0 +1,136 @@
+#!/bin/bash
+
+DEST_SYS=/usr/ports/releases/stable
+DEST_ARC=/usr/ports/releases/archives
+
+#PACKAGES=/usr/ports/packages
+PACKAGES=/usr/ports/archive/packages
+
+#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
+
+#internal
+database=${DEST_SYS}/pkg-db.tar.gz
+ports=${DEST_SYS}/etc-ports.tar.gz
+metadata=${DEST_SYS}/metadata.tar.gz
+build=${DEST_SYS}/metadata/build-version
+portsver=${DEST_SYS}/metadata/ports-releases
+all=${DEST_SYS}/metadata/all-installed
+collinst=${DEST_SYS}/metadata/installed
+notfound=${DEST_SYS}/metadata/not-found
+
+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}
+mkdir -p ${DEST_SYS}/metadata
+
+archive="${DEST_ARC}/${BUILD_NAME}-${BUILD_VERSION}.tar" 
+echo "Creating $archive  ..."
+if [ -f ${archive} ]; then
+	rm ${archive}
+fi
+
+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)
+
+	    if [ -f ${DEST_SYS}/${COLL_VERSION}.tar ]; then
+	    	rm ${DEST_SYS}/${COLL_VERSION}.tar
+	    fi
+
+	    while read PORT_NAME; do
+		    # get installed version not version on ports
+		    PACKAGE=$(grep "^${PORT_NAME}#" ${all})
+
+		    # 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}/metadata/${COLL_NAME}-backup
+			    tar rvf ${DEST_SYS}/${COLL_VERSION}.tar --directory=${PACKAGES} ${PACKAGE}
+		    else
+			    echo "Package ${PACKAGE} from ${PORT_NAME} port not found."
+			    echo ${PACKAGE} >> ${notfound}-${COLL_VERSION}
+		    fi
+    	    done < ${collinst}-${COLL_NAME}
+
+	    tar rvf $archive --directory=${DEST_SYS} ${COLL_VERSION}.tar 
+
+    done < ${portsver}
+}
+
+create_metadata() {
+
+    echo "${BUILD_NAME}-${BUILD_VERSION}" > ${build}
+
+    # archive pkgutils data
+    tar --xattrs -zcpf $database --directory=/var/lib/pkg/ db
+    tar rvf $archive --directory=${DEST_SYS} $(basename ${database})
+
+    # archive ports data
+    tar --xattrs -zcpf $ports --directory=/etc/ports .
+    tar rvf $archive --directory=${DEST_SYS} $(basename ${ports})
+
+    # must be using gwak instead of sed
+    prt-get listinst -v | sed 's/ /#/g' | sed 's/$/.pkg.tar.gz/g' > ${all}
+
+    if [ -f ${portsver} ]; then
+	    rm ${portsver}
+    fi
+
+    for filename in /etc/ports/*.git; do
+	source $filename
+
+	echo "${NAME} port collection release (exp; ${BUILD_VERSION}):"
+
+	read RELEASE
+	echo ${NAME}-${RELEASE} >> ${portsver}
+
+	# backup ports collection
+	echo "Backing up collection: 	${NAME}"
+	tar --xattrs -zcpf ${DEST_SYS}/"ports"-${NAME}-${RELEASE}.tar.gz \
+		--directory=/usr/ports/${NAME} \
+		--exclude=.git \
+		.
+
+    	tar rvf $archive --directory=${DEST_SYS} "ports"-${NAME}-${RELEASE}.tar.gz
+
+	# create list of installed packages 
+	prt-get printf "%i %p %n\n" | grep "yes /usr/ports/${NAME}" | cut -d " " -f 3 > ${collinst}-${NAME}
+
+done
+}
+
+create_archive() {
+    tar --xattrs -zcpf ${metadata} --directory=${DEST_SYS} metadata/
+    tar rvf $archive --directory=${DEST_SYS} $(basename ${metadata})
+}
+
+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