Skip to content

Commit a520623

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

File tree

7 files changed

+79
-122
lines changed

7 files changed

+79
-122
lines changed

src/CMakeLists.txt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,19 @@ configure_package_config_file(
2626
"${PROJECT_BINARY_DIR}/${CMAKE_FILES_DIRECTORY}/libappimageConfig.cmake"
2727
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/libappimage
2828
)
29+
30+
configure_file(
31+
"${PROJECT_SOURCE_DIR}/cmake/imported_dependencies.cmake"
32+
"${PROJECT_BINARY_DIR}/${CMAKE_FILES_DIRECTORY}/imported_dependencies.cmake"
33+
COPYONLY
34+
)
35+
36+
configure_file(
37+
"${PROJECT_SOURCE_DIR}/cmake/scripts.cmake"
38+
"${PROJECT_BINARY_DIR}/${CMAKE_FILES_DIRECTORY}/scripts.cmake"
39+
COPYONLY
40+
)
41+
2942
# ... for both
3043
configure_file(
3144
"${PROJECT_SOURCE_DIR}/cmake/libappimageConfigVersion.cmake.in"

src/libappimage/CMakeLists.txt

Lines changed: 12 additions & 16 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,24 +42,22 @@ 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}>)
45+
set_property(TARGET ${target} PROPERTY PUBLIC_HEADER ${libappimage_public_header})
4846

49-
set_property(TARGET libappimage PROPERTY PUBLIC_HEADER ${libappimage_public_header})
47+
set_property(TARGET ${target} PROPERTY VERSION ${libappimage_VERSION})
48+
set_property(TARGET ${target} PROPERTY SOVERSION ${libappimage_SOVERSION})
5049

51-
set_property(TARGET libappimage PROPERTY VERSION ${libappimage_VERSION})
52-
set_property(TARGET libappimage PROPERTY SOVERSION ${libappimage_SOVERSION})
50+
# install libappimage
51+
install(
52+
TARGETS ${target}
53+
EXPORT libappimageTargets
54+
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libappimage
55+
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libappimage
56+
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/appimage COMPONENT libappimage-dev
57+
)
5358
endforeach()
5459

5560

56-
# install libappimage
57-
install(
58-
TARGETS libappimage
59-
EXPORT libappimageTargets
60-
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libappimage
61-
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libappimage
62-
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/appimage COMPONENT libappimage-dev
63-
)
64-
6561
# install public headers
6662
install(
6763
DIRECTORY ${PROJECT_SOURCE_DIR}/include/appimage/
@@ -71,6 +67,6 @@ install(
7167

7268
# Add all targets to the build-tree export set
7369
export(
74-
TARGETS libappimage libappimage_shared libappimage_hashlib
70+
TARGETS libappimage libappimage_static libappimage_shared libappimage_hashlib
7571
FILE "${PROJECT_BINARY_DIR}/${CMAKE_FILES_DIRECTORY}/libappimageTargets.cmake"
7672
)

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: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,10 @@ if(BUILD_TESTING)
99
-DGIT_COMMIT="AppImageKit unit tests"
1010
)
1111

12-
1312
add_subdirectory(libappimage)
1413

14+
add_subdirectory(client_app)
15+
1516
if(ENABLE_COVERAGE)
1617
set(COVERAGE_LCOV_EXCLUDES '${PROJECT_SOURCE_DIR}/lib/*' '${PROJECT_SOURCE_DIR}/tests/*' '${PROJECT_SOURCE_DIR}/*build*' '/usr/*')
1718
setup_target_for_coverage_lcov(

tests/client_app/CMakeLists.txt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
project(client_app)
22
cmake_minimum_required(VERSION 3.0)
33

4-
find_package(libappimage REQUIRED)
5-
64
add_executable(client_app main.c)
75
target_link_libraries(client_app libappimage)
6+
7+
add_executable(client_app_static_linked main.c)
8+
target_link_libraries(client_app_static_linked libappimage_static)

travis/build-and-test.sh

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,3 @@ else
3939
# run all unit tests
4040
ctest -V
4141
fi
42-
43-
# install libappimage
44-
DESTDIR=$BUILD_DIR/libappimage make install
45-
46-
# do integration test
47-
mkdir $BUILD_DIR/client_app_build
48-
pushd $BUILD_DIR/client_app_build
49-
cmake -DCMAKE_PREFIX_PATH=$BUILD_DIR/libappimage/usr/local/lib/cmake/libappimage $REPO_ROOT/tests/client_app/
50-
make
51-
./client_app

0 commit comments

Comments
 (0)