I'm trying to build keepassxc flatpak using flatpak-module-tools and I'm ending up with no patch applied.
flatpak-module-tools
Spec file snip:
Name: keepassxc Version: 2.5.2 Release: 1%{?dist} Summary: Cross-platform password manager License: Boost and BSD and CC0 and GPLv3 and LGPLv2 and LGPLv2+ and LGPLv3+ and Public Domain URL: http://www.keepassxc.org/ Source0: keepassxc-%{version}-src.tar.xz Patch1: 0001-command-wrapper-flatpak.patch ... %if 0%{?flatpak} install -Dm755 -t %{_bindir} command-wrapper.sh %endif
The build itself fails on install -Dm755 -t %{_bindir} command-wrapper.sh because this file should be created by patch. Here is the exact error from build log:
install -Dm755 -t %{_bindir} command-wrapper.sh
DEBUG: + install -Dm755 -t /app/bin command-wrapper.sh ld DEBUG: install: cannot stat 'command-wrapper.sh': No such file or directory DEBUG: error: Bad exit status from /var/tmp/rpm-tmp.PhvEuM (%install) DEBUG: RPM build errors: DEBUG: Bad exit status from /var/tmp/rpm-tmp.PhvEuM (%install) DEBUG: Child return code was: 1 INFO: EXCEPTION: [Error()] Traceback (most recent call last): File "/usr/lib/python3.7/site-packages/mockbuild/trace_decorator.py", line 95, in trace result = func(*args, **kw) File "/usr/lib/python3.7/site-packages/mockbuild/util.py", line 746, in do_with_status raise exception.Error("Command failed: \n # %s\n%s" % (command, output), child.returncode) mockbuild.exception.Error: Command failed: # bash --login -c /usr/bin/rpmbuild -bb --target x86_64 --nodeps /builddir/build/SPECS/keepassxc.spec
Certainly many patches do get successfully applied - so I'm not sure what's going on here. Can you put a source RPM somewhere?
I would have a preference for doing this like:
Source1: command-wrapper.sh ... install -Dm755 -t %{_bindir} %{SOURCE1}
so that command-wrapper.sh is directly in the git repo, and not as a patch, but that's style - creating a file with patching should work as well.
I tried your advice and got this:
DEBUG: install: cannot create regular file '/app/bin/command-wrapper.sh': Permission denied DEBUG: error: Bad exit status from /var/tmp/rpm-tmp.sROddv (%install) DEBUG: Bad exit status from /var/tmp/rpm-tmp.sROddv (%install) DEBUG: RPM build errors: DEBUG: Child return code was: 1 INFO: EXCEPTION: [Error()] Traceback (most recent call last): File "/usr/lib/python3.7/site-packages/mockbuild/trace_decorator.py", line 95, in trace result = func(*args, **kw) File "/usr/lib/python3.7/site-packages/mockbuild/util.py", line 746, in do_with_status raise exception.Error("Command failed: \n # %s\n%s" % (command, output), child.returncode) mockbuild.exception.Error: Command failed: # bash --login -c /usr/bin/rpmbuild -bb --target x86_64 --nodeps /builddir/build/SPECS/keepassxc.spec Finish: rpmbuild keepassxc-2.5.3-2.module+f31+2+6de7f721.src.rpm Finish: build phase for keepassxc-2.5.3-2.module+f31+2+6de7f721.src.rpm
In the spec I have this:
A little confused - how did you get to this error, if the download of the keepassxc sources didn't work? Is this using 'flatpak-module local-build' or doing a manual build?
I'm using flatpak-module local-build and I have the keepassxc sources downloaded locally in the repo and using local source for keepassxc.
flatpak-module local-build
Source0: keepassxc-%{version}-src.tar.xz
@otaylor After trying the advice you gave me on IRC:
install -Dm755 -t %{buildroot}%{_bindir} %{SOURCE1}
I'm getting this:
DEBUG: + install -D -m 644 -p x-keepassxc.desktop /builddir/build/BUILDROOT/keepassxc-2.5.3-2.module+f31+2+e3047473.x86_64/app/share/mimelnk/application/x-keepassxc.desktop DEBUG: + install -Dm755 -t /app/bin /builddir/build/SOURCES/command-wrapper.sh DEBUG: install: cannot create regular file '/app/bin/command-wrapper.sh': Permission denied DEBUG: RPM build errors: DEBUG: error: Bad exit status from /var/tmp/rpm-tmp.PkyR4S (%install) DEBUG: Bad exit status from /var/tmp/rpm-tmp.PkyR4S (%install) DEBUG: Child return code was: 1 INFO: EXCEPTION: [Error()] Traceback (most recent call last): File "/usr/lib/python3.7/site-packages/mockbuild/trace_decorator.py", line 95, in trace result = func(*args, **kw) File "/usr/lib/python3.7/site-packages/mockbuild/util.py", line 746, in do_with_status raise exception.Error("Command failed: \n # %s\n%s" % (command, output), child.returncode) mockbuild.exception.Error: Command failed: # bash --login -c /usr/bin/rpmbuild -bb --target x86_64 --nodeps /builddir/build/SPECS/keepassxc.spec
The DEBUG output doesn't show the %{buildroot} directory on the install line. Are you sure you are using the new specfile? You used to have to commit changes in a local git checkout of a package directory for them to be picked up by module-build-service - I'm not sure if that's still true with the latest module-build-service changes, but certainly I'd try that. When in doubt, add something to the spec file, like 'echo "HERE I AM"' to make sure that your spec file changes are actually begin seen.
You were right, I forgot to commit changes. Now the flatpak is built and installed, but I'm hitting the issue I had in past, the command-wrapper.sh has wrong permissions:
$> flatpak run --user --command=sh org.keepassxc.KeePassXC [📦 org.keepassxc.KeePassXC keepassxc]$ ls -l /app/bin/command-wrapper.sh -rw-r--r--. 2 zlopez zlopez 1004 Jan 1 1970 /app/bin/command-wrapper.sh
But in the keepassxc.spec you can see, that I'm installing it with 755:
This looks like a flatpak-module-tools issue to me.
Hundreds of different rpm's have been built successfully with flatpak-module-tools and the local build mode of module-build-service. I would really make the assumption that problems you are hitting are not flatpak-module-tools / MBS problems until proven otherwise :-)
I'm not immediately seeing hte problem with the install command above. * Can you add '[-x %{buildroot}%{_bindir}/command-wrapper.sh] || (echo NOT EXECUTABLE && false) to your spec file temporarily (and commit) - that should cause the build to fail if the install command didn't work as expected. * If that passes, can you find the RPM in ~/modulebuild/builds/module-keepassxc-<most-recent>, and check ' rpm2cpio <rpm> | cpio -tv' and check the permissions there to see if something is going bad in container creation.
@otaylor I tried adding '[-x %{buildroot}%{_bindir}/command-wrapper.sh] || (echo NOT EXECUTABLE && false) after
'[-x %{buildroot}%{_bindir}/command-wrapper.sh] || (echo NOT EXECUTABLE && false)
%if 0%{?flatpak} install -Dm755 -t %{buildroot}%{_bindir} %{SOURCE1} %endif
And it failed on the check:
DEBUG: + install -Dm755 -t /builddir/build/BUILDROOT/keepassxc-2.5.3-2.module+f31+2+e7432ecf.x86_64/app/bin /builddir/build/SOURCES/command-wrapper.sh DEBUG: + '[-x' '/builddir/build/BUILDROOT/keepassxc-2.5.3-2.module+f31+2+e7432ecf.x86_64/app/bin/command-wrapper.sh]' DEBUG: /var/tmp/rpm-tmp.AmZgJW: line 90: [-x: command not found DEBUG: + echo NOT EXECUTABLE DEBUG: NOT EXECUTABLE DEBUG: + false DEBUG: error: Bad exit status from /var/tmp/rpm-tmp.AmZgJW (%install) DEBUG: RPM build errors: DEBUG: Bad exit status from /var/tmp/rpm-tmp.AmZgJW (%install) DEBUG: Child return code was: 1 INFO: EXCEPTION: [Error()] Traceback (most recent call last): File "/usr/lib/python3.7/site-packages/mockbuild/trace_decorator.py", line 95, in trace result = func(*args, **kw) File "/usr/lib/python3.7/site-packages/mockbuild/util.py", line 746, in do_with_status raise exception.Error("Command failed: \n # %s\n%s" % (command, output), child.returncode) mockbuild.exception.Error: Command failed: # bash --login -c /usr/bin/rpmbuild -bb --target x86_64 --nodeps /builddir/build/SPECS/keepassxc.spec
EDIT: I noticed the fail is on my side. I forgot the space in bash check. So I fixed this and tried again, the flatpak was build this time. So I tried to check the rpm with rpm2cpio and here is the result:
rpm2cpio
$ ~/modulebuild/builds/module-keepassxc-master-3120200218080131/results/keepassxc-2.5.3-2.module+f31+2+9bb3d9f4.x86_64.rpm | cpio -tv -rw-r--r-- 1 root root 1004 Feb 18 09:37 ./app/bin/command-wrapper.sh
As you can see, the file is not executable.
@otaylor Do you need more info, or is the above enough?
Really not sure what was going on here. I'm assuming this is no longer of interest. If, by any chance it is - please reopen and attach a complete spec file and I'll figure it out. :-)
Metadata Update from @otaylor: - Issue status updated to: Closed (was: Open)
Log in to comment on this ticket.