summaryrefslogtreecommitdiff
path: root/cron-jobs/create-filelists
diff options
context:
space:
mode:
authorNicolás Reynolds <fauno@kiwwwi.com.ar>2011-04-17 03:19:17 -0300
committerNicolás Reynolds <fauno@kiwwwi.com.ar>2011-04-17 03:19:17 -0300
commitd246da4bb04eee35189c79c8466c21ff86678e42 (patch)
treec7167129c67a2d846adcca9245ebae134069aa8a /cron-jobs/create-filelists
parent6ce3ddee58415e052ec578e777994a60c7e4c3a3 (diff)
parent1ce0c6368d0908e25f9bd1bb8183b5f29053fac8 (diff)
Merge branch 'master' of https://projects.archlinux.org/git/dbscripts
Conflicts: db-functions
Diffstat (limited to 'cron-jobs/create-filelists')
-rwxr-xr-xcron-jobs/create-filelists101
1 files changed, 0 insertions, 101 deletions
diff --git a/cron-jobs/create-filelists b/cron-jobs/create-filelists
deleted file mode 100755
index 8bcfc0b..0000000
--- a/cron-jobs/create-filelists
+++ /dev/null
@@ -1,101 +0,0 @@
-#!/bin/bash
-
-. "$(dirname $0)/../db-functions"
-. "$(dirname $0)/../config"
-
-script_lock
-
-for repo in ${PKGREPOS[@]}; do
- for arch in ${ARCHES[@]}; do
- repo_lock ${repo} ${arch} || exit 1
- done
-done
-
-#adjust the nice level to run at a lower priority
-renice +10 -p $$ > /dev/null
-
-for repo in ${PKGREPOS[@]}; do
- for arch in ${ARCHES[@]}; do
- repodb="${FTP_BASE}/${repo}/os/${arch}/${repo}${DBEXT}"
- filedb="${FTP_BASE}/${repo}/os/${arch}/${repo}${FILESEXT}"
-
- if [ ! -f "${repodb}" ]; then
- continue
- fi
- # get a list of package files defined in the repo db
- mkdir -p "${WORKDIR}/db-dir-${repo}-${arch}"
- bsdtar -xf "${repodb}" -C "${WORKDIR}/db-dir-${repo}-${arch}"
- # This should actualy be faster than reading all the just extracted files
- bsdtar -xOf "${repodb}" | awk '/^%FILENAME%/{getline;print}' | sort > "${WORKDIR}/db-${repo}-${arch}"
-
- # get a list of package files defined in the files db
- mkdir -p "${WORKDIR}/files-current-dir-${repo}-${arch}"
- if [ ! -f "${filedb}" ]; then
- touch "${WORKDIR}/files-${repo}-${arch}"
- else
- bsdtar -xf "${filedb}" -C "${WORKDIR}/files-current-dir-${repo}-${arch}"
- bsdtar -xOf "${filedb}" | awk '/^%FILENAME%/{getline;print}' | sort > "${WORKDIR}/files-${repo}-${arch}"
- fi
- done
-done
-
-case "${FILESEXT}" in
- *.gz) TAR_OPT="z" ;;
- *.bz2) TAR_OPT="j" ;;
- *.xz) TAR_OPT="J" ;;
- *) die "Unknown compression type for FILESEXT=${FILESEXT}" ;;
-esac
-
-for repo in ${PKGREPOS[@]}; do
- for arch in ${ARCHES[@]}; do
- filedb="${FTP_BASE}/${repo}/os/${arch}/${repo}${FILESEXT}"
-
- if [ ! -f "${WORKDIR}/db-${repo}-${arch}" ]; then
- # remove any files db that might be in this empty repo
- if [ -f "${filedb}" ]; then
- rm -f "${filedb}"
- fi
- continue
- fi
-
- # Check if updating the files db is needed
- if ! diff -q "${WORKDIR}/db-${repo}-${arch}" "${WORKDIR}/files-${repo}-${arch}" >/dev/null; then
- mkdir -p "${WORKDIR}/files-new-dir-${repo}-${arch}"
-
- # Include all unchanged file lists
- # Note: deleted packages are implicitly excluded
- for f in $(comm -12 "${WORKDIR}/db-${repo}-${arch}" "${WORKDIR}/files-${repo}-${arch}"); do
- mv "${WORKDIR}/files-current-dir-${repo}-${arch}/${f%*-*${PKGEXT}}" \
- "${WORKDIR}/files-new-dir-${repo}-${arch}"
- done
-
- # Create file lists for new packages
- for f in $(comm -23 "${WORKDIR}/db-${repo}-${arch}" "${WORKDIR}/files-${repo}-${arch}"); do
- tdir="${WORKDIR}/files-new-dir-${repo}-${arch}/${f%*-*${PKGEXT}}"
- mkdir "${tdir}"
- echo '%FILES%' > "${tdir}/files"
- bsdtar --exclude=.* -tf "${FTP_BASE}/${repo}/os/${arch}/${f}" >> "${tdir}/files"
-
- # add desc and depends file from db
- dbdir="${WORKDIR}/db-dir-${repo}-${arch}/${f%*-*${PKGEXT}}"
- mv "${dbdir}/desc" "${tdir}/desc"
- mv "${dbdir}/depends" "${tdir}/depends"
- done
-
- # Create the actual file db
- pushd "${WORKDIR}/files-new-dir-${repo}-${arch}" >/dev/null
- bsdtar -c${TAR_OPT}f "${WORKDIR}/${arch}-${repo}${FILESEXT}" *
- popd >/dev/null
- mv -f "${WORKDIR}/${arch}-${repo}${FILESEXT}" "${filedb}"
- ln -sf "${repo}${FILESEXT}" "${filedb%.tar.*}"
- fi
- done
-done
-
-for repo in ${PKGREPOS[@]}; do
- for arch in ${ARCHES[@]}; do
- repo_unlock ${repo} ${arch}
- done
-done
-
-script_unlock