Re: [gentoo-portage-dev] In what phase are file "merged"?

2021-08-06 Thread Alec Warner
On Thu, Aug 5, 2021 at 9:23 PM Ulrich Mueller  wrote:
>
> > On Fri, 06 Aug 2021, Joakim Tjernlund wrote:
>
> > On Wed, 2021-06-23 at 13:33 +0200, Michał Górny wrote:
> >> On Wed, 2021-06-23 at 12:40 +0200, Ulrich Mueller wrote:
> >> > I don't think that the ebuild can rely on any particular status of
> >> > the new package in pkg_*rm (of the old package), or the status of
> >> > the old package in pkg_*inst (of the new package).
> >>
> >> I would even say that it can't rely on the particular status of the
> >> old package in any case, if it's meant to be removed.  In particular,
> >> its dependencies can be unmerged before the package itself.
>
> > Stubled ove this mail again and noticed "its dependencies can be
> > unmerged before the package itself" stmt. That does not make sense to
> > me. Deps should be unmerged after any pkg that depends on them?
>
> A popular workflow is "emerge -c -p" followed by "emerge -C" on entries
> of the list shown. IIUC emerge -C doesn't do any dependency resolution,
> therefore ebuilds cannot rely on any removal order.

Not quite sure I follow. Let's assume I have A -> B -> C.

Is it legal for A to call a binary packaged in A in A's pkg_prerm?
If yes, then B and C have to be on the livefs at least until A's
pkg_prerm has run; right?; otherwise if we unmerged B or C before then
we might break A's binaries?

-A

>
> Ulrich



Re: [gentoo-portage-dev] In what phase are file "merged"?

2021-08-05 Thread Ulrich Mueller
> On Fri, 06 Aug 2021, Joakim Tjernlund wrote:

> On Wed, 2021-06-23 at 13:33 +0200, Michał Górny wrote:
>> On Wed, 2021-06-23 at 12:40 +0200, Ulrich Mueller wrote:
>> > I don't think that the ebuild can rely on any particular status of
>> > the new package in pkg_*rm (of the old package), or the status of
>> > the old package in pkg_*inst (of the new package).
>> 
>> I would even say that it can't rely on the particular status of the
>> old package in any case, if it's meant to be removed.  In particular,
>> its dependencies can be unmerged before the package itself.

> Stubled ove this mail again and noticed "its dependencies can be
> unmerged before the package itself" stmt. That does not make sense to
> me. Deps should be unmerged after any pkg that depends on them?

A popular workflow is "emerge -c -p" followed by "emerge -C" on entries
of the list shown. IIUC emerge -C doesn't do any dependency resolution,
therefore ebuilds cannot rely on any removal order.

Ulrich


signature.asc
Description: PGP signature


Re: [gentoo-portage-dev] In what phase are file "merged"?

2021-08-05 Thread Joakim Tjernlund
On Wed, 2021-06-23 at 13:33 +0200, Michał Górny wrote:
> On Wed, 2021-06-23 at 12:40 +0200, Ulrich Mueller wrote:
> > > > > > > On Wed, 23 Jun 2021, Fabian Groffen wrote:
> > 
> > > On 23-06-2021 08:47:58 +0200, Ulrich Mueller wrote:
> > > > It's somewhat hidden, but it's there:
> > > > https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fprojects.gentoo.org%2Fpms%2F8%2Fpms.html%23x1-950009.1.10data=04%7C01%7CJoakim.Tjernlund%40infinera.com%7Cba02686be6d54ea9cc9108d9363acdd2%7C285643de5f5b4b03a1530ae2dc8aaf77%7C1%7C1%7C637600448462073359%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000sdata=Jb60QbNzyIAUesXa9Z9YVlaGbbKBVVXK6qK%2BgiZ87%2BM%3Dreserved=0
> > > > 
> > > > 9.1.10 pkg_preinst
> > > > ... immediately before merging the package to the live
> > > > filesystem.
> > > > ...
> > > > 
> > > > 9.1.11 pkg_postinst
> > > > ... immediately after merging the package to the live filesystem.
> > > > ...
> > 
> > > Aha, so does this mean pkg_prerm and pkg_postrm are run with
> > > replacing
> > > package in place, e.g. if they refer to scripts installed by the
> > > replaced package they may no longer exist or be the same?
> > 
> > PMS has similar wording for pkg_prerm and pkg_postrm, so (at least
> > according to the spec) the old package will still be present in
> > pkg_prerm and will be gone in pkg_postrm.
> > 
> > I don't think that the ebuild can rely on any particular status of
> > the
> > new package in pkg_*rm (of the old package), or the status of the old
> > package in pkg_*inst (of the new package).
> 
> I would even say that it can't rely on the particular status of the old
> package in any case, if it's meant to be removed.  In particular, its
> dependencies can be unmerged before the package itself.

Stubled ove this mail again and noticed "its dependencies can be
unmerged before the package itself" stmt. That does not make sense to
me. Deps should be unmerged after any pkg that depends on them?

 Jocke


Re: [gentoo-portage-dev] In what phase are file "merged"?

2021-06-23 Thread Michał Górny
On Wed, 2021-06-23 at 12:40 +0200, Ulrich Mueller wrote:
> > > > > > On Wed, 23 Jun 2021, Fabian Groffen wrote:
> 
> > On 23-06-2021 08:47:58 +0200, Ulrich Mueller wrote:
> > > It's somewhat hidden, but it's there:
> > > https://projects.gentoo.org/pms/8/pms.html#x1-950009.1.10
> > > 
> > > 9.1.10 pkg_preinst
> > > ... immediately before merging the package to the live filesystem.
> > > ...
> > > 
> > > 9.1.11 pkg_postinst
> > > ... immediately after merging the package to the live filesystem.
> > > ...
> 
> > Aha, so does this mean pkg_prerm and pkg_postrm are run with
> > replacing
> > package in place, e.g. if they refer to scripts installed by the
> > replaced package they may no longer exist or be the same?
> 
> PMS has similar wording for pkg_prerm and pkg_postrm, so (at least
> according to the spec) the old package will still be present in
> pkg_prerm and will be gone in pkg_postrm.
> 
> I don't think that the ebuild can rely on any particular status of the
> new package in pkg_*rm (of the old package), or the status of the old
> package in pkg_*inst (of the new package).

I would even say that it can't rely on the particular status of the old
package in any case, if it's meant to be removed.  In particular, its
dependencies can be unmerged before the package itself.

-- 
Best regards,
Michał Górny





Re: [gentoo-portage-dev] In what phase are file "merged"?

2021-06-23 Thread Ulrich Mueller
> On Wed, 23 Jun 2021, Fabian Groffen wrote:

> On 23-06-2021 08:47:58 +0200, Ulrich Mueller wrote:
>> It's somewhat hidden, but it's there:
>> https://projects.gentoo.org/pms/8/pms.html#x1-950009.1.10
>> 
>> 9.1.10 pkg_preinst
>> ... immediately before merging the package to the live filesystem. ...
>> 
>> 9.1.11 pkg_postinst
>> ... immediately after merging the package to the live filesystem. ...

> Aha, so does this mean pkg_prerm and pkg_postrm are run with replacing
> package in place, e.g. if they refer to scripts installed by the
> replaced package they may no longer exist or be the same?

PMS has similar wording for pkg_prerm and pkg_postrm, so (at least
according to the spec) the old package will still be present in
pkg_prerm and will be gone in pkg_postrm.

I don't think that the ebuild can rely on any particular status of the
new package in pkg_*rm (of the old package), or the status of the old
package in pkg_*inst (of the new package).

Ulrich


signature.asc
Description: PGP signature


Re: [gentoo-portage-dev] In what phase are file "merged"?

2021-06-23 Thread Fabian Groffen
On 23-06-2021 08:47:58 +0200, Ulrich Mueller wrote:
> > On Wed, 23 Jun 2021, Joakim Tjernlund wrote:
> 
> > In PMS 9.2 is says:
> > The call order for upgrading, downgrading or reinstalling a package is:
> 
> > pkg_pretend (only for EAPIs listed in table 9.2), which is called 
> > outside of the normal call order process.
> > pkg_setup
> > src_unpack
> > src_prepare (only for EAPIs listed in table 9.3)
> > src_configure (only for EAPIs listed in table 9.4)
> > src_compile
> > src_test (except if RESTRICT=test)
> > src_install
> > pkg_preinst
> > pkg_prerm for the package being replaced
> > pkg_postrm for the package being replaced
> > pkg_postinst
> 
> > It does not say where in this list new files merged and old files
> > unmerged, can anyone enlighten me?
> 
> It's somewhat hidden, but it's there:
> https://projects.gentoo.org/pms/8/pms.html#x1-950009.1.10
> 
>9.1.10 pkg_preinst
>... immediately before merging the package to the live filesystem. ...
> 
>9.1.11 pkg_postinst
>... immediately after merging the package to the live filesystem. ...

Aha, so does this mean pkg_prerm and pkg_postrm are run with replacing
package in place, e.g. if they refer to scripts installed by the
replaced package they may no longer exist or be the same?

Thanks,
Fabian


-- 
Fabian Groffen
Gentoo on a different level


signature.asc
Description: PGP signature


Re: [gentoo-portage-dev] In what phase are file "merged"?

2021-06-23 Thread Ulrich Mueller
> On Wed, 23 Jun 2021, Joakim Tjernlund wrote:

> In PMS 9.2 is says:
> The call order for upgrading, downgrading or reinstalling a package is:

> pkg_pretend (only for EAPIs listed in table 9.2), which is called outside 
> of the normal call order process.
> pkg_setup
> src_unpack
> src_prepare (only for EAPIs listed in table 9.3)
> src_configure (only for EAPIs listed in table 9.4)
> src_compile
> src_test (except if RESTRICT=test)
> src_install
> pkg_preinst
> pkg_prerm for the package being replaced
> pkg_postrm for the package being replaced
> pkg_postinst

> It does not say where in this list new files merged and old files
> unmerged, can anyone enlighten me?

It's somewhat hidden, but it's there:
https://projects.gentoo.org/pms/8/pms.html#x1-950009.1.10

   9.1.10 pkg_preinst
   ... immediately before merging the package to the live filesystem. ...

   9.1.11 pkg_postinst
   ... immediately after merging the package to the live filesystem. ...

Ulrich


signature.asc
Description: PGP signature