fpm 0.3.3 → 0.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/fpm/builder.rb +3 -1
- data/lib/fpm/package.rb +7 -1
- data/lib/fpm/program.rb +11 -2
- data/lib/fpm/source/pyfpm/get_metadata.py +5 -0
- data/lib/fpm/source/pyfpm/get_metadata.pyc +0 -0
- data/lib/fpm/target/deb.rb +27 -3
- data/templates/deb.erb +1 -2
- data/templates/rpm.erb +3 -2
- metadata +4 -4
    
        data/lib/fpm/builder.rb
    CHANGED
    
    | @@ -55,7 +55,9 @@ class FPM::Builder | |
| 55 55 | 
             
                @edit = !!settings.edit
         | 
| 56 56 |  | 
| 57 57 | 
             
                @paths = paths
         | 
| 58 | 
            -
                @package = package_class_for(settings.package_type).new(@source | 
| 58 | 
            +
                @package = package_class_for(settings.package_type).new(@source, 
         | 
| 59 | 
            +
            			:settings => settings.target
         | 
| 60 | 
            +
            		)
         | 
| 59 61 | 
             
                # Append dependencies given from settings (-d flag for fpm)
         | 
| 60 62 | 
             
                @package.dependencies += settings.dependencies if settings.dependencies
         | 
| 61 63 | 
             
                # Append provides given from settings (--provides flag for fpm)
         | 
    
        data/lib/fpm/package.rb
    CHANGED
    
    | @@ -59,7 +59,10 @@ class FPM::Package | |
| 59 59 | 
             
              # hash of paths for maintainer/package scripts (postinstall, etc)
         | 
| 60 60 | 
             
              attr_accessor :scripts
         | 
| 61 61 |  | 
| 62 | 
            -
             | 
| 62 | 
            +
            	# target-specific settings
         | 
| 63 | 
            +
            	attr_accessor :settings
         | 
| 64 | 
            +
             | 
| 65 | 
            +
              def initialize(source, params={})
         | 
| 63 66 | 
             
                @source = source
         | 
| 64 67 | 
             
                @logger = Logger.new(STDERR)
         | 
| 65 68 | 
             
                @logger.level = $DEBUG ? Logger::DEBUG : Logger::WARN
         | 
| @@ -106,6 +109,9 @@ class FPM::Package | |
| 106 109 | 
             
                @provides = source[:provides] || []
         | 
| 107 110 | 
             
                @replaces = source[:replaces] || []
         | 
| 108 111 | 
             
                @scripts = source[:scripts]
         | 
| 112 | 
            +
             | 
| 113 | 
            +
            		# Target-specific settings, mirrors :settings metadata in FPM::Source
         | 
| 114 | 
            +
            		@settings = params[:settings] || {}
         | 
| 109 115 | 
             
              end # def initialize
         | 
| 110 116 |  | 
| 111 117 | 
             
              # nobody needs md5sums by default.
         | 
    
        data/lib/fpm/program.rb
    CHANGED
    
    | @@ -15,9 +15,12 @@ class FPM::Program | |
| 15 15 | 
             
                @settings.provides = []
         | 
| 16 16 | 
             
                @settings.replaces = []
         | 
| 17 17 | 
             
                @settings.source = {}   # source settings
         | 
| 18 | 
            +
                @settings.target = {}   # target settings
         | 
| 18 19 |  | 
| 19 20 | 
             
                # Maintainer scripts - https://github.com/jordansissel/fpm/issues/18
         | 
| 20 21 | 
             
                @settings.scripts ||= {} 
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                @help = nil
         | 
| 21 24 | 
             
              end # def initialize
         | 
| 22 25 |  | 
| 23 26 | 
             
              def run(args)
         | 
| @@ -38,7 +41,7 @@ class FPM::Program | |
| 38 41 | 
             
                if !ok
         | 
| 39 42 | 
             
                  $stderr.puts "There were errors; see above."
         | 
| 40 43 | 
             
                  $stderr.puts 
         | 
| 41 | 
            -
                  $stderr.puts  | 
| 44 | 
            +
                  $stderr.puts @help
         | 
| 42 45 | 
             
                  return 1
         | 
| 43 46 | 
             
                end
         | 
| 44 47 |  | 
| @@ -56,12 +59,17 @@ class FPM::Program | |
| 56 59 | 
             
                FPM::Source::Gem.flags(FPM::Flags.new(opts, "gem", "gem source only"), @settings)
         | 
| 57 60 | 
             
                FPM::Source::Python.flags(FPM::Flags.new(opts, "python", "python source only"),
         | 
| 58 61 | 
             
                                          @settings)
         | 
| 59 | 
            -
             | 
| 62 | 
            +
            		FPM::Target::Deb.flags(FPM::Flags.new(opts, "deb", "deb target only"), @settings)  
         | 
| 63 | 
            +
              
         | 
| 60 64 | 
             
                # Process fpmrc first
         | 
| 61 65 | 
             
                fpmrc(opts)
         | 
| 62 66 |  | 
| 63 67 | 
             
                # Proces normal flags now.
         | 
| 64 68 | 
             
                remaining = opts.parse(args)
         | 
| 69 | 
            +
                
         | 
| 70 | 
            +
                # need to print help in a different scope
         | 
| 71 | 
            +
                @help = opts.help
         | 
| 72 | 
            +
             | 
| 65 73 | 
             
                return remaining
         | 
| 66 74 | 
             
              end # def options
         | 
| 67 75 |  | 
| @@ -197,5 +205,6 @@ class FPM::Program | |
| 197 205 | 
             
                        "Add a url for this package.") do |url|
         | 
| 198 206 | 
             
                  @settings.url = url
         | 
| 199 207 | 
             
                end # --url
         | 
| 208 | 
            +
             | 
| 200 209 | 
             
              end # def default_options
         | 
| 201 210 | 
             
            end # class FPM::Program
         | 
| @@ -55,6 +55,11 @@ class get_metadata(Command): | |
| 55 55 | 
             
                if dependencies is None:
         | 
| 56 56 | 
             
                  dependencies = []
         | 
| 57 57 |  | 
| 58 | 
            +
                # Some cases (like paramiko) dependencies is actually just a string, not a
         | 
| 59 | 
            +
                # list
         | 
| 60 | 
            +
                if isinstance(dependencies, str):
         | 
| 61 | 
            +
                  dependencies = [dependencies]
         | 
| 62 | 
            +
             | 
| 58 63 | 
             
                final_deps = []
         | 
| 59 64 | 
             
                dep_re = re.compile("([^<>= ]+)(?:\s*([<>=]{1,2})\s*(.*))?$")
         | 
| 60 65 | 
             
                for dep in dependencies:
         | 
| Binary file | 
    
        data/lib/fpm/target/deb.rb
    CHANGED
    
    | @@ -4,6 +4,16 @@ require "fpm/package" | |
| 4 4 | 
             
            require "fpm/errors"
         | 
| 5 5 |  | 
| 6 6 | 
             
            class FPM::Target::Deb < FPM::Package
         | 
| 7 | 
            +
             | 
| 8 | 
            +
              def self.flags(opts, settings)
         | 
| 9 | 
            +
                settings.target[:deb] = "deb"
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                opts.on("--ignore-iteration-in-dependencies",
         | 
| 12 | 
            +
                        "For = dependencies, allow iterations on the specified version.  Default is to be specific.") do |x|
         | 
| 13 | 
            +
                  settings.target[:ignore_iteration] = true
         | 
| 14 | 
            +
                end
         | 
| 15 | 
            +
              end
         | 
| 16 | 
            +
             | 
| 7 17 | 
             
              def needs_md5sums
         | 
| 8 18 | 
             
                true
         | 
| 9 19 | 
             
              end # def needs_md5sums
         | 
| @@ -107,17 +117,31 @@ class FPM::Target::Deb < FPM::Package | |
| 107 117 | 
             
                name_re = /^[^ \(]+/
         | 
| 108 118 | 
             
                name = dep[name_re] 
         | 
| 109 119 | 
             
                if name =~ /[A-Z]/
         | 
| 110 | 
            -
                  @logger.warn("Downcasing  | 
| 120 | 
            +
                  @logger.warn("Downcasing dependency '#{name}' because deb packages " \
         | 
| 111 121 | 
             
                               " don't work so good with uppercase names")
         | 
| 112 122 | 
             
                  dep.gsub!(name_re) { |n| n.downcase }
         | 
| 113 123 | 
             
                end
         | 
| 114 124 |  | 
| 125 | 
            +
                if dep =~ /_/
         | 
| 126 | 
            +
                  @logger.warn("Replacing underscores with dashes in '#{dep}' because " \
         | 
| 127 | 
            +
                               "debs don't like underscores")
         | 
| 128 | 
            +
                  dep.gsub!("_", "-")
         | 
| 129 | 
            +
                end
         | 
| 130 | 
            +
             | 
| 115 131 | 
             
                # Convert gem ~> X.Y.Z to '>= X.Y.Z' and << X.Y+1.0
         | 
| 116 132 | 
             
                if dep =~ /\(~>/
         | 
| 117 133 | 
             
                  name, version = dep.gsub(/[()~>]/, "").split(/ +/)[0..1]
         | 
| 118 134 | 
             
                  nextversion = version.split(".").collect { |v| v.to_i }
         | 
| 119 | 
            -
                   | 
| 120 | 
            -
                  nextversion[2]  | 
| 135 | 
            +
                  l = nextversion.length
         | 
| 136 | 
            +
                  nextversion[l-2] += 1
         | 
| 137 | 
            +
                  nextversion[l-1] = 0
         | 
| 138 | 
            +
                  nextversion = nextversion.join(".")
         | 
| 139 | 
            +
                  return ["#{name} (>= #{version})", "#{name} (<< #{nextversion})"]
         | 
| 140 | 
            +
                # ignore iterations for = dependencies if flag specified
         | 
| 141 | 
            +
                elsif (m = dep.match(/(\S+)\s+\(= (.+)\)/)) && self.settings[:ignore_iteration]
         | 
| 142 | 
            +
                  name, version = m[1..2]
         | 
| 143 | 
            +
                  nextversion = version.split('.').collect { |v| v.to_i }
         | 
| 144 | 
            +
                  nextversion[-1] += 1
         | 
| 121 145 | 
             
                  nextversion = nextversion.join(".")
         | 
| 122 146 | 
             
                  return ["#{name} (>= #{version})", "#{name} (<< #{nextversion})"]
         | 
| 123 147 | 
             
                else
         | 
    
        data/templates/deb.erb
    CHANGED
    
    | @@ -20,8 +20,7 @@ Homepage: <%= url or "http://nourlgiven.example.com/" %> | |
| 20 20 | 
             
            Description: <%= name %> (FPM-generated package)
         | 
| 21 21 | 
             
            <% max_len = 74 -%>
         | 
| 22 22 | 
             
            <% if description -%>
         | 
| 23 | 
            -
            <%= description.gsub(/^$/, ".").gsub(/(.{1,#{max_len}})( +|$)\n?|(.{#{max_len}})/,"  \\1\\3\n")  | 
| 23 | 
            +
            <%= description.gsub(/^$/, ".").gsub(/(.{1,#{max_len}})( +|$)\n?|(.{#{max_len}})/,"  \\1\\3\n") -%>
         | 
| 24 24 | 
             
            <% else -%>
         | 
| 25 25 | 
             
            <%= "no description given" %>
         | 
| 26 26 | 
             
            <% end -%>
         | 
| 27 | 
            -
             | 
    
        data/templates/rpm.erb
    CHANGED
    
    | @@ -26,8 +26,9 @@ BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) | |
| 26 26 | 
             
                if d =~ /\~>/
         | 
| 27 27 | 
             
                  name, version = d.gsub(/[()~>]/, "").split(/ +/)[0..1]
         | 
| 28 28 | 
             
                  nextversion = version.split(".").collect { |v| v.to_i }
         | 
| 29 | 
            -
                   | 
| 30 | 
            -
                  nextversion[2]  | 
| 29 | 
            +
                  l = nextversion.length
         | 
| 30 | 
            +
                  nextversion[l-2] += 1
         | 
| 31 | 
            +
                  nextversion[l-1] = 0 
         | 
| 31 32 | 
             
                  nextversion = nextversion.join(".")
         | 
| 32 33 | 
             
                  ["#{name} >= #{version}", "#{name} < #{nextversion}"]
         | 
| 33 34 | 
             
                # Convert gem >= A.B.C <= X.Y.Z to '>= A.B.C' and '<= X.Y.Z'
         | 
    
        metadata
    CHANGED
    
    | @@ -1,13 +1,13 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification 
         | 
| 2 2 | 
             
            name: fpm
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version 
         | 
| 4 | 
            -
              hash:  | 
| 4 | 
            +
              hash: 27
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
              segments: 
         | 
| 7 7 | 
             
              - 0
         | 
| 8 8 | 
             
              - 3
         | 
| 9 | 
            -
              -  | 
| 10 | 
            -
              version: 0.3. | 
| 9 | 
            +
              - 4
         | 
| 10 | 
            +
              version: 0.3.4
         | 
| 11 11 | 
             
            platform: ruby
         | 
| 12 12 | 
             
            authors: 
         | 
| 13 13 | 
             
            - Jordan Sissel
         | 
| @@ -15,7 +15,7 @@ autorequire: | |
| 15 15 | 
             
            bindir: bin
         | 
| 16 16 | 
             
            cert_chain: []
         | 
| 17 17 |  | 
| 18 | 
            -
            date: 2011- | 
| 18 | 
            +
            date: 2011-07-07 00:00:00 -07:00
         | 
| 19 19 | 
             
            default_executable: 
         | 
| 20 20 | 
             
            dependencies: 
         | 
| 21 21 | 
             
            - !ruby/object:Gem::Dependency 
         |