Unverified Commit dbf31c57 authored by Weijia Wang's avatar Weijia Wang Committed by GitHub
Browse files

freedv: 1.9.9.2 -> 2.0 (#415393)

parents 9fcd4ec9 3587eb72
Loading
Loading
Loading
Loading
+28 −0
Original line number Diff line number Diff line
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 38b3b262..3be9bfee 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -146,21 +146,16 @@ if(APPLE)
         TARGET FreeDV
         POST_BUILD
         COMMAND rm -rf dist_tmp FreeDV.dmg || true
-        COMMAND DYLD_LIBRARY_PATH=${CODEC2_BUILD_DIR}/src:${portaudio_BINARY_DIR}:${samplerate_BINARY_DIR}/src:${Python3_ROOT_DIR}:${DYLD_LIBRARY_PATH} ${CMAKE_SOURCE_DIR}/macdylibbundler/dylibbundler ARGS -od -b -x FreeDV.app/Contents/MacOS/FreeDV -d FreeDV.app/Contents/libs -p @loader_path/../libs/ -i /usr/lib -s ${CODEC2_BUILD_DIR}/src -s ${CMAKE_BINARY_DIR}/codec2_build/src ${PORTAUDIO_BUNDLE_ARG} -s ${samplerate_BINARY_DIR}/src -s ${rade_BINARY_DIR}/src -s ${Python3_ROOT_DIR}
+        COMMAND DYLD_LIBRARY_PATH=${CODEC2_BUILD_DIR}/src:${portaudio_BINARY_DIR}:${samplerate_BINARY_DIR}/src:${DYLD_LIBRARY_PATH} ${CMAKE_SOURCE_DIR}/macdylibbundler/dylibbundler ARGS -od -b -x FreeDV.app/Contents/MacOS/FreeDV -d FreeDV.app/Contents/libs -p @loader_path/../libs/ -i /usr/lib -s ${CODEC2_BUILD_DIR}/src -s ${CMAKE_BINARY_DIR}/codec2_build/src ${PORTAUDIO_BUNDLE_ARG} -s ${samplerate_BINARY_DIR}/src -s ${rade_BINARY_DIR}/src
         COMMAND cp ARGS ${CMAKE_CURRENT_SOURCE_DIR}/freedv.icns FreeDV.app/Contents/Resources
         COMMAND rm ARGS -rf FreeDV.app/Contents/Frameworks
         COMMAND mkdir ARGS FreeDV.app/Contents/Frameworks
-        COMMAND cp ARGS -a ${Python3_ROOT_DIR}/../../../Python.framework FreeDV.app/Contents/Frameworks
-        COMMAND install_name_tool ARGS -add_rpath @loader_path/../Frameworks/Python.framework FreeDV.app/Contents/libs/librade*.dylib
         COMMAND cp ARGS ../rade_src/radae_*e.py FreeDV.app/Contents/Resources
         COMMAND cp ARGS -a ../rade_src/radae FreeDV.app/Contents/Resources
         COMMAND cp ARGS -a ../rade_src/model19_check3 FreeDV.app/Contents/Resources
         
-        # Precompile Python code to improve startup time
-        COMMAND cd FreeDV.app/Contents/Resources && ../Frameworks/Python.framework/Versions/Current/bin/python3 -c "import radae_txe\; import radae_rxe\;" && cd ../../..
-        
         # Codesign binary so that it can execute
-        COMMAND codesign --force --options runtime --timestamp --entitlements ${CMAKE_CURRENT_SOURCE_DIR}/entitlements.plist --sign ${MACOS_CODESIGN_IDENTITY} ${CMAKE_CURRENT_BINARY_DIR}/FreeDV.app `find ${CMAKE_CURRENT_BINARY_DIR}/FreeDV.app -name '*.so' -o -name '*.dylib'` `find ${CMAKE_CURRENT_BINARY_DIR}/FreeDV.app/Contents/Frameworks/Python.framework/Versions/3.12/bin -name 'Python' -o -name 'python3.12*'` `find ${CMAKE_CURRENT_BINARY_DIR}/FreeDV.app/Contents/Frameworks/Python.framework/ -name 'Python'` ${CMAKE_CURRENT_BINARY_DIR}/FreeDV.app/Contents/MacOS/FreeDV ${CMAKE_CURRENT_BINARY_DIR}/FreeDV.app/Contents/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/torch/bin/* ${CMAKE_CURRENT_BINARY_DIR}/FreeDV.app/Contents/Frameworks/Python.framework/Versions/3.12/Python
+        COMMAND codesign --force --options runtime --timestamp --entitlements ${CMAKE_CURRENT_SOURCE_DIR}/entitlements.plist --sign ${MACOS_CODESIGN_IDENTITY} ${CMAKE_CURRENT_BINARY_DIR}/FreeDV.app `find ${CMAKE_CURRENT_BINARY_DIR}/FreeDV.app -name '*.so' -o -name '*.dylib'`
     )
 
     if (MACOS_CODESIGN_KEYCHAIN_PROFILE)
+81 −28
Original line number Diff line number Diff line
{
  config,
  lib,
  stdenv,
  fetchFromGitHub,
  cmake,
  pkg-config,
  python3,
  libopus,
  macdylibbundler,
  makeWrapper,
  darwin,
@@ -17,22 +19,47 @@
  hamlib_4,
  wxGTK32,
  sioclient,
  pulseSupport ? config.pulseaudio or stdenv.hostPlatform.isLinux,
  dbus,
  apple-sdk_15,
  nix-update-script,
}:

let
  radaeSrc = fetchFromGitHub {
    owner = "drowe67";
    repo = "radae";
    rev = "2354cd2a4b3af60c7feb1c0d6b3d6dd7417c2ac9";
    hash = "sha256-yEr/OCXV83qXi89QHXMrUtQ2UwNOsijQMN35Or2JP+Y=";
  };
in
stdenv.mkDerivation (finalAttrs: {
  pname = "freedv";
  version = "1.9.9.2";
  version = "2.0.0";

  src = fetchFromGitHub {
    owner = "drowe67";
    repo = "freedv-gui";
    tag = "v${finalAttrs.version}";
    hash = "sha256-oFuAH81mduiSQGIDgDDy1IPskqqCBmfWbpqQstUIw9g=";
    hash = "sha256-3vwFB+3LloumEAGlSJZc2+/I8uI6KLP/KuDGeDOj87k=";
  };

  postPatch = lib.optionalString stdenv.hostPlatform.isDarwin ''
  patches = [
    ./no-framework.patch
  ];

  postPatch =
    ''
      cp -R ${radaeSrc} radae
      chmod -R u+w radae
      substituteInPlace radae/cmake/BuildOpus.cmake \
        --replace-fail "https://gitlab.xiph.org/xiph/opus/-/archive/main/opus-main.tar.gz" "${libopus.src}" \
        --replace-fail "./autogen.sh && " ""
      substituteInPlace cmake/BuildRADE.cmake \
        --replace-fail "GIT_REPOSITORY https://github.com/drowe67/radae.git" "URL $(realpath radae)" \
        --replace-fail "GIT_TAG main" ""
      patchShebangs test/test_*.sh
    ''
    + lib.optionalString stdenv.hostPlatform.isDarwin ''
      substituteInPlace CMakeLists.txt \
        --replace-fail "-Wl,-ld_classic" ""
      substituteInPlace src/CMakeLists.txt \
@@ -43,14 +70,18 @@ stdenv.mkDerivation (finalAttrs: {
  nativeBuildInputs =
    [
      cmake
      pkg-config
      python3
    ]
    ++ lib.optionals stdenv.hostPlatform.isDarwin [
      macdylibbundler
      makeWrapper
      darwin.autoSignDarwinBinariesHook
      darwin.sigtool
    ];

  buildInputs = [
  buildInputs =
    [
      codec2
      libsamplerate
      libsndfile
@@ -59,18 +90,40 @@ stdenv.mkDerivation (finalAttrs: {
      hamlib_4
      wxGTK32
      sioclient
  ] ++ (if pulseSupport then [ libpulseaudio ] else [ portaudio ]);
      python3.pkgs.numpy
    ]
    ++ (
      if stdenv.hostPlatform.isLinux then
        [
          libpulseaudio
          dbus
        ]
      else if stdenv.hostPlatform.isDarwin then
        [
          apple-sdk_15
        ]
      else
        [
          portaudio
        ]
    );

  cmakeFlags = [
    (lib.cmakeBool "USE_INTERNAL_CODEC2" false)
    (lib.cmakeBool "USE_STATIC_DEPS" false)
    (lib.cmakeBool "UNITTEST" true)
    (lib.cmakeBool "USE_PULSEAUDIO" pulseSupport)
    (lib.cmakeBool "USE_NATIVE_AUDIO" (with stdenv.hostPlatform; isLinux || isDarwin))
  ];

  doCheck = true;
  env.NIX_CFLAGS_COMPILE = "-I${codec2.src}/src";

  doCheck = false;

  postInstall = lib.optionalString stdenv.hostPlatform.isDarwin ''
  postInstall =
    ''
      install -Dm755 rade_build/src/librade.* -t $out/lib
    ''
    + lib.optionalString stdenv.hostPlatform.isDarwin ''
      mkdir -p $out/Applications
      mv $out/bin/FreeDV.app $out/Applications
      makeWrapper $out/Applications/FreeDV.app/Contents/MacOS/FreeDV $out/bin/freedv