From 4b75162b0e865316a2413731e97256d6f83dc0a2 Mon Sep 17 00:00:00 2001 From: Sven Fischer Date: Tue, 15 May 2012 17:50:57 +0200 Subject: [PATCH 1/2] Introduced a dependency mapping for != dependency There exist gems in the wild that have a dependency != Example is sprocket gem (at least version 2.1.3). Use a mapping that prevents dpkg to choke on != and appended it to the conflicts. --- lib/fpm/package/deb.rb | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/fpm/package/deb.rb b/lib/fpm/package/deb.rb index 006421f065..61d9d5660d 100644 --- a/lib/fpm/package/deb.rb +++ b/lib/fpm/package/deb.rb @@ -261,6 +261,13 @@ def fix_dependency(dep) nextversion[l-1] = 0 nextversion = nextversion.join(".") return ["#{name} (>= #{version})", "#{name} (<< #{nextversion})"] + elsif (m = dep.match(/(\S+)\s+\(!= (.+)\)/)) + # Convert 'foo (!= x)' to 'foo (>= x+1)' + name, version = m[1..2] + nextversion = version.split('.').collect { |v| v.to_i } + nextversion[-1] += 1 + nextversion = nextversion.join(".") + return ["#{name} (>= #{nextversion})"] elsif (m = dep.match(/(\S+)\s+\(= (.+)\)/)) and self.attributes[:deb_ignore_iteration_in_dependencies?] # Convert 'foo (= x)' to 'foo (>= x)' and 'foo (<< x+1)' From 0182d6f0ad15f1083b723451838c3b5f6b83680b Mon Sep 17 00:00:00 2001 From: Sven Fischer Date: Tue, 15 May 2012 20:18:19 +0200 Subject: [PATCH 2/2] Add != dependencies as Conflicts for debian packages Added correct patch now. --- lib/fpm/package/deb.rb | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/lib/fpm/package/deb.rb b/lib/fpm/package/deb.rb index 61d9d5660d..89c3616dce 100644 --- a/lib/fpm/package/deb.rb +++ b/lib/fpm/package/deb.rb @@ -262,12 +262,9 @@ def fix_dependency(dep) nextversion = nextversion.join(".") return ["#{name} (>= #{version})", "#{name} (<< #{nextversion})"] elsif (m = dep.match(/(\S+)\s+\(!= (.+)\)/)) - # Convert 'foo (!= x)' to 'foo (>= x+1)' - name, version = m[1..2] - nextversion = version.split('.').collect { |v| v.to_i } - nextversion[-1] += 1 - nextversion = nextversion.join(".") - return ["#{name} (>= #{nextversion})"] + # Append this to conflicts + self.conflicts += [dep.gsub(/!=/,"=")] + return [] elsif (m = dep.match(/(\S+)\s+\(= (.+)\)/)) and self.attributes[:deb_ignore_iteration_in_dependencies?] # Convert 'foo (= x)' to 'foo (>= x)' and 'foo (<< x+1)'