[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#797074: transition: libical



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 <andreas@fatal.se>  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 to: