Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!

Bug 699986

Summary: sys-apps/portage: let emerge use installed packages as a binary package repository (quickpkg like)
Product: Portage Development Reporter: Zac Medico <zmedico>
Component: Core - Interface (emerge)Assignee: Portage team <dev-portage>
Status: RESOLVED FIXED    
Severity: normal CC: esigra, leho
Priority: Normal Keywords: InVCS
Version: unspecified   
Hardware: All   
OS: All   
See Also: https://bugs.gentoo.org/show_bug.cgi?id=752066
Whiteboard:
Package list:
Runtime testing required: ---
Bug Depends on:    
Bug Blocks: 240187, 701268    

Description Zac Medico gentoo-dev 2019-11-13 09:08:22 UTC
If we let emerge use installed packages as a binary package repository (quickpkg like), then for example it's easy to take a buildtime container and emerge things from it into an empty directory (or buildah mount) in order to create a minimal runtime container (which need not include a package manager). The kind of approach could also be used by a "live" installer (usb image, iso image, etc).
Comment 1 Zac Medico gentoo-dev 2019-11-16 09:29:52 UTC
I've got a working patch but I need to clean in up and review it some more:

https://github.com/zmedico/portage/compare/master...bug_699986_quickpkg-direct
Comment 2 Larry the Git Cow gentoo-dev 2019-11-18 01:46:20 UTC
The bug has been referenced in the following commit(s):

https://gitweb.gentoo.org/proj/portage.git/commit/?id=b24a484ab190af9c9b96b9ef01837aded845fb54

commit b24a484ab190af9c9b96b9ef01837aded845fb54
Author:     Zac Medico <zmedico@gentoo.org>
AuthorDate: 2019-11-18 01:32:38 +0000
Commit:     Zac Medico <zmedico@gentoo.org>
CommitDate: 2019-11-18 01:41:27 +0000

    dblink: add quickpkg method
    
    Bug: https://bugs.gentoo.org/699986
    Signed-off-by: Zac Medico <zmedico@gentoo.org>

 bin/quickpkg                 | 34 ++++--------------------------
 lib/portage/dbapi/vartree.py | 50 ++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 54 insertions(+), 30 deletions(-)
Comment 4 Larry the Git Cow gentoo-dev 2019-11-27 03:22:00 UTC
The bug has been referenced in the following commit(s):

https://gitweb.gentoo.org/proj/portage.git/commit/?id=8faad11a18fcc33329931a75002f293e8fa462eb

commit 8faad11a18fcc33329931a75002f293e8fa462eb
Author:     Zac Medico <zmedico@gentoo.org>
AuthorDate: 2019-11-25 05:08:14 +0000
Commit:     Zac Medico <zmedico@gentoo.org>
CommitDate: 2019-11-27 03:19:20 +0000

    emerge: add --quickpkg-direct option
    
    Enable use of installed packages directly as binary
    packages. This is similar to using binary packages produced by
    quickpkg(1), but installed packages are used directly as though
    they are binary packages. This option only works in combination
    with the --root=DIR option, and it comes with the caveat that
    packages are only allowed to be installed into the root that
    is specified by the --root=DIR option. The other root which
    serves as a source of packages is assumed to be immutable
    during the entire operation (similar to --buildpkgonly mode).
    
    Default behavior for handling of protected configuration files
    is controlled by the QUICKPKG_DEFAULT_OPTS variable. When a
    configuration file is not included because it is protected, an
    ewarn message is logged.
    
    Suggested use cases:
    
    * Install packages from a buildtime container into an empty root,
      in order to create a minimal runtime container (which need not
      include a package manager). In a multi-stage Dockerfile, install
      runtime files to an empty directory in the build stage, and in
      the final stage use COPY to populate a container with the
      contents of that directory. For greater efficiency, use buildah
      to install directly into a mounted container, avoiding the COPY
      step. Use the emerge --usepkgonly and --ignore-soname-deps=n
      options to account for soname dependencies, allowing implicit
      system dependencies such as glibc to be automatically pulled
      into the runtime image.
    
    * Enable a live usb, iso, or pxe image to act as a binary
      installer that uses packages installed in the live image as a
      source of binary packages.
    
    Bug: https://bugs.gentoo.org/699986
    Signed-off-by: Zac Medico <zmedico@gentoo.org>

 lib/_emerge/Binpkg.py                   |  59 +++++++++-------
 lib/_emerge/Scheduler.py                |   7 +-
 lib/_emerge/actions.py                  |  37 ++++++++--
 lib/_emerge/depgraph.py                 |  19 ++++++
 lib/_emerge/main.py                     |   7 +-
 lib/portage/dbapi/__init__.py           |   5 +-
 lib/portage/dbapi/bintree.py            | 112 ++++++++++++++++++++++++++++--
 lib/portage/dbapi/vartree.py            | 117 ++++++++++++++++++++++++++++++--
 lib/portage/tests/emerge/test_simple.py |   3 +-
 man/emerge.1                            |  19 +++++-
 10 files changed, 338 insertions(+), 47 deletions(-)
Comment 5 Larry the Git Cow gentoo-dev 2019-11-27 03:45:12 UTC
The bug has been referenced in the following commit(s):

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=3e36007163e56015301e2146c671fb14b3b0af57

commit 3e36007163e56015301e2146c671fb14b3b0af57
Author:     Zac Medico <zmedico@gentoo.org>
AuthorDate: 2019-11-27 03:39:22 +0000
Commit:     Zac Medico <zmedico@gentoo.org>
CommitDate: 2019-11-27 03:39:57 +0000

    sys-apps/portage: Bump to version 2.3.80
    
     #667432 Rename DCO_SIGNED_OFF_BY config variable to SIGNED_OFF_BY.
     #674562 eapply: Drop -s option for patch.
     #689226 emerge --buildpkgonly: respect buildtime hard blockers
     #699986 emerge: add --quickpkg-direct option
    
    Bug: https://bugs.gentoo.org/701268
    Bug: https://bugs.gentoo.org/667432
    Bug: https://bugs.gentoo.org/674562
    Bug: https://bugs.gentoo.org/689226
    Bug: https://bugs.gentoo.org/699986
    Package-Manager: Portage-2.3.80, Repoman-2.3.18
    Signed-off-by: Zac Medico <zmedico@gentoo.org>

 sys-apps/portage/Manifest              |   1 +
 sys-apps/portage/portage-2.3.80.ebuild | 261 +++++++++++++++++++++++++++++++++
 2 files changed, 262 insertions(+)