diskimage-builder/elements/pkg-map/README.rst
Ian Wienand 716b8e14fe Add release to pkg-map
Add ability to filter in pkg-map on release, which defaults to
DIB_RELEASE.  As per the examples, release is a more specific target
than distro, but distro still has to match.

Added a debug flag and ability to use a pkg-map directly for
debugging/development.

Change-Id: Ie282f96966e46236b06bc276de0168fc7a66c5da
2016-05-20 14:26:25 +10:00

96 lines
2.6 KiB
ReStructuredText

=======
pkg-map
=======
Map package names to distro specific packages.
Provides the following:
* bin/pkg-map::
usage: pkg-map [-h] [--element ELEMENT] [--distro DISTRO]
Translate package name to distro specific name.
optional arguments:
-h, --help show this help message and exit
--element ELEMENT The element (namespace) to use for translation.
--distro DISTRO The distro name to use for translation. Defaults to
DISTRO_NAME
--release RELEASE The release to use for translation. Defaults to
DIB_RELEASE
* Any element may create its own pkg-map JSON config file using the
one of 4 sections for the release/distro/family/ and or default.
The family is set automatically within pkg-map based on the
supplied distro name. Families include:
+ redhat: includes centos, fedora, and rhel distros
+ debian: includes debian and ubuntu distros
+ suse: includes the opensuse distro
The release is a specification of distro; i.e. the distro and
release must mach for a translation.
The most specific section takes priority.
An empty package list can be provided.
Example for Nova and Glance (NOTE: using fictitious package names
for Fedora and package mapping for suse family to provide a good
example!)
Example format::
{
"release": {
"fedora": {
"23": {
"nova_package": "foo" "bar"
}
}
},
"distro": {
"fedora": {
"nova_package": "openstack-compute",
"glance_package": "openstack-image"
}
},
"family": {
"redhat": {
"nova_package": "openstack-nova",
"glance_package": "openstack-glance"
},
"suse": {
"nova_package": ""
}
},
"default": {
"nova_package": "nova",
"glance_package": "glance"
}
}
Example commands using this format:
pkg-map --element nova-compute --distro fedora nova_package
Returns: openstack-compute
pkg-map --element nova-compute --distro rhel nova_package
Returns: openstack-nova
pkg-map --element nova-compute --distro ubuntu nova_package
Returns: nova
pkg-map --element nova-compute --distro opensuse nova_package
Returns:
* This output can be used to filter what other tools actually install
(install-packages can be modified to use this for example)
* Individual pkg-map files live within each element. For example
if you are created an Apache element your pkg-map JSON file
should be created at elements/apache/pkg-map.