Hello Julien Cristau.

Thanks for your quick reply.

On Thu, Aug 27, 2015 at 06:17:22PM +0200, Julien Cristau wrote:
> I'd prefer to fix the root cause and start by making sure no accidental
> ABI breakage like this happens again.  Then we can talk about whether
> the ABI is the libical1a one or something else.

I'd like to avoid being held responsible for the root cause of this as
it's a sin from the past (see comment #27 in bug #773916), but I've
added a check to avoid having the next person fall into the same
pitfall.... Hopefully this is good enough for now? (See below.)

Regards,
Andreas Henriksson


(Removed boring parts from diff where debian/libical1a.* where
renamed to debian/libical1b.* ...)

diff -Nru libical-1.0.1/debian/changelog libical-1.0.1/debian/changelog
--- libical-1.0.1/debian/changelog      2015-08-19 19:27:43.000000000 +0200
+++ libical-1.0.1/debian/changelog      2015-08-27 19:24:00.000000000 +0200
@@ -1,3 +1,15 @@
+libical (1.0.1-0.2) UNRELEASED; urgency=medium
+
+  * Rename libical1a to libical1b as every update to generated API
+    from design-data/*.csv causes subtle ABI breakage. (Closes: #797003)
+    (See also https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=773916#27
+     for further background on this issue.)
+  * Add build-time check in debian/rules to catch future mistakes
+    by running md5sum check on the design-data/*.csv files and
+    generate an error message when they have changed.
+
+ -- Andreas Henriksson <[email protected]>  Thu, 27 Aug 2015 19:17:37 +0200
+
 libical (1.0.1-0.1) unstable; urgency=medium
 
   * Non-maintainer upload.
diff -Nru libical-1.0.1/debian/control libical-1.0.1/debian/control
--- libical-1.0.1/debian/control        2015-01-03 14:58:53.000000000 +0100
+++ libical-1.0.1/debian/control        2015-08-27 19:16:48.000000000 +0200
@@ -9,18 +9,18 @@
 Package: libical-dev
 Section: libdevel
 Architecture: any
-Depends: libical1a (= ${binary:Version}), ${misc:Depends}
+Depends: libical1b (= ${binary:Version}), ${misc:Depends}
 Description: iCalendar library implementation in C (development)
  libical is an open source implementation of the IETF's iCalendar calendaring
  and scheduling protocols (RFC 2445, 2446, and 2447). It parses iCal components
  and provides a C API for manipulating the component properties, parameters,
  and subcomponents.
 
-Package: libical1a
+Package: libical1b
 Architecture: any
 Depends: tzdata, ${misc:Depends}, ${shlibs:Depends}
-Breaks: libical1
-Replaces: libical1
+Breaks: libical1, libical1a
+Replaces: libical1, libical1a
 Description: iCalendar library implementation in C (runtime)
  libical is an open source implementation of the IETF's iCalendar calendaring
  and scheduling protocols (RFC 2445, 2446, and 2447). It parses iCal components
@@ -34,7 +34,7 @@
 Priority: extra
 Architecture: any
 Section: debug
-Depends: libical1a (= ${binary:Version}), ${misc:Depends}
+Depends: libical1b (= ${binary:Version}), ${misc:Depends}
 Description: debugging symbols for libical
  This package contains the debugging symbols associated with libical.
  .
diff -Nru libical-1.0.1/debian/generated-abi-check.md5sum 
libical-1.0.1/debian/generated-abi-check.md5sum
--- libical-1.0.1/debian/generated-abi-check.md5sum     1970-01-01 
01:00:00.000000000 +0100
+++ libical-1.0.1/debian/generated-abi-check.md5sum     2015-08-27 
19:14:04.000000000 +0200
@@ -0,0 +1,4 @@
+ecef3fdcdd016fddbef023b3f4d111bf  design-data/parameters.csv
+3f782626dea89516e773365745f095ea  design-data/properties.csv
+4f92462d77b9c394633616711ccd21e6  design-data/restrictions.csv
+27cd5b5f7c8e1c60a18a4ec285910caa  design-data/value-types.csv
diff -Nru libical-1.0.1/debian/libical1a.docs 
libical-1.0.1/debian/libical1a.docs
diff -Nru libical-1.0.1/debian/libical1a.install 
libical-1.0.1/debian/libical1a.install
diff -Nru libical-1.0.1/debian/libical1a.symbols 
libical-1.0.1/debian/libical1a.symbols
diff -Nru libical-1.0.1/debian/rules libical-1.0.1/debian/rules
--- libical-1.0.1/debian/rules  2015-01-03 14:58:53.000000000 +0100
+++ libical-1.0.1/debian/rules  2015-08-27 19:28:08.000000000 +0200
@@ -2,3 +2,13 @@
 
 %:
        dh $@ --buildsystem=cmake --parallel --list-missing 
--dbg-package=libical-dbg
+
+override_dh_auto_test:
+       md5sum --status -c debian/generated-abi-check.md5sum || (echo "ERROR: 
Generated ABI was changed and will cause subtle ABI breakage. Please prepare 
the package for library transition and update debian/generated-abi-check.md5sum 
(see debian/rules for the source of this message.)" && exit 1)
+# when you got caught by the above check, do this:
+# rename the package in debian/control from libical1x to libical1y
+# (and do the same for libical1x* files under debian/).
+# update debian/generated-abi-check.md5sum by running:
+# for a in design-data/*.csv ; do md5sum $a ; done > \
+#                     debian/generated-abi-check.md5sum
+# request a transition slot via "reportbug release.debian.org"

Reply via email to