GithubHelp home page GithubHelp logo

isabella232 / portage-stable Goto Github PK

View Code? Open in Web Editor NEW

This project forked from coreos/portage-stable

0.0 0.0 0.0 56.53 MB

unmodified ebuilds mirrored from the portage tree

Shell 78.96% Emacs Lisp 0.05% Python 0.01% M 0.04% Makefile 0.02% C 0.25% Awk 0.13% Perl 0.24% Roff 20.23% Vim Script 0.01% M4 0.02% Common Lisp 0.04%

portage-stable's Introduction

Overview

This overlay contains curated unmodified Gentoo packages that are part of the Container Linux build and are exact copies of upstream Gentoo packages.

Updating packages

Use src/scripts/update_ebuilds to fetch the latest copy from Gentoo:

cd ~/trunk/src/scripts
repo start update-foo ../third-party/portage-stable
./update_ebuilds --commit app-fun/foo

Note: update_ebuilds can fetch from either Gentoo's Github mirror or Rsync services. If you'd prefer to use a local copy of the portage tree, you can point update_ebuilds at a local filepath:

rsync -rtlv rsync://rsync.gentoo.org/gentoo-portage ~/gentoo-portage
./update_ebuilds --commit --portage ~/gentoo-portage app-fun/foo

Licensing information can be found in the respective files, so consult them directly. Most ebuilds are licensed under the GPL version 2.

Upstream Gentoo sources: http://sources.gentoo.org/gentoo-x86/

Removing packages

Be careful when removing packages. The following section offers tips for preventing breakage, but they are by no means exhaustive. Be especially careful with packages that might affect sys-devel/binutils, sys-devel/gcc, sys-kernel/linux-headers, and sys-libs/glibc (see TOOLCHAIN_PKGS in scripts/build_library/toolchain_util.sh).

git log

git log <category>/<package> will show commits that touched that directory. These can give clues about why a package was included in the first place and where to look to ensure it really is unused.

equery d

equery d -a <package-name> will tell you what packages depend on package-name. It will also generate a lot of false positives, since it considers all dependencies for all use flags, even ones we do not use, such as test.

emerge --emptytree

emerge --pretend --verbose --emptytree <package-name> should give a list of all the dependencies for a given package. Use this to test if board-packages, sdk-depends, and @system can still be emerged after removing an ebuild and package. Remember to use the emerge-<arch>-usr commands to check board-packages and emerge to check sdk-depends. Use both when checking @system.

Furthermore, the SDK bootstrapping process uses a list of packages defined the by SDK profile's packages.build file. Install dev-util/catalyst and run /usr/lib64/catalyst/targets/stage1/build.py to get a list of packages needed for the boostrapping process, then run emerge --emptytree on that list.

A package's ebuild must be removed from portage-stable and the package must be removed locally. If only the ebuild is removed, the package will be silently elided in the emerge --emptytree dependency list. To see if there are any packages installed without ebuilds run eix -tTc. There are no eix-<arch>-usr wrappers, so double check the packages are also unmerged via the emerge-<arch>-usr commands. Make sure to run eix-update before running other eix commands.

emerge --emptytree also has unintuitive behavior when handling virtual packages. When making changes affecting virtual packages (removing a provider, changing use flags that affect a provider or virtual, etc), emerge --emptytree will always prefer an already installed provider (unless it is masked or otherwise disabled), so unmerge the current provider before running emerge --emptytree to ensure the virtuals are resolved correctly. Look at the virtual package's ebuild to see what providers it has and use emerge --search to see what is the currently installed provider. See this bug.

grep, git grep, repo grep, ripgrep, find, etc

Use your favorite grep variant to see if the package is used anywhere. Good places to double check are coreos-overlay, manifest, scripts, and portage-stable, as well as anything specific to the package.

Be sure to check coreos-overlay to ensure there are no use flags, accept_keywords, or other leftover bits relating to the package being removed.

Updating the metadata cache

If you remove a package, make sure to delete the corresponding files in metadata/md5cache, or run use egencache to do it for you:

    egencache --update --repo portage-stable

There is also scripts/update_metadata which will update both portage-stable and coreos-overlay and optionally generate a commit message.

Testing changes

If you have Jenkins running with this configuration, you can make pull requests with your changes and test them according to the instructions in the jenkins-os README

portage-stable's People

Contributors

ajeddeloh avatar allen-martin avatar atseanpaul avatar bgilbert avatar bleungatchromium avatar cbchan avatar crawford avatar csssuf avatar dgreid avatar dianders avatar djkurtz avatar dm0- avatar euank avatar glevand avatar gregkh avatar hungte avatar kamrik avatar marcheu avatar marineam avatar mischief avatar mjg59 avatar philips avatar polvi avatar serya avatar shenhanc78 avatar simonque avatar snematbakhsh avatar vapier avatar vpalatin avatar yufengshen avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.