Re: Help with package AppImage support

2021-11-29 Thread Ricardo Wurmus



Ekaitz Zarraga  writes:


Hi Ricardo,


appimagekit includes a copy of libappimage; that repository
contains a Findsquashfuse.cmake file, which defines how 
squashfuse

is found:

https://github.com/AppImage/libappimage/blob/13f401a4a384ec59ec9a144e2a7006adf751571f/cmake/Modules/Findsquashfuse.cmake

Ricardo


I see what's going on now.

I unbundled libappimage from appimage kit and added it as a 
dependency so
there's no way to find libsquashfuse in appimagekit because it 
tries to use the

bundled lib I removed.


There are a few different ways around it: libappimage could 
install the cmake file; but perhaps that’s a bit weird.  Or you 
could add this .cmake file as a native input to appimagekit.  Or 
you could fetch the sources recursively (including libappimage) 
and not build it as you do now.


--
Ricardo



Re: Help with package AppImage support

2021-11-29 Thread Ekaitz Zarraga
Hi Ricardo,

> appimagekit includes a copy of libappimage; that repository
> contains a Findsquashfuse.cmake file, which defines how squashfuse
> is found:
>
> https://github.com/AppImage/libappimage/blob/13f401a4a384ec59ec9a144e2a7006adf751571f/cmake/Modules/Findsquashfuse.cmake
>
> Ricardo

I see what's going on now.

I unbundled libappimage from appimage kit and added it as a dependency so
there's no way to find libsquashfuse in appimagekit because it tries to use the
bundled lib I removed.

So I'm not sure what to do right now to be honest. This way to bundle
everything makes me mad... All this packages are mixed together in a way that
is hard to separate... :S

Thanks for the info now I know why was all this happening! I was completely
lost with the "target not found" issue because I didn't know where was it
coming from!

Ekaitz




Re: Help with package AppImage support

2021-11-29 Thread Ricardo Wurmus



Ekaitz Zarraga  writes:

The first step should be to figure out if CMake uses one of 
these
Find* macros or some other way.  If it’s a Find* macro, 
determine

if it is provided by libsquashfuse or appimagekit.


This is the only reference I find to squashfuse so I don't know 
what's the
mechanism they are doing. In cmake/dependencies.cmake they are 
not searching

for squashfuse neither...
https://github.com/AppImage/AppImageKit/blob/8bbf694455d00f48d835f56afaa1dabcd9178ba6/src/build-runtime.cmake#L18


appimagekit includes a copy of libappimage; that repository 
contains a Findsquashfuse.cmake file, which defines how squashfuse 
is found:


   
https://github.com/AppImage/libappimage/blob/13f401a4a384ec59ec9a144e2a7006adf751571f/cmake/Modules/Findsquashfuse.cmake

--
Ricardo



Re: Help with package AppImage support

2021-11-29 Thread Ekaitz Zarraga
Hi Ricardo,


> Ekaitz Zarraga  writes:
>
> >> Maybe “TARGET NOT found” is CMake’s original way of saying that
> >> you’re
> >> missing a dependency (libsquashfuse), no?
> >
> > I mean, I already reached that conclusion but if you check the
> > packages in the
> > original message, the dependency is included. I can't find why
> > isn't it finding
> > the library.
> >
> > I need there some help making CMake find the dependency I
> > already included and
> > packaged.
>
> Does the CMakeLists.txt or the files under cmake/ mention
> libsquashfuse?  There should either be a Find* macro that
> describes the tests CMake will perform to determine certain
> variables for using libsquashfuse, or it will use a conventional
> way to do that: via pkg-config or using .cmake files in
> libsquashfuse.
>
> So there coulde be different problems here: libsquashfuse doesn’t
> install the expected cmake files or installs them in the wrong
> place; or this package tells CMake to search using pkg-config but
> you don’t have pkg-config among the inputs; or this is all the
> case and pkg-config fails because a library isn’t propagated when
> it should be, etc.

All packages use pkg-config as a native input.

This is the directory structure of squashfuse. It doens't include the Find* but
it contains a pkgconfig file. I'm not sure if it's located in the correct
path though.

--8<---cut here---start->8---

/gnu/store/3ksjpfy6lma86b03fal3n0q1zfm1l9v2-squashfuse-0.1.104
├── bin
│   ├── squashfuse
│   └── squashfuse_ll
├── include
│   └── squashfuse
│   ├── cache.h
│   ├── common.h
│   ├── config.h
│   ├── decompress.h
│   ├── dir.h
│   ├── file.h
│   ├── fs.h
│   ├── squashfs_fs.h
│   ├── squashfuse.h
│   ├── stack.h
│   ├── table.h
│   ├── traverse.h
│   ├── util.h
│   └── xattr.h
├── lib
│   ├── libsquashfuse.a
│   ├── libsquashfuse.la
│   ├── libsquashfuse.so -> libsquashfuse.so.0.0.0
│   ├── libsquashfuse.so.0 -> libsquashfuse.so.0.0.0
│   ├── libsquashfuse.so.0.0.0
│   └── pkgconfig
│   └── squashfuse.pc
└── share
├── doc
│   └── squashfuse-0.1.104
│   └── LICENSE
└── man
└── man1
└── squashfuse.1.gz
--8<---cut here---end--->8---

> The first step should be to figure out if CMake uses one of these
> Find* macros or some other way.  If it’s a Find* macro, determine
> if it is provided by libsquashfuse or appimagekit.

This is the only reference I find to squashfuse so I don't know what's the
mechanism they are doing. In cmake/dependencies.cmake they are not searching
for squashfuse neither...
https://github.com/AppImage/AppImageKit/blob/8bbf694455d00f48d835f56afaa1dabcd9178ba6/src/build-runtime.cmake#L18


Thanks for the help,
Ekaitz



Re: Help with package AppImage support

2021-11-28 Thread Ricardo Wurmus



Ekaitz Zarraga  writes:

Maybe “TARGET NOT found” is CMake’s original way of saying that 
you’re

missing a dependency (libsquashfuse), no?


I mean, I already reached that conclusion but if you check the 
packages in the
original message, the dependency is included. I can't find why 
isn't it finding

the library.

I need there some help making CMake find the dependency I 
already included and

packaged.


Does the CMakeLists.txt or the files under cmake/ mention 
libsquashfuse?  There should either be a Find* macro that 
describes the tests CMake will perform to determine certain 
variables for using libsquashfuse, or it will use a conventional 
way to do that: via pkg-config or using .cmake files in 
libsquashfuse.


So there coulde be different problems here: libsquashfuse doesn’t 
install the expected cmake files or installs them in the wrong 
place; or this package tells CMake to search using pkg-config but 
you don’t have pkg-config among the inputs; or this is all the 
case and pkg-config fails because a library isn’t propagated when 
it should be, etc.


The first step should be to figure out if CMake uses one of these 
Find* macros or some other way.  If it’s a Find* macro, determine 
if it is provided by libsquashfuse or appimagekit.


--
Ricardo



Re: Help with package AppImage support

2021-11-28 Thread Ekaitz Zarraga
> Hi,
>
> The log reads:
>
> --8<---cut here---start->8---
> -- Found PkgConfig: 
> /gnu/store/krpyb0zi700dcrg9cc8932w4v0qivdg9-pkg-config-0.29.2/bin/pkg-config 
> (found version "0.29.2")
> -- Importing target libfuse via pkg-config (fuse, shared)
> -- Checking for module 'fuse'
> --   Found fuse, version 2.9.9
> -- Importing target libssl via pkg-config (openssl, shared)
> -- Checking for module 'openssl'
> --   Found openssl, version 1.1.1j
> -- Using system mksquashfs
> CMake Error at src/build-runtime.cmake:19 (message):
>   TARGET NOT found libsquashfuse
> Call Stack (most recent call first):
>   src/CMakeLists.txt:16 (include)
>
>
> -- Configuring incomplete, errors occurred!
> See also 
> "/tmp/guix-build-appimagekit-13.drv-0/build/CMakeFiles/CMakeOutput.log".
> command "cmake" "../source" "-DCMAKE_BUILD_TYPE=RelWithDebInfo" 
> "-DCMAKE_INSTALL_PREFIX=/gnu/store/9z0n0kia0kp63vdlvpdlm2qcky67x00y-appimagekit-13"
>  "-DCMAKE_INSTALL_LIBDIR=lib" "-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=TRUE" 
> "-DCMAKE_INSTALL_RPATH=/gnu/store/9z0n0kia0kp63vdlvpdlm2qcky67x00y-appimagekit-13/lib"
>  "-DCMAKE_VERBOSE_MAKEFILE=ON" "-DXZ_EXTERNAL=On" 
> "-DUSE_SYSTEM_MKSQUASHFS=On" failed with status 1
> --8<---cut here---end--->8---
>
> Maybe “TARGET NOT found” is CMake’s original way of saying that you’re
> missing a dependency (libsquashfuse), no?

I mean, I already reached that conclusion but if you check the packages in the
original message, the dependency is included. I can't find why isn't it finding
the library.

I need there some help making CMake find the dependency I already included and
packaged.

> BTW, since your ultimate goal is to have ‘guix pack -f appimage’, you
> could look at the AppImage spec.  It might be that you can do the heavy
> lifting of creating a file in that format without resorting to
> AppImageKit.

There are some possible options for this.

Appimage is basically an ELF with the contents on an Squashfs image inside.
When it runs it decompresses itself and runs the contents. Appimagekit is
basically one possible runtime for this behavior, which is just a simple
shell-like launcher.

I just wanted to add this package too, for those who want to generate appimages
by themselves and later decide if I want to use it or not in the actual
implementation.

> HTH,
> Ludo’.

Thanks!
Ekaitz




Re: Help with package AppImage support

2021-11-28 Thread Ludovic Courtès
Hi,

The log reads:

--8<---cut here---start->8---
-- Found PkgConfig: 
/gnu/store/krpyb0zi700dcrg9cc8932w4v0qivdg9-pkg-config-0.29.2/bin/pkg-config 
(found version "0.29.2") 
-- Importing target libfuse via pkg-config (fuse, shared)
-- Checking for module 'fuse'
--   Found fuse, version 2.9.9
-- Importing target libssl via pkg-config (openssl, shared)
-- Checking for module 'openssl'
--   Found openssl, version 1.1.1j
-- Using system mksquashfs
CMake Error at src/build-runtime.cmake:19 (message):
  TARGET NOT found libsquashfuse
Call Stack (most recent call first):
  src/CMakeLists.txt:16 (include)


-- Configuring incomplete, errors occurred!
See also 
"/tmp/guix-build-appimagekit-13.drv-0/build/CMakeFiles/CMakeOutput.log".
command "cmake" "../source" "-DCMAKE_BUILD_TYPE=RelWithDebInfo" 
"-DCMAKE_INSTALL_PREFIX=/gnu/store/9z0n0kia0kp63vdlvpdlm2qcky67x00y-appimagekit-13"
 "-DCMAKE_INSTALL_LIBDIR=lib" "-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=TRUE" 
"-DCMAKE_INSTALL_RPATH=/gnu/store/9z0n0kia0kp63vdlvpdlm2qcky67x00y-appimagekit-13/lib"
 "-DCMAKE_VERBOSE_MAKEFILE=ON" "-DXZ_EXTERNAL=On" "-DUSE_SYSTEM_MKSQUASHFS=On" 
failed with status 1
--8<---cut here---end--->8---

Maybe “TARGET NOT found” is CMake’s original way of saying that you’re
missing a dependency (libsquashfuse), no?

BTW, since your ultimate goal is to have ‘guix pack -f appimage’, you
could look at the AppImage spec.  It might be that you can do the heavy
lifting of creating a file in that format without resorting to
AppImageKit.

HTH,
Ludo’.



Re: Help with package AppImage support

2021-11-23 Thread Ekaitz Zarraga

> Could you show the CMake output?

I attach it in this email.
It's a "TARGET NOT FOUND" :S

> Sometimes there’s a -D flag you need to pass to help it find the
> package. (I’m not much of a CMake person though…)

yeah... I tried many, but I didn't find the one.

> Thanks for working on it!

Thank you for the help Ludo

Ekaitz

884g21d0ixc86sbnnzhj8yqyf1cyzj-appimagekit-13.drv.bz2
Description: application/bzip


Re: Help with package AppImage support

2021-11-23 Thread Ludovic Courtès
Hello!

Ekaitz Zarraga  skribis:

> I having issues with AppImageKit (see below)... I'm not able to make it load
> the libsquashfuse I already packaged. CMake refuses to find it.
>
> I could use a hand to make this package work or at least some help with CMake,
> because I'm not used to work with it and I know some of you have dealt with it
> much more than what I did.

Could you show the CMake output?

Sometimes there’s a -D flag you need to pass to help it find the
package.  (I’m not much of a CMake person though…)

Thanks for working on it!

Ludo’.



Help with package AppImage support

2021-11-22 Thread Ekaitz Zarraga


Hi,

I'm trying to package some AppImage support for later adding it to `guix pack`.

I having issues with AppImageKit (see below)... I'm not able to make it load
the libsquashfuse I already packaged. CMake refuses to find it.

I could use a hand to make this package work or at least some help with CMake,
because I'm not used to work with it and I know some of you have dealt with it
much more than what I did.

Can anyone help me with this?


This is the current file I'm using to test all this:


(define-module (appimage)
  #:use-module ((guix licenses) #:prefix license:)
  #:use-module ((srfi srfi-1) #:hide (zip))
  #:use-module (guix git-download)
  #:use-module (guix build-system cmake)
  #:use-module (guix build-system gnu)
  #:use-module (guix packages)
  #:use-module (gnu packages)
  #:use-module (gnu packages wget)
  #:use-module (gnu packages vim)
  #:use-module (gnu packages freedesktop)
  #:use-module (gnu packages autotools)
  #:use-module (gnu packages pkg-config)
  #:use-module (gnu packages gtk)
  #:use-module (gnu packages gnome)
  #:use-module (gnu packages boost)
  #:use-module (gnu packages tls)
  #:use-module (gnu packages compression)
  #:use-module (gnu packages commencement)
  #:use-module (gnu packages backup)
  #:use-module (gnu packages version-control)
  #:use-module (gnu packages linux))


(define-public squashfuse
  (package
(name "squashfuse")
(version "0.1.104")
(source (origin
  (method git-fetch)
  (uri (git-reference
 (url "https://github.com/vasi/squashfuse.git;)
 (commit version)))
  (sha256
   (base32
"1j9phqgg3xqfyk94h1vcl5gkyhdfnglmzwva2vvp5ri07b76y3h4"
(build-system gnu-build-system)
(native-inputs
  `(("automake" ,automake)
("autoconf" ,autoconf)
("pkg-config" ,pkg-config)
("libtool" ,libtool)))
(inputs
 `(("fuse" ,fuse)))
(synopsis "FUSE filesystem to mount squashfs archives")
(description "Squashfuse lets you mount SquashFS archives in user-space. It
supports almost all features of the SquashFS format, yet is still fast and
memory-efficient.")
(home-page "https://github.com/vasi/squashfuse;)
(license license:bsd-2)))


(define-public xdg-utils-cxx
  (package
(name "xdg-utils-cxx")
(version "1.0.1")
(source (origin
  (method git-fetch)
  (uri (git-reference
  (url "https://github.com/azubieta/xdg-utils-cxx.git;)
  (commit (string-append "v" version))
  (recursive? #t)))
  (sha256
(base32
  "00nvn00z1c7xvpb7xjm6i9i62hchg3nandxw487g6dallv378hw4"
(build-system cmake-build-system)
(arguments
  `(#:configure-flags
 (list "-DXDG_UTILS_SHARED=ON")))
(synopsis "Implementation of the FreeDesktop specifications to be used in 
C++ projects")
(description "Implementation of the Free Desktop Standards in C++.  This is
a project was started to fulfill the need of a reliable implementations of such
standards in the AppImage project. It is totally standalone and only depends on
the standard c++ libraries (stdlib).")
(home-page "https://github.com/azubieta/xdg-utils-cxx;)
(license license:expat)))

(define-public libappimage
  (package
(name "libappimage")
(version "1.0.3")
(source (origin
  (method git-fetch)
  (uri (git-reference
 (url "https://github.com/AppImage/libappimage.git;)
 (commit (string-append "v" version))
 (recursive? #t)))
  (sha256
   (base32
"1b8kkypzvf12xp25lgcrqrflhj9j8kgwd39za4w90vx3q0c2lpa0"
(build-system cmake-build-system)
(arguments
 `(#:configure-flags
   (list "-DBUILD_TESTING:bool=False" ; Tests are broken
 "-DUSE_SYSTEM_BOOST=On"
 "-DUSE_SYSTEM_LIBARCHIVE=On"
 "-DUSE_SYSTEM_XZ=On"
 "-DUSE_SYSTEM_XDGUTILS=On"
 "-DUSE_SYSTEM_SQUASHFUSE=On")
   #:tests? #f))  ; Tests are broken
(native-inputs
 `(("automake" ,automake)
   ("autoconf" ,autoconf)
   ("git" ,git)
   ("libtool" ,libtool)
   ("pkg-config" ,pkg-config)))
(inputs
 `(("boost" ,boost)
   ("cairo" ,cairo)
   ("desktop-file-validate" ,desktop-file-utils)
   ("fuse" ,fuse)
   ("libarchive" ,libarchive)
   ("librsvg" ,librsvg)
   ("squashfuse" ,squashfuse)
   ("wget" ,wget)
   ("xdg-utils-cxx" ,xdg-utils-cxx)
   ("xxd" ,xxd)
   ("xz" ,xz)))
(synopsis "Implements functionality for dealing with AppImage files")
(description "Library for dealing with AppImage files.")
(home-page "https://github.com/AppImage/libappimage/;)
(license license:expat)))


(define-public appimagekit
  (package
(name "appimagekit")
(version "13")