[Pkg-mozext-commits] [SCM] Collection of development scripts used for XUL extensions. branch, master, updated. 0.23-55-gcc52fe4

Benjamin Drung bdrung at debian.org
Tue Oct 11 20:40:24 UTC 2011


The following commit has been merged in the master branch:
commit cc52fe459c05b2588f635d5bf90ff9eaddb1f0f1
Author: Benjamin Drung <bdrung at debian.org>
Date:   Tue Oct 11 22:40:18 2011 +0200

    Add ${xpi:Breaks} for versioned package dependency for maximum XUL application version.
    
    LP: #839130

diff --git a/debian/changelog b/debian/changelog
index b53a8cf..30e9385 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -9,6 +9,8 @@ mozilla-devscripts (0.29) UNRELEASED; urgency=low
   * Switch from dpkg-source 1.0 to 3.0 (native).
   * Updated VCS location.
   * Relicense my stuff under the ISC license.
+  * Add ${xpi:Breaks} for versioned package dependency for maximum
+    XUL application version (LP: #839130).
 
   [ Andrea Veri ]
   * debian/control:
diff --git a/src/dh_xul-ext b/src/dh_xul-ext
index 876d43e..c7328de 100755
--- a/src/dh_xul-ext
+++ b/src/dh_xul-ext
@@ -21,7 +21,8 @@ import os
 import subprocess
 import sys
 
-from moz_version import compare_versions, convert_moz_to_debian_version
+from moz_version import (compare_versions, convert_moz_to_debian_version,
+                         moz_to_next_debian_version)
 
 import RDF
 
@@ -43,6 +44,17 @@ class XulApp(object):
         return self.xul_id + ": " + self.package + " (" + self.sol + " to " + \
                self.eol + ")"
 
+    def get_breaks(self):
+        """Return a string for ${xpi:Breaks} for the XUL application."""
+        breaks = []
+        if self.min_version:
+            deb_min_version = convert_moz_to_debian_version(self.min_version)
+            breaks.append(self.package + " (<< " + deb_min_version + ")")
+        if self.max_version:
+            deb_max_version = moz_to_next_debian_version(self.max_version)
+            breaks.append(self.package + " (>= " + deb_max_version + ")")
+        return ", ".join(breaks)
+
     def get_eol(self):
         return self.eol
 
@@ -297,6 +309,8 @@ def generate_substvars(script_name, xul_apps, package, verbose=False):
     else:
         lines.append("xpi:Depends=" + " | ".join(packages) + "\n")
         lines.append("xpi:Recommends=\n")
+    packages = [a.get_breaks() for a in supported_apps]
+    lines.append("xpi:Breaks=" + ", ".join(sorted(packages)) + "\n")
     packages = [a.get_package() for a in supported_apps]
     lines.append("xpi:Enhances=" + ", ".join(sorted(packages)) + "\n")
     packages = get_provided_package_names(package, supported_apps)
diff --git a/src/moz_version.py b/src/moz_version.py
index ce21f7f..c4cebed 100644
--- a/src/moz_version.py
+++ b/src/moz_version.py
@@ -128,6 +128,19 @@ def extract_upstream_version(debian_version):
 
     return upstream_version
 
+def _convert_part_to_debian(part):
+    """Converts a Mozilla version part (like 5pre4) to a Debian version."""
+    (number_a, string_b, number_c, string_d) = part
+    debian_version = ""
+    if string_d != "":
+        debian_version = "~" + string_d
+    if number_c != 0 or string_d != "":
+        debian_version = str(number_c) + debian_version
+    if string_b != "":
+        debian_version = "~" + string_b + debian_version
+    debian_version = str(number_a) + debian_version
+    return debian_version
+
 def convert_debian_to_moz_version(debian_version, verbose=False):
     upstream_version = extract_upstream_version(debian_version)
 
@@ -145,16 +158,54 @@ def convert_debian_to_moz_version(debian_version, verbose=False):
 def convert_moz_to_debian_version(moz_version, epoch=0, verbose=False):
     parts = decode_version(moz_version, verbose)
     # tranform parts
-    for i in xrange(len(parts)):
-        (number_a, string_b, number_c, string_d) = parts[i]
-        part = ""
-        if string_d != "":
-            part = "~" + string_d
-        if number_c != 0 or string_d != "":
-            part = str(number_c) + part
-        if string_b != "":
-            part = "~" + string_b + part
-        parts[i] = str(number_a) + part
+    parts = [_convert_part_to_debian(p) for p in parts]
+    debian_version = ".".join(parts)
+    if epoch != 0:
+        debian_version = str(epoch) + ":" + debian_version
+    return debian_version
+
+def moz_to_next_debian_version(moz_version, epoch=0, verbose=False):
+    """Convert a given Mozilla version to the next Debian version.
+
+    Compared to convert_moz_to_debian_version it does following:
+    * append 0 to a trailing letter, or
+    * append + to a trailing number, or
+    * replace a trailing * with +.
+
+    Examples:
+    9.0a => 9.0~a0
+    9.0a1 => 9.0~a1+
+    9.0 => 9.0+
+    9.0.* => 9.0.+
+    """
+    parts = decode_version(moz_version, verbose)
+    # tranform last parts
+    (number_a, string_b, number_c, string_d) = parts[-1]
+    last_part = ""
+    if string_d != "":
+        last_part = "~" + string_d + "0"
+    if number_c != 0 or string_d != "":
+        if last_part:
+            last_part = str(number_c) + last_part
+        else:
+            if number_c == sys.maxint:
+                last_part = "+"
+            else:
+                last_part = str(number_c) + "+"
+    if string_b != "":
+        if last_part:
+            last_part = "~" + string_b + last_part
+        else:
+            last_part = "~" + string_b + "0"
+    if last_part:
+        last_part = str(number_a) + last_part
+    else:
+        if number_a == sys.maxint:
+            last_part = "+"
+        else:
+            last_part = str(number_a) + "+"
+
+    parts = [_convert_part_to_debian(p) for p in parts[:-1]] + [last_part]
     debian_version = ".".join(parts)
     if epoch != 0:
         debian_version = str(epoch) + ":" + debian_version
diff --git a/tests/dh_xul-ext/all/install.rdf b/tests/dh_xul-ext/all/install.rdf
index 773eaa0..cee21e9 100644
--- a/tests/dh_xul-ext/all/install.rdf
+++ b/tests/dh_xul-ext/all/install.rdf
@@ -9,7 +9,7 @@
         <!-- Iceweasel/Firefox -->
         <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
         <em:minVersion>3.5</em:minVersion>
-        <em:maxVersion>7.0a1</em:maxVersion>
+        <em:maxVersion>7.0a</em:maxVersion>
       </Description>
     </em:targetApplication>
     <em:targetApplication>
@@ -25,7 +25,7 @@
         <!-- Iceape/Seamonkey -->
         <em:id>{92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}</em:id>
         <em:minVersion>2.0</em:minVersion>
-        <em:maxVersion>2.4a1</em:maxVersion>
+        <em:maxVersion>2.4</em:maxVersion>
       </Description>
     </em:targetApplication>
     <em:targetApplication>
@@ -33,7 +33,7 @@
         <!-- Conkeror -->
         <em:id>{a79fe89b-6662-4ff4-8e88-09950ad4dfde}</em:id>
         <em:minVersion>0.1</em:minVersion>
-        <em:maxVersion>100.0</em:maxVersion>
+        <em:maxVersion>100.*</em:maxVersion>
       </Description>
     </em:targetApplication>
   </Description>
diff --git a/tests/dh_xul-ext/all_environment/install.rdf b/tests/dh_xul-ext/all_environment/install.rdf
index 773eaa0..cee21e9 100644
--- a/tests/dh_xul-ext/all_environment/install.rdf
+++ b/tests/dh_xul-ext/all_environment/install.rdf
@@ -9,7 +9,7 @@
         <!-- Iceweasel/Firefox -->
         <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
         <em:minVersion>3.5</em:minVersion>
-        <em:maxVersion>7.0a1</em:maxVersion>
+        <em:maxVersion>7.0a</em:maxVersion>
       </Description>
     </em:targetApplication>
     <em:targetApplication>
@@ -25,7 +25,7 @@
         <!-- Iceape/Seamonkey -->
         <em:id>{92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}</em:id>
         <em:minVersion>2.0</em:minVersion>
-        <em:maxVersion>2.4a1</em:maxVersion>
+        <em:maxVersion>2.4</em:maxVersion>
       </Description>
     </em:targetApplication>
     <em:targetApplication>
@@ -33,7 +33,7 @@
         <!-- Conkeror -->
         <em:id>{a79fe89b-6662-4ff4-8e88-09950ad4dfde}</em:id>
         <em:minVersion>0.1</em:minVersion>
-        <em:maxVersion>100.0</em:maxVersion>
+        <em:maxVersion>100.*</em:maxVersion>
       </Description>
     </em:targetApplication>
   </Description>
diff --git a/tests/dh_xul-ext/debian/install.rdf b/tests/dh_xul-ext/debian/install.rdf
index 773eaa0..cee21e9 100644
--- a/tests/dh_xul-ext/debian/install.rdf
+++ b/tests/dh_xul-ext/debian/install.rdf
@@ -9,7 +9,7 @@
         <!-- Iceweasel/Firefox -->
         <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
         <em:minVersion>3.5</em:minVersion>
-        <em:maxVersion>7.0a1</em:maxVersion>
+        <em:maxVersion>7.0a</em:maxVersion>
       </Description>
     </em:targetApplication>
     <em:targetApplication>
@@ -25,7 +25,7 @@
         <!-- Iceape/Seamonkey -->
         <em:id>{92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}</em:id>
         <em:minVersion>2.0</em:minVersion>
-        <em:maxVersion>2.4a1</em:maxVersion>
+        <em:maxVersion>2.4</em:maxVersion>
       </Description>
     </em:targetApplication>
     <em:targetApplication>
@@ -33,7 +33,7 @@
         <!-- Conkeror -->
         <em:id>{a79fe89b-6662-4ff4-8e88-09950ad4dfde}</em:id>
         <em:minVersion>0.1</em:minVersion>
-        <em:maxVersion>100.0</em:maxVersion>
+        <em:maxVersion>100.*</em:maxVersion>
       </Description>
     </em:targetApplication>
   </Description>
diff --git a/tests/dh_xul-ext/expected_result/all.substvars b/tests/dh_xul-ext/expected_result/all.substvars
index 0b86163..656cf41 100644
--- a/tests/dh_xul-ext/expected_result/all.substvars
+++ b/tests/dh_xul-ext/expected_result/all.substvars
@@ -1,4 +1,5 @@
 xpi:Depends=iceweasel (>= 3.5) | icedove (>= 3.0) | iceape (>= 2.0) | conkeror | firefox | thunderbird (>= 3.0) | seamonkey (>= 2.0)
 xpi:Recommends=
+xpi:Breaks=conkeror (>= 100.+), firefox (>= 7.0~a0), iceape (<< 2.0), iceape (>= 2.4+), icedove (<< 3.0), icedove (>= 7.0~a1+), iceweasel (<< 3.5), iceweasel (>= 7.0~a0), seamonkey (<< 2.0), seamonkey (>= 2.4+), thunderbird (<< 3.0), thunderbird (>= 7.0~a1+)
 xpi:Enhances=conkeror, firefox, iceape, icedove, iceweasel, seamonkey, thunderbird
 xpi:Provides=conkeror-test-package, firefox-test-package, iceape-test-package, icedove-test-package, iceweasel-test-package, seamonkey-test-package, test-package, thunderbird-test-package
diff --git a/tests/dh_xul-ext/expected_result/all_environment.substvars b/tests/dh_xul-ext/expected_result/all_environment.substvars
index 0b86163..656cf41 100644
--- a/tests/dh_xul-ext/expected_result/all_environment.substvars
+++ b/tests/dh_xul-ext/expected_result/all_environment.substvars
@@ -1,4 +1,5 @@
 xpi:Depends=iceweasel (>= 3.5) | icedove (>= 3.0) | iceape (>= 2.0) | conkeror | firefox | thunderbird (>= 3.0) | seamonkey (>= 2.0)
 xpi:Recommends=
+xpi:Breaks=conkeror (>= 100.+), firefox (>= 7.0~a0), iceape (<< 2.0), iceape (>= 2.4+), icedove (<< 3.0), icedove (>= 7.0~a1+), iceweasel (<< 3.5), iceweasel (>= 7.0~a0), seamonkey (<< 2.0), seamonkey (>= 2.4+), thunderbird (<< 3.0), thunderbird (>= 7.0~a1+)
 xpi:Enhances=conkeror, firefox, iceape, icedove, iceweasel, seamonkey, thunderbird
 xpi:Provides=conkeror-test-package, firefox-test-package, iceape-test-package, icedove-test-package, iceweasel-test-package, seamonkey-test-package, test-package, thunderbird-test-package
diff --git a/tests/dh_xul-ext/expected_result/debian.substvars b/tests/dh_xul-ext/expected_result/debian.substvars
index 923b41b..a70bdc9 100644
--- a/tests/dh_xul-ext/expected_result/debian.substvars
+++ b/tests/dh_xul-ext/expected_result/debian.substvars
@@ -1,4 +1,5 @@
 xpi:Depends=iceweasel (>= 3.5) | icedove (>= 3.0) | iceape (>= 2.0) | conkeror
 xpi:Recommends=
+xpi:Breaks=conkeror (>= 100.+), iceape (<< 2.0), iceape (>= 2.4+), icedove (<< 3.0), icedove (>= 7.0~a1+), iceweasel (<< 3.5), iceweasel (>= 7.0~a0)
 xpi:Enhances=conkeror, iceape, icedove, iceweasel
 xpi:Provides=conkeror-test-package, iceape-test-package, icedove-test-package, iceweasel-test-package, test-package
diff --git a/tests/dh_xul-ext/expected_result/ubuntu.substvars b/tests/dh_xul-ext/expected_result/ubuntu.substvars
index 6f7e3be..285ae09 100644
--- a/tests/dh_xul-ext/expected_result/ubuntu.substvars
+++ b/tests/dh_xul-ext/expected_result/ubuntu.substvars
@@ -1,4 +1,5 @@
 xpi:Depends=firefox | thunderbird (>= 3.0) | seamonkey (>= 2.0)
 xpi:Recommends=
+xpi:Breaks=firefox (>= 7.0~a0), seamonkey (<< 2.0), seamonkey (>= 2.4+), thunderbird (<< 3.0), thunderbird (>= 7.0~a1+)
 xpi:Enhances=firefox, seamonkey, thunderbird
 xpi:Provides=firefox-test-package, seamonkey-test-package, test-package, thunderbird-test-package
diff --git a/tests/dh_xul-ext/ubuntu/install.rdf b/tests/dh_xul-ext/ubuntu/install.rdf
index 773eaa0..cee21e9 100644
--- a/tests/dh_xul-ext/ubuntu/install.rdf
+++ b/tests/dh_xul-ext/ubuntu/install.rdf
@@ -9,7 +9,7 @@
         <!-- Iceweasel/Firefox -->
         <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
         <em:minVersion>3.5</em:minVersion>
-        <em:maxVersion>7.0a1</em:maxVersion>
+        <em:maxVersion>7.0a</em:maxVersion>
       </Description>
     </em:targetApplication>
     <em:targetApplication>
@@ -25,7 +25,7 @@
         <!-- Iceape/Seamonkey -->
         <em:id>{92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}</em:id>
         <em:minVersion>2.0</em:minVersion>
-        <em:maxVersion>2.4a1</em:maxVersion>
+        <em:maxVersion>2.4</em:maxVersion>
       </Description>
     </em:targetApplication>
     <em:targetApplication>
@@ -33,7 +33,7 @@
         <!-- Conkeror -->
         <em:id>{a79fe89b-6662-4ff4-8e88-09950ad4dfde}</em:id>
         <em:minVersion>0.1</em:minVersion>
-        <em:maxVersion>100.0</em:maxVersion>
+        <em:maxVersion>100.*</em:maxVersion>
       </Description>
     </em:targetApplication>
   </Description>

-- 
Collection of development scripts used for XUL extensions.



More information about the Pkg-mozext-commits mailing list