Date: Sat, 02 Jan 2016 10:31:30 +0100 From: Miroslav Lachman <000.fbsd@quip.cz> To: olli hauer <ohauer@gmx.de> Cc: freebsd-ports@freebsd.org Subject: Re: Using pkg updating without /usr/ports [SOLVED] Message-ID: <568798F2.4070507@quip.cz> In-Reply-To: <5676671D.3000001@quip.cz> References: <56755B17.3080904@quip.cz> <20151219134610.GO1173@albert.catwhisker.org> <56758BBB.9030804@quip.cz> <5675B479.5070903@gmx.de> <5676671D.3000001@quip.cz>
next in thread | previous in thread | raw e-mail | index | archive | help
Miroslav Lachman wrote on 12/20/2015 09:30: > olli hauer wrote on 12/19/2015 20:48: >> On 2015-12-19 17:54, Miroslav Lachman wrote: >>> David Wolfskill wrote on 12/19/2015 14:46: >>>> On Sat, Dec 19, 2015 at 02:26:47PM +0100, Miroslav Lachman wrote: >> ... >>> pkg update and pkg upgrade works fine for me too, but pkg updating >>> not. pkg updating is intended to read /usr/ports/UPDATING file and >>> compare its content to installed packages and show important messages >>> before running `pkg upgrade`. >>> But UPDATING file is not automatically synchronised between build >>> server and 'client' (machine where I need to run `pkg updating`). >>> >> >> Absolute crude hack, but maybe works for you. >> Please note the port is absolute not supported and breaks many porting >> rules ... >> Instead installing the file on the servers to /usr/ports it can be >> installed anywhere and then use `pkg updating -f $file' >> It should be also the first port that is updated before all other ports >> >> >> on you build host: >> $ mkdir /usr/ports/misc/updating >> >> cat > /usr/ports/misc/updating/Makefile << _EOF >> PORTNAME= updating >> PORTVERSION!= /bin/date -j "+%Y%m%d.%H%M" >> CATEGORIES= misc >> MASTER_SITES= # none >> DISTFILES= # none >> >> MAINTAINER= updating@example.org >> COMMENT= UPDATING info >> >> LICENSE= BSD2 >> >> NO_BUILD= yes >> WRKSRC= ${WRKDIR}/UPDATING >> SRC= ${PORTSDIR}/UPDATING >> >> PLIST_FILES= ${PORTSDIR}/UPDATING >> PLIST_DIRS= ${PORTSDIR} >> >> do-extract: >> @${DO_NADA} >> >> do-install: >> @${MKDIR} ${STAGEDIR}/${PORTSDIR} >> ${INSTALL_DATA} ${PORTSDIR}/UPDATING ${STAGEDIR}/${PORTSDIR} >> >> .include <bsd.port.mk> >> _EOF >> >> >> cat > /usr/ports/misc/updating/pkg-descr << _EOF >> ports UPDATING file >> _EOF > > Really nice hack! :) Maybe I will give it a try. > The only other workaround I found is copy UPDATING by scp or rsync from > build servers to "clients" periodically by cron job. > > Miroslav Lachman I solved it by poudriere hook in /usr/local/etc/poudriere.d/hooks/bulk.sh --------------------------- event=$1 if [ "$event" == "done" ]; then ports_tree=$(poudriere ports -l -q | awk '$1 == "'$PTNAME'" { print $5 }') cp "$ports_tree/UPDATING" $PACKAGES_ROOT/ fi --------------------------- This part of script just puts the copy of UPDATING in to web accessible directory with packages after build is done. Then on client machines I have to run pkg_updating.sh manually or from cron: --------------------------- #!/bin/sh repo_conf="/usr/local/etc/pkg/repos/codelab.conf" ports_dir="/usr/ports" url_base=$(awk '{ if ($1 == "url:") { gsub(/[",]/, ""); print $2 } }' $repo_conf) if [ ! -d "$ports_dir" ]; then mkdir $ports_dir fi fetch -q -r -o "$ports_dir/UPDATING" "$url_base/UPDATING" --------------------------- So `pkg updating` is working for me now. Miroslav Lachman
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?568798F2.4070507>