public inbox for gentoo-dev@lists.gentoo.org
 help / color / mirror / Atom feed
From: Michael Orlitzky <mjo@gentoo.org>
To: gentoo-dev@lists.gentoo.org
Subject: [gentoo-dev] Revisions for USE flag changes
Date: Fri, 11 Aug 2017 19:50:14 -0400	[thread overview]
Message-ID: <dbed2635-d00e-0707-cfc4-6bb472a170b8@gentoo.org> (raw)

We have a pull request for the devmanual that will update the revision
documentation; namely, when to create a new one:

  https://github.com/gentoo/devmanual.gentoo.org/pull/67

The comments bring up an issue that I think can benefit from some
hindsight. Specifically, the PR says that it's OK to change IUSE without
creating a revision, because users can use --changed-use to catch it.
My immediate objection to that was that --changed-use is specific to
Portage, but let's reflect on the status quo.


== The situation now ==

  1 We tell everyone to update with either --newuse or --changed-use.

  2 Developers change IUSE without new revisions.

  3 To facilitate (1) and (2), Portage has the --changed-use and
    --newuse flags. Paludis has a family of "--keep" options to avoid
    reinstallation, e.g. --keep=if-same-metadata. And pkgcore has its
    own (different) --newuse flag.

  4 There is no specification for the features in (3), and each package
    manager has taken a different approach.


The end result is that Portage users do see the changes made to IUSE
without a revision, but at a cost:

  * They have to pass the "required" --changed-use or --newuse flags to
    every command.

  * The same cannot be said for users of other package managers.

  * Lots of PM code exists to handle this stuff.

  * Our documentation needs to describe the above (relatively)
    complicated situation.


And with one notable benefit:

  * We don't need to rename the ebuild to change IUSE, and in theory we
    can control when rebuilds happen.



== New revisions for USE flag changes ==

I suggest that in hindsight, we can do better. Suppose we require a new
revision for every change to IUSE. Then,

  * We can delete all of the PM code for --changed-use and --newuse and
    friends.

  * The documentation becomes much simpler: revbump if IUSE changes.

  * Users can omit --newuse and --changed-use from their lives.

  * All package managers now handle IUSE changes properly.

  * emerge runs a bit faster.

This has none of the downsides of the current approach. Of course, it
lacks that one benefit -- that you don't have to rename the ebuild when
you change IUSE. Now I'll try to convince you that the rename and
associated rebuilds aren't that big of a deal.


Q. But what about the rebuilds?

  For most packages, the rebuilds simply don't matter. Unless you're
  the maintainer of libreoffice, firefox, chromium, etc. -- just do the
  revision and forget about the (quick) rebuilds.

  We tell everyone to use --changed-use and --newuse if they want
  things to work, so they were probably going to rebuild anyway.


Q. But what if I maintain firefox, and I need to change  IUSE?

  If the IUSE change isn't important, just make the new revision in a
  branch and wait to commit it later when there are more changes
  piled up. If it is important (like if its default value changes
  RDEPEND), then it would have required a revision anyway.


Q. But I work on a team, and we can't all work in different branches.

  If you work on a massive package and if you're collaborating with
  others regularly, you can commit the new ebuild masked. This is
  annoying, but is an extremely rare combination of circumstances.


== tl;dr ==

We would be better off with respect to IUSE changes and revisions if we
deleted the --changed-use and --newuse flags right now, and just
required developers to revbump when changing IUSE.

Package managers get simpler, documentation gets simpler, the user
interface gets simpler, and behavior becomes more uniform and predictable.

Please let me know what you think.


             reply	other threads:[~2017-08-11 23:50 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-11 23:50 Michael Orlitzky [this message]
2017-08-12  0:45 ` [gentoo-dev] Revisions for USE flag changes Brian Evans
2017-08-12  0:59   ` Michael Orlitzky
2017-08-12  1:04     ` Michael Orlitzky
2017-08-12  1:11     ` Brian Evans
2017-08-12  8:39       ` Paweł Hajdan, Jr.
2017-08-12  9:58         ` Michael Orlitzky
2017-08-13  2:52           ` [gentoo-dev] " Duncan
2017-08-13 10:11             ` Michael Orlitzky
2017-08-13 10:18               ` M. J. Everitt
2017-08-14  1:34                 ` Duncan
2017-08-16 20:12               ` Daniel Campbell
2017-08-18 14:50             ` Duncan
2017-08-13  5:01           ` [gentoo-dev] " Hans de Graaff
2017-08-13 10:38             ` Michael Orlitzky
     [not found]               ` <CAJ0EP42EaW8=dm0c26Gaij9gEAmTVHxiyp5+Hc_CYGzEypudsA@mail.gmail.com>
     [not found]                 ` <CAJ0EP40yVVpLqHL5qVixxgvMmJc7ezRsn42qLoe621wS0KF-VA@mail.gmail.com>
     [not found]                   ` <CAJ0EP43YbX-vA5cWcFm_Etin4H31Nq2s_xYsrTwuOK6LVyW+9A@mail.gmail.com>
     [not found]                     ` <CAJ0EP42HkoYEkL1vt=Lyt-Dw-1XkdAXed8DrBp4oYB9j01+PKQ@mail.gmail.com>
2017-08-13 17:28                       ` Mike Gilbert
2017-08-12  4:22 ` [gentoo-dev] " Michael Palimaka
2017-08-12 10:16   ` Michael Orlitzky
2017-08-12 10:58     ` Michael Palimaka
2017-08-12 10:32   ` Rich Freeman
2017-08-12  5:02 ` [gentoo-dev] " Hans de Graaff
2017-08-12  7:03 ` Michał Górny
2017-08-12  9:57   ` Michael Orlitzky
2017-08-12 10:04     ` Toralf Förster
2017-08-12 10:29     ` Rich Freeman
2017-08-12 11:05       ` [gentoo-dev] " Michael Palimaka
2017-08-12 11:18         ` Rich Freeman
2017-08-14 12:01         ` Jason Zaman
2017-08-16  3:22           ` Michael Orlitzky
2017-08-16 15:56             ` Duncan
2017-08-16 16:09               ` Rich Freeman
2017-08-17  4:27             ` Jason Zaman
2017-08-12 14:14       ` [gentoo-dev] " Michael Orlitzky
2017-08-13  2:32         ` [gentoo-dev] " Duncan
2017-08-13 10:08           ` Michael Orlitzky
2017-08-13 16:06 ` [gentoo-dev] " William Hubbs
2017-08-13 16:12   ` Michael Orlitzky
2017-08-14 16:29     ` William L. Thomson Jr.
2017-08-14 16:21 ` William L. Thomson Jr.

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=dbed2635-d00e-0707-cfc4-6bb472a170b8@gentoo.org \
    --to=mjo@gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox