Patchwork os-release: Adding a new recipe for operating system identification

login
register
mail settings
Submitter Sujith H
Date Aug. 1, 2014, 1:16 p.m.
Message ID <1406899001-3870-1-git-send-email-sujith.h@gmail.com>
Download mbox | patch
Permalink /patch/77095/
State Accepted
Commit b092e550b6313a89906368a10ed5b8b4f3a32bb6
Headers show

Comments

Sujith H - Aug. 1, 2014, 1:16 p.m.
From: Sujith H <Sujith_Haridasan@mentor.com>

The /etc/os-release will have the operating system identification data.
Tested on target with systemd enabled. Here is the sample file looks
in the file:

ID=poky-ivi-systemd
NAME=Yocto GENIVI Baseline (Poky/meta-ivi)
VERSION=6.0+snapshot-20140721 (daisy)
VERSION_ID=6.0+snapshot-20140721
PRETTY_NAME=Yocto GENIVI Baseline (Poky/meta-ivi) 6.0+snapshot-20140721 (daisy)

Signed-off-by: Christopher Larson <kergoth@gmail.com>
Signed-off-by: Sujith H <Sujith_Haridasan@mentor.com>
---
 meta/recipes-core/os-release/os-release.bb | 36 ++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)
 create mode 100644 meta/recipes-core/os-release/os-release.bb
Mark Hatle - Aug. 1, 2014, 2:19 p.m.
While not exactly the same thing, there is a similar file being generated when 
LSB is enabled.  It can be used outside of the LSB configuration as well.

The recipe is simply 'lsb'.  It provides some basic initscript functions 
(required by the lsb) as well as the /etc/lsb-release file which is pretty close 
to the output below.

I have wondered in the past if we should add a similar file to what the LSB or 
below is doing to 'base-files'.

--Mark

On 8/1/14, 8:16 AM, Sujith H wrote:
> From: Sujith H <Sujith_Haridasan@mentor.com>
>
> The /etc/os-release will have the operating system identification data.
> Tested on target with systemd enabled. Here is the sample file looks
> in the file:
>
> ID=poky-ivi-systemd
> NAME=Yocto GENIVI Baseline (Poky/meta-ivi)
> VERSION=6.0+snapshot-20140721 (daisy)
> VERSION_ID=6.0+snapshot-20140721
> PRETTY_NAME=Yocto GENIVI Baseline (Poky/meta-ivi) 6.0+snapshot-20140721 (daisy)
>
> Signed-off-by: Christopher Larson <kergoth@gmail.com>
> Signed-off-by: Sujith H <Sujith_Haridasan@mentor.com>
> ---
>   meta/recipes-core/os-release/os-release.bb | 36 ++++++++++++++++++++++++++++++
>   1 file changed, 36 insertions(+)
>   create mode 100644 meta/recipes-core/os-release/os-release.bb
>
> diff --git a/meta/recipes-core/os-release/os-release.bb b/meta/recipes-core/os-release/os-release.bb
> new file mode 100644
> index 0000000..33e9581
> --- /dev/null
> +++ b/meta/recipes-core/os-release/os-release.bb
> @@ -0,0 +1,36 @@
> +inherit allarch
> +
> +SUMMARY = "Operating system identification"
> +DESCRIPTION = "The /etc/os-release file contains operating system identification data."
> +LICENSE = "MIT"
> +INHIBIT_DEFAULT_DEPS = "1"
> +
> +do_fetch[noexec] = "1"
> +do_unpack[noexec] = "1"
> +do_patch[noexec] = "1"
> +do_configure[noexec] = "1"
> +
> +# Other valid fields: BUILD_ID ID_LIKE ANSI_COLOR CPE_NAME
> +#                     HOME_URL SUPPORT_URL BUG_REPORT_URL
> +OS_RELEASE_FIELDS = "ID ID_LIKE NAME VERSION VERSION_ID PRETTY_NAME"
> +
> +ID = "${DISTRO}"
> +NAME = "${DISTRO_NAME}"
> +VERSION = "${DISTRO_VERSION}${@' (%s)' % DISTRO_CODENAME if 'DISTRO_CODENAME' in d else ''}"
> +VERSION_ID = "${DISTRO_VERSION}"
> +PRETTY_NAME = "${DISTRO_NAME} ${VERSION}"
> +BUILD_ID ?= "${DATETIME}"
> +
> +python do_compile () {
> +    with open(d.expand('${B}/os-release'), 'w') as f:
> +        for field in d.getVar('OS_RELEASE_FIELDS', True).split():
> +            value = d.getVar(field, True)
> +            if value:
> +                f.write('{0}={1}\n'.format(field, value))
> +}
> +do_compile[vardeps] += "${OS_RELEASE_FIELDS}"
> +
> +do_install () {
> +    install -d ${D}${sysconfdir}
> +    install -m 0644 os-release ${D}${sysconfdir}/
> +}
>
Armin Kuster - Aug. 3, 2014, 3:19 a.m.
On 08/01/2014 07:19 AM, Mark Hatle wrote:
> While not exactly the same thing, there is a similar file being
> generated when LSB is enabled.  It can be used outside of the LSB
> configuration as well.
>
> The recipe is simply 'lsb'.  It provides some basic initscript functions
> (required by the lsb) as well as the /etc/lsb-release file which is
> pretty close to the output below.
>
> I have wondered in the past if we should add a similar file to what the
> LSB or below is doing to 'base-files'.

That sound good to me. There seems to be a move in the community at 
large to support "/os-release".

         1. Announcement of /etc/os-release
            http://0pointer.de/blog/projects/os-release

         2. Common Platform Enumeration Specification
            http://cpe.mitre.org/specification/

         3. RFC3986 format
            https://tools.ietf.org/html/rfc3986


I tried the patch an it looks good.

many thanks,
Armin

>
> --Mark
>
> On 8/1/14, 8:16 AM, Sujith H wrote:
>> From: Sujith H <Sujith_Haridasan@mentor.com>
>>
>> The /etc/os-release will have the operating system identification data.
>> Tested on target with systemd enabled. Here is the sample file looks
>> in the file:
>>
>> ID=poky-ivi-systemd
>> NAME=Yocto GENIVI Baseline (Poky/meta-ivi)
>> VERSION=6.0+snapshot-20140721 (daisy)
>> VERSION_ID=6.0+snapshot-20140721
>> PRETTY_NAME=Yocto GENIVI Baseline (Poky/meta-ivi)
>> 6.0+snapshot-20140721 (daisy)
>>
>> Signed-off-by: Christopher Larson <kergoth@gmail.com>
>> Signed-off-by: Sujith H <Sujith_Haridasan@mentor.com>
>> ---
>>   meta/recipes-core/os-release/os-release.bb | 36
>> ++++++++++++++++++++++++++++++
>>   1 file changed, 36 insertions(+)
>>   create mode 100644 meta/recipes-core/os-release/os-release.bb
>>
>> diff --git a/meta/recipes-core/os-release/os-release.bb
>> b/meta/recipes-core/os-release/os-release.bb
>> new file mode 100644
>> index 0000000..33e9581
>> --- /dev/null
>> +++ b/meta/recipes-core/os-release/os-release.bb
>> @@ -0,0 +1,36 @@
>> +inherit allarch
>> +
>> +SUMMARY = "Operating system identification"
>> +DESCRIPTION = "The /etc/os-release file contains operating system
>> identification data."
>> +LICENSE = "MIT"
>> +INHIBIT_DEFAULT_DEPS = "1"
>> +
>> +do_fetch[noexec] = "1"
>> +do_unpack[noexec] = "1"
>> +do_patch[noexec] = "1"
>> +do_configure[noexec] = "1"
>> +
>> +# Other valid fields: BUILD_ID ID_LIKE ANSI_COLOR CPE_NAME
>> +#                     HOME_URL SUPPORT_URL BUG_REPORT_URL
>> +OS_RELEASE_FIELDS = "ID ID_LIKE NAME VERSION VERSION_ID PRETTY_NAME"
>> +
>> +ID = "${DISTRO}"
>> +NAME = "${DISTRO_NAME}"
>> +VERSION = "${DISTRO_VERSION}${@' (%s)' % DISTRO_CODENAME if
>> 'DISTRO_CODENAME' in d else ''}"
>> +VERSION_ID = "${DISTRO_VERSION}"
>> +PRETTY_NAME = "${DISTRO_NAME} ${VERSION}"
>> +BUILD_ID ?= "${DATETIME}"
>> +
>> +python do_compile () {
>> +    with open(d.expand('${B}/os-release'), 'w') as f:
>> +        for field in d.getVar('OS_RELEASE_FIELDS', True).split():
>> +            value = d.getVar(field, True)
>> +            if value:
>> +                f.write('{0}={1}\n'.format(field, value))
>> +}
>> +do_compile[vardeps] += "${OS_RELEASE_FIELDS}"
>> +
>> +do_install () {
>> +    install -d ${D}${sysconfdir}
>> +    install -m 0644 os-release ${D}${sysconfdir}/
>> +}
>>
>

Patch

diff --git a/meta/recipes-core/os-release/os-release.bb b/meta/recipes-core/os-release/os-release.bb
new file mode 100644
index 0000000..33e9581
--- /dev/null
+++ b/meta/recipes-core/os-release/os-release.bb
@@ -0,0 +1,36 @@ 
+inherit allarch
+
+SUMMARY = "Operating system identification"
+DESCRIPTION = "The /etc/os-release file contains operating system identification data."
+LICENSE = "MIT"
+INHIBIT_DEFAULT_DEPS = "1"
+
+do_fetch[noexec] = "1"
+do_unpack[noexec] = "1"
+do_patch[noexec] = "1"
+do_configure[noexec] = "1"
+
+# Other valid fields: BUILD_ID ID_LIKE ANSI_COLOR CPE_NAME
+#                     HOME_URL SUPPORT_URL BUG_REPORT_URL
+OS_RELEASE_FIELDS = "ID ID_LIKE NAME VERSION VERSION_ID PRETTY_NAME"
+
+ID = "${DISTRO}"
+NAME = "${DISTRO_NAME}"
+VERSION = "${DISTRO_VERSION}${@' (%s)' % DISTRO_CODENAME if 'DISTRO_CODENAME' in d else ''}"
+VERSION_ID = "${DISTRO_VERSION}"
+PRETTY_NAME = "${DISTRO_NAME} ${VERSION}"
+BUILD_ID ?= "${DATETIME}"
+
+python do_compile () {
+    with open(d.expand('${B}/os-release'), 'w') as f:
+        for field in d.getVar('OS_RELEASE_FIELDS', True).split():
+            value = d.getVar(field, True)
+            if value:
+                f.write('{0}={1}\n'.format(field, value))
+}
+do_compile[vardeps] += "${OS_RELEASE_FIELDS}"
+
+do_install () {
+    install -d ${D}${sysconfdir}
+    install -m 0644 os-release ${D}${sysconfdir}/
+}