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= updat...@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
_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
___
freebsd-ports@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-ports
To unsubscribe, send any mail to "freebsd-ports-unsubscr...@freebsd.org"