versionator.eclass

Name

versionator.eclass -- functions which simplify manipulation of ${PV} and similar version strings

Description

This eclass provides functions which simplify manipulating $PV and similar variables. Most functions default to working with $PV, although other values can be used.

Deprecated

Replacement: ver_* functions from EAPI 7

Supported EAPIs

0 1 2 3 4 5 6

Example

Simple Example 1: $PV is 1.2.3b, we want 1_2.3b:

MY_PV=$(replace_version_separator 1 '_' )

Simple Example 2: $PV is 1.4.5, we want 1:

MY_MAJORV=$(get_major_version )

Rather than being a number, the index parameter can be a separator character such as '-', '.' or '_'. In this case, the first separator of this kind is selected.

There's also:
              

version_is_at_least want have

which may be buggy, so use with caution.

Functions

get_all_version_components [version]

Split up a version string into its component parts. If no parameter is supplied, defaults to $PV.

              

0.8.3 -> 0 . 8 . 3 7c -> 7 c 3.0_p2 -> 3 . 0 _ p2 20040905 -> 20040905 3.0c-r1 -> 3 . 0 c - r1

get_version_components [version]

Get the important version components, excluding '.', '-' and '_'. Defaults to $PV if no parameter is supplied.

              

0.8.3 -> 0 8 3 7c -> 7 c 3.0_p2 -> 3 0 p2 20040905 -> 20040905 3.0c-r1 -> 3 0 c r1

get_major_version [version]
Get the major version of a value. Defaults to $PV if no parameter is supplied.

0.8.3 -> 0 7c -> 7 3.0_p2 -> 3 20040905 -> 20040905 3.0c-r1 -> 3

get_version_component_range <range> [version]

Get a particular component or range of components from the version. If no version parameter is supplied, defaults to $PV.

              

1 1.2.3 -> 1 1-2 1.2.3 -> 1.2 2- 1.2.3 -> 2.3

get_after_major_version [version]

Get everything after the major version and its separator (if present) of a value. Defaults to $PV if no parameter is supplied.

              

0.8.3 -> 8.3 7c -> c 3.0_p2 -> 0_p2 20040905 -> (empty string) 3.0c-r1 -> 0c-r1

replace_version_separator <search> <replacement> [subject]

Replace the $1th separator with $2 in $3 (defaults to $PV if $3 is not supplied). If there are fewer than $1 separators, don't change anything.

              

1 '_' 1.2.3 -> 1_2.3 2 '_' 1.2.3 -> 1.2_3 1 '_' 1b-2.3 -> 1b_2.3

Rather than being a number, $1 can be a separator character such as '-', '.' or '_'. In this case, the first separator of this kind is selected.

replace_all_version_separators <replacement> [subject]
Replace all version separators in $2 (defaults to $PV) with $1.

'_' 1b.2.3 -> 1b_2_3

delete_version_separator <search> [subject]

Delete the $1th separator in $2 (defaults to $PV if $2 is not supplied). If there are fewer than $1 separators, don't change anything.

              

1 1.2.3 -> 12.3 2 1.2.3 -> 1.23 1 1b-2.3 -> 1b2.3

Rather than being a number, $1 can be a separator character such as '-', '.' or '_'. In this case, the first separator of this kind is deleted.

delete_all_version_separators [subject]
Delete all version separators in $1 (defaults to $PV).

1b.2.3 -> 1b23

get_version_component_count [version]
How many version components are there in $1 (defaults to $PV)?

1.0.1 -> 3 3.0c-r1 -> 4

get_last_version_component_index [version]

What is the index of the last version component in $1 (defaults to $PV)? Equivalent to get_version_component_count - 1.

              

1.0.1 -> 2 3.0c-r1 -> 3

version_is_at_least <want> [have]

Is $2 (defaults to $PVR) at least version $1? Intended for use in eclasses only. May not be reliable, be sure to do very careful testing before actually using this.

version_compare <A> <B>

Takes two parameters (A, B) which are versions. If A is an earlier version than B, returns 1. If A is identical to B, return 2. If A is later than B, return 3. You probably want version_is_at_least rather than this function. May not be very reliable. Test carefully before using this.

version_sort <version> [more versions...]

Returns its parameters sorted, highest version last. We're using a quadratic algorithm for simplicity, so don't call it with more than a few dozen items. Uses version_compare, so be careful.

version_format_string <format> [version]

Reformat complicated version strings. The first argument is the string to reformat with while the rest of the args are passed on to the get_version_components function. You should make sure to single quote the first argument since it'll have variables that get delayed expansions. @EXAMPLE: P="cow-hat-1.2.3_p4" MY_P=$(version_format_string '${PN}_source_$1_$2-$3_$4') Now MY_P will be: cow-hat_source_1_2-3_p4

Maintainers

Jonathan Callen <jcallen@gentoo.org>

base-system@gentoo.org

Reporting Bugs

Please report bugs via https://bugs.gentoo.org/