flatcar-scripts/build_library/set_lsb_release
James Le Cuirot d62abe93a0
set_lsb_release: Fix running this against the SDK itself
I hadn't realised this is called for the SDK itself, i.e. without an
applicable "board". I find having the SDK's os-release to be largely the
same as the image's a little odd, but that's a different problem.

Signed-off-by: James Le Cuirot <jlecuirot@microsoft.com>
2026-03-04 09:43:26 +00:00

79 lines
2.8 KiB
Bash
Executable File

#!/bin/bash
# Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# Script to set /etc/lsb-release on the root file system. This script is run by
# build_image inside chroot.
SCRIPT_ROOT=$(readlink -f $(dirname "$0")/..)
. "${SCRIPT_ROOT}/common.sh" || exit 1
# Flags
DEFINE_string board "" "The board to build an image for."
DEFINE_string root "" "The root file system to write /etc/lsb-release to."
DEFINE_string group "" "The default update group for update_engine."
# Parse command line
FLAGS "$@" || exit 1
eval set -- "${FLAGS_ARGV}"
switch_to_strict_mode
ROOT_FS_DIR="$FLAGS_root"
[ -n "$ROOT_FS_DIR" ] || die "--root is required."
[ -d "$ROOT_FS_DIR" ] || die "Root FS does not exist? ($ROOT_FS_DIR)"
# These variables are set in the base profile.
eval $("portageq${FLAGS_board:+-}${FLAGS_board}" envvar -v BRANDING_OS_\*)
BRANDING_OS_PRETTY_NAME="${BRANDING_OS_NAME} ${FLATCAR_VERSION}"
FLATCAR_APPID="{e96281a6-d1af-4bde-9a0a-97b76e56dc57}"
# DISTRIB_* are the standard lsb-release names
sudo mkdir -p "${ROOT_FS_DIR}/usr/share/flatcar" "${ROOT_FS_DIR}/etc/flatcar"
sudo_clobber "${ROOT_FS_DIR}/usr/share/flatcar/lsb-release" <<EOF
DISTRIB_ID="$BRANDING_OS_NAME"
DISTRIB_RELEASE=$FLATCAR_VERSION
DISTRIB_DESCRIPTION="$BRANDING_OS_PRETTY_NAME"
EOF
sudo ln -sf "../usr/share/flatcar/lsb-release" "${ROOT_FS_DIR}/etc/lsb-release"
# And the new standard, os-release
# https://www.freedesktop.org/software/systemd/man/os-release.html
sudo_clobber "${ROOT_FS_DIR}/usr/lib/os-release" <<EOF
NAME="$BRANDING_OS_NAME"
ID="$BRANDING_OS_ID"
ID_LIKE="$BRANDING_OS_ID_LIKE"
VERSION="$FLATCAR_VERSION"
VERSION_ID="$FLATCAR_VERSION_ID"
BUILD_ID="$FLATCAR_BUILD_ID"
SYSEXT_LEVEL="1.0"
PRETTY_NAME="$BRANDING_OS_PRETTY_NAME"
ANSI_COLOR="38;5;75"
HOME_URL="$BRANDING_OS_HOME_URL"
BUG_REPORT_URL="$BRANDING_OS_BUG_REPORT_URL"
SUPPORT_URL="$BRANDING_OS_SUPPORT_URL"
FLATCAR_BOARD="$FLAGS_board"
CPE_NAME="cpe:2.3:o:${BRANDING_OS_ID}-linux:${BRANDING_OS_ID}_linux:${FLATCAR_VERSION}:*:*:*:*:*:*:*"
EOF
sudo ln -sf "../usr/lib/os-release" "${ROOT_FS_DIR}/etc/os-release"
sudo ln -sf "../../lib/os-release" "${ROOT_FS_DIR}/usr/share/flatcar/os-release"
# Compat for split of lib64 into lib and lib64
if [ ! -e "${ROOT_FS_DIR}/usr/lib64/os-release" ]; then
sudo ln -sf "../lib/os-release" "${ROOT_FS_DIR}/usr/lib64/os-release"
fi
# Create the defaults for the coreos configuration files in the usr directory
sudo_clobber "${ROOT_FS_DIR}/usr/share/flatcar/release" <<EOF
FLATCAR_RELEASE_VERSION=$FLATCAR_VERSION
FLATCAR_RELEASE_BOARD=$FLAGS_board
FLATCAR_RELEASE_APPID=$FLATCAR_APPID
EOF
sudo_clobber "${ROOT_FS_DIR}/usr/share/flatcar/update.conf" <<EOF
SERVER=https://public.update.flatcar-linux.net/v1/update/
GROUP=$FLAGS_group
EOF