audacity/0001-Adds-an-option-to-disable-Conan.patch
Dave Plater fac9ee7869 Accepting request 914616 from home:plater
- Update to version 3.0.4
- Add git patches:
  0001-Adds-an-option-to-disable-Conan.patch,
  0001-Scope-libraries-required-by-the-optional-features.patch
  0001-Fixes-wxwidgets-fixup-script.patch
- Added patch adapted from git, Fixes-GCC11-compatibility.patch
- Removed obsolete patches, audacity-remove-wx-test.patch and
  b4b5cc8.patch
- Upstream changes:
  *This is a hotfix release that fixes a bug with envelope points,
   which could multiply uncontrollably and cause Audacity to crash.
  *In particular:
    #1476: Envelope points are multiplied when using 
    Filter Curve EQ or Graphic EQ
    #1477: Filter Curve EQ will crash if there is an envelope 
    point outside of the selection
  *This fix re-introduces an earlier, but way less destructive bug:
   bugzilla 208 / #1500: Some effects delete Envelope Control Points
   or do not move them when timeline changes
  *Other than that, this release is identical to Version 3.0.3.

OBS-URL: https://build.opensuse.org/request/show/914616
OBS-URL: https://build.opensuse.org/package/show/multimedia:apps/audacity?expand=0&rev=167
2021-08-27 13:14:25 +00:00

284 lines
9.6 KiB
Diff

From 1968e81c79d21dafbc47c07214cac45865c58ac1 Mon Sep 17 00:00:00 2001
From: Dmitry Vedenko <vedenko@gmail.com>
Date: Fri, 18 Jun 2021 20:26:26 +0300
Subject: [PATCH] Adds an option to disable Conan
---
BUILDING.md | 5 +
CMakeLists.txt | 8 +-
.../cmake-modules/AudacityDependencies.cmake | 156 ++++++++++--------
3 files changed, 102 insertions(+), 67 deletions(-)
diff --git a/BUILDING.md b/BUILDING.md
index 62f6a0d62..7acd4ebec 100644
--- a/BUILDING.md
+++ b/BUILDING.md
@@ -187,3 +187,8 @@ $ docker run --rm -v ${pwd}:/audacity/audacity/ -v ${pwd}/../build/linux-system:
```
To find system packages, we rely on `pkg-config`. There are several packages that have broken `*.pc` or do not use `pkg-config` at all. For the docker image - we handle this issue by installing the correct [`pc` files](linux/build-environment/pkgconfig/).
+
+### Disabling Conan
+
+Conan can be disabled completely using `-Daudacity_conan_enabled=Off` during the configuration.
+This option implies `-Daudacity_obey_system_dependencies=On` and disables `local` for packages that are managed with Conan.
\ No newline at end of file
diff --git a/CMakeLists.txt b/CMakeLists.txt
index f6f52118b..014c3dfcb 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -138,6 +138,12 @@ include( AudacityFunctions )
set_from_env(AUDACITY_ARCH_LABEL) # e.g. x86_64
+# Allow user to globally set the library preference
+cmd_option( ${_OPT}conan_enabled
+ "Use Conan package manager for 3d party dependencies"
+ On
+)
+
# Allow user to globally set the library preference
cmd_option( ${_OPT}lib_preference
"Library preference [system (if available), local]"
@@ -510,7 +516,7 @@ resolve_conan_dependencies()
add_subdirectory( "help" )
if(${_OPT}has_crashreports)
-add_subdirectory( "crashreports" )
+ add_subdirectory( "crashreports" )
endif()
add_subdirectory( "images" )
add_subdirectory( "libraries" )
diff --git a/cmake-proxies/cmake-modules/AudacityDependencies.cmake b/cmake-proxies/cmake-modules/AudacityDependencies.cmake
index 8fad83465..8d0cbb05c 100644
--- a/cmake-proxies/cmake-modules/AudacityDependencies.cmake
+++ b/cmake-proxies/cmake-modules/AudacityDependencies.cmake
@@ -1,10 +1,13 @@
# Load Conan
-include( conan )
-conan_add_remote(NAME audacity
- URL https://artifactory.audacityteam.org/artifactory/api/conan/conan-local
- VERIFY_SSL True
-)
+if( ${_OPT}conan_enabled )
+ include( conan )
+
+ conan_add_remote(NAME audacity
+ URL https://artifactory.audacityteam.org/artifactory/api/conan/conan-local
+ VERIFY_SSL True
+ )
+endif()
set( CONAN_BUILD_REQUIRES )
set( CONAN_REQUIRES )
@@ -13,23 +16,29 @@ set( CONAN_ONLY_DEBUG_RELEASE )
set( CONAN_CONFIG_OPTIONS )
set( CONAN_RESOLVE_LIST )
-# Add a Conan dependency
-# Example usage:
-# add_conan_lib(
-# wxWdidget
-# wxwidgets/3.1.3-audacity
-# OPTION_NAME wxwidgets
-# SYMBOL WXWIDGET
-# REQUIRED
-# ALWAYS_ALLOW_CONAN_FALLBACK
-# PKG_CONFIG "wxwidgets >= 3.1.3"
-# FIND_PACKAGE_OPTIONS COMPONENTS adv base core html qa xml
-# INTERFACE_NAME wxwidgets::wxwidgets
-# HAS_ONLY_DEBUG_RELEASE
-# CONAN_OPTIONS
-# wxwidgets:shared=True
-# )
+#[[
+Add a Conan dependency
+
+Example usage:
+
+add_conan_lib(
+ wxWdidget
+ wxwidgets/3.1.3-audacity
+ OPTION_NAME wxwidgets
+ SYMBOL WXWIDGET
+ REQUIRED
+ ALWAYS_ALLOW_CONAN_FALLBACK
+ PKG_CONFIG "wxwidgets >= 3.1.3"
+ FIND_PACKAGE_OPTIONS COMPONENTS adv base core html qa xml
+ INTERFACE_NAME wxwidgets::wxwidgets
+ HAS_ONLY_DEBUG_RELEASE
+ CONAN_OPTIONS
+ wxwidgets:shared=True
+)
+PKG_CONFIG accepts a list of possible package configurations.
+add_conan_lib will iterate over it one by one until the library is found.
+]]
function (add_conan_lib package conan_package_name )
# Extract the list of packages from the function args
@@ -54,6 +63,8 @@ function (add_conan_lib package conan_package_name )
set( list_mode on )
set( allow_find_package on )
set( current_var "find_package_options" )
+ elseif ( opt STREQUAL "ALLOW_FIND_PACKAGE" )
+ set ( allow_find_package on )
elseif ( opt STREQUAL "CONAN_OPTIONS" )
set( list_mode on )
set( current_var "conan_package_options" )
@@ -93,14 +104,23 @@ function (add_conan_lib package conan_package_name )
set( option_desc "local" )
- if( pkg_config_options OR allow_find_package )
+ if( pkg_config_options OR allow_find_package OR NOT ${_OPT}conan_enabled )
set( sysopt "system" )
string( PREPEND option_desc "system (if available), " )
- set( default "${${_OPT}lib_preference}" )
+
+ if( ${_OPT}conan_enabled )
+ set( default "${${_OPT}lib_preference}" )
+ else()
+ set( default "system" )
+ endif()
else()
set( default "local" )
endif()
+ if( ${_OPT}conan_enabled )
+ set( localopt "local" )
+ endif()
+
if( NOT required )
set( reqopt "off" )
string( APPEND option_desc ", off" )
@@ -109,7 +129,7 @@ function (add_conan_lib package conan_package_name )
cmd_option( ${option_name}
"Use ${option_name_base} library [${option_desc}]"
"${default}"
- STRINGS ${sysopt} "local" ${reqopt}
+ STRINGS ${sysopt} ${localopt} ${reqopt}
)
# Early bail out
@@ -129,26 +149,28 @@ function (add_conan_lib package conan_package_name )
return()
endif()
- if( ${option_name} STREQUAL "system" )
+ if( ${option_name} STREQUAL "system" OR NOT ${_OPT}conan_enabled )
if( pkg_config_options )
- pkg_check_modules( PKG_${package} ${pkg_config_options} )
+ foreach(variant ${pkg_config_options})
+ pkg_check_modules( PKG_${package} ${variant} )
- if( PKG_${package}_FOUND )
- message( STATUS "Using '${package}' system library" )
-
- # Create the target interface library
- add_library( ${interface_name} INTERFACE IMPORTED GLOBAL)
-
- # Retrieve the package information
- get_package_interface( PKG_${package} )
+ if( PKG_${package}_FOUND )
+ message( STATUS "Using '${package}' system library" )
- # And add it to our target
- target_include_directories( ${interface_name} INTERFACE ${INCLUDES} )
- target_link_libraries( ${interface_name} INTERFACE ${LIBRARIES} )
-
- message(STATUS "Added inteface ${interface_name} ${INCLUDES} ${LIBRARIES}")
- return()
- endif()
+ # Create the target interface library
+ add_library( ${interface_name} INTERFACE IMPORTED GLOBAL)
+
+ # Retrieve the package information
+ get_package_interface( PKG_${package} )
+
+ # And add it to our target
+ target_include_directories( ${interface_name} INTERFACE ${INCLUDES} )
+ target_link_libraries( ${interface_name} INTERFACE ${LIBRARIES} )
+
+ message(STATUS "Added inteface ${interface_name} ${INCLUDES} ${LIBRARIES}")
+ return()
+ endif()
+ endforeach()
endif()
if( allow_find_package )
@@ -160,7 +182,7 @@ function (add_conan_lib package conan_package_name )
endif()
endif()
- if( system_only )
+ if( system_only OR NOT ${_OPT}conan_enabled )
message( FATAL_ERROR "Failed to find the system package ${package}" )
else()
set( ${option_name} "local" )
@@ -237,34 +259,36 @@ function ( _conan_install build_type )
endfunction()
macro( resolve_conan_dependencies )
- message(STATUS
- "Executing Conan: \
- REQUIRES ${CONAN_REQUIRES}
- GENERATORS cmake_find_package_multi
- BUILD_REQUIRES ${CONAN_BUILD_REQUIRES}
- ${CONAN_CONFIG_OPTIONS}
- OPTIONS ${CONAN_PACKAGE_OPTIONS}
- ")
-
- if(MSVC OR XCODE)
- foreach(TYPE ${CMAKE_CONFIGURATION_TYPES})
- _conan_install(${TYPE})
- endforeach()
- else()
- _conan_install(${CMAKE_BUILD_TYPE})
- endif()
+ if( ${_OPT}conan_enabled )
+ message(STATUS
+ "Executing Conan: \
+ REQUIRES ${CONAN_REQUIRES}
+ GENERATORS cmake_find_package_multi
+ BUILD_REQUIRES ${CONAN_BUILD_REQUIRES}
+ ${CONAN_CONFIG_OPTIONS}
+ OPTIONS ${CONAN_PACKAGE_OPTIONS}
+ ")
+
+ if(MSVC OR XCODE)
+ foreach(TYPE ${CMAKE_CONFIGURATION_TYPES})
+ _conan_install(${TYPE})
+ endforeach()
+ else()
+ _conan_install(${CMAKE_BUILD_TYPE})
+ endif()
- list( REMOVE_DUPLICATES CONAN_REQUIRES )
+ list( REMOVE_DUPLICATES CONAN_REQUIRES )
- foreach( package ${CONAN_RESOLVE_LIST} )
- message(STATUS "Resolving Conan library ${package}")
+ foreach( package ${CONAN_RESOLVE_LIST} )
+ message(STATUS "Resolving Conan library ${package}")
- find_package(${package} CONFIG)
+ find_package(${package} CONFIG)
- if (NOT ${package}_FOUND)
- message( FATAL_ERROR "Failed to find the conan package ${package}" )
- endif()
- endforeach()
+ if (NOT ${package}_FOUND)
+ message( FATAL_ERROR "Failed to find the conan package ${package}" )
+ endif()
+ endforeach()
+ endif()
file(GLOB dependency_helpers "${AUDACITY_MODULE_PATH}/dependencies/*.cmake")
--
2.26.2