diff options
Diffstat (limited to 'pkgs/tools/package-management/appimagekit/nix.patch')
-rw-r--r-- | pkgs/tools/package-management/appimagekit/nix.patch | 174 |
1 files changed, 174 insertions, 0 deletions
diff --git a/pkgs/tools/package-management/appimagekit/nix.patch b/pkgs/tools/package-management/appimagekit/nix.patch new file mode 100644 index 00000000000..9725cef5ba7 --- /dev/null +++ b/pkgs/tools/package-management/appimagekit/nix.patch @@ -0,0 +1,174 @@ +diff --git a/cmake/dependencies.cmake b/cmake/dependencies.cmake +index ea133a3..916606c 100644 +--- a/cmake/dependencies.cmake ++++ b/cmake/dependencies.cmake +@@ -224,21 +224,23 @@ if(NOT USE_SYSTEM_XZ) + LIBRARY_DIRS <INSTALL_DIR>/lib/ + LIBRARIES "<INSTALL_DIR>/lib/liblzma.a" + INCLUDE_DIRS "<SOURCE_DIR>/src/liblzma/api/" + ) + else() + message(STATUS "Using system xz") + + import_pkgconfig_target(TARGET_NAME xz PKGCONFIG_TARGET liblzma STATIC) + endif() + ++set(USE_SYSTEM_SQUASHFUSE OFF CACHE BOOL "Use system squashfuse instead of building our own") + ++if(NOT USE_SYSTEM_SQUASHFUSE) + # as distros don't provide suitable squashfuse and squashfs-tools, those dependencies are bundled in, can, and should + # be used from this repository + # TODO: implement out-of-source builds for squashfuse, as for the other dependencies + configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/src/patch-squashfuse.sh.in + ${CMAKE_CURRENT_BINARY_DIR}/patch-squashfuse.sh + @ONLY + ) + + ExternalProject_Add(squashfuse-EXTERNAL +@@ -259,20 +261,34 @@ ExternalProject_Add(squashfuse-EXTERNAL + BUILD_IN_SOURCE ON + INSTALL_COMMAND ${MAKE} install + ) + + import_external_project( + TARGET_NAME squashfuse + EXT_PROJECT_NAME squashfuse-EXTERNAL + LIBRARIES "<SOURCE_DIR>/.libs/libsquashfuse.a;<SOURCE_DIR>/.libs/libsquashfuse_ll.a;<SOURCE_DIR>/.libs/libfuseprivate.a" + INCLUDE_DIRS "<SOURCE_DIR>" + ) ++else() ++ message(STATUS "Using system squashfsfuse from ${SQUASHFUSE}") ++ ++ add_library(squashfuse INTERFACE IMPORTED GLOBAL) ++ ++ set(squashfuse_INCLUDE_DIRS "${SQUASHFUSE}/include") ++ set(squashfuse_LIBRARIES "${SQUASHFUSE}/lib/libsquashfuse.a;${SQUASHFUSE}/lib/libsquashfuse_ll.a;${SQUASHFUSE}/lib/libfuseprivate.a") ++ ++ set_property( ++ TARGET squashfuse ++ PROPERTY INTERFACE_LINK_LIBRARIES ${squashfuse_LIBRARIES} ++ ) ++ include_directories(${squashfuse_INCLUDE_DIRS}) ++endif() + + + set(USE_SYSTEM_INOTIFY_TOOLS OFF CACHE BOOL "Use system libinotifytools instead of building our own") + + if(NOT USE_SYSTEM_INOTIFY_TOOLS) + message(STATUS "Downloading and building inotify-tools") + + # TODO: build out of source + ExternalProject_Add(inotify-tools-EXTERNAL + URL https://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz +@@ -345,20 +361,23 @@ if(NOT USE_SYSTEM_GTEST) + INCLUDE_DIRS "<INSTALL_DIR>/include/" + ) + else() + message(STATUS "Using system GTest") + + import_find_pkg_target(gtest GTest GTEST) + endif() + endif() + + ++set(USE_SYSTEM_MKSQUASHFS OFF CACHE BOOL "Use system mksquashfs instead of downloading and building our own") ++ ++if(NOT USE_SYSTEM_MKSQUASHFS) + # TODO: allow using system wide mksquashfs + set(mksquashfs_cflags "-DXZ_SUPPORT ${CFLAGS}") + + if(xz_LIBRARIES MATCHES "\\.a$") + set(mksquashfs_ldflags "${xz_LIBRARIES}") + else() + set(mksquashfs_ldflags "-l${xz_LIBRARIES}") + endif() + + if(xz_INCLUDE_DIRS) +@@ -385,20 +404,25 @@ ExternalProject_Add(mksquashfs + INSTALL_COMMAND ${MAKE} -C squashfs-tools/ install INSTALL_DIR=<INSTALL_DIR> + ) + + ExternalProject_Get_Property(mksquashfs INSTALL_DIR) + set(mksquashfs_INSTALL_DIR "${INSTALL_DIR}") + mark_as_advanced(mksquashfs_INSTALL_DIR) + + # for later use when packaging as an AppImage + set(mksquashfs_BINARY "${mksquashfs_INSTALL_DIR}/mksquashfs") + mark_as_advanced(mksquashfs_BINARY) ++else() ++ message(STATUS "Using system mksquashfs") ++ ++ set(mksquashfs_BINARY "mksquashfs") ++endif() + + + #### build dependency configuration #### + + # only have to build custom xz when not using system libxz + if(TARGET xz-EXTERNAL) + if(TARGET squashfuse-EXTERNAL) + ExternalProject_Add_StepDependencies(squashfuse-EXTERNAL configure xz-EXTERNAL) + endif() + if(TARGET mksquashfs) +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index 3f25442..974ed0e 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -197,27 +197,27 @@ target_include_directories(digest_md5 + + target_link_libraries(digest_md5 + PRIVATE + libglib + ) + + + # install binaries + if(AUXILIARY_FILES_DESTINATION) + install( +- PROGRAMS ${mksquashfs_INSTALL_DIR}/mksquashfs ${CMAKE_CURRENT_BINARY_DIR}/runtime ++ PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/runtime + DESTINATION ${AUXILIARY_FILES_DESTINATION} + COMPONENT applications + ) + else() + install( +- PROGRAMS ${mksquashfs_INSTALL_DIR}/mksquashfs ${CMAKE_CURRENT_BINARY_DIR}/runtime ++ PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/runtime + DESTINATION bin + COMPONENT applications + ) + endif() + + install( + TARGETS AppRun appimagetool digest validate + RUNTIME DESTINATION bin COMPONENT applications + LIBRARY DESTINATION lib COMPONENT applications + ARCHIVE DESTINATION lib/static COMPONENT applications +diff --git a/src/shared.c b/src/shared.c +index cf5fd5c..4f48dbc 100644 +--- a/src/shared.c ++++ b/src/shared.c +@@ -34,21 +34,21 @@ + #include <sys/stat.h> + #include <sys/types.h> + #include <dirent.h> + #include <errno.h> + + #include <glib.h> + #include <glib/gprintf.h> + #include <glib/gstdio.h> + #include <gio/gio.h> + +-#include "squashfuse.h" ++#include <squashfuse.h> + #include <squashfs_fs.h> + #include "getsection.h" + #include "elf.h" + + #include "xdg-basedir.h" + + // own header + #include "shared.h" + + #if HAVE_LIBARCHIVE3 == 1 // CentOS |