ports/158179: some packages do not fully honor -P dir option in pkg_add(1)
Chris Rees
utisoft at gmail.com
Sat Jul 16 16:00:29 UTC 2011
The following reply was made to PR ports/158179; it has been noted by GNATS.
From: Chris Rees <utisoft at gmail.com>
To: Stephen Montgomery-Smith <stephen at missouri.edu>
Cc: "current at freebsd.org" <current at freebsd.org>,
"freebsd at sopwith.solgatos.com" <freebsd at sopwith.solgatos.com>,
"bug-followup at freebsd.org" <bug-followup at freebsd.org>, Stefan Bethke <stb at lassitu.de>
Subject: Re: ports/158179: some packages do not fully honor -P dir option in pkg_add(1)
Date: Sat, 16 Jul 2011 16:53:49 +0100
--001636920d3a9e7def04a831c5ac
Content-Type: text/plain; charset=ISO-8859-1
On 16 Jul 2011 16:38, "Stephen Montgomery-Smith" <stephen at missouri.edu>
wrote:
>
> On 07/16/2011 04:26 AM, Stefan Bethke wrote:
>>
>> Am 16.07.2011 um 04:43 schrieb Stephen Montgomery-Smith:
>>
>>> I was looking through the source code of pkg_add. Personally I don't
see how the "-P" or "-p" option could be made to work with pkg_add. Many of
the installation commands involve scripts which have ${PREFIX} hard coded
into them. ${PREFIX} is often hard coded when trhe package is created by
the port. In my opinion, the options "-p" and "-P" should be removed from
pkg_add.
>>>
>>> Either that, or provide the port a way to access "@cwd" in any scripts
it installs. But this would require a major overhaul of the whole ports
system, and probably much of the software it installs as well.
>>>
>>> Am I missing something?
>>
>>
>> Yes. Not honoring the prefix is a bug in the port. If you do need to do
prefix-specific things during install, use pkg-install, see
http://www.freebsd.org/doc/en/books/porters-handbook/pkg-install.html
>>
>> I suspect that many ports are not well tested outside of "/usr/local",
but the infrastructure is there and available.
>
>
> You are correct, this needs to be done on a port by port basis. In some
ports this is going to be a big job, because in some cases the "/usr/local"
is hard coded into certain binaries.
>
> For example, suppose the C source code contains something like:
> char applications_dir = "/usr/local/share/applications";
> and this is filled in by the ./configure script.
>
> How is that handled?
>
It's not.
Remember what a package is, literally the files from the plist tarred with
some magic +FILEs and the pkg-*install files- if paths are hardcoded in
objects that's how it'll be installed.
Don't touch the -p option! It's only useful for.... um.... someone help
here?
Chris
--001636920d3a9e7def04a831c5ac
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
<p><br>
On 16 Jul 2011 16:38, "Stephen Montgomery-Smith" <<a href=3D"m=
ailto:stephen at missouri.edu">stephen at missouri.edu</a>> wrote:<br>
><br>
> On 07/16/2011 04:26 AM, Stefan Bethke wrote:<br>
>><br>
>> Am 16.07.2011 um 04:43 schrieb Stephen Montgomery-Smith:<br>
>><br>
>>> I was looking through the source code of pkg_add. =A0Personall=
y I don't see how the "-P" or "-p" option could be =
made to work with pkg_add. Many of the installation commands involve script=
s which have ${PREFIX} hard coded into them. =A0${PREFIX} is often hard cod=
ed when trhe package is created by the port. =A0In my opinion, the options =
"-p" and "-P" should be removed from pkg_add.<br>
>>><br>
>>> Either that, or provide the port a way to access "@cwd&qu=
ot; in any scripts it installs. =A0But this would require a major overhaul =
of the whole ports system, and probably much of the software it installs as=
well.<br>
>>><br>
>>> Am I missing something?<br>
>><br>
>><br>
>> Yes. =A0Not honoring the prefix is a bug in the port. =A0If you do=
need to do prefix-specific things during install, use pkg-install, see <a =
href=3D"http://www.freebsd.org/doc/en/books/porters-handbook/pkg-install.ht=
ml">http://www.freebsd.org/doc/en/books/porters-handbook/pkg-install.html</=
a><br>
>><br>
>> I suspect that many ports are not well tested outside of "/us=
r/local", but the infrastructure is there and available.<br>
><br>
><br>
> You are correct, this needs to be done on a port by port basis. =A0In =
some ports this is going to be a big job, because in some cases the "/=
usr/local" is hard coded into certain binaries.<br>
><br>
> For example, suppose the C source code contains something like:<br>
> char applications_dir =3D "/usr/local/share/applications";<b=
r>
> and this is filled in by the ./configure script.<br>
><br>
> How is that handled?<br>
></p>
<p>It's not.</p>
<p>Remember what a package is, literally the files from the plist tarred wi=
th some magic +FILEs and the pkg-*install files- if paths are hardcoded in =
objects that's how it'll be installed.</p>
<p>Don't touch the -p option! It's only useful for.... um.... someo=
ne help here?</p>
<p>Chris<br>
</p>
--001636920d3a9e7def04a831c5ac--
More information about the freebsd-ports-bugs
mailing list