about summary refs log tree commit diff
path: root/pkgs/applications/networking/instant-messengers/linphone
diff options
context:
space:
mode:
authorGabriel Ebner <gebner@gebner.org>2020-12-07 19:31:41 +0100
committerGabriel Ebner <gebner@gebner.org>2020-12-07 19:43:57 +0100
commita30310415cf39c61fcbe83df762123d2f445e7ea (patch)
treebfd30b9c950798397907c3a8506dbb8931457900 /pkgs/applications/networking/instant-messengers/linphone
parentc7447bc87ba736a3eb42155892f6336b152dd2e3 (diff)
linphone: unstable-2020-03-06 -> 4.2.4
Diffstat (limited to 'pkgs/applications/networking/instant-messengers/linphone')
-rw-r--r--pkgs/applications/networking/instant-messengers/linphone/default.nix74
-rw-r--r--pkgs/applications/networking/instant-messengers/linphone/do-not-build-linphone-sdk.patch118
-rw-r--r--pkgs/applications/networking/instant-messengers/linphone/fix_minizip_linking.patch13
-rw-r--r--pkgs/applications/networking/instant-messengers/linphone/remove-bc_compute_full_version-usage.patch74
4 files changed, 204 insertions, 75 deletions
diff --git a/pkgs/applications/networking/instant-messengers/linphone/default.nix b/pkgs/applications/networking/instant-messengers/linphone/default.nix
index e278358514452..c055718f47f32 100644
--- a/pkgs/applications/networking/instant-messengers/linphone/default.nix
+++ b/pkgs/applications/networking/instant-messengers/linphone/default.nix
@@ -31,6 +31,7 @@
 , mbedtls
 , mediastreamer
 , mediastreamer-openh264
+, minizip2
 , mkDerivation
 , openldap
 , ortp
@@ -47,81 +48,30 @@
 , stdenv
 , udev
 , zlib
-  # For Minizip 2.2.7:
-, fetchFromGitHub
-, libbsd
 }:
-let
-  # Linphone Desktop requires Minizip 2.2.7. Nixpkgs contains a very old version
-  # from the time when it was part of zlib. The most recent release of Minizip
-  # is currently 2.9.2 but Linphone Desktop didn't work with that. So, even if
-  # we added most recent Minizip version to nixpkgs, probably Minizip 2.2.7 is
-  # only needed here and we shouldn't add this semi-old version to
-  # all-packages.nix. Therefore, just define it here locally.
-  minizip2 = stdenv.mkDerivation rec {
-    pname = "minizip";
-    version = "2.2.7";
 
-    disabled = stdenv.isAarch32;
-
-    src = fetchFromGitHub {
-      owner = "nmoinvaz";
-      repo = pname;
-      rev = version;
-      sha256 = "1a88v1gjlflsd17mlrgxh420rpa38q0d17yh9q8j1zzqfrd1azch";
-    };
-
-    nativeBuildInputs = [ cmake pkgconfig ];
-
-    cmakeFlags = [
-      "-DBUILD_SHARED_LIBS=YES"
-    ];
-
-    buildInputs = [
-      zlib
-      libbsd # required in 2.2.7 but not in 2.9.2?
-    ];
-
-    meta = with stdenv.lib; {
-      description = "Compression library implementing the deflate compression method found in gzip and PKZIP";
-      homepage = "https://github.com/nmoinvaz/minizip";
-      license = licenses.zlib;
-      platforms = platforms.unix;
-    };
-  };
-in
 mkDerivation rec {
   pname = "linphone-desktop";
-  # Latest release is 4.1.1 old and doesn't build with the latest releases of
-  # some of the dependencies so let's use the latest commit.
-  version = "unstable-2020-03-06";
+  version = "4.2.4";
 
   src = fetchFromGitLab {
     domain = "gitlab.linphone.org";
     owner = "public";
     group = "BC";
     repo = pname;
-    rev = "971997e162558d37051f89c9c34bbc240135f704";
-    sha256 = "02ji4r8bpcm2kyisn9d3054m026l33g2574i1ag1cmb2dz2p8i1c";
+    rev = version;
+    sha256 = "1gq4l9p21rbrcksa7fbkzn9fzbbynqmn6ni6lhnvzk359sb1xvbz";
   };
 
-  # Without this patch, the build fails with:
-  #
-  #   No rule to make target
-  #   'minizip_OUTPUT/nix/store/...linphone-desktop.../lib/libminizip.so',
-  #
-  # So, the makefile tries to use a full absolute path to the library but does
-  # it incorrectly. As we have installed Minizip properly, it's sufficient to
-  # just use "minizip" and the library is found automatically. If this patched
-  # target_link_libraries line was removed entirely, the build would fail at the
-  # very end when linking minizip.
   patches = [
-    ./fix_minizip_linking.patch
+    ./do-not-build-linphone-sdk.patch
+    ./remove-bc_compute_full_version-usage.patch
   ];
 
   # See: https://gitlab.linphone.org/BC/public/linphone-desktop/issues/21
   postPatch = ''
-    substituteInPlace src/app/AppController.cpp \
+    echo "project(linphoneqt VERSION ${version})" >linphone-app/linphoneqt_version.cmake
+    substituteInPlace linphone-app/src/app/AppController.cpp \
       --replace "LINPHONE_QT_GIT_VERSION" "\"${version}\""
   '';
 
@@ -214,18 +164,18 @@ mkDerivation rec {
   # those just need to be copied manually below.
   installPhase = ''
     mkdir -p $out/bin
-    cp linphone $out/bin/
+    cp linphone-app/linphone $out/bin/
     wrapProgram $out/bin/linphone \
       --set MEDIASTREAMER_PLUGINS_DIR \
             ${mediastreamer-openh264}/lib/mediastreamer/plugins
     mkdir -p $out/share/applications
-    sed -i "s@/build/.*/OUTPUT/bin@$out/bin@" linphone.desktop
-    cp linphone.desktop $out/share/applications/
-    cp -r ../assets/icons $out/share/
+    cp linphone-app/linphone.desktop $out/share/applications/
+    cp -r ../linphone-app/assets/icons $out/share/
     mkdir -p $out/share/belr/grammars
     ln -s ${liblinphone}/share/belr/grammars/* $out/share/belr/grammars/
     mkdir -p $out/share/linphone
     ln -s ${liblinphone}/share/linphone/* $out/share/linphone/
+    mkdir $out/lib # prevent warning
   '';
 
   meta = with lib; {
diff --git a/pkgs/applications/networking/instant-messengers/linphone/do-not-build-linphone-sdk.patch b/pkgs/applications/networking/instant-messengers/linphone/do-not-build-linphone-sdk.patch
new file mode 100644
index 0000000000000..fe774a479fac2
--- /dev/null
+++ b/pkgs/applications/networking/instant-messengers/linphone/do-not-build-linphone-sdk.patch
@@ -0,0 +1,118 @@
+From 08b8b1811a1ad079fa713d19a8cc6bf2dc782bb7 Mon Sep 17 00:00:00 2001
+From: David P <megver83@parabola.nu>
+Date: Thu, 26 Nov 2020 15:56:30 -0300
+Subject: [PATCH 1/2] do not build linphone-sdk
+
+Signed-off-by: David P <megver83@parabola.nu>
+---
+ CMakeLists.txt                                | 61 +------------------
+ .../cmake_builder/additional_steps.cmake      |  9 ---
+ 2 files changed, 3 insertions(+), 67 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index f7eb05f2..5921ee5b 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -118,7 +118,6 @@ list(APPEND APP_OPTIONS "-DENABLE_RELATIVE_PREFIX=${ENABLE_RELATIVE_PREFIX}")
+ 
+ list(APPEND APP_OPTIONS "-DLINPHONE_OUTPUT_DIR=${LINPHONE_OUTPUT_DIR}")
+ 
+-include(ExternalProject)
+ set(PROJECT_BUILD_COMMAND "")
+ if(CMAKE_BUILD_PARALLEL_LEVEL)
+ 	list(APPEND APP_OPTIONS "-DCMAKE_BUILD_PARALLEL_LEVEL=${CMAKE_BUILD_PARALLEL_LEVEL}")
+@@ -136,29 +135,8 @@ if(UNIX AND NOT APPLE)
+ 	set(CMAKE_INSTALL_RPATH "$ORIGIN:$ORIGIN/lib64:$ORIGIN/../lib64:$ORIGIN/lib:$ORIGIN/../lib:${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_LIBDIR}")
+ 	list(APPEND APP_OPTIONS "-DCMAKE_INSTALL_RPATH=${CMAKE_INSTALL_RPATH}")
+ endif()
+-ExternalProject_Add(sdk PREFIX "${CMAKE_BINARY_DIR}/sdk"
+-    SOURCE_DIR "${CMAKE_SOURCE_DIR}/linphone-sdk"
+-    INSTALL_DIR "${LINPHONE_OUTPUT_DIR}"
+-    STAMP_DIR "${SDK_BUILD_DIR}/stamp"
+-    BINARY_DIR "${SDK_BUILD_DIR}"
+-    STEP_TARGETS build
+-    BUILD_COMMAND ${CMAKE_COMMAND} --build <BINARY_DIR> --config $<CONFIG> ${PROJECT_BUILD_COMMAND}
+-    INSTALL_COMMAND ${CMAKE_COMMAND} -E echo "Install step is already done at build time."
+-    LIST_SEPARATOR | # Use the alternate list separator
+-    CMAKE_ARGS ${APP_OPTIONS} ${USER_ARGS} -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> -DCMAKE_PREFIX_PATH=${PREFIX_PATH}
+-    #BUILD_ALWAYS NO #${DO_BUILD}
+-)
+-ExternalProject_Add_Step(sdk force_build
+-	COMMENT "Forcing build for 'desktop'"
+-	DEPENDEES configure
+-	DEPENDERS build
+-	ALWAYS 1
+-)
+ include(FindPkgConfig)
+ 
+-set(APP_DEPENDS sdk)
+-
+-
+ find_package(Qt5 5.12 COMPONENTS Core REQUIRED)
+ 
+ if ( NOT Qt5_FOUND )
+@@ -173,39 +151,6 @@ find_package(Mediastreamer2 CONFIG QUIET)
+ find_package(ortp CONFIG QUIET)
+ 
+ 
+-if(NOT (LinphoneCxx_FOUND) OR NOT (Linphone_FOUND) OR NOT (bctoolbox_FOUND) OR NOT (belcard_FOUND) OR NOT (Mediastreamer2_FOUND) OR NOT (ortp_FOUND) OR FORCE_APP_EXTERNAL_PROJECTS)
+-	message("Projects are set as External projects. You can start building them by using for example : cmake --build . --target install")
+-	ExternalProject_Add(linphone-qt PREFIX "${CMAKE_BINARY_DIR}/linphone-app"
+-		SOURCE_DIR "${CMAKE_SOURCE_DIR}/linphone-app"
+-		INSTALL_DIR "${APPLICATION_OUTPUT_DIR}"
+-		BINARY_DIR "${CMAKE_BINARY_DIR}/linphone-app"
+-		DEPENDS ${APP_DEPENDS}
+-		BUILD_COMMAND ${CMAKE_COMMAND} --build <BINARY_DIR> --config $<CONFIG> ${PROJECT_BUILD_COMMAND}
+-		INSTALL_COMMAND ${CMAKE_COMMAND} -E echo "Install step will not be done by external project"
+-		LIST_SEPARATOR | # Use the alternate list separator
+-		CMAKE_ARGS ${APP_OPTIONS} ${USER_ARGS} -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> -DCMAKE_PREFIX_PATH=${PREFIX_PATH}
+-	# ${APP_OPTIONS}
+-		BUILD_ALWAYS ON
+-	)
+-	install(CODE "message(STATUS Running install)")
+-	set(AUTO_REGENERATION auto_regeneration)
+-	add_custom_target(${AUTO_REGENERATION} ALL
+-		COMMAND ${CMAKE_COMMAND} ${CMAKE_CURRENT_SOURCE_DIR}
+-		DEPENDS linphone-qt)
+-else()
+-	message("Adding Linphone Desktop in an IDE-friendly state")
+-	set(CMAKE_INSTALL_PREFIX "${APPLICATION_OUTPUT_DIR}")
+-	add_subdirectory(${CMAKE_SOURCE_DIR}/linphone-app)
+-	add_dependencies(app-library ${APP_DEPENDS})
+-endif()
+-ExternalProject_Add(linphone-qt-only PREFIX "${CMAKE_BINARY_DIR}/linphone-app"
+-    SOURCE_DIR "${CMAKE_SOURCE_DIR}/linphone-app"
+-    INSTALL_DIR "${APPLICATION_OUTPUT_DIR}"
+-    BINARY_DIR "${CMAKE_BINARY_DIR}/linphone-app"
+-    BUILD_COMMAND ${CMAKE_COMMAND} --build <BINARY_DIR> --config $<CONFIG> ${PROJECT_BUILD_COMMAND}
+-#    INSTALL_COMMAND ${CMAKE_COMMAND} -E echo "Install step is already done at build time."
+-    LIST_SEPARATOR | # Use the alternate list separator
+-    CMAKE_ARGS ${APP_OPTIONS} ${USER_ARGS} -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> -DCMAKE_PREFIX_PATH=${PREFIX_PATH}
+-    EXCLUDE_FROM_ALL ON
+-    BUILD_ALWAYS ON
+-)
++message("Adding Linphone Desktop in an IDE-friendly state")
++set(CMAKE_INSTALL_PREFIX "${APPLICATION_OUTPUT_DIR}")
++add_subdirectory(${CMAKE_SOURCE_DIR}/linphone-app)
+diff --git a/linphone-app/cmake_builder/additional_steps.cmake b/linphone-app/cmake_builder/additional_steps.cmake
+index 7f7fd573..a69a04e8 100644
+--- a/linphone-app/cmake_builder/additional_steps.cmake
++++ b/linphone-app/cmake_builder/additional_steps.cmake
+@@ -54,14 +54,5 @@ if (ENABLE_PACKAGING)
+     linphone_builder_apply_flags()
+     linphone_builder_set_ep_directories(linphone_package)
+     linphone_builder_expand_external_project_vars()
+-    ExternalProject_Add(TARGET_linphone_package
+-      DEPENDS TARGET_linphone_builder
+-      TMP_DIR ${ep_tmp}
+-      BINARY_DIR ${ep_build}
+-      SOURCE_DIR "${CMAKE_CURRENT_LIST_DIR}/linphone_package"
+-      DOWNLOAD_COMMAND ""
+-      CMAKE_GENERATOR ${CMAKE_GENERATOR}
+-      CMAKE_ARGS ${LINPHONE_BUILDER_EP_ARGS} -DCMAKE_INSTALL_PREFIX=${LINPHONE_BUILDER_WORK_DIR}/PACKAGE -DTOOLS_DIR=${CMAKE_BINARY_DIR}/programs -DLINPHONE_OUTPUT_DIR=${CMAKE_INSTALL_PREFIX} -DLINPHONE_DESKTOP_DIR=${CMAKE_CURRENT_LIST_DIR}/.. -DLINPHONE_SOURCE_DIR=${EP_linphone_SOURCE_DIR} ${ENABLE_VARIABLES} -DLINPHONE_BUILDER_SIGNING_IDENTITY=${LINPHONE_BUILDER_SIGNING_IDENTITY}
+-    )
+   endif ()
+ endif ()
+-- 
+2.29.2
+
diff --git a/pkgs/applications/networking/instant-messengers/linphone/fix_minizip_linking.patch b/pkgs/applications/networking/instant-messengers/linphone/fix_minizip_linking.patch
deleted file mode 100644
index bb88d0030fae9..0000000000000
--- a/pkgs/applications/networking/instant-messengers/linphone/fix_minizip_linking.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 3ee77441..18ea5c27 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -517,7 +517,7 @@ else()
-             target_link_libraries(${TARGET_NAME} "${MINIZIP_OUTPUT_DIR}/${CMAKE_INSTALL_LIBDIR}/libminizip.dylib")
-             execute_process(COMMAND install_name_tool -id "@executable_path/../Frameworks/libminizip.dylib" "${MINIZIP_OUTPUT_DIR}/${CMAKE_INSTALL_LIBDIR}/libminizip.dylib")
-         elseif(NOT WIN32)
--            target_link_libraries(${TARGET_NAME} "${MINIZIP_OUTPUT_DIR}/${CMAKE_INSTALL_LIBDIR}/libminizip.so")
-+            target_link_libraries(${TARGET_NAME} "minizip")
-         endif()
-     endif()#If (LinphoneCxx_FOUND AND Minizip_FOUND)
- endif()#If (LinphoneCxx_FOUND)
diff --git a/pkgs/applications/networking/instant-messengers/linphone/remove-bc_compute_full_version-usage.patch b/pkgs/applications/networking/instant-messengers/linphone/remove-bc_compute_full_version-usage.patch
new file mode 100644
index 0000000000000..547652d3af7fb
--- /dev/null
+++ b/pkgs/applications/networking/instant-messengers/linphone/remove-bc_compute_full_version-usage.patch
@@ -0,0 +1,74 @@
+From 6fc23da651d54979e73776fcda38614e290d65dc Mon Sep 17 00:00:00 2001
+From: David P <megver83@parabola.nu>
+Date: Fri, 23 Oct 2020 16:44:17 -0300
+Subject: [PATCH 2/2] remove bc_compute_full_version usage
+
+---
+ linphone-app/CMakeLists.txt                           | 11 +----------
+ linphone-app/build/CMakeLists.txt                     |  5 -----
+ .../cmake_builder/linphone_package/CMakeLists.txt     | 10 +---------
+ 3 files changed, 2 insertions(+), 24 deletions(-)
+
+diff --git a/linphone-app/CMakeLists.txt b/linphone-app/CMakeLists.txt
+index 3bc9420a..27b418ee 100644
+--- a/linphone-app/CMakeLists.txt
++++ b/linphone-app/CMakeLists.txt
+@@ -21,17 +21,8 @@
+ ################################################################################
+ cmake_minimum_required(VERSION 3.1)
+ 
++include(linphoneqt_version.cmake)
+ find_package(bctoolbox CONFIG)
+-set(FULL_VERSION )
+-bc_compute_full_version(FULL_VERSION)
+-set(version_major )
+-set(version_minor )
+-set(version_patch )
+-set(identifiers )
+-set(metadata )
+-bc_parse_full_version("${FULL_VERSION}" version_major version_minor version_patch identifiers metadata)
+-
+-project(linphoneqt VERSION "${version_major}.${version_minor}.${version_patch}")
+ 
+ if(ENABLE_BUILD_VERBOSE)
+ 	#message("CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH}")
+diff --git a/linphone-app/build/CMakeLists.txt b/linphone-app/build/CMakeLists.txt
+index 8ef03faa..97d94bd6 100644
+--- a/linphone-app/build/CMakeLists.txt
++++ b/linphone-app/build/CMakeLists.txt
+@@ -46,11 +46,6 @@ set(CPACK_SOURCE_IGNORE_FILES
+   "libmng.spec"
+ )
+ 
+-bc_compute_full_version(PROJECT_VERSION_BUILD)
+-if(PROJECT_VERSION_BUILD)
+-  set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${PROJECT_VERSION_BUILD}")
+-endif()
+-
+ message("-- Package file name is ${CPACK_PACKAGE_FILE_NAME}")
+ 
+ set(CPACK_SOURCE_PACKAGE_FILE_NAME ${CPACK_PACKAGE_FILE_NAME})
+diff --git a/linphone-app/cmake_builder/linphone_package/CMakeLists.txt b/linphone-app/cmake_builder/linphone_package/CMakeLists.txt
+index baea03cf..08ffc1b5 100644
+--- a/linphone-app/cmake_builder/linphone_package/CMakeLists.txt
++++ b/linphone-app/cmake_builder/linphone_package/CMakeLists.txt
+@@ -38,15 +38,7 @@ set(LINPHONE_QML_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../ui")
+ # ==============================================================================
+ # Build package version.
+ # ==============================================================================
+-bc_compute_full_version(APP_PROJECT_VERSION)
+-if (GIT_EXECUTABLE AND NOT(APP_PROJECT_VERSION))
+-  execute_process(
+-    COMMAND ${GIT_EXECUTABLE} describe --always
+-    OUTPUT_VARIABLE APP_PROJECT_VERSION
+-    OUTPUT_STRIP_TRAILING_WHITESPACE
+-    WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../.."
+-  )
+-elseif (NOT(APP_PROJECT_VERSION))
++if (NOT(APP_PROJECT_VERSION))
+   set(APP_PROJECT_VERSION "0.0.0")
+ endif ()
+ string(REGEX REPLACE "([0-9.]+)-?.*" "\\1" LINPHONE_VERSION "${APP_PROJECT_VERSION}")
+-- 
+2.29.2
+