#!/bin/sh # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # any later version. cDir=$(pwd) ls -R -l > FILELIST.TXT function gen_packages_txt { echo '' > PACKAGES.TXT find . -type f -name '*.meta' -exec cat {} \; >> PACKAGES.TXT } function gen_md5_checksums { echo '' > CHECKSUMS.md5 find . -type f -name '*.txz' -exec md5sum {} \; >> CHECKSUMS.md5 } function rem_meta { for file in $(find . -name '*.meta') do rm -f $file echo "Removing $file" done } function rem_asc { for file in $(find . -name '*.asc') do rm -f $file echo "Removing $file" done } function gen_meta { if [ ! -f $1 ]; then echo "File not found: $1" exit 1; fi if [ "`echo $1|grep -E '(.*{1,})-(.*[\.\-].*[\.\-].*).txz[ ]{0,}$'`" == "" ]; then return; fi NAME=$(echo $1|sed -re "s/(.*\/)(.*.txz)$/\2/") LOCATION=$(echo $1|sed -re "s/(.*)\/(.*.txz)$/\1/") SIZE=$( expr `du -b $1 |tail -1|awk '{print $1}'` / 1024 ) #USIZE=$( expr `gunzip -l $1 |tail -1|awk '{print $2}'` / 1024 ) # since xz will not list contents we must temporarily unpack the archive to find uncompressed size tLOC=`dirname $1` cd `dirname $1` nDir=$(pwd) cd $nDir n=`basename $1` m=`echo $n | sed 's/\.txz/\.tar/'` xz -dk $n USIZE=$( expr `stat -c%s $m` / 1024 ) #echo $s rm -f $m cd $cDir REQUIRED="" CONFLICTS="" SUGGESTS="" METAFILE=${NAME%txz}meta echo "PACKAGE NAME: $NAME" > $LOCATION/$METAFILE if [ -n "$DL_URL" ]; then echo "PACKAGE MIRROR: $DL_URL" >> $LOCATION/$METAFILE fi echo "PACKAGE LOCATION: $LOCATION" >> $LOCATION/$METAFILE echo "PACKAGE SIZE (compressed): $SIZE K" >> $LOCATION/$METAFILE echo "PACKAGE SIZE (uncompressed): $USIZE K" >> $LOCATION/$METAFILE echo "PACKAGE REQUIRED: $REQUIRED" >> $LOCATION/$METAFILE echo "PACKAGE CONFLICTS: $CONFLICTS" >> $LOCATION/$METAFILE echo "PACKAGE SUGGESTS: $SUGGESTS" >> $LOCATION/$METAFILE echo "PACKAGE DESCRIPTION:" >> $LOCATION/$METAFILE fn=${1%%.txz}.txt cat $fn |grep -E '\w+:'| grep -v '^#' >> $LOCATION/$METAFILE echo "" >> $LOCATION/$METAFILE } rem_asc for pkg in `find . -type f -name '*.txz' -print` do # first ensure sane permissions chmod 644 $pkg gen_meta $pkg echo "$pkg Meta Created" done echo "Building PACKAGES.TXT" cd $cDir gen_packages_txt echo "Generating MD5SUM file" gen_md5_checksums echo "Removing META files" rem_meta echo "Creating sorted filelist" sed -e 's/[a-z,0-9]*[[:space:]]*\.\/slackware64\///' CHECKSUMS.md5 | sort | uniq > PKG_LIST_SORTED #sed -i /updist/d FILELIST.TXT echo "Repo package information update complete."