[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Base packages uploaded



Finally I got dpkg to compile. An old version of gettext was the
problem.

Everything compiled fine in base, except mawk, which fails to pass
its selftest with a segfault.

Somehow the new bash seems to be broken (regarding backspace). 
By error I did upload that too ( it's on the queue in erlangen
now, and I'm not sure if I have a chance to delete it :(.)

I started a small script which checks for new source versions on the
debian ftp site and tries to download them and build them. It uses a modified
dbuild script (OK, IGNORED, and BAD are directories now, so it is
easily possible to delete entries there).

There's still a lot missing from it, but basically it works ..

Here's dbuild and diff-build (for lack of a better name) 


Guenter


-----------------

#!/bin/sh

# problem: not all packages work with dpkg-buildpackage -B and if we
# use -b and then delete *_all.deb, the .changes files don't work
#
# G. Geiger changed replaced file OK BAD IGNORED ,.. by directories


PATH=$PATH:/usr/sbin:/sbin
username='NO USERNAME'
sourcetree='sources/.'
verbose=no
keepokmsgs=no
mirrorspec=""
mirrorstate="source-mirror"
#rootaccess="-rfakeroot"
rootaccess=""
architecture=`dpkg --print-gnu-build-architecture`


progname="$0"

usage() {
	echo "usage: $progname [-v|--verbose] [-u username|--username username]
		[-k|--keep-ok-messages] [-f host:dir|--ftp host:dir]
		[dsc-or-directory ...]" 1>&2
	exit 0
}


dsc2srcdir() {
	basename "$1" .dsc | sed 's/-[a-zA-Z0-9.+]*$//;s/_/-/'
}

actual_build() {
	dsc="$1"
	dir=`dsc2srcdir $dsc`
	rm -rf TEMP
	mkdir TEMP
	if (cd TEMP && dpkg-source -x "$dsc")
	then
		true
	else
		echo dpkg-source failed 1>&2
		cp $dsc  BAD
		return 1
	fi
	if grep '^Architecture: any' "TEMP/$dir/debian/control" >/dev/null
	then
		if (cd "TEMP/$dir" && \
		    dpkg-buildpackage $rootaccess -B -m"$username")
		then
			true
		else
			echo dpkg-buildpackage failed 1>&2
			cp $dsc  BAD
			return 1
		fi
		rm -rf "TEMP/$dir"
		rm -f TEMP/*.orig.tar.gz
		mv TEMP/*.deb TEMP/*.changes BUILT
		rmdir TEMP	# note: not rm -rf
	else
		cp $dsc IGNORED
		rm -rf TEMP
	fi
	cp $dsc OK
	return 0
}

build_from_dsc() {
	dsc="$1"

	basedsc=`basename $dsc`

	if test -f SKIP/$basedsc  
	then
		[ $verbose = yes ] && echo "skipping -- $dsc"
	elif test -f IGNORED/$basedsc  
	then
		[ $verbose = yes ] && echo "ignored -- $dsc"
	elif test -f BAD/$basedsc 
	then
		[ $verbose = yes ] && echo "known bad -- $dsc"
	elif test -f OK/$basedsc 
	then
		[ $verbose = yes ] && echo "known good -- $dsc"
	else
		pkg=`basename "$dsc" | sed 's/_.*/_/'`
		
		echo -n "building -- $dsc..."
		if actual_build "$dsc" >MESSAGES/"$pkg" 2>&1 < /dev/null
		then
			echo OK
			[ "$keepokmsgs" = no ] && rm -f "MESSAGES/$pkg"
		else
			echo BAD
		fi
	fi
}	

find_dscs_in_dir_and_build_them() {
	find "$@" -name '*.dsc' |
	while read dsc
	do
		dsc=`cd \`dirname "$dsc"\`; pwd`/`basename "$dsc"`
		build_from_dsc "$dsc"
	done

}

if [ -r "$HOME/.dbuildrc" ]
then
	. "$HOME/.dbuildrc"
fi

loop=yes
while [ $loop = yes ]
do
	case "$1" in
	-u|--username)	username="$2"; shift 2 ;;
	-s|--sources)	sourcetree="$2"; shift 2 ;;
	-v|--verbose)	verbose=yes ; shift ;;
	-k|--keep-ok-messages)	keepokmsgs=yes ; shift ;;
	-f|--ftp)	mirrorspec="$2" ; shift 2 ;;
	--)		shift; loop=no ;;
	-*)		usage; exit 0 ;;
	*)		loop=no ;;
	esac
done

test -d BUILT || mkdir BUILT
test -d MESSAGES || mkdir MESSAGES
test -d OK || mkdir OK
test -d BAD || mkdir BAD
test -d SKIP || mkdir SKIP
test -d IGNORED || mkdir IGNORED

[ "$verbose" = yes ] && echo "PGP username: $username"

if [ "$1" == "" ]
then
	if [ ! -z "$mirrorspec" ]
	then
		[ $verbose = yes ] && echo "mirroring $mirrorspec to $mirrorstate"
		mkdir -p "$mirrorstate"
		(cd "$mirrorstate" && mirror -kflags_recursive=-Llat -g"$mirrorspec")
		find_dscs_in_dir_and_build_them "$mirrorstate"
	else
		for dir in $sourcetree
		do
			find_dscs_in_dir_and_build_them "$dir/."
		done
	fi
else
	for arg in "$@"
	do
		if [ -d "$arg/." ]
		then
			find_dscs_in_dir_and_build_them "$arg/."
		else
			build_from_dsc "$arg"
		fi
	done
fi















-------------------------------
#!/bin/sh


#
#  This script is intended for use with a modified dbuild version 
#  
#  syntax:  diff-build section   , where section is a debian section


# configuration

ftphost="ftp.de.debian.org"
username="Geiger Guenter"
sourcedir="debian/hamm/hamm/source"
section="base"
verbose="yes"
deletesource="no"


test "$1" != "" && section=$1

# create directory for section 

test ! -d $section && mkdir $section


#
#  filter out the base name
#

dsc2trunc() {
	basename "$1" .dsc | sed 's/-[a-zA-Z0-9.+]*$//'
}



#
#  Fetch a listing of dsc files from the debian host
#

get_dsc_names() {
(cat << EOF
user ftp $username
cd $sourcedir/$section
ls *.dsc
bye
EOF
) | ftp -n $ftphost  > DSCFILES
}     

#
#  Get the package
#

get_package() {
trunc=`dsc2trunc $1`
(cat << EOF
user ftp $username
cd $sourcedir/$section
prompt
mget $trunc*
bye
EOF
) | ftp -n $ftphost > /dev/zero
}


#
#  filter out the base name
#

dsc2trunc() {
	basename "$1" .dsc | sed 's/-[a-zA-Z0-9.+]*$//'
}


#
#  main
#

test $verbose = yes && echo Getting dsc files from host $ftphost
get_dsc_names


newdsc=`cat DSCFILES | awk '{print $9}'`

for i in $newdsc
do
   trunc=`dsc2trunc  $i` 
   olddsc=`ls OK/$trunc* 2> /dev/zero` && olddsc=`basename $olddsc`


   if test $i != "$olddsc"
   then	
      test $verbose = yes && echo getting new version $i, replacing $olddsc
      rm OK/$olddsc
      (cd $section;get_package $i) 
   fi

done

test $verbose = yes && echo Building the packages 
dbuild -v -u username $section

test $deletesource = yes && rm $section/*
rm DSCFILES



--
To UNSUBSCRIBE, email to debian-alpha-request@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org


Reply to: