On 2014-06-07 22:41, Dirk Jagdmann wrote:
> I'm looking at changing the devel/quilt port to support stageing. I've read 
> the manual and know that there will be a variable STAGEDIR defined somewhere. 
> But where exactly? It seems it is defined in the environment of the FreeBSD 
> ports Makefile, but it is not available as a unix shell environment variable 
> of the sub processes during the autoconf and build.
> 
> My first attempt was to use the STAGEDIR variable in the Makefiles of the 
> quilt program and prepend it to the PREFIX typically used by GNU autoconf 
> style builds. But when building/stageing this port, this variable is defined 
> to nothing. I see this, because the install than install into something like
> 
> //usr/local/bin/
> 
> Notice the double slash at the start, this shows me that STAGEDIR was 
> undefined (or the empty string).
> 
> Next I tried in the ports Makefile to do something like:
> 
> CONFIGURE_ARGS=--prefix=$(STAGEDIR)/usr/local
> 
> But this also does not work, because the FreeBSD ports will add it's own 
> --prefix with /usr/local/ again when running configure. Looking at the 
> config.log here's how the ports system called the configure script:
> 
> This file contains any messages produced by compilers while
> running configure, to aid debugging if configure makes a mistake.
> 
> It was created by quilt configure 0.63, which was
> generated by GNU Autoconf 2.69.  Invocation command line was
> 
>   $ ./configure --with-sed=/usr/local/bin/gsed --without-getopt 
> --with-patch=/usr/local/bin/gpatch --prefix=/usr/ports/devel/q\
> uilt/work/stage/usr/local --without-rpmbuild --prefix=/usr/local 
> --mandir=/usr/local/man --infodir=/usr/local/info/ --build=am\
> d64-portbld-freebsd10.0
> ...
> 
> As you can see, the ports system appends it's default GNU autoconf options 
> *after* mine and thus overrides my --prefix.
> 
> Question: what are the best practices to make GNU autoconf ports support 
> staging?
> 

There is a line NO_STAGE in the port, remove it and try to fire a build as 
*unprivileged* user.

With good luck the Makefile in the source of this port uses $(DESTDIR) so 
everything goes well.

If this is not the case there are some ways to enable stage support, e.g
- create do-install: target in the port Makefile and write place instructions 
here
- change the install instructions in the source Makefile
  '$(INSTALL) foo $(PREFIX)/bin' -> '$(INSTALL) foo $(DESTDIR)$(PREFIX)/bin'


Do not overwrite!
> CONFIGURE_ARGS=--prefix=$(STAGEDIR)/usr/local
else binaries and possible scripts are searching later in the wrong place for 
libs ...

-- 
olli
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-ports
To unsubscribe, send any mail to "[email protected]"

Reply via email to