about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/libraries/yder
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2019-07-14 15:50:11 +0000
committerAlyssa Ross <hi@alyssa.is>2019-08-14 00:01:17 +0000
commit69a15dd2dc85051ba1436613805f9286850e0596 (patch)
treed53cec2bb5b8d07df1d1919b212cb2deb3628cd6 /nixpkgs/pkgs/development/libraries/yder
parent6941276da135c3eb3b50e0be33d92e7d01ccba9a (diff)
parentbeff2f8d75ef2c65017fb25e251337c6bb2e950d (diff)
downloadnixlib-69a15dd2dc85051ba1436613805f9286850e0596.tar
nixlib-69a15dd2dc85051ba1436613805f9286850e0596.tar.gz
nixlib-69a15dd2dc85051ba1436613805f9286850e0596.tar.bz2
nixlib-69a15dd2dc85051ba1436613805f9286850e0596.tar.lz
nixlib-69a15dd2dc85051ba1436613805f9286850e0596.tar.xz
nixlib-69a15dd2dc85051ba1436613805f9286850e0596.tar.zst
nixlib-69a15dd2dc85051ba1436613805f9286850e0596.zip
Merge commit 'beff2f8d75ef2c65017fb25e251337c6bb2e950d'
v#	modified:   nixpkgs/pkgs/tools/networking/dhcpcd/default.nix
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/yder')
-rw-r--r--nixpkgs/pkgs/development/libraries/yder/default.nix54
-rw-r--r--nixpkgs/pkgs/development/libraries/yder/fix-darwin.patch159
-rw-r--r--nixpkgs/pkgs/development/libraries/yder/fix-pkgconfig.patch9
3 files changed, 222 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/yder/default.nix b/nixpkgs/pkgs/development/libraries/yder/default.nix
new file mode 100644
index 000000000000..ffa326ccc538
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/yder/default.nix
@@ -0,0 +1,54 @@
+{ stdenv, lib, fetchFromGitHub, cmake, orcania, systemd, check, subunit
+, withSystemd ? stdenv.isLinux
+}:
+assert withSystemd -> systemd != null;
+stdenv.mkDerivation rec {
+  pname = "yder";
+  version = "1.4.6";
+
+  src = fetchFromGitHub {
+    owner = "babelouest";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0j46v93vn130gjcr704rkdiibbk3ampzsqb6xdcrn4x115gwyf5i";
+  };
+
+  patches = [
+    # We set CMAKE_INSTALL_LIBDIR to the absolute path in $out, so
+    # prefix and exec_prefix cannot be $out, too
+    ./fix-pkgconfig.patch
+
+    # - ORCANIA_LIBRARIES must be set before target_link_libraries is called
+    # - librt is not available, nor needed on Darwin
+    # - The test binary is not linked against all necessary libraries
+    # - Test for journald logging is not systemd specific and fails on darwin
+    # - If the working directory is different from the build directory, the
+    #   dynamic linker can't find libyder
+    # - Return correct error code from y_init_logs when journald is disabled
+    ./fix-darwin.patch
+  ];
+
+  nativeBuildInputs = [ cmake ];
+
+  buildInputs = [ orcania ] ++ lib.optional withSystemd systemd;
+
+  checkInputs = [ check subunit ];
+
+  cmakeFlags = [
+    "-DBUILD_YDER_TESTING=on"
+  ] ++ lib.optional (!withSystemd) "-DWITH_JOURNALD=off";
+
+  doCheck = true;
+
+  preCheck = ''
+    export LD_LIBRARY_PATH="$(pwd):$LD_LIBRARY_PATH"
+  '';
+
+  meta = with lib; {
+    description = "Logging library for C applications";
+    homepage = "https://github.com/babelouest/yder";
+    license = licenses.lgpl21;
+    maintainers = with maintainers; [ johnazoidberg ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/development/libraries/yder/fix-darwin.patch b/nixpkgs/pkgs/development/libraries/yder/fix-darwin.patch
new file mode 100644
index 000000000000..dedde22d9271
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/yder/fix-darwin.patch
@@ -0,0 +1,159 @@
+diff --git i/CMakeLists.txt w/CMakeLists.txt
+index 036ab73..0bab8c7 100644
+--- i/CMakeLists.txt
++++ w/CMakeLists.txt
+@@ -87,33 +87,6 @@ else()
+   set(DISABLE_JOURNALD ON)
+ endif ()
+ 
+-# shared library
+-
+-add_library(yder SHARED ${LIB_SRC})
+-if (NOT MSVC)
+-    set_target_properties(yder PROPERTIES
+-            COMPILE_OPTIONS -Wextra
+-            PUBLIC_HEADER "${INC_DIR}/yder.h;${PROJECT_BINARY_DIR}/yder-cfg.h"
+-            VERSION "${LIBRARY_VERSION}"
+-            SOVERSION "${LIBRARY_SOVERSION}")
+-endif()
+-if (WIN32)
+-    set_target_properties(yder PROPERTIES SUFFIX "-${LIBRARY_VERSION_MAJOR}.dll")
+-endif ()
+-
+-target_link_libraries(yder ${LIBS} ${ORCANIA_LIBRARIES} ${SYSTEMD_LIBRARIES})
+-
+-# static library
+-
+-option(BUILD_STATIC "Build static library." OFF)
+-
+-if (BUILD_STATIC)
+-    add_library(yder_static STATIC ${LIB_SRC})
+-    target_compile_definitions(yder_static PUBLIC -DO_STATIC_LIBRARY)
+-    set_target_properties(yder_static PROPERTIES
+-            OUTPUT_NAME yder)
+-endif ()
+-
+ option (SEARCH_ORCANIA "Search for Orcania library" ON)
+ if (SEARCH_ORCANIA)
+     set(Orcania_FIND_QUIETLY ON) # force to find Orcania quietly
+@@ -145,6 +118,33 @@ else ()
+   set(PKGCONF_REQ_PRIVATE "liborcania")
+ endif ()
+ 
++# shared library
++
++add_library(yder SHARED ${LIB_SRC})
++if (NOT MSVC)
++    set_target_properties(yder PROPERTIES
++            COMPILE_OPTIONS -Wextra
++            PUBLIC_HEADER "${INC_DIR}/yder.h;${PROJECT_BINARY_DIR}/yder-cfg.h"
++            VERSION "${LIBRARY_VERSION}"
++            SOVERSION "${LIBRARY_SOVERSION}")
++endif()
++if (WIN32)
++    set_target_properties(yder PROPERTIES SUFFIX "-${LIBRARY_VERSION_MAJOR}.dll")
++endif ()
++
++target_link_libraries(yder ${LIBS} ${ORCANIA_LIBRARIES} ${SYSTEMD_LIBRARIES})
++
++# static library
++
++option(BUILD_STATIC "Build static library." OFF)
++
++if (BUILD_STATIC)
++    add_library(yder_static STATIC ${LIB_SRC})
++    target_compile_definitions(yder_static PUBLIC -DO_STATIC_LIBRARY)
++    set_target_properties(yder_static PROPERTIES
++            OUTPUT_NAME yder)
++endif ()
++
+ # build yder-cfg.h file
+ configure_file(${INC_DIR}/yder-cfg.h.in ${PROJECT_BINARY_DIR}/yder-cfg.h)
+ set (CMAKE_EXTRA_INCLUDE_FILES ${PROJECT_BINARY_DIR})
+@@ -168,10 +168,9 @@ if (BUILD_YDER_TESTING)
+         set(CMAKE_CTEST_COMMAND ctest -V)
+ 
+         set(TST_DIR ${CMAKE_CURRENT_SOURCE_DIR}/test)
+-        set(LIBS yder ${LIBS} ${CHECK_LIBRARIES})
+         if (NOT WIN32)
+             find_package(Threads REQUIRED)
+-            set(LIBS ${LIBS} ${SUBUNIT_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} m rt)
++            set(LIBS yder ${LIBS} ${SUBUNIT_LIBRARIES} ${ORCANIA_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${CHECK_LIBRARIES} m)
+         endif ()
+ 
+         set(TESTS yder_test)
+@@ -186,7 +185,6 @@ if (BUILD_YDER_TESTING)
+             target_include_directories(${t} PUBLIC ${TST_DIR})
+             target_link_libraries(${t} PUBLIC ${LIBS})
+             add_test(NAME ${t}
+-                    WORKING_DIRECTORY ${TST_DIR}
+                     COMMAND ${t})
+         endforeach ()
+     endif ()
+diff --git i/src/yder.c w/src/yder.c
+index 3122e3f..79e4e70 100644
+--- i/src/yder.c
++++ w/src/yder.c
+@@ -236,11 +236,12 @@ static int y_write_log(const char * app_name,
+       if (cur_mode & Y_LOG_MODE_SYSLOG) {
+         y_write_log_syslog(cur_app_name, level, message);
+       }
+-  #ifndef Y_DISABLE_JOURNALD
++#endif
++
++#if !defined(_WIN32) && !defined(Y_DISABLE_JOURNALD)
+       if (cur_mode & Y_LOG_MODE_JOURNALD) {
+         y_write_log_journald(cur_app_name, level, message);
+       }
+-  #endif
+ #endif
+       if (cur_mode & Y_LOG_MODE_FILE) {
+         y_write_log_file(cur_app_name, now, cur_log_file, level, message);
+@@ -266,18 +267,20 @@ static int y_write_log(const char * app_name,
+  */
+ int y_init_logs(const char * app, const unsigned long init_mode, const unsigned long init_level, const char * init_log_file, const char * message) {
+ #ifdef _WIN32
+-	if (init_mode & Y_LOG_MODE_SYSLOG) {
+-		perror("syslog mode not supported on your architecture");
+-		return 0;
+-  } else if (init_mode & Y_LOG_MODE_JOURNALD) {
+-		perror("journald mode not supported on your architecture");
+-		return 0;
+-	} else {
+-		return y_write_log(app, init_mode, init_level, init_log_file, NULL, NULL, Y_LOG_LEVEL_INFO, message);
+-	}
+-#else
+-  return y_write_log(app, init_mode, init_level, init_log_file, NULL, NULL, Y_LOG_LEVEL_INFO, message);
++  if (init_mode & Y_LOG_MODE_SYSLOG) {
++    perror("syslog mode not supported on your architecture");
++    return 0;
++  }
+ #endif
++
++#if defined(_WIN32) || defined(Y_DISABLE_JOURNALD)
++  if (init_mode & Y_LOG_MODE_JOURNALD) {
++    perror("journald mode not supported on your architecture");
++    return 0;
++  }
++#endif
++
++  return y_write_log(app, init_mode, init_level, init_log_file, NULL, NULL, Y_LOG_LEVEL_INFO, message);
+ }
+ 
+ /**
+diff --git i/test/yder_test.c w/test/yder_test.c
+index a10fd9f..b73fb16 100644
+--- i/test/yder_test.c
++++ w/test/yder_test.c
+@@ -27,7 +27,11 @@ START_TEST(test_yder_init)
+   y_close_logs();

+   ck_assert_int_eq(y_init_logs("test_yder_syslog", Y_LOG_MODE_SYSLOG, Y_LOG_LEVEL_DEBUG, NULL, "third test"), 1);

+   y_close_logs();

++#ifndef Y_DISABLE_JOURNALD

+   ck_assert_int_eq(y_init_logs("test_yder_journald", Y_LOG_MODE_JOURNALD, Y_LOG_LEVEL_DEBUG, NULL, "fourth test"), 1);

++#else

++  ck_assert_int_eq(y_init_logs("test_yder_journald", Y_LOG_MODE_JOURNALD, Y_LOG_LEVEL_DEBUG, NULL, "fourth test"), 0);

++#endif

+   y_close_logs();

+   ck_assert_int_eq(y_init_logs("test_yder_file_fail", Y_LOG_MODE_FILE, Y_LOG_LEVEL_DEBUG, "/nope/nope", "second test"), 0);

+ }

diff --git a/nixpkgs/pkgs/development/libraries/yder/fix-pkgconfig.patch b/nixpkgs/pkgs/development/libraries/yder/fix-pkgconfig.patch
new file mode 100644
index 000000000000..61a67c5897b8
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/yder/fix-pkgconfig.patch
@@ -0,0 +1,9 @@
+--- i/libyder.pc.in
++++ w/libyder.pc.in
+@@ -1,7 +1,5 @@
+-prefix=@CMAKE_INSTALL_PREFIX@
+-exec_prefix=@CMAKE_INSTALL_PREFIX@
+-libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
+-includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@
++libdir=@CMAKE_INSTALL_LIBDIR@
++includedir=@CMAKE_INSTALL_INCLUDEDIR@