From patchwork Fri Jul 17 23:42:45 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Norbert Lange X-Patchwork-Id: 1331454 Return-Path: X-Original-To: incoming-buildroot@patchwork.ozlabs.org Delivered-To: patchwork-incoming-buildroot@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=busybox.net (client-ip=140.211.166.137; helo=fraxinus.osuosl.org; envelope-from=buildroot-bounces@busybox.net; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=pZMF1e/N; dkim-atps=neutral Received: from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4B7njz4t8Vz9sPB for ; Sat, 18 Jul 2020 09:43:03 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by fraxinus.osuosl.org (Postfix) with ESMTP id AB1F98614E; Fri, 17 Jul 2020 23:43:00 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from fraxinus.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id wvuq-8pUg00B; Fri, 17 Jul 2020 23:42:59 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by fraxinus.osuosl.org (Postfix) with ESMTP id 3D96F860E0; Fri, 17 Jul 2020 23:42:59 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137]) by ash.osuosl.org (Postfix) with ESMTP id 3E41A1BF363 for ; Fri, 17 Jul 2020 23:42:58 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by fraxinus.osuosl.org (Postfix) with ESMTP id 3B124860E0 for ; Fri, 17 Jul 2020 23:42:58 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from fraxinus.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ZoCRmAPrA62z for ; Fri, 17 Jul 2020 23:42:57 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mail-ej1-f42.google.com (mail-ej1-f42.google.com [209.85.218.42]) by fraxinus.osuosl.org (Postfix) with ESMTPS id 6C0AD85F92 for ; Fri, 17 Jul 2020 23:42:57 +0000 (UTC) Received: by mail-ej1-f42.google.com with SMTP id n22so9695695ejy.3 for ; Fri, 17 Jul 2020 16:42:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=LyZXSrHBS+DPdLfl8eRde/T7ETTdQGzneMYAM7UBPXQ=; b=pZMF1e/NsCMe2ceWAahenrO7phB9/HYb2YT1RkpLenH8VLII+mM+giI7jIdsYsCheH IMgmqKDmo3D88pVHLFuch9LFA/bXekpDYokNTWWzvSwZVzzAla+SZElukXS7fxCKQ3PK QDvsdke5jP4T/Sv2b8A2YuaYZBwcd05ohoXsbRaSVnGxgpvQ1xblr3++LFJSMQ1x8IMT PJM9eJqo7vBLrvbry6NUpVhOvhhQjd01uqVP00f0v7BY7FyTPKXQ/dbeqW5vM42xBVzM D1N608GtahNPoUJQ5Q+470bPY4Ga7sA5sRtXnlzPxh9Jx+bhbALVeJ+IFxRRE1lGzIL1 4fcw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=LyZXSrHBS+DPdLfl8eRde/T7ETTdQGzneMYAM7UBPXQ=; b=XNSZkNmrbwjTJKnRnutVidqrtgl2Ubqp/MtQGZTELuIPjyaUxoRhkKChPaOeUiWvq2 gdmDW8Y0k9U4A8VRaDfEHqmqA6Vjlvjoje1k7IYge+5kK2lba0AiDWKe3Ul1bNa8NDxk ljGUm5bGnloFSlGXa5tahtPLEB+CNi0AKfaIbNvnZsg0v7hh/NHFlworOWTCW435Smwo Kz32r8Ov9BNabS5rNXrocY6k+VQWcBBHmfLi1sxs/3fgf2B/8WQcz2y8YccpOa50FVF1 IaQa12W6SIalplawMfyzCjaqerF8xUdZj0fFYOKMiksc3YfcTp/0Gdf5OzaEnYbSWLjh yK+Q== X-Gm-Message-State: AOAM531s770bx5Nf5we8BeyGq0n/uxxbHjTJZuI1Iitojocg8CNL23nD hHhIHK31UaULop2R2GZojb/McrMVFwM= X-Google-Smtp-Source: ABdhPJxAjSfeptOTzrKKhKx0E0KngwiaWxNTwHDgowPibIRexEONdZgzH4aJv4tLZ0QYiuVNsD+QKQ== X-Received: by 2002:a17:906:6897:: with SMTP id n23mr10508852ejr.473.1595029375453; Fri, 17 Jul 2020 16:42:55 -0700 (PDT) Received: from localhost.localdomain (84-114-45-16.cable.dynamic.surfer.at. [84.114.45.16]) by smtp.gmail.com with ESMTPSA id s18sm9492429ejm.16.2020.07.17.16.42.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 17 Jul 2020 16:42:55 -0700 (PDT) From: Norbert Lange To: buildroot@buildroot.org Date: Sat, 18 Jul 2020 01:42:45 +0200 Message-Id: <20200717234245.17889-1-nolange79@gmail.com> X-Mailer: git-send-email 2.27.0 MIME-Version: 1.0 Subject: [Buildroot] [PATCH v2 1/1] package/systemd: add support for creating journal catalog DB X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Norbert Lange , =?utf-8?b?SsOpcsOpbXkgUk9TRU4=?= , "Yann E. MORIN" , Adam Duskett , Maxime Hadjinlian Errors-To: buildroot-bounces@busybox.net Sender: "buildroot" journald supports catalog files, or rather a binary database of those. Functionality added includes: - A config option allows enabling this database. - If BR2_ENABLE_LOCALE_PURGE is enabled, the catalogs not in the language whitelist are deleted. - if the option is enabled, the database is built and moved to /usr/share/factory. A symlink is created in /var pointing to that file. - the service normally used for creating the DB during boot, and the source files used as input are deleted. The move to /usr/share/factory is helpful for having /usr as whole system distribution. Signed-off-by: Norbert Lange Reviewed-by: Jérémy Rosen Reviewed-by: Adam Duskett --- v1>v2: - Moved all logic into systemd.mk - solved the LOCALE_PURGE order that way - use the factory to store the file - option to enable the DB (similar to udev HWDB) - cant be anabled with !ROOTFS_RW, tons of issues with that one Signed-off-by: Norbert Lange --- package/systemd/Config.in | 14 ++++++++++++++ package/systemd/systemd.mk | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) diff --git a/package/systemd/Config.in b/package/systemd/Config.in index f754b9d0cf..bbb77b280d 100644 --- a/package/systemd/Config.in +++ b/package/systemd/Config.in @@ -246,6 +246,20 @@ config BR2_PACKAGE_SYSTEMD_IMPORTD http://www.freedesktop.org/software/systemd/man/machinectl.html#Image%20Transfer%20Commands +config BR2_PACKAGE_SYSTEMD_CATALOGDB + bool "enable journal catalog database installation" + depends on BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW # conflicting tmpfiles magic + help + Build and install the journal catalog database. + + catalog files are used to provide extended and potentially localized + messages for the journal. + + The original catalog files will be built into a DB at + /usr/share/factory/var/lib/systemd/catalog/database. + + https://www.freedesktop.org/wiki/Software/systemd/catalog/ + config BR2_PACKAGE_SYSTEMD_LOCALED bool "enable locale daemon" help diff --git a/package/systemd/systemd.mk b/package/systemd/systemd.mk index 1b94ffc67a..60d97ae176 100644 --- a/package/systemd/systemd.mk +++ b/package/systemd/systemd.mk @@ -593,6 +593,44 @@ define SYSTEMD_INSTALL_INIT_SYSTEMD $(SYSTEMD_INSTALL_NETWORK_CONFS) endef +ifeq ($(BR2_ENABLE_LOCALE_PURGE),y) +define SYSTEMD_LOCALE_PURGE_CATALOGS + for cfile in $$(find $(TARGET_DIR)/usr/lib/systemd/catalog -name '*.*.catalog'); \ + do \ + basename=$${cfile##*/}; \ + basename=$${basename%.catalog}; \ + langext=$${basename#*.}; \ + [ "$$langext" != "$${basename}" ] || continue; \ + expr >/dev/null $(BR2_ENABLE_LOCALE_WHITELIST) : ".*\b$${langext}\b" || rm -f "$$cfile"; \ + done +endef + +SYSTEMD_ROOTFS_PRE_CMD_HOOKS += SYSTEMD_LOCALE_PURGE_CATALOGS +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_CATALOGDB),y) +define SYSTEMD_UPDATE_CATALOGS + $(HOST_DIR)/bin/journalctl --root=$(TARGET_DIR) --update-catalog + install -D $(TARGET_DIR)/var/lib/systemd/catalog/database \ + $(TARGET_DIR)/usr/share/factory/var/lib/systemd/catalog/database + rm $(TARGET_DIR)/var/lib/systemd/catalog/database + ln -sf /usr/share/factory/var/lib/systemd/catalog/database \ + $(TARGET_DIR)/var/lib/systemd/catalog/database + grep -q '^L /var/lib/systemd/catalog/database' $(TARGET_DIR)/usr/lib/tmpfiles.d/var.conf || \ + printf "\nL /var/lib/systemd/catalog/database\n" >> $(TARGET_DIR)/usr/lib/tmpfiles.d/var.conf +endef + +SYSTEMD_ROOTFS_PRE_CMD_HOOKS += SYSTEMD_UPDATE_CATALOGS +endif + +define SYSTEMD_RM_CATALOG_UPDATE_SERVICE + rm -rf $(TARGET_DIR)/usr/lib/systemd/catalog \ + $(TARGET_DIR)/usr/lib/systemd/system/systemd-journal-catalog-update.service \ + $(TARGET_DIR)/usr/lib/systemd/system/*/systemd-journal-catalog-update.service +endef + +SYSTEMD_ROOTFS_PRE_CMD_HOOKS += SYSTEMD_RM_CATALOG_UPDATE_SERVICE + define SYSTEMD_PRESET_ALL $(HOST_DIR)/bin/systemctl --root=$(TARGET_DIR) preset-all endef