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
___
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"