about summary refs log blame commit diff stats
path: root/core/scripts/backup-ports.sh
blob: 46fd4c6414a8ee3cc5bef013df2c017a9279ec8f (plain) (tree)





























                                                                  
         



                                                                                              









































                                                                                                                         

                                                                      


                                                                      

                                             
                          




                                                                                                       
#!/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}

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 

for filename in /etc/ports/*.git; do
	source $filename

	echo "${NAME} port collection release (exp; ${BUILD_VERSION}):"

	read RELEASE
	# 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

	# backup collection packages
	while read PORT_NAME; do
		echo "Backing up package:	${NAME}/${PORT_NAME}"
		# get installed version not version on ports
		PACKAGE=$(grep "^${PORT_NAME}#" ${DEST_SYS}/all-installed.pkg)
		echo "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}
			#(cd /usr/ports/${NAME}/${line} \
			#	&& sudo pkgmk -uf)
		fi

		if [ -f /usr/ports/packages/${PACKAGE} ]; then
			echo ${PACKAGE} >> ${DEST_SYS}/${NAME}-backup.pkg
			tar rvf ${DEST_SYS}/${NAME}-${RELEASE}.tar \
				--directory=/usr/ports/packages \
				${PACKAGE}
		else
			echo "Package ${PACKAGE} from ${PORT_NAME} port not found."
			echo ${PACKAGE} >> ${DEST_SYS}/${NAME}-notfound.pkg
		fi
	done < ${DEST_SYS}/${NAME}-installed.pkg
done

echo "Creating  ${DEST_ARC}/${BUILD_NAME}-${BUILD_VERSION}.tar.gz ..."
tar --xattrs -zcpf ${DEST_ARC}/${BUILD_NAME}-${BUILD_VERSION}.tar.gz \
	--directory=${DEST_SYS} \
	.

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