diff --git a/pkgs/by-name/li/libappimage/209.patch b/pkgs/by-name/li/libappimage/209.patch new file mode 100644 index 0000000000000..d26fd7f67c5d5 --- /dev/null +++ b/pkgs/by-name/li/libappimage/209.patch @@ -0,0 +1,102 @@ +From 39c6275341ac22f99342b92d0096c1bc5d753460 Mon Sep 17 00:00:00 2001 +From: Ryan Burns +Date: Sun, 14 Jun 2026 16:54:22 -0700 +Subject: [PATCH] Respect relative/absolute CMAKE_INSTALL_INCLUDEDIR + +CMAKE_INSTALL_INCLUDEDIR is already used in some places, but not +consistently, causing headers to be installed to multiple locations when +it is specified differently from the default "include" value. + +Additionally, upstream GNUInstallDirs documentations notes that install +dirs may be specified as relative (to install prefix) or absolute paths, +so we should only append to the install prefix when non-absolute paths +are given. +--- + cmake/libappimage.pc.in | 5 ++--- + cmake/scripts.cmake | 2 +- + src/CMakeLists.txt | 11 +++++++++++ + src/libappimage/CMakeLists.txt | 4 ++-- + src/libappimage_shared/CMakeLists.txt | 2 +- + 5 files changed, 17 insertions(+), 7 deletions(-) + +diff --git a/cmake/libappimage.pc.in b/cmake/libappimage.pc.in +index 32682d86..6bff1e1a 100644 +--- a/cmake/libappimage.pc.in ++++ b/cmake/libappimage.pc.in +@@ -1,7 +1,6 @@ + prefix=@CMAKE_INSTALL_PREFIX@ +-# Use prefix as base path to make the package relocatable +-libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@ +-includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@ ++libdir=@CMAKE_INSTALL_REL_LIBDIR@ ++includedir=@CMAKE_INSTALL_REL_INCLUDEDIR@ + + Name: @PROJECT_NAME@ + Description: AppImage management and desktop integration +diff --git a/cmake/scripts.cmake b/cmake/scripts.cmake +index 0228e739..6482440a 100644 +--- a/cmake/scripts.cmake ++++ b/cmake/scripts.cmake +@@ -257,6 +257,6 @@ function(configure_libappimage_module target) + target_include_directories(${target} + PUBLIC $ + PRIVATE $ +- INTERFACE $ ++ INTERFACE $ + ) + endfunction() +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index 9737205b..17a6cb3f 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -47,6 +47,17 @@ install( + + if(NOT LIBAPPIMAGE_SHARED_ONLY) + # pkg-config ++ # Use prefix as base path to make the package relocatable, when possible ++ if(IS_ABSOLUTE "${CMAKE_INSTALL_INCLUDEDIR}") ++ set(CMAKE_INSTALL_REL_INCLUDEDIR "${CMAKE_INSTALL_FULL_INCLUDEDIR}") ++ else() ++ set(CMAKE_INSTALL_REL_INCLUDEDIR "\${prefix}/${CMAKE_INSTALL_INCLUDEDIR}") ++ endif() ++ if(IS_ABSOLUTE "${CMAKE_INSTALL_LIBDIR}") ++ set(CMAKE_INSTALL_REL_LIBDIR "${CMAKE_INSTALL_FULL_LIBDIR}") ++ else() ++ set(CMAKE_INSTALL_REL_LIBDIR "\${prefix}/${CMAKE_INSTALL_LIBDIR}") ++ endif() + configure_file("${PROJECT_SOURCE_DIR}/cmake/libappimage.pc.in" "${PROJECT_BINARY_DIR}/libappimage.pc" @ONLY) + + install(FILES "${PROJECT_BINARY_DIR}/libappimage.pc" +diff --git a/src/libappimage/CMakeLists.txt b/src/libappimage/CMakeLists.txt +index 47005221..992b5fad 100644 +--- a/src/libappimage/CMakeLists.txt ++++ b/src/libappimage/CMakeLists.txt +@@ -70,13 +70,13 @@ install( + # install public headers + install( + DIRECTORY ${PROJECT_SOURCE_DIR}/include/appimage/ +- DESTINATION include/appimage ++ DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/appimage" + COMPONENT libappimage-dev + ) + + install( + DIRECTORY ${PROJECT_BINARY_DIR}/generated-headers/appimage/ +- DESTINATION include/appimage ++ DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/appimage" + COMPONENT libappimage-dev + ) + +diff --git a/src/libappimage_shared/CMakeLists.txt b/src/libappimage_shared/CMakeLists.txt +index ef7238bb..234414d3 100644 +--- a/src/libappimage_shared/CMakeLists.txt ++++ b/src/libappimage_shared/CMakeLists.txt +@@ -13,7 +13,7 @@ add_library(libappimage_shared STATIC + set_target_properties(libappimage_shared PROPERTIES PREFIX "") + target_include_directories(libappimage_shared PUBLIC + $ +- $ ++ $ + ) + set_property(TARGET libappimage_shared PROPERTY PUBLIC_HEADER ${libappimage_shared_public_header}) + target_link_libraries(libappimage_shared PRIVATE libappimage_hashlib) diff --git a/pkgs/by-name/li/libappimage/package.nix b/pkgs/by-name/li/libappimage/package.nix index 7000e59b4d19f..c1f8bb5386fe9 100644 --- a/pkgs/by-name/li/libappimage/package.nix +++ b/pkgs/by-name/li/libappimage/package.nix @@ -23,6 +23,11 @@ stdenv.mkDerivation (finalAttrs: { pname = "libappimage"; version = "1.0.4-5"; + outputs = [ + "out" + "dev" + ]; + src = fetchFromGitHub { owner = "AppImageCommunity"; repo = "libappimage"; @@ -54,6 +59,9 @@ stdenv.mkDerivation (finalAttrs: { url = "https://github.com/AppImageCommunity/libappimage/commit/e5f6ea562611d534dc8e899a12ddf15c50e820be.patch"; hash = "sha256-P6fPoiqVX3TrKGrU2EXIMBpQLGl7xNcy41Iq7vRM+n8="; }) + + # Respect relative/absolute CMAKE_INSTALL_INCLUDEDIR + ./209.patch ]; postPatch = '' @@ -70,6 +78,11 @@ stdenv.mkDerivation (finalAttrs: { "-DUSE_SYSTEM_XZ=1" ]; + postFixup = '' + substituteInPlace $dev/lib/cmake/libappimage/libappimageTargets.cmake \ + --replace-fail "$out" "$dev" + ''; + nativeBuildInputs = [ cmake autoconf