From 39e197ab1ccad9f1b57c10afe4cfe592a9e40270 Mon Sep 17 00:00:00 2001 From: obadz Date: Wed, 7 Sep 2016 02:27:39 +0100 Subject: uhub: 0.4.1 -> 0.5.0 (fixes build) @ehmry: please have a look so that we can cherry-pick in release-16.09 and move forward on #18209 --- pkgs/servers/uhub/default.nix | 19 +++-- pkgs/servers/uhub/plugin-dir.patch | 24 +++--- pkgs/servers/uhub/systemd.patch | 164 ------------------------------------- 3 files changed, 23 insertions(+), 184 deletions(-) delete mode 100644 pkgs/servers/uhub/systemd.patch diff --git a/pkgs/servers/uhub/default.nix b/pkgs/servers/uhub/default.nix index 0d276c18f2d7..8871c01e1a16 100644 --- a/pkgs/servers/uhub/default.nix +++ b/pkgs/servers/uhub/default.nix @@ -3,13 +3,13 @@ assert tlsSupport -> openssl != null; -let version = "0.4.1"; in -stdenv.mkDerivation { +stdenv.mkDerivation rec { name = "uhub-${version}"; + version = "0.5.0"; src = fetchurl { url = "http://www.extatic.org/downloads/uhub/uhub-${version}-src.tar.bz2"; - sha256 = "1q0n74fb0h5w0k9fhfkznxb4r46qyfb8g2ss3wflivx4l0m1f9x2"; + sha256 = "1xcqjz20lxikzn96f4f69mqyl9y985h9g0gyc9f7ckj18q22b5j5"; }; buildInputs = [ cmake sqlite pkgconfig systemd ] ++ stdenv.lib.optional tlsSupport openssl; @@ -19,14 +19,21 @@ stdenv.mkDerivation { "mod_welcome" "mod_logging" "mod_auth_simple" - "mod_auth_sqlite" "mod_chat_history" "mod_chat_only" "mod_topic" "mod_no_guest_downloads" ]; - patches = [ ./plugin-dir.patch ./systemd.patch ]; + patches = [ + ./plugin-dir.patch + + # Fixed compilation on systemd > 210 + (fetchurl { + url = "https://github.com/janvidar/uhub/commit/70f2a43f676cdda5961950a8d9a21e12d34993f8.diff"; + sha256 = "1jp8fvw6f9jh0sdjml9mahkk6p6b96p6rzg2y601mnnbcdj8y8xp"; + }) + ]; cmakeFlags = '' -DSYSTEMD_SUPPORT=ON @@ -40,4 +47,4 @@ stdenv.mkDerivation { maintainers = [ maintainers.ehmry ]; platforms = platforms.unix; }; -} \ No newline at end of file +} diff --git a/pkgs/servers/uhub/plugin-dir.patch b/pkgs/servers/uhub/plugin-dir.patch index 95ebfd6706ff..01cbcbb31cf3 100644 --- a/pkgs/servers/uhub/plugin-dir.patch +++ b/pkgs/servers/uhub/plugin-dir.patch @@ -1,23 +1,19 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 40e996e..d3b7e6d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt -@@ -185,10 +185,16 @@ else() - # add_definitions(-DDEBUG) - endif() +@@ -241,8 +241,14 @@ -+set( PLUGINS mod_example mod_welcome mod_logging mod_auth_simple mod_auth_sqlite mod_chat_history mod_chat_only mod_topic mod_no_guest_downloads ) -+ if (UNIX) - install( TARGETS uhub RUNTIME DESTINATION bin ) -- install( TARGETS mod_example mod_welcome mod_logging mod_auth_simple mod_auth_sqlite mod_chat_history mod_chat_only mod_topic mod_no_guest_downloads DESTINATION /usr/lib/uhub/ OPTIONAL ) + install( TARGETS uhub uhub-passwd RUNTIME DESTINATION bin ) +- install( TARGETS mod_example mod_welcome mod_logging mod_auth_simple mod_auth_sqlite mod_chat_history mod_chat_history_sqlite mod_chat_only mod_topic mod_no_guest_downloads DESTINATION /usr/lib/uhub/ OPTIONAL ) - install( FILES ${CMAKE_SOURCE_DIR}/doc/uhub.conf ${CMAKE_SOURCE_DIR}/doc/plugins.conf ${CMAKE_SOURCE_DIR}/doc/rules.txt ${CMAKE_SOURCE_DIR}/doc/motd.txt DESTINATION /etc/uhub OPTIONAL ) + -+ foreach( PLUGIN ${PLUGINS} ) -+ install( TARGETS ${PLUGIN} DESTINATION $ENV{${PLUGIN}} OPTIONAL ) -+ endforeach( PLUGIN ) ++ set( PLUGINS mod_example mod_welcome mod_logging mod_auth_simple mod_chat_history mod_chat_only mod_topic mod_no_guest_downloads ) ++ ++ foreach( PLUGIN ${PLUGINS} ) ++ install( TARGETS ${PLUGIN} DESTINATION $ENV{${PLUGIN}} OPTIONAL ) ++ endforeach( PLUGIN ) + + install( FILES ${CMAKE_SOURCE_DIR}/doc/uhub.conf ${CMAKE_SOURCE_DIR}/doc/plugins.conf ${CMAKE_SOURCE_DIR}/doc/rules.txt ${CMAKE_SOURCE_DIR}/doc/motd.txt DESTINATION doc/ OPTIONAL ) + endif() + - if (SQLITE_SUPPORT) - install( TARGETS uhub-passwd RUNTIME DESTINATION bin ) diff --git a/pkgs/servers/uhub/systemd.patch b/pkgs/servers/uhub/systemd.patch deleted file mode 100644 index 05e7571d18d5..000000000000 --- a/pkgs/servers/uhub/systemd.patch +++ /dev/null @@ -1,164 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 40e996e..fc4fb01 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -19,6 +19,7 @@ option(LINK_SUPPORT "Allow hub linking" OFF) - option(SSL_SUPPORT "Enable SSL support" ON) - option(USE_OPENSSL "Use OpenSSL's SSL support" ON ) - option(SQLITE_SUPPORT "Enable SQLite support" ON) -+option(SYSTEMD_SUPPORT "Enable systemd notify and journal logging" OFF) - option(ADC_STRESS "Enable the stress tester client" OFF) - - find_package(Git) -@@ -34,6 +35,12 @@ if (SSL_SUPPORT) - endif() - endif() - -+if (SYSTEMD_SUPPORT) -+ INCLUDE(FindPkgConfig) -+ pkg_search_module(SD_DAEMON REQUIRED libsystemd-daemon) -+ pkg_search_module(SD_JOURNAL REQUIRED libsystemd-journal) -+endif() -+ - if (MSVC) - add_definitions(-D_CRT_SECURE_NO_WARNINGS) - endif() -@@ -175,6 +182,18 @@ if(SSL_SUPPORT) - endif() - endif() - -+if (SYSTEMD_SUPPORT) -+ target_link_libraries(uhub ${SD_DAEMON_LIBRARIES}) -+ target_link_libraries(uhub ${SD_JOURNAL_LIBRARIES}) -+ target_link_libraries(test ${SD_DAEMON_LIBRARIES}) -+ target_link_libraries(test ${SD_JOURNAL_LIBRARIES}) -+ target_link_libraries(uhub-passwd ${SD_JOURNAL_LIBRARIES}) -+ target_link_libraries(uhub-admin ${SD_JOURNAL_LIBRARIES}) -+ include_directories(${SD_DAEMON_INCLUDE_DIRS}) -+ include_directories(${SD_JOURNAL_INCLUDE_DIRS}) -+ add_definitions(-DSYSTEMD) -+endif() -+ - configure_file ("${PROJECT_SOURCE_DIR}/version.h.in" "${PROJECT_SOURCE_DIR}/version.h") - - mark_as_advanced(FORCE CMAKE_BUILD_TYPE) -diff --git a/src/core/main.c b/src/core/main.c -index bb78672..ac2d2a8 100644 ---- a/src/core/main.c -+++ b/src/core/main.c -@@ -19,6 +19,10 @@ - - #include "uhub.h" - -+#ifdef SYSTEMD -+#include -+#endif -+ - static int arg_verbose = 5; - static int arg_fork = 0; - static int arg_check_config = 0; -@@ -145,7 +149,16 @@ int main_loop() - } - #if !defined(WIN32) - setup_signal_handlers(hub); --#endif -+#ifdef SYSTEMD -+ /* Notify the service manager that this daemon has -+ * been successfully initalized and shall enter the -+ * main loop. -+ */ -+ sd_notifyf(0, "READY=1\n" -+ "MAINPID=%lu", (unsigned long) getpid()); -+#endif /* SYSTEMD */ -+ -+#endif /* ! WIN32 */ - } - - hub_set_variables(hub, &acl); -@@ -216,13 +229,17 @@ void print_usage(char* program) - " -q Quiet mode - no output\n" - " -f Fork to background\n" - " -l Log messages to given file (default: stderr)\n" -- " -L Log messages to syslog\n" - " -c Specify configuration file (default: " SERVER_CONFIG ")\n" - " -C Check configuration and return\n" - " -s Show configuration parameters\n" - " -S Show configuration parameters, but ignore defaults\n" - " -h This message\n" - #ifndef WIN32 -+#ifdef SYSTEMD -+ " -L Log messages to journal\n" -+#else -+ " -L Log messages to syslog\n" -+#endif - " -u Run as given user\n" - " -g Run with given group permissions\n" - " -p Store pid in file (process id)\n" -diff --git a/src/util/log.c b/src/util/log.c -index 42badb3..2d97528 100644 ---- a/src/util/log.c -+++ b/src/util/log.c -@@ -21,7 +21,15 @@ - #include - - #ifndef WIN32 -+ -+#ifdef SYSTEMD -+#define SD_JOURNAL_SUPPRESS_LOCATION -+#include -+ -+#else - #include -+#endif -+ - static int use_syslog = 0; - #endif - -@@ -83,7 +91,9 @@ void hub_log_initialize(const char* file, int syslog) - if (syslog) - { - use_syslog = 1; -+ #ifndef SYSTEMD - openlog("uhub", LOG_PID, LOG_USER); -+ #endif - } - #endif - -@@ -132,7 +142,9 @@ void hub_log_shutdown() - if (use_syslog) - { - use_syslog = 0; -+ #ifndef SYSTEMD - closelog(); -+ #endif - } - #endif - } -@@ -212,7 +224,12 @@ void hub_log(int log_verbosity, const char *format, ...) - case log_fatal: level = LOG_CRIT; break; - case log_error: level = LOG_ERR; break; - case log_warning: level = LOG_WARNING; break; -- case log_user: level = LOG_INFO | LOG_AUTH; break; -+ #ifdef SYSTEMD -+ case log_user: level = LOG_INFO; break; -+ -+ #else -+ case log_user: level = LOG_INFO | LOG_AUTH; break; -+ #endif - case log_info: level = LOG_INFO; break; - case log_debug: level = LOG_DEBUG; break; - -@@ -224,8 +241,13 @@ void hub_log(int log_verbosity, const char *format, ...) - if (level == 0) - return; - -+ #ifdef SYSTEMD -+ sd_journal_print(level, "%s", logmsg); -+ -+ #else - level |= (LOG_USER | LOG_DAEMON); - syslog(level, "%s", logmsg); -+ #endif - } - #endif - -- cgit 1.4.1