On Sat, 18 Oct 2025 at 01:22, David E. Wheeler <[email protected]>
wrote:
>
> Adding Mankirat, who developed the ABI checker for his GSoC project.

Thanks!

Really interesting discussion.

On Sat, 18 Oct 2025 at 00:51, Peter Geoghegan <[email protected]> wrote:
>
> On Fri, Oct 17, 2025 at 3:11 PM Nathan Bossart <[email protected]>
wrote:
> > Anything else?  I suppose this idea is entirely dependent on the
> > maintainers of the abi-compliance-check code to adapt to it, so we'll
need
> > buy-in from them, too.
>
> That would require parsing the file and understanding that any
> compliance failures associated with a given commit should be
> suppressed. But that seems decidedly nontrivial to me. I can easily
> think of (admittedly somewhat contrived) scenarios where it's
> basically impossible to make this work due to transitive dependencies
> across commits.
>
> I suspect that any practical approach to solving this problem will
> have to involve ignore files that look somewhat like a Valgrind
> suppression file. It'll have to be based on symbol names, plus
> possibly a specific ABI breakage  type.

The per-branch file containing the commit hash reference for that branch is
a good solution and can be easily implemented since perl is really good at
working with files.

But if we want a much clearer way based on symbol names, we could use a
standard per branch suppression file, which the abidiff tool directly
supports for this purpose[1].
For example, each branch could have an `abi.suppr` file with content like
this:

    # commit hash: 123456abc
    [suppress_function]
    name=stats_lock_check_privileges
    # comments for this function

    # commit hash: oldercommit345
    [suppress_type]
    type_kind = struct
    name = some_struct_name
    changed_data_members = updated_member_name

If needed, the contents of this file could be truncated on a new minor
release maybe?

Added a patch for the same for handling current abi compliance failures on
baza.

Regards,
Mankirat

[1] -
https://sourceware.org/libabigail/manual/suppression-specifications.html#code-examples
From 1adff8bc2de70e4a9d44e6ba84cf9669cc14442b Mon Sep 17 00:00:00 2001
From: Mankirat Singh <[email protected]>
Date: Sat, 18 Oct 2025 18:24:24 +0530
Subject: [PATCH] [PATCH] Add ABI suppressions file v1

---
 abi.suppr | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)
 create mode 100644 abi.suppr

diff --git a/abi.suppr b/abi.suppr
new file mode 100644
index 00000000000..52bf0ec4fbb
--- /dev/null
+++ b/abi.suppr
@@ -0,0 +1,24 @@
+# This file lists abidiff suppressions on the REL_18_STABLE branch that break ABI
+# compatibility in ways that have been deemed acceptable (e.g., removing an
+# extern function with no third-party uses).  The primary intent of this file
+# is to placate the ABI compliance checks on the buildfarm, but it also serves
+# as a central location to document the justification for each.
+#
+# Add new suppressions as required in reaction to the abi-compliance-check reports
+# on buildfarm.
+
+
+
+# commit hash :c8af5019bee5c57502db830f8005a01cba60fee0
+#
+[suppress_function]
+    name=stats_lock_check_privileges
+#
+[suppress_function]
+    name=stats_lookup_relid
+#
+# Fix lookups in pg_{clear,restore}_{attribute,relation}_stats().
+# This commit replaced two functions related to lookups/privilege checks for
+# the new stats stuff in v18 with RangeVarGetRelidExtended().  These functions
+# were not intended for use elsewhere, exist in exactly one release (18.0), and
+# do not have any known third-party callers.
\ No newline at end of file
-- 
2.43.0

Reply via email to