From patchwork Fri Jun 11 07:51:07 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Valters Jansons X-Patchwork-Id: 4418 Return-Path: Delivered-To: ms@mail01.ipfire.org Received: from mail01.ipfire.org by mail01.haj.ipfire.org with LMTP id 96GHHAAWw2DUcwAA8Gcflg (envelope-from ) for ; Fri, 11 Jun 2021 07:51:28 +0000 Received: from mail02.haj.ipfire.org (mail02.haj.ipfire.org [172.28.1.201]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384 client-signature ECDSA (P-384) client-digest SHA384) (Client CN "mail02.haj.ipfire.org", Issuer "R3" (verified OK)) by mail01.ipfire.org (Postfix) with ESMTPS id 4G1Y281Qz3z12W; Fri, 11 Jun 2021 07:51:28 +0000 (UTC) Received: from mail02.haj.ipfire.org (localhost [127.0.0.1]) by mail02.haj.ipfire.org (Postfix) with ESMTP id 4G1Y275v91z2y0p; Fri, 11 Jun 2021 07:51:27 +0000 (UTC) Received: from mail01.ipfire.org (mail01.haj.ipfire.org [172.28.1.202]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) client-signature ECDSA (P-384)) (Client CN "mail01.haj.ipfire.org", Issuer "R3" (verified OK)) by mail02.haj.ipfire.org (Postfix) with ESMTPS id 4G1Y262XTLz2xLY for ; Fri, 11 Jun 2021 07:51:26 +0000 (UTC) Received: from mail-ed1-x52c.google.com (mail-ed1-x52c.google.com [IPv6:2a00:1450:4864:20::52c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "GTS CA 1O1" (verified OK)) by mail01.ipfire.org (Postfix) with ESMTPS id 4G1Y254zyZz12W for ; Fri, 11 Jun 2021 07:51:25 +0000 (UTC) Received: by mail-ed1-x52c.google.com with SMTP id t3so36060616edc.7 for ; Fri, 11 Jun 2021 00:51:25 -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=BZT4fxHHzbvLJk8lOOB9rka7ZBzOlBcVqv+3B+5WdjU=; b=RqTv+6WqBQ1oLP4PUGu2vH/AbHJv8Z8L8y96QrUKYAThbxpjqsYRcRoP5AlDhvTOM5 /6gdEosAiq9P0i36GjVju0SGPEGFiLugkhznT7zKKC4zLYQDdH458C8ja1U0OiYGNG2A kv8DMCpLjXARUeLSMZjmz88VfwePIyw8WG4aIgIF5Px3Qhd8nz7WVO9UdC50uYenbYgl Nct6PeYIKLmIb2GRcQLGP11cYy90h+y6hAKqFKo7nGRJ0wbWvV4Kd1flLQd6FHsy1m7L mR51jwblrXfvCM1gYJDyiScgrulMTb3hB9+DaOHcPhpBmte1JTvDZW2QxHw6xbqrdBPz wx7w== 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=BZT4fxHHzbvLJk8lOOB9rka7ZBzOlBcVqv+3B+5WdjU=; b=LVBAeklswcJO8Ih2nA8xEr7tAL3PZvf++KPlY9Az9ezMN5cKujILr0HNzG5WTWuupW uXI0dVjIuHioN6uQ4I1BwXfdmWrPllpBtXFyfKun2ZT77l9qzujeksdt44vyyNasqsqV hvYcqNp3BGtKrVdXO4Q3OEMj4T4Pe4rntskofHtoIs/HdwH4iLK385HPw64lHqiXU8uz q0ezYzJoxO4qHjgGdj5Wkme4xDyRpBmujCawhMJ45j+5MoGVwEw1thihC8HFJdsq6S3w D/2p81NL8P6jB1V9UNBsUsB9vyxHIS1wKqReVAM97SbT1hpj3chIcv36lPtpLIX36OJE OkIg== X-Gm-Message-State: AOAM5305276d2C/oXDUTuFwYZ69uBYdE3n2KwdkfDiI6PtzNJebrGw71 ebD2vwl/fOC+Ax80KMOvMVQ+L4DHi4IAVQ== X-Google-Smtp-Source: ABdhPJzy2g2rKFwy9QE+CDzZuE6AW5KZ1OnS0UYOidZhQhIoQK+wnpTWrBXeDUJvNT+wgLtYtZhrnA== X-Received: by 2002:aa7:db90:: with SMTP id u16mr2355597edt.106.1623397882808; Fri, 11 Jun 2021 00:51:22 -0700 (PDT) Received: from DESKTOP-30GCCHK.localdomain ([80.232.183.114]) by smtp.gmail.com with ESMTPSA id f20sm2289622edq.64.2021.06.11.00.51.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Jun 2021 00:51:22 -0700 (PDT) From: Valters Jansons To: IPFire Location Mailing List Subject: [PATCH] debian: Add dpkg's symbols file Date: Fri, 11 Jun 2021 10:51:07 +0300 Message-Id: <20210611075107.7727-1-valter.jansons@gmail.com> X-Mailer: git-send-email 2.32.0 MIME-Version: 1.0 ARC-Authentication-Results: i=1; mail01.ipfire.org; dkim=pass header.d=gmail.com header.s=20161025 header.b=RqTv+6Wq; spf=pass (mail01.ipfire.org: domain of valterjansons@gmail.com designates 2a00:1450:4864:20::52c as permitted sender) smtp.mailfrom=valterjansons@gmail.com ARC-Seal: i=1; s=202003rsa; d=lists.ipfire.org; t=1623397885; a=rsa-sha256; cv=none; b=st1MsMrY5V934m7rg1H49DkHM0DIOHS4vH22/l2VK9ivvfr9fkSSzu6ToPw4nS6w0IjFk7 JWiN/1/RVImPyZdnEtRh7VfFkvL3TENWRdZgXXxdppeXcgXST3bR/IBFkjFS8TCSGEHW+V NidaAAImojLAaYQu6QGprExuNi7WwEFQ01P4F5abxILYzbKzQst7mLzshNMSMtr4EHugOd 1nOIKaSXdUAcLOl78eOK2W7GQDRtvJlNqx8rrfluY2u/93DbHX5HjQZywkC4C6tBOgtr7o rVchNfF4sHOvQMhkp2SFL93CmJaNWJaKYG6ExMq6RpaUmwZSnCgFojM5NQZ6SQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=lists.ipfire.org; s=202003rsa; t=1623397885; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding:dkim-signature; bh=BZT4fxHHzbvLJk8lOOB9rka7ZBzOlBcVqv+3B+5WdjU=; b=aLusT5bSMyWnALvig3SC4+jAIXYRArTQLMizNUxvy8CcPPlXqZPJ88qBR7TtWEOBbvEWm3 GTqhD6OiOPszZeQvvntt/H/ROZnOIrcwRl7mvRzcgPXm6CoSI3KEJEgtV84UvV8RupdHXy XRtJ0n0WA8g7qwMBb68/1tF0UnZpzEmoc50IYn7rFxMeEUgzv3s8Pwz2fZ7IFM4ZNN67PS +pY11XqJbtS3D/Mz8cvzMi83kgYI1eS8m+9ysXdwRjXZGZ2FxsJGkRb7nHjgHzE3yq00Iu tE93SnQp5nDDqu4YrcoytQiYFK49ikygN2r+qkWZ+C//7ky9NGlzHMBilPmHMg== X-Rspamd-Server: mail01.haj.ipfire.org X-Spamd-Result: default: False [-1.72 / 11.00]; RCVD_VIA_SMTP_AUTH(0.00)[]; FREEMAIL_FROM(0.00)[gmail.com]; R_MISSING_CHARSET(2.50)[]; IP_REPUTATION_HAM(-0.94)[asn: 15169(-0.28), country: US(-0.01), ip: 2a00:1450:4864:20::(-0.65)]; BROKEN_CONTENT_TYPE(1.50)[]; R_SPF_ALLOW(-0.20)[+ip6:2a00:1450:4000::/36]; RCVD_COUNT_THREE(0.00)[3]; ARC_SIGNED(0.00)[lists.ipfire.org:s=202003rsa:i=1]; TO_DN_ALL(0.00)[]; MX_GOOD(-0.01)[]; RCPT_COUNT_TWO(0.00)[2]; DMARC_POLICY_ALLOW(-0.50)[gmail.com,none]; DKIM_TRACE(0.00)[gmail.com:+]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; FREEMAIL_ENVFROM(0.00)[gmail.com]; ASN(0.00)[asn:15169, ipnet:2a00:1450::/32, country:US]; TAGGED_FROM(0.00)[]; MID_RHS_MATCH_FROM(0.00)[]; DWL_DNSWL_NONE(0.00)[gmail.com:dkim]; ARC_NA(0.00)[]; R_DKIM_ALLOW(-0.20)[gmail.com:s=20161025]; BAYES_HAM(-3.00)[99.99%]; FROM_HAS_DN(0.00)[]; SPF_REPUTATION_HAM(-0.77)[-0.76835424822048]; TAGGED_RCPT(0.00)[]; MIME_GOOD(-0.10)[text/plain]; PREVIOUSLY_DELIVERED(0.00)[location@lists.ipfire.org]; TO_MATCH_ENVRCPT_SOME(0.00)[]; RCVD_IN_DNSWL_NONE(0.00)[2a00:1450:4864:20::52c:from]; FREEMAIL_CC(0.00)[gmail.com]; RCVD_TLS_ALL(0.00)[] X-Rspamd-Queue-Id: 4G1Y254zyZz12W Authentication-Results: mail01.ipfire.org; dkim=pass header.d=gmail.com header.s=20161025 header.b=RqTv+6Wq; spf=pass (mail01.ipfire.org: domain of valterjansons@gmail.com designates 2a00:1450:4864:20::52c as permitted sender) smtp.mailfrom=valterjansons@gmail.com; dmarc=pass (policy=none) header.from=gmail.com X-BeenThere: location@lists.ipfire.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: location-bounces@lists.ipfire.org Sender: "Location" There are muiltiple standards of listing symbols throughout the Linux ecosystem. For `dpkg`, a d/package.symbols file tracks symbols, and in which version they were added in. This is then used to allow dependency checks/resolution. See man:dpkg-gensymbols(1) for details about the generation, and man:dpkg-shlibdeps(1) for how the symbols file ends up being used. This commit adds a d/libloc1.symbols file, containing the current state of the symbols. There is now also a d/gensymbols.sh script, which generates this symbols file. The script tries to determine what Git tags need to be checked for changes in symbols, by looking at current maximum version referenced in symbols file. After checking tags, the current revision is also processed, to allow building symbols file for a yet unreleased version (prior to tagging it). This is to allow symbols changes to be included in a tag. Do keep in mind, that for the workflow above, when running the script, the d/changelog file should contain information about what version the current revision will be released at (potentially tagged as UNRELEASED in the d/changelog file). Otherwise, if there is no version tagged, the `dpkg-gensymbols` tool will use the old version information, in turn incorrectly attributing new symbols to an old version. --- debian/gensymbols.sh | 50 +++++++++++++++ debian/libloc1.symbols | 134 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 184 insertions(+) create mode 100755 debian/gensymbols.sh create mode 100644 debian/libloc1.symbols diff --git a/debian/gensymbols.sh b/debian/gensymbols.sh new file mode 100755 index 0000000..8523556 --- /dev/null +++ b/debian/gensymbols.sh @@ -0,0 +1,50 @@ +#!/bin/bash +SYMBOLS_PKG=libloc1 +LOCAL_FILE=debian/libloc1.symbols +TEMP_FILE="$(mktemp --tmpdir libloc1.XXXXXX.symbols)" +trap "rm -f ${TEMP_FILE}" EXIT + +generate () { + intltoolize --force --automake + autoreconf --install --symlink + ./configure CFLAGS='-g -O0' --prefix=/usr --sysconfdir=/etc --libdir=/usr/lib + + make + + dpkg-gensymbols -p"$SYMBOLS_PKG" -O"$TEMP_FILE" -esrc/.libs/libloc.so.* + sed -i -E -e 's/( [0-9\.]+)-.+$/\1/' "$TEMP_FILE" + + make clean +} + +main () { + local maxver='0.0.0' + if [ -f "$LOCAL_FILE" ]; then + cp "$LOCAL_FILE" "$TEMP_FILE" + maxver="$(grep -E '^ ' "$LOCAL_FILE" | cut -d' ' -f3 | sort -Vru | head -n1)" + echo "Latest version checked: $maxver" + fi + + + local tag + for tag in $(git tag -l --sort=version:refname) + do + if [ "$(echo -e "${maxver}\n${tag}" | sort -Vr | head -n1)" == "$maxver" ]; then + echo "Tag $tag -- skip" + continue + fi + + echo "Tag $tag -- checking" + git switch --quiet --detach "$tag" || return 1 + generate || return 1 + git switch --quiet - || return 1 + done + + echo "Current -- checking" + generate || return 1 + + mv "$TEMP_FILE" "$LOCAL_FILE" + chmod 644 "$LOCAL_FILE" +} + +main "$@" || exit $? diff --git a/debian/libloc1.symbols b/debian/libloc1.symbols new file mode 100644 index 0000000..74b70b5 --- /dev/null +++ b/debian/libloc1.symbols @@ -0,0 +1,134 @@ +libloc.so.1 libloc1 #MINVER# +* Build-Depends-Package: libloc-dev + LIBLOC_1@LIBLOC_1 0.9.4 + LIBLOC_PRIVATE@LIBLOC_PRIVATE 0.9.4 + loc_as_cmp@LIBLOC_1 0.9.4 + loc_as_get_name@LIBLOC_1 0.9.4 + loc_as_get_number@LIBLOC_1 0.9.4 + loc_as_list_append@LIBLOC_1 0.9.5 + loc_as_list_clear@LIBLOC_1 0.9.5 + loc_as_list_contains@LIBLOC_1 0.9.5 + loc_as_list_contains_number@LIBLOC_1 0.9.5 + loc_as_list_empty@LIBLOC_1 0.9.5 + loc_as_list_get@LIBLOC_1 0.9.5 + loc_as_list_new@LIBLOC_1 0.9.5 + loc_as_list_ref@LIBLOC_1 0.9.5 + loc_as_list_size@LIBLOC_1 0.9.5 + loc_as_list_unref@LIBLOC_1 0.9.5 + loc_as_new@LIBLOC_1 0.9.4 + loc_as_ref@LIBLOC_1 0.9.4 + loc_as_set_name@LIBLOC_1 0.9.4 + loc_as_unref@LIBLOC_1 0.9.4 + loc_country_cmp@LIBLOC_1 0.9.4 + loc_country_code_is_valid@LIBLOC_1 0.9.4 + loc_country_get_code@LIBLOC_1 0.9.4 + loc_country_get_continent_code@LIBLOC_1 0.9.4 + loc_country_get_name@LIBLOC_1 0.9.4 + loc_country_list_append@LIBLOC_1 0.9.5 + loc_country_list_clear@LIBLOC_1 0.9.5 + loc_country_list_contains@LIBLOC_1 0.9.5 + loc_country_list_contains_code@LIBLOC_1 0.9.5 + loc_country_list_empty@LIBLOC_1 0.9.5 + loc_country_list_get@LIBLOC_1 0.9.5 + loc_country_list_new@LIBLOC_1 0.9.5 + loc_country_list_ref@LIBLOC_1 0.9.5 + loc_country_list_size@LIBLOC_1 0.9.5 + loc_country_list_unref@LIBLOC_1 0.9.5 + loc_country_new@LIBLOC_1 0.9.4 + loc_country_ref@LIBLOC_1 0.9.4 + loc_country_set_continent_code@LIBLOC_1 0.9.4 + loc_country_set_name@LIBLOC_1 0.9.4 + loc_country_unref@LIBLOC_1 0.9.4 + loc_database_count_as@LIBLOC_1 0.9.4 + loc_database_created_at@LIBLOC_1 0.9.4 + loc_database_enumerator_get_asns@LIBLOC_1 0.9.5 + loc_database_enumerator_get_countries@LIBLOC_1 0.9.5 + loc_database_enumerator_new@LIBLOC_1 0.9.4 + loc_database_enumerator_next_as@LIBLOC_1 0.9.4 + loc_database_enumerator_next_country@LIBLOC_1 0.9.4 + loc_database_enumerator_next_network@LIBLOC_1 0.9.4 + loc_database_enumerator_ref@LIBLOC_1 0.9.4 + loc_database_enumerator_set_asns@LIBLOC_1 0.9.5 + loc_database_enumerator_set_countries@LIBLOC_1 0.9.5 + loc_database_enumerator_set_family@LIBLOC_1 0.9.4 + loc_database_enumerator_set_flag@LIBLOC_1 0.9.4 + loc_database_enumerator_set_string@LIBLOC_1 0.9.4 + loc_database_enumerator_unref@LIBLOC_1 0.9.4 + loc_database_get_as@LIBLOC_1 0.9.4 + loc_database_get_country@LIBLOC_1 0.9.4 + loc_database_get_description@LIBLOC_1 0.9.4 + loc_database_get_license@LIBLOC_1 0.9.4 + loc_database_get_vendor@LIBLOC_1 0.9.4 + loc_database_lookup@LIBLOC_1 0.9.4 + loc_database_lookup_from_string@LIBLOC_1 0.9.4 + loc_database_new@LIBLOC_1 0.9.4 + loc_database_ref@LIBLOC_1 0.9.4 + loc_database_unref@LIBLOC_1 0.9.4 + loc_database_verify@LIBLOC_1 0.9.4 + loc_discover_latest_version@LIBLOC_1 0.9.4 + loc_get_log_priority@LIBLOC_1 0.9.4 + loc_network_address_family@LIBLOC_1 0.9.4 + loc_network_cmp@LIBLOC_1 0.9.5 + loc_network_exclude@LIBLOC_1 0.9.5 + loc_network_exclude_list@LIBLOC_1 0.9.5 + loc_network_format_first_address@LIBLOC_1 0.9.4 + loc_network_format_last_address@LIBLOC_1 0.9.4 + loc_network_get_asn@LIBLOC_1 0.9.4 + loc_network_get_country_code@LIBLOC_1 0.9.4 + loc_network_get_first_address@LIBLOC_1 0.9.5 + loc_network_get_last_address@LIBLOC_1 0.9.5 + loc_network_has_flag@LIBLOC_1 0.9.4 + loc_network_is_subnet@LIBLOC_1 0.9.5 + loc_network_list_clear@LIBLOC_1 0.9.5 + loc_network_list_contains@LIBLOC_1 0.9.5 + loc_network_list_dump@LIBLOC_1 0.9.5 + loc_network_list_empty@LIBLOC_1 0.9.5 + loc_network_list_get@LIBLOC_1 0.9.5 + loc_network_list_merge@LIBLOC_1 0.9.5 + loc_network_list_new@LIBLOC_1 0.9.5 + loc_network_list_pop@LIBLOC_1 0.9.5 + loc_network_list_pop_first@LIBLOC_1 0.9.5 + loc_network_list_push@LIBLOC_1 0.9.5 + loc_network_list_ref@LIBLOC_1 0.9.5 + loc_network_list_size@LIBLOC_1 0.9.5 + loc_network_list_unref@LIBLOC_1 0.9.5 + loc_network_match_address@LIBLOC_1 0.9.5 + loc_network_match_asn@LIBLOC_1 0.9.4 + loc_network_match_country_code@LIBLOC_1 0.9.4 + loc_network_match_flag@LIBLOC_1 0.9.4 + loc_network_new@LIBLOC_1 0.9.4 + loc_network_new_from_string@LIBLOC_1 0.9.4 + loc_network_overlaps@LIBLOC_1 0.9.5 + loc_network_prefix@LIBLOC_1 0.9.5 + loc_network_ref@LIBLOC_1 0.9.4 + loc_network_set_asn@LIBLOC_1 0.9.4 + loc_network_set_country_code@LIBLOC_1 0.9.4 + loc_network_set_flag@LIBLOC_1 0.9.4 + loc_network_str@LIBLOC_1 0.9.4 + loc_network_subnets@LIBLOC_1 0.9.5 + loc_network_unref@LIBLOC_1 0.9.4 + loc_new@LIBLOC_1 0.9.4 + loc_ref@LIBLOC_1 0.9.4 + loc_set_log_fn@LIBLOC_1 0.9.4 + loc_set_log_priority@LIBLOC_1 0.9.4 + loc_stringpool_add@LIBLOC_PRIVATE 0.9.4 + loc_stringpool_dump@LIBLOC_PRIVATE 0.9.4 + loc_stringpool_get@LIBLOC_PRIVATE 0.9.4 + loc_stringpool_get_size@LIBLOC_PRIVATE 0.9.4 + loc_stringpool_new@LIBLOC_PRIVATE 0.9.4 + loc_stringpool_ref@LIBLOC_PRIVATE 0.9.4 + loc_stringpool_unref@LIBLOC_PRIVATE 0.9.4 + loc_unref@LIBLOC_1 0.9.4 + loc_writer_add_as@LIBLOC_1 0.9.4 + loc_writer_add_country@LIBLOC_1 0.9.4 + loc_writer_add_network@LIBLOC_1 0.9.4 + loc_writer_get_description@LIBLOC_1 0.9.4 + loc_writer_get_license@LIBLOC_1 0.9.4 + loc_writer_get_vendor@LIBLOC_1 0.9.4 + loc_writer_new@LIBLOC_1 0.9.4 + loc_writer_ref@LIBLOC_1 0.9.4 + loc_writer_set_description@LIBLOC_1 0.9.4 + loc_writer_set_license@LIBLOC_1 0.9.4 + loc_writer_set_vendor@LIBLOC_1 0.9.4 + loc_writer_unref@LIBLOC_1 0.9.4 + loc_writer_write@LIBLOC_1 0.9.4