Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 6 Sep 2015 10:07:28 -0600
From:      Gary Aitken <freebsd@dreamchaser.org>
To:        FreeBSD Mailing List <freebsd-questions@freebsd.org>
Subject:   ports database, sorta-user install
Message-ID:  <55EC64C0.3000802@dreamchaser.org>

next in thread | raw e-mail | index | archive | help
I'm trying to build gimp from the latest source, while still keeping 
the /usr/ports version installed.  This is turning out to be non-trivial
(for me), and the easiest way appears to be to treat it as a port and
use the ports mechanism to deal with the gnu aspects of the source.

To get the ball rolling, I need to build x11/babl from the latest source.

As a normal user, I set PREFIX to 
  /home/garya/Computing/GIMP/devel
used git to fetch the source and built a fbsd port with appropriate Makefile,
files/patch*, pkg-descr, pkg-plist, distinfo.

As a normal user, the following all work:
  make extract
  make stage
  make check-orphans

When I attempt a make install, it prompts for root pw to allow writing the
pkg database.  If I give that it says an old version of babl is already
installed, and to set FORCE_PKG_REGISTER if I really want to install.  So
I do that:
  FORCE_PKG_REGISTER="yes" make install >output_install.txt 2>&1

The files are installed where I want under lib and include in $PREFIX;
the ports version of gimp still links to the old libs and appears to run;
but the pkg db is modified to reflect the new babl:

$pkg info | grep babl
babl-0.1.13                    Dynamic pixel format conversion library

So I deinstall, reinstall the ports version as root, switch back to user and set 
  export PKG_CONFIG_PATH=$PREFIX/usr/local/libdata/pkgconfig:/usr/local/libdata/pkgconfig
and reinstall

That leaves babl.pc for the old version in /usr/local/libdata/pkgconfig,
and puts the new one in $PREFIX/libdata/pkgconfig:
  $ cat /usr/local/libdata/pkgconfig/babl.pc
  prefix=/usr/local
  exec_prefix=${prefix}
  libdir=${exec_prefix}/lib
  includedir=${prefix}/include
  
  Name: babl
  Description: Dynamic, any to any, pixel format conversion library
  Version: 0.1.12
  Cflags: -I${includedir}/babl-0.1
  Libs: -L${libdir} -lbabl-0.1 -lm

  
  $ cat ~/Computing/GIMP/devel/libdata/pkgconfig/babl.pc
  prefix=/home/garya/Computing/GIMP/devel
  exec_prefix=${prefix}
  libdir=${exec_prefix}/lib
  includedir=${prefix}/include
  
  Name: babl
  Description: Dynamic, any to any, pixel format conversion library
  Version: 0.1.13
  Cflags: -I${includedir}/babl-0.1
  Libs: -L${libdir} -lbabl-0.1
  Libs.private: -lm -lpthread

At this point I think everything is how I want it, except 
  pkg info
still reports only the new version, even from shells where PKG_CONFIG_PATH
is not set.

Can someone tell me what's going on?

Is there some better way to do this?  Essentially, I want to build a set
of new ports that still link to standard libs when possible, superceeding
existing ports as necessary.  In this case, that means at least a 
  new gimp (depends on new gegl)
  new gegl (depends on new babl)
  new babl

Thanks,

Gary



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