On Thu, 27 Feb 2014 11:47:51 -0800
David Thiel <l...@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     : l...@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
--- ../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
 
_______________________________________________
freebsd-ports@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-ports
To unsubscribe, send any mail to "freebsd-ports-unsubscr...@freebsd.org"

Reply via email to