Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 3 Mar 2014 23:04:12 +0100
From:      Michael Gmelin <freebsd@grem.de>
To:        David Thiel <lx@redundancy.redundancy.org>
Cc:        "bapt@FreeBSD.org" <bapt@FreeBSD.org>, "Chad J. Milios" <milios@ccsys.com>, "freebsd-ports@freebsd.org" <freebsd-ports@freebsd.org>
Subject:   Re: dns/djbdns [do-package] Error code 1
Message-ID:  <20140303230412.552cb65d@bsd64.grem.de>
In-Reply-To: <20140227194751.GV32062@redundancy.redundancy.org>
References:  <5304F8A5.9040209@ccsys.com> <20140219185040.GW8859@redundancy.redundancy.org> <5305003C.1080908@ccsys.com> <530F16E6.1070202@ccsys.com> <A2EF922A-9F9B-4CA8-B719-81BC98DC6BE4@grem.de> <20140227194751.GV32062@redundancy.redundancy.org>

next in thread | previous in thread | raw e-mail | index | archive | help
--MP_/jkK7wq1uSZ=haB4So=w3BrW
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

On Thu, 27 Feb 2014 11:47:51 -0800
David Thiel <lx@redundancy.redundancy.org> wrote:

> On 02/27, Michael Gmelin wrote:
> > I stumbled over the same problem today on 10.0, make NO_STAGE=1
> > install worked for me on the first attempt though. I can also
> > confirm the problem with dnscache-conf when installing the binary
> > package using "pkg install".
> 
> Can you confirm the exact version you installed via pkg install,
> including PORTREVISION?

[3/3] Installing djbdns-1.05_17,1... done

 pkg info djbdns
 configuration file djbdns-1.05_17,1
Name           : djbdns
Version        : 1.05_17,1
Installed on   : Mon Mar  3 20:24:26 UTC 2014
Origin         : dns/djbdns
Architecture   : freebsd:10:x86:64
Prefix         : /usr/local
Categories     : dns
Maintainer     : lx@FreeBSD.org
WWW            : http://cr.yp.to/djbdns.html
Comment        : Collection of secure and reliable DNS tools
Options        :
        ADD_USERS      : off
        DNSCURVE       : off
        DUMPCACHE      : off
        IGNOREIP       : off
        IP6            : off
        JUMBO          : off
        MAN            : on
        PERSISTENT_MMAP: off
        SRV            : off
Flat size      : 801KiB
Description    :

Bapt's latest fixes (1.05_18,1) seem to solve this, *but*...

> 
> > I'm not certain about the maintainer situation of the port, if you
> > want me to I could take a closer look at this in a few days.
> 
> The difficulty here is that the maintainer can't reproduce the problem
> at all, and I'm not intimately familiar with the internals of stage
> support. I don't see anything in the port that looks timing-dependent,
> so I'm not sure where to go.

unfortunately now it seems like staging is not working reliably. I
noticed this while building on a host that actually runs dnscache (it's
reproducible about 90% of the time):

# make clean stage

...

===>   Generating temporary packing list
./install
install: fatal: unable to write .../bin/dnscache: text busy
*** Error code 111

Stop.
make[2]: stopped in /usr/ports/dns/djbdns/work/djbdns-1.05
*** Error code 1

Stop.
make[1]: stopped in /usr/ports/dns/djbdns
*** Error code 1

Stop.
make: stopped in /usr/ports/dns/djbdns

Which simply means, that ./install is trying to overwrite the
running /usr/local/bin/dnscache.

MAKE_JOBS_UNSAFE works here, so there's probably a parallel execution
problem which messes up the conf-home logic/workaround. If I introduce
"sleep 1" to the pre-install target things work as expected. Also, if
I run "make clean; make; sleep 1; make stage" everything is ok.

My theory is, that overwriting ${WRKSRC}/conf-home only results
in the desired effect, if its new timestamp is clearly newer to trigger
rebuilds of all dependencies.

When comparing build outputs, I noticed that in a working build
"./auto-str auto_home `head -1 conf-home > auto_home.c`" got called,
while on malfunctioning builds it wouldn't. Rebuilding auto_home.c
depends directly on auto-str and conf-home.

My trivial solution is to also remove auto_home.c as part of
the pre-install target, which *seems* to fix the problem, since it makes
sure that conf-home gets turned into a news auto_home.c which in turn
is used when creating auto_home.o and linking install and instcheck.

Makes sense?

Patch (also attached for those receiving this directly):

--- ../djbdns.orig/Makefile	2014-03-03 21:50:54.283547363 +0000
+++ Makefile	2014-03-03 21:52:48.982536754 +0000
@@ -134,7 +134,7 @@
 pre-install:
 	@${MV} -f ${WRKSRC}/conf-home ${WRKSRC}/conf-home.sav
 	@echo "${STAGEDIR}${PREFIX}" > ${WRKSRC}/conf-home
-	@cd ${WRKSRC} ; ${RM} -f install instcheck install.o instcheck.o hier.o auto_home.o
+	@cd ${WRKSRC} ; ${RM} -f install instcheck install.o instcheck.o hier.o auto_home.o auto_home.c
 	@cd ${WRKSRC} ; ${MAKE_CMD} install instcheck
 	@${MV} -f ${WRKSRC}/conf-home.sav ${WRKSRC}/conf-home
 



-- 
Michael Gmelin

--MP_/jkK7wq1uSZ=haB4So=w3BrW
Content-Type: text/x-patch
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename=djbdns.patch

--- ../djbdns.orig/Makefile	2014-03-03 21:50:54.283547363 +0000
+++ Makefile	2014-03-03 21:52:48.982536754 +0000
@@ -134,7 +134,7 @@
 pre-install:
 	@${MV} -f ${WRKSRC}/conf-home ${WRKSRC}/conf-home.sav
 	@echo "${STAGEDIR}${PREFIX}" > ${WRKSRC}/conf-home
-	@cd ${WRKSRC} ; ${RM} -f install instcheck install.o instcheck.o hier.o auto_home.o
+	@cd ${WRKSRC} ; ${RM} -f install instcheck install.o instcheck.o hier.o auto_home.o auto_home.c
 	@cd ${WRKSRC} ; ${MAKE_CMD} install instcheck
 	@${MV} -f ${WRKSRC}/conf-home.sav ${WRKSRC}/conf-home
 

--MP_/jkK7wq1uSZ=haB4So=w3BrW--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20140303230412.552cb65d>