From patchwork Thu Nov 26 14:47:44 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Norbert Lange X-Patchwork-Id: 1406723 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.138; helo=whitealder.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=mnEvbrsd; dkim-atps=neutral Received: from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4Chgbn0pvTz9s0b for ; Fri, 27 Nov 2020 01:48:04 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by whitealder.osuosl.org (Postfix) with ESMTP id 7E2A0877B5; Thu, 26 Nov 2020 14:48:01 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from whitealder.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id xh10UBW2fIqo; Thu, 26 Nov 2020 14:47:59 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by whitealder.osuosl.org (Postfix) with ESMTP id 4F06387799; Thu, 26 Nov 2020 14:47: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 294581BF263 for ; Thu, 26 Nov 2020 14:47:58 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by fraxinus.osuosl.org (Postfix) with ESMTP id 2657286CBD for ; Thu, 26 Nov 2020 14:47: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 urSM3bXlKKtd for ; Thu, 26 Nov 2020 14:47:56 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mail-wr1-f65.google.com (mail-wr1-f65.google.com [209.85.221.65]) by fraxinus.osuosl.org (Postfix) with ESMTPS id 0EA3C861A1 for ; Thu, 26 Nov 2020 14:47:56 +0000 (UTC) Received: by mail-wr1-f65.google.com with SMTP id s8so2394513wrw.10 for ; Thu, 26 Nov 2020 06:47:55 -0800 (PST) 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=x8K66i79KVUBtb1rXatcJtx7QoVsE4sz5rAm7gLSL+Y=; b=mnEvbrsdCVBeZO5qNBVTOVUAQPAvPmFkQW4Xnp/qEO6bcYOgoB3znIxp8TATMUGLHB a08Vytu5X2VHDfVgyV36zSJA6DJzqv5mzMSN91MCQ+j2ZCWAeabLm29ep8w11ccMblvB w026gajmD1NatRYxVBjuI2vCBFgxE+/1UElV8nnaF0ucmmlt2bgwMhWr0ieT0kY1t+9b bTJB/e1nub/YkPNF+c9oGStQIVjIdN4ebQxcSBefM9s8B/PjNVz1yDPube/vzuTapSWy D7AJPzHh6RfWLWbTojTDSi/gn2S2eP9KtfSt0Bobe1+r8ICzbxCBAhPErn3Q5bdQ87pr qRdQ== 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=x8K66i79KVUBtb1rXatcJtx7QoVsE4sz5rAm7gLSL+Y=; b=eHWP+PnZx4R011wQwhZZqJ1CYreJoTuzZR9go6hI8mIJu89AvDLuRb5jjjHchBC7BU 1YAQfpOcMlPbROMhOve4sO+jU6yEaW5Bi9D4FRegCGalSqfKzlyrDwNK8Pob2jft+Mng KKQ5Ndc4EFfgTnHx8ezPt4loKWdKTMo82hL4ci/sV8IEINyHgKpGaJDPcPgX/QFOUG7N FSqqB1DN1nryUoP7ldlm87wLaIEIkSt6zARdKmJO+WG50kdg4ofkS/4WaXQHaq27RZJH YRFUotpp9n5qCx5IDInT82WDxbuqFj9alBQVS+v9V7ft2wYxazQpIRLPAmnp73KvL02i RyUw== X-Gm-Message-State: AOAM530ecnj1004ctZi4sBhcWQecupc/LltYFRdVODu6YseW2gO0XB5i JWPUdYtPLo9fz4qjKg0Q9CmXk7eGvtk= X-Google-Smtp-Source: ABdhPJx6FdJY5JJ1YrwfMLSnl2+RV0mxHSHSvi7JRA4Hf/byBiDxkaTrlwW/hBZI7b5LaxABSwZzEQ== X-Received: by 2002:adf:fd82:: with SMTP id d2mr4250484wrr.324.1606402074323; Thu, 26 Nov 2020 06:47:54 -0800 (PST) Received: from localhost.localdomain (84-114-45-16.cable.dynamic.surfer.at. [84.114.45.16]) by smtp.gmail.com with ESMTPSA id s25sm8388185wmh.16.2020.11.26.06.47.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Nov 2020 06:47:53 -0800 (PST) From: Norbert Lange To: buildroot@buildroot.org Date: Thu, 26 Nov 2020 15:47:44 +0100 Message-Id: <20201126144745.502228-1-nolange79@gmail.com> X-Mailer: git-send-email 2.29.2 MIME-Version: 1.0 Subject: [Buildroot] [PATCH v3 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 , "Yann E. MORIN" , 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 the binary database. - 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. If BR2_ENABLE_LOCALE_PURGE is enabled, the catalogs not in the language whitelist are deleted first. - the service normally used for creating the DB during boot, and the catalog 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 --- 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 v2->v3: - use backticks instead of $$() - be more explicit about what happens in SYSTEMD_LOCALE_PURGE_CATALOGS Signed-off-by: Norbert Lange --- package/systemd/Config.in | 14 +++++++++++++ package/systemd/systemd.mk | 41 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+) diff --git a/package/systemd/Config.in b/package/systemd/Config.in index ec34478e3d..d576e6035b 100644 --- a/package/systemd/Config.in +++ b/package/systemd/Config.in @@ -269,6 +269,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 cb12f667d6..ae99c02abf 100644 --- a/package/systemd/systemd.mk +++ b/package/systemd/systemd.mk @@ -613,6 +613,47 @@ define SYSTEMD_INSTALL_INIT_SYSTEMD $(SYSTEMD_INSTALL_NETWORK_CONFS) endef +ifeq ($(BR2_ENABLE_LOCALE_PURGE),y) +define SYSTEMD_LOCALE_PURGE_CATALOGS + # go through all files with scheme ..catalog + # and remove those where is not in LOCALE_NOPURGE + for cfile in `find $(TARGET_DIR)/usr/lib/systemd/catalog -name '*.*.catalog'`; \ + do \ + basename=$${cfile##*/}; \ + basename=$${basename%.catalog}; \ + langext=$${basename#*.}; \ + [ "$$langext" = "$${basename}" ] && continue; \ + expr '$(LOCALE_NOPURGE)' : ".*\b$${langext}\b" >/dev/null && continue; \ + 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