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.15k stars 1.07k forks source link

fpm -t rpm error when workdir contains a + in name. #2042

Open EricDeveaud opened 9 months ago

EricDeveaud commented 9 months ago

Hello

trying to package ncbi blast+ I hitted a bug in fpm.

when workdir contains a + in name it aborts with the following error. /usr/share/ruby/fileutils.rb:239:inmkdir': No such file or directory @ dir_s_mkdir `

see this small reproducer.

mkdir foo+
cd foo+
touch foo
fpm -s dir -t rpm -n foo  foo=/usr/bin/foo
/usr/share/ruby/fileutils.rb:239:in `mkdir': No such file or directory @ dir_s_mkdir - /home/gensoft/foo+/package-rpm-build-c52a6f864a36cd9c70ea9f63bd8024de3521b69cdafbcb26845cd04d2257/BUILD/home/gensoft/foo+/package-dir-staging-2be5b9c630e3900cce0e05d57162e6c32f6cf460389d0811cf90cb1d3644 (Errno::ENOENT)
    from /usr/share/ruby/fileutils.rb:239:in `fu_mkdir'
    from /usr/share/ruby/fileutils.rb:175:in `block in mkdir'
    from /usr/share/ruby/fileutils.rb:174:in `each'
    from /usr/share/ruby/fileutils.rb:174:in `mkdir'
    from /home/gensoft/.gem/ruby/gems/fpm-1.15.0/lib/fpm/util.rb:348:in `copy_entry'
    from /home/gensoft/.gem/ruby/gems/fpm-1.15.0/lib/fpm/package/rpm.rb:557:in `block in output'
    from /usr/share/ruby/find.rb:49:in `block (2 levels) in find'
    from /usr/share/ruby/find.rb:48:in `catch'
    from /usr/share/ruby/find.rb:48:in `block in find'
    from /usr/share/ruby/find.rb:43:in `each'
    from /usr/share/ruby/find.rb:43:in `find'
    from /home/gensoft/.gem/ruby/gems/fpm-1.15.0/lib/fpm/package/rpm.rb:554:in `output'
    from /home/gensoft/.gem/ruby/gems/fpm-1.15.0/lib/fpm/command.rb:503:in `execute'
    from /usr/local/share/gems/gems/clamp-1.0.1/lib/clamp/command.rb:68:in `run'
    from /home/gensoft/.gem/ruby/gems/fpm-1.15.0/lib/fpm/command.rb:591:in `run'
    from /usr/local/share/gems/gems/clamp-1.0.1/lib/clamp/command.rb:133:in `run'
    from /home/gensoft/.gem/ruby/gems/fpm-1.15.0/bin/fpm:7:in `<top (required)>'
    from /usr/local/bin/fpm:23:in `load'
    from /usr/local/bin/fpm:23:in `<main>'

while

mkdir foo
cd foo
touch foo
fpm -s dir -t rpm -n foo  foo=/usr/bin/foo
Created package {:path=>"foo-1.0-1.x86_64.rpm"}

NB position of the + character in name does not matter. foo+ + failure +foo => failure fo+o => failure

NB2 fpm -t deb is not affected

context:

 fpm --version
1.15.0
 cat /etc/os-release
NAME="Red Hat Enterprise Linux"
VERSION="8.8 (Ootpa)"
ID="rhel"
ID_LIKE="fedora"
VERSION_ID="8.8"
PLATFORM_ID="platform:el8"
PRETTY_NAME="Red Hat Enterprise Linux 8.8 (Ootpa)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:redhat:enterprise_linux:8::baseos"
HOME_URL="https://www.redhat.com/"
DOCUMENTATION_URL="https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8"
BUG_REPORT_URL="https://bugzilla.redhat.com/"

REDHAT_BUGZILLA_PRODUCT="Red Hat Enterprise Linux 8"
REDHAT_BUGZILLA_PRODUCT_VERSION=8.8
REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux"
REDHAT_SUPPORT_PRODUCT_VERSION="8.8"

regards

Eric