linphone: unstable-2020-03-06 -> 4.2.4

This commit is contained in:
Gabriel Ebner 2020-12-07 19:31:41 +01:00
parent c7447bc87b
commit a30310415c
4 changed files with 204 additions and 75 deletions

View file

@ -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; {

View file

@ -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

View file

@ -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)

View file

@ -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