Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 10 Apr 2010 14:30:43 -0700
From:      Garrett Cooper <yanefbsd@gmail.com>
To:        Dominic Fandrey <kamikaze@bsdforen.de>
Cc:        freebsd-ports@freebsd.org
Subject:   Re: Trivial PR, fix package-noinstall
Message-ID:  <p2w7d6fde3d1004101430ubd4866c2r4c171b405eca05ba@mail.gmail.com>
In-Reply-To: <4BC0607D.9060402@bsdforen.de>
References:  <4BC04503.4000808@bsdforen.de> <t2p7d6fde3d1004100318k8b0b622fpaa38c5d942d8d60a@mail.gmail.com> <4BC0568E.6000008@bsdforen.de> <u2m7d6fde3d1004100349r3c769f7atb87d06c2dd748e62@mail.gmail.com> <4BC0607D.9060402@bsdforen.de>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, Apr 10, 2010 at 4:26 AM, Dominic Fandrey <kamikaze@bsdforen.de> wro=
te:
> On 10/04/2010 12:49, Garrett Cooper wrote:
>> On Sat, Apr 10, 2010 at 3:44 AM, Dominic Fandrey <kamikaze@bsdforen.de> =
wrote:
>>> On 10/04/2010 12:18, Garrett Cooper wrote:
>>>> On Sat, Apr 10, 2010 at 2:29 AM, Dominic Fandrey <kamikaze@bsdforen.de=
> wrote:
>>>>> This morning I took a look at my outstanding PRs. There are
>>>>> is a ports PR I consider old and trivial:
>>>>>
>>>>> This one fixes a bug in the package-noinstall target. wxs told
>>>>> me that he prefers my proposed fix over his own:
>>>>> http://www.freebsd.org/cgi/query-pr.cgi?pr=3Dports/144164
>>>>
>>>> This suggested fix completely breaks pkg_creates operation because it
>>>> does a chdir(2) prior to package creation (from
>>>> .../usr.sbin/pkg_install/create/perform.c:555):
>>>>
>>>> =A0 =A0 if (chdir(log_dir) =3D=3D FAIL) {
>>>> =A0 =A0 =A0 =A0 warnx("can't change directory to '%s'!", log_dir);
>>>> =A0 =A0 =A0 =A0 return FALSE;
>>>> =A0 =A0 }
>>>
>>> I don't see what appears to be the problem. The fix is tested,
>>> there is no chdiring and pkg_create is not modified in any way.
>>>
>>> All it does is change the parameters pkg_create is called with.
>>
>> =A0 =A0 Have you tested in the following cases:
>>
>> 1. With the pkg_install scripts.
>> 2. Without the pkg_install scripts.
>>
>> =A0 =A0 If not, then you need to do that before asking for someone to
>> commit your code :).
>
> The do-package code is used by the package and the package-noinstall
> targets.
>
> package-noinstall is called by package-recursive on ALL-DEPENDS.
> I.e. it is only used on completely installed packages, just what
> "pkg_create -b" was made for.
>
> The regular package target is always run after install (search for
> "Main logic" in bsd.port.mk). So do-package is only called after
> install has completed, hence the code can, in every case, rely on
> logdir containing all required data.

Ok, interesting. If you look at another spot in bsd.port.mk, there's
another area where +INSTALL and friends are installed:

fake-pkg:
# ...
        if [ -f ${PKGINSTALL} ]; then \
            ${CP} ${PKGINSTALL} ${PKG_DBDIR}/${PKGNAME}/+INSTALL; \
        fi; \
        if [ -f ${PKGDEINSTALL} ]; then \
            ${CP} ${PKGDEINSTALL} ${PKG_DBDIR}/${PKGNAME}/+DEINSTALL; \
        fi; \
        if [ -f ${PKGREQ} ]; then \
            ${CP} ${PKGREQ} ${PKG_DBDIR}/${PKGNAME}/+REQUIRE; \
        if [ -f ${PKGMESSAGE} ]; then \
            ${CP} ${PKGMESSAGE} ${PKG_DBDIR}/${PKGNAME}/+DISPLAY; \
        fi; \
# ...

So if I don't define NO_PKG_REGISTER and I define FORCE_PKG_REGISTER,
then this logic will be executed.

This change does need to be tested for the make package-noinstall case
with pkg-install, pkg-deinstall, etc being present and not being
present [in their .in files form and non-.in files form]. Otherwise
this is going to potentially introduce a regression into bsd.port.mk.

Thanks,
-Garrett



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