Skip to content

Commit fd5a485

Browse files
author
Alexis Lopez Zubieta
committed
Fix libappimage_static
1 parent fd7ee38 commit fd5a485

File tree

5 files changed

+57
-99
lines changed

5 files changed

+57
-99
lines changed

src/libappimage/CMakeLists.txt

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ add_subdirectory(utils)
55

66
set(
77
libappimage_sources
8-
libappimage.c
98
libappimage.cpp
109
$<TARGET_OBJECTS:core>
1110
$<TARGET_OBJECTS:appimage_utils>
@@ -23,7 +22,6 @@ foreach(target libappimage libappimage_static)
2322
target_link_libraries(
2423
${target}
2524
PRIVATE libarchive
26-
PRIVATE xdg-basedir
2725
PRIVATE XdgUtils::DesktopEntry
2826
PRIVATE XdgUtils::BaseDir
2927
PRIVATE libappimage_hashlib
@@ -44,8 +42,6 @@ foreach(target libappimage libappimage_static)
4442
target_link_libraries(${target} PRIVATE -static-libgcc -static-libstdc++)
4543
endif()
4644

47-
target_include_directories(${target} PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>)
48-
4945
set_property(TARGET libappimage PROPERTY PUBLIC_HEADER ${libappimage_public_header})
5046

5147
set_property(TARGET libappimage PROPERTY VERSION ${libappimage_VERSION})
@@ -55,7 +51,7 @@ endforeach()
5551

5652
# install libappimage
5753
install(
58-
TARGETS libappimage
54+
TARGETS libappimage libappimage_static
5955
EXPORT libappimageTargets
6056
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libappimage
6157
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libappimage

src/libappimage/libappimage.c

Lines changed: 0 additions & 92 deletions
This file was deleted.

src/libappimage/libappimage.cpp

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,15 @@
99
#include <type_traits>
1010

1111
// libraries
12+
extern "C" {
13+
#include <glob.h>
14+
}
1215
#include <boost/filesystem.hpp>
1316
#include <boost/algorithm/string.hpp>
17+
#include <XdgUtils/BaseDir/BaseDir.h>
18+
#include <XdgUtils/DesktopEntry/DesktopEntry.h>
1419

1520
// local
16-
#include <XdgUtils/DesktopEntry/DesktopEntry.h>
1721
#include <appimage/utils/ResourcesExtractor.h>
1822
#include <appimage/core/AppImage.h>
1923
#include "utils/Logger.h"
@@ -228,6 +232,50 @@ off_t appimage_get_payload_offset(char const* path) {
228232
return 0;
229233
}
230234

235+
236+
char* appimage_registered_desktop_file_path(const char* path, char* md5, bool verbose) {
237+
glob_t pglob = {};
238+
239+
// if md5 has been calculated before, we can just use it to save these extra calculations
240+
// if not, we need to calculate it here
241+
if (md5 == nullptr)
242+
md5 = appimage_get_md5(path);
243+
244+
// sanity check
245+
if (md5 == nullptr) {
246+
if (verbose)
247+
fprintf(stderr, "appimage_get_md5() failed\n");
248+
return nullptr;
249+
}
250+
251+
std::string data_home = XdgUtils::BaseDir::XdgDataHome();
252+
253+
// TODO: calculate this value exactly
254+
char* glob_pattern = static_cast<char*>(malloc(PATH_MAX));
255+
sprintf(glob_pattern, "%s/applications/appimagekit_%s-*.desktop", data_home.c_str(), md5);
256+
257+
glob(glob_pattern, 0, nullptr, &pglob);
258+
259+
char* rv = nullptr;
260+
261+
if (pglob.gl_pathc <= 0) {
262+
if (verbose) {
263+
fprintf(stderr, "No results found by glob()");
264+
}
265+
} else if (pglob.gl_pathc >= 1) {
266+
if (pglob.gl_pathc > 1 && verbose) {
267+
fprintf(stderr, "Too many results returned by glob(), returning first result found");
268+
}
269+
270+
// need to copy value to be able to globfree() later on
271+
rv = strdup(pglob.gl_pathv[0]);
272+
}
273+
274+
globfree(&pglob);
275+
276+
return rv;
277+
}
278+
231279
#ifdef LIBAPPIMAGE_DESKTOP_INTEGRATION_ENABLED
232280
using namespace appimage::desktop_integration;
233281

tests/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ if(BUILD_TESTING)
99
-DGIT_COMMIT="AppImageKit unit tests"
1010
)
1111

12+
add_subdirectory(client_app)
1213

1314
add_subdirectory(libappimage)
1415

tests/client_app/CMakeLists.txt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
project(client_app)
22
cmake_minimum_required(VERSION 3.0)
33

4-
find_package(libappimage REQUIRED)
4+
if(NOT TARGET libappimage)
5+
find_package(libappimage REQUIRED)
6+
endif()
57

68
add_executable(client_app main.c)
79
target_link_libraries(client_app libappimage)
10+
11+
add_executable(client_app_static_linked main.c)
12+
target_link_libraries(client_app_static_linked libappimage_static)

0 commit comments

Comments
 (0)