Custom Query (894 matches)

Filters
 
Or
 
  
 
Columns

Show under each result:


Results (67 - 69 of 894)

Ticket Owner Reporter Resolution Summary
#1086 solj casso fixed Enhanced version of Portage client driver
Description

Hi, I've created an enhanced client side driver for portage/ebuild clients. It is a major re-write of the old Portage driver. The driver supports the following enhancements:

  • Allow version auto or any
  • Allow building packages from source with binpkgonly = False option
  • Allow for calculating dependencies of specified packages with get_deps = True option
  • Reasonable verbose mode logging output
  • Fallback to old driver's behaviour by default

Introduction

For a Gentoo Linux machine, dependency calculation must be done client side, and it must be done after these steps:

  • portage tree is synchronised
  • any overlays are synchronised
  • make.conf file is up to date
  • any files under /etc/portage are up to date (specifically portage.use and portage.keywords)

For the same dependency checks to be implemented server side and work successfully, the architecture would most likely need to be the same on the host server. Additionally the host server would need to have the same state as the client regarding the above mentioned points. It is certainly much easier and makes much more sense to check this client side.

To check dependencies client side, the client lies about the list of extra packages. The FindExtraPackages function has been written to check what dependencies would be required to install all specified packages from the literal configuration. If any packages remain, these will be listed as extra packages.

Auto/any version support

This has been implemented with an additional function called _CheckForUpdates. This function will check all packages specified in the literal configuration. If a package has version auto it will be checked if an update can be performed. If a package has version any and is not installed it will be checked if an update can be performed.

Update checking is done in a single pass. To do this the full list of packages is fed to emerge (specifically emerge --update --newuse --nodeps) and the output is checked to see if the corresponding package exists. If it does exist, the version it will be installed as is noted.

Dependency checking via FindExtraPackages

The function FindExtraPackages was not implemented in the previous driver. To support dependency checking, this function lies about the list of extra packages.

The function takes the list of specified packages, checks if each package is installed then checks the dependencies via emerge --emptytree of the installed packages. If any packages that are currently installed are not in the returned list, the package is marked as an extra package.

Since running this function is costly time wise, the function will only perform the calculation twice; once at start-up and once after package installation/removal. The more default mode of operation would call this function once for every modified bundle after package installation/removal.

If dependency checking is not to be performed, the parent FindExtraPackages function will be used instead. The parent function will be called at startup and once for every modified bundle.

New Install function

The original driver did not implement the install driver. The new install driver checks if the specified version is explicitly specified. If it is not, the driver substitutes the version that should be installed (checked originally via _CheckForUpdates) and calls the parent Install function.

Modifications to VerifyPackage

The package verification method has been modified to account for versions of type auto and any. In all cases the package checks (done via equery check) will be performed on the installed version if requested. For packages of version auto, the installed version will be checked, but the package may fail verification because an update is required.

Configuration file options

The following two options have been added to the configuration file under the Portage section

  • binpkgonly
    • Type: Boolean
    • Default: True
    • Description: Will use emerge --binpkgonly to install packages. When false, use options specified in EMERGE_DEFAULT_OPTS
  • get_deps
    • Type: Boolean
    • Default: False
    • Description: Selects if the list of extra packages will not include packages required to install those packages specified in the configuration

Suggested methods of use

This information should be added to the documentation.

The new driver when included into the bcfg2 client would ideally be run from a cron job. The cron job would be as follows:

emerge --sync
layman --sync-all  # If required
emerge --update --deep world
bcfg2 -Qb critical
bcfg2 -r all
revdep-rebuild
emerge --depclean
eclean-dist -D

In the above example, the bundle critical would contain the bcfg2.conf file, the make.conf file, portage.use and portage.keywords. Running this bundle first will make sure that these changes are applied before any checking of packages is done.

If using binpkgonly=False, it is highly recommended to adjust EMERGE_DEFAULT_OPTS to something like --usepkgonly and have pre-built packages across your site. For build hosts (machines that would be compiling these packages for distribution), options like --newuse --update --deep could be used.

It is also recommended to look into appropriate PORTAGE_ELOG values in make.conf when compiling packages.

#1085 https://www.google.com/accounts/o8/id?id=AItOawnSjgovXZr-_V3vGkvMSR0pc5LDykRc1Nc https://www.google.com/accounts/o8/id?id=AItOawkNEJexqVKC_4vGwGsKaBP7gTGAqqPjqLQ fixed deprecated perms
Description

When I run

bcfg2-admin snapshot minestruct

got the following message:
{{{
/usr/lib/python2.4/site-packages/Bcfg2/Server/Snapshots/model.py:181: SADeprecationWarning: Passing arguments to type object constructor <class 'sqlalchemy.types.Integer'> is deprecated
  perms = Column(Integer(5))
}}}
#1084 desai https://launchpad.net/~antonisk fixed Auto-add "Essential" Debian packages to spec.
Description

As the title says, it would be nice if the Packages plugin auto-added "Essential: yes" to the spec.

Note: See TracQuery for help on using queries.