jordansissel / fpm

Effing package management! Build packages for multiple platforms (deb, rpm, etc) with great ease and sanity.
http://fpm.readthedocs.io/en/latest/
Other
11.08k stars 1.07k forks source link

"--fpm-options-file" fails with "undefined method `extract_value' for nil:NilClass" #2060

Open manero6 opened 2 months ago

manero6 commented 2 months ago

Hi *

I want to create a .deb package out of a bin file.
To achieve that I created a custom options file called fpmdeb (I also tested without newlines):

--maintainer "Me Myself <me@example.com>"
--architecture all

-s dir
-t deb

--name blabla-github-yq
--license mit
--description "yq is a portable command-line YAML, JSON, XML, CSV, TOML and properties processor"
--url "https://github.com/mikefarah/yq"

yq_linux_amd64=/usr/bin/yq

And run fpm as follows:

fpm --version 4.43.1 --fpm-options-file fpmdeb

Unfortunately I end up getting this error:

Loading flags from file {:path=>"fpmdeb", :level=>:info}
Processing flags from file {:path=>"fpmdeb", :line=>"--maintainer \"Me Myself <me@example.com>\"", :level=>:info}
Processing flags from file {:path=>"fpmdeb", :line=>"--architecture all", :level=>:info}
Processing flags from file {:path=>"fpmdeb", :line=>"", :level=>:info}
Processing flags from file {:path=>"fpmdeb", :line=>"-s dir", :level=>:info}
Processing flags from file {:path=>"fpmdeb", :line=>"-t deb", :level=>:info}
Processing flags from file {:path=>"fpmdeb", :line=>"", :level=>:info}
Processing flags from file {:path=>"fpmdeb", :line=>"--name blabla-github-yq", :level=>:info}
Processing flags from file {:path=>"fpmdeb", :line=>"--license mit", :level=>:info}
Processing flags from file {:path=>"fpmdeb", :line=>"--description \"yq is a portable command-line YAML, JSON, XML, CSV, TOML and properties processor\"", :level=>:info}
Processing flags from file {:path=>"fpmdeb", :line=>"--url \"https://github.com/mikefarah/yq\"", :level=>:info}
Processing flags from file {:path=>"fpmdeb", :line=>"", :level=>:info}
Processing flags from file {:path=>"fpmdeb", :line=>"yq_linux_amd64=/usr/bin/yq", :level=>:info}
/var/lib/gems/3.0.0/gems/fpm-1.15.1/lib/fpm/command.rb:662:in `block in load_options': undefined method `extract_value' for nil:NilClass (NoMethodError)
        from /var/lib/gems/3.0.0/gems/fpm-1.15.1/lib/fpm/command.rb:625:in `each'
        from /var/lib/gems/3.0.0/gems/fpm-1.15.1/lib/fpm/command.rb:625:in `load_options'
        from /var/lib/gems/3.0.0/gems/fpm-1.15.1/lib/fpm/command.rb:254:in `block in <class:Command>'
        from /var/lib/gems/3.0.0/gems/clamp-1.0.1/lib/clamp/attribute/declaration.rb:33:in `instance_exec'
        from /var/lib/gems/3.0.0/gems/clamp-1.0.1/lib/clamp/attribute/declaration.rb:33:in `block in define_simple_writer_for'
        from /var/lib/gems/3.0.0/gems/clamp-1.0.1/lib/clamp/attribute/instance.rb:59:in `take'
        from /var/lib/gems/3.0.0/gems/clamp-1.0.1/lib/clamp/option/parsing.rb:32:in `parse_options'
        from /var/lib/gems/3.0.0/gems/clamp-1.0.1/lib/clamp/command.rb:53:in `parse'
        from /var/lib/gems/3.0.0/gems/clamp-1.0.1/lib/clamp/command.rb:67:in `run'
        from /var/lib/gems/3.0.0/gems/fpm-1.15.1/lib/fpm/command.rb:591:in `run'
        from /var/lib/gems/3.0.0/gems/clamp-1.0.1/lib/clamp/command.rb:133:in `run'
        from /var/lib/gems/3.0.0/gems/fpm-1.15.1/bin/fpm:7:in `<top (required)>'
        from /usr/local/bin/fpm:25:in `load'
        from /usr/local/bin/fpm:25:in `<main>'

But if I rename fpmdeb to .fpm and run fpm as follows:

fpm --version 4.43.1

then everything works as expected and I get the desired .deb package.

However, with this config file fpmdeb:

--maintainer "Me Myself <me@example.com>"
--architecture all

-s dir
-t deb

--name blabla-github-yq
--license mit
--description "yq is a portable command-line YAML, JSON, XML, CSV, TOML and properties processor"
--url "https://github.com/mikefarah/yq"

And running fpm this way:

fpm --version 4.43.1 --fpm-options-file fpmdeb yq_linux_amd64=/usr/bin/yq

I am able to create a .deb package using --fpm-options-file !

Am I doing something wrong?

Thanks :)

jpiron commented 1 month ago

I have the same error when I try to use a fpm-options-file that is located in a subfolder.

Moving the options file to the project root folder solved the issue.