Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package audacity for openSUSE:Factory 
checked in at 2026-11-11 16:24:29
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/audacity (Old)
 and      /work/SRC/openSUSE:Factory/.audacity.new.3759290 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "audacity"

Wed Nov 11 16:24:29 2026 rev:136 rq:1396521 version:4.0.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/audacity/audacity.changes        2026-09-07 
11:34:57.460825105 +0200
+++ /work/SRC/openSUSE:Factory/.audacity.new.3759290/audacity.changes   
2026-11-11 16:24:54.391807190 +0100
@@ -1,0 +2,51 @@
+Sun Nov  8 09:18:02 UTC 2026 - Edgar Aichinger <[email protected]>
+
+- Fix build with Qt 6.12 by disabling QML cache generation
+
+-------------------------------------------------------------------
+Sun Oct 18 07:54:13 UTC 2026 - Dave Plater <[email protected]>
+
+- Delete audacity-rpmlintrc, no longer needed
+
+-------------------------------------------------------------------
+Sat Oct 17 17:05:42 UTC 2026 - Martin Pluskal <[email protected]>
+
+- Update to version 4.0.1, the major Audacity 4 release:
+  * Interface rebuilt on Qt with native high-DPI rendering;
+    toolbars and panels dock, float, hide, workspaces save layouts
+  * New clip-editing model: direct clip select, multi-clip move,
+    trim and stretch, clip groups, free placement across tracks
+  * Split tool, automatic track creation on paste, alignment guides,
+    per-project snap settings
+  * New .aup4 project format (.aup3 converts forward-only)
+  * Rebuilt-in effects, generators and meters; VST3, Nyquist and
+    LV2 support on Linux; per-track live meters
+  * Dropped in 4.0: Time Tracks, Note/MIDI tracks, Mixer, Macro
+    Manager and scripting pipe, VAMP and LADSPA hosting, Play-at-speed
+  * 4.0.1: export-multiple, portable Windows build, restored
+    Audacity 3 shortcuts, accessibility fixes, AppImage startup fix
+  * Packaging: switch to the audacity-sources tarball (submodules
+    included) with an offline extdeps source cache; link system
+    libraries (EXTDEPS_OVERRIDE_ALL=SYSTEM); drop the 3.x patches
+    audacity-no_buildstamp.patch, audacity-no_return_in_nonvoid.patch
+    and lib64-plugins-default-path.patch (obsolete)
+  * Ship the bundled sbsms runtime in a libsbsms10 subpackage
+    (no sbsms in Factory) and strip its build-tree RPATH;
+    package the versioned 4.0 datadir (languages.json, workspaces)
+  * CVE-2024-50602 (boo#1232608): not affected — links system expat (Factory 
2.6.4 floor); rebuilt VST3 SDK vendors no expat
+  * Enable VST3 support by default (opt-in in 3.x): Audacity 4
+    rebuilt VST3 effects on Linux, SDK rebuilt from bundled sources
+  * Drop the audacity-plugins Provides/Obsoletes: the 3.x plugin
+    modules are gone in 4.0
+  * Exclude 32-bit, big-endian and unverified architectures
+    (i586, s390x, ppc64, ppc64le, riscv64)
+  * No %%check section: upstream unit tests are disabled in this build
+  * Restore the Recommends on audacity-lang; drop the unused
+    fdupes and update-desktop-files build requirements
+  * Build with the default Unix Makefiles generator: the macros'
+    build/install steps are make-based, -GNinja left no Makefile
+  * Fix au3 build against wxWidgets without the unsafe string
+    conversion (add audacity-wxstring-untranslatable.patch: route
+    wxString args through the au3::untranslatable bridge)
+
+-------------------------------------------------------------------

Old:
----
  Audacity-3.7.9.tar.gz
  audacity-no_buildstamp.patch
  audacity-no_return_in_nonvoid.patch
  audacity-rpmlintrc
  lib64-plugins-default-path.patch

New:
----
  audacity-extdeps-cache-4.0.1.tar.xz
  audacity-sources-4.0.1.tar.xz
  audacity-wxstring-untranslatable.patch

----------(Old B)----------
  Old:    libraries (EXTDEPS_OVERRIDE_ALL=SYSTEM); drop the 3.x patches
    audacity-no_buildstamp.patch, audacity-no_return_in_nonvoid.patch
    and lib64-plugins-default-path.patch (obsolete)
  Old:    libraries (EXTDEPS_OVERRIDE_ALL=SYSTEM); drop the 3.x patches
    audacity-no_buildstamp.patch, audacity-no_return_in_nonvoid.patch
    and lib64-plugins-default-path.patch (obsolete)
  Old:    audacity-no_buildstamp.patch, audacity-no_return_in_nonvoid.patch
    and lib64-plugins-default-path.patch (obsolete)
  * Ship the bundled sbsms runtime in a libsbsms10 subpackage
----------(Old E)----------

----------(New B)----------
  New:  * Fix au3 build against wxWidgets without the unsafe string
    conversion (add audacity-wxstring-untranslatable.patch: route
    wxString args through the au3::untranslatable bridge)
----------(New E)----------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ audacity.spec ++++++
--- /var/tmp/diff_new_pack.bBde6X/_old  2026-11-11 16:24:58.177965993 +0100
+++ /var/tmp/diff_new_pack.bBde6X/_new  2026-11-11 16:24:58.178966035 +0100
@@ -16,101 +16,101 @@
 #
 
 
-%bcond_with vst3
-
+# VST3 is ON by default in 4.x (opt-in in 3.x): Audacity 4 rebuilt VST3
+# effects support on Linux and the SDK is rebuilt from the bundled
+# sources (EXTDEPS_OVERRIDE_VST3SDK=REBUILD below), no network fetch.
+%bcond_without vst3
 Name:           audacity
-Version:        3.7.9
+Version:        4.0.1
 Release:        0
 Summary:        A Multi Track Digital Audio Editor
 License:        CC-BY-3.0 AND GPL-2.0-or-later AND GPL-3.0-only
-Group:          Productivity/Multimedia/Sound/Utilities
-URL:            http://audacityteam.org/
-Source:         
https://github.com/audacity/audacity/archive/Audacity-%{version}.tar.gz
-Source1:        audacity-license-nyquist
-Source2:        audacity-rpmlintrc
-%if %{with vst3}
-#Source3:        vst3sdk-3.7.12_build_20.tar.xz
-%endif
-# PATCH-FIX-OPENSUSE audacity-no_buildstamp.patch [email protected] -- 
Remove the buildstamp.
-Patch0:         audacity-no_buildstamp.patch
-# PATCH-FIX-UPSTREAM audacity-no_return_in_nonvoid.patch - Fix false positive 
errors Two new gcc10 ones ignoring assert
-Patch1:         audacity-no_return_in_nonvoid.patch
-# PATCH-FIX-OPENSUSE vst-system-path.patch - search fo vsts in /usr/lib64 in 
x86_64 and ARM system
-Patch3:         lib64-plugins-default-path.patch
-BuildRequires:  cmake >= 3.16
-BuildRequires:  desktop-file-utils
-%if 0%{?suse_version} < 1600
-BuildRequires:  gcc12
-BuildRequires:  gcc12-c++
-%else
-BuildRequires:  gcc
+URL:            https://audacityteam.org/
+Source:         
https://github.com/audacity/audacity/releases/download/Audacity-%{version}/audacity-sources-%{version}.tar.xz
+Source1:        audacity-extdeps-cache-%{version}.tar.xz
+Source2:        audacity-license-nyquist
+Patch0:         audacity-wxstring-untranslatable.patch
+BuildRequires:  cmake
 BuildRequires:  gcc-c++
-%endif
-#!BuildIgnore:  gstreamer-0_10-plugins-base
+BuildRequires:  gettext
+# The muse extdeps CMake machinery shells out to the git binary even for
+# the offline source cache (resolve.cmake: _extdeps_populate_source).
+BuildRequires:  git
+# Qt tools want an UTF-8 locale
+BuildRequires:  glibc-locale-base
 BuildRequires:  hicolor-icon-theme
-BuildRequires:  libmp3lame-devel
-BuildRequires:  portmidi-devel
-BuildRequires:  wxWidgets-3_2-nostl-devel
-BuildRequires:  xz
+BuildRequires:  patchelf
+BuildRequires:  pkgconfig
+BuildRequires:  qt6-gui-private-devel
+BuildRequires:  utfcpp-devel
+BuildRequires:  wxWidgets-3_2-devel
+BuildRequires:  cmake(Qt6Concurrent)
+BuildRequires:  cmake(Qt6Core)
+BuildRequires:  cmake(Qt6Core5Compat)
+BuildRequires:  cmake(Qt6DBus)
+BuildRequires:  cmake(Qt6Gui)
+BuildRequires:  cmake(Qt6LinguistTools)
+BuildRequires:  cmake(Qt6Network)
+BuildRequires:  cmake(Qt6NetworkAuth)
+BuildRequires:  cmake(Qt6PrintSupport)
+BuildRequires:  cmake(Qt6Qml)
+BuildRequires:  cmake(Qt6Quick)
+BuildRequires:  cmake(Qt6QuickControls2)
+BuildRequires:  cmake(Qt6QuickWidgets)
+BuildRequires:  cmake(Qt6ShaderTools)
+BuildRequires:  cmake(Qt6StateMachine)
+BuildRequires:  cmake(Qt6Svg)
+BuildRequires:  cmake(Qt6Test)
+BuildRequires:  cmake(Qt6Widgets)
+BuildRequires:  cmake(Qt6Xml)
+# rapidjson ships a CMake config but no pkgconfig file, so the
+# package-name dependency stays instead of a pkgconfig one.
 BuildRequires:  pkgconfig(RapidJSON)
 BuildRequires:  pkgconfig(alsa)
-BuildRequires:  pkgconfig(expat)
-BuildRequires:  pkgconfig(flac) >= 1.3.1
+# CVE-2024-50602 fixed in expat 2.6.4; Factory ships newer, floor it.
+BuildRequires:  pkgconfig(expat) >= 2.6.4
+BuildRequires:  pkgconfig(flac)
 BuildRequires:  pkgconfig(flac++)
-BuildRequires:  pkgconfig(gtk+-3.0)
-BuildRequires:  pkgconfig(gtkmm-3.0)
-BuildRequires:  pkgconfig(id3tag)
-BuildRequires:  pkgconfig(id3tag)
+BuildRequires:  pkgconfig(freetype2)
+BuildRequires:  pkgconfig(harfbuzz)
 BuildRequires:  pkgconfig(jack)
-BuildRequires:  pkgconfig(libavcodec) >= 51.53
-BuildRequires:  pkgconfig(libavformat) >= 52.12
-BuildRequires:  pkgconfig(libavutil)
-BuildRequires:  pkgconfig(libjpeg)
+BuildRequires:  pkgconfig(lame)
 BuildRequires:  pkgconfig(libmpg123)
-BuildRequires:  pkgconfig(lilv-0) >= 0.24.6
-BuildRequires:  pkgconfig(lv2) >= 1.16.0
-BuildRequires:  pkgconfig(mad)
+BuildRequires:  pkgconfig(libpng16)
+BuildRequires:  pkgconfig(libpulse)
+BuildRequires:  pkgconfig(lilv-0)
+BuildRequires:  pkgconfig(lv2)
 BuildRequires:  pkgconfig(ogg)
 BuildRequires:  pkgconfig(opus)
 BuildRequires:  pkgconfig(opusfile)
 BuildRequires:  pkgconfig(portaudio-2.0)
-BuildRequires:  pkgconfig(serd-0) >= 0.30.2
-BuildRequires:  pkgconfig(shared-mime-info)
+BuildRequires:  pkgconfig(pugixml)
 BuildRequires:  pkgconfig(sndfile)
-BuildRequires:  pkgconfig(sord-0) >= 0.16.4
 BuildRequires:  pkgconfig(soundtouch)
 BuildRequires:  pkgconfig(soxr)
 BuildRequires:  pkgconfig(sqlite3)
-BuildRequires:  pkgconfig(sratom-0) >= 0.6.4
-BuildRequires:  pkgconfig(suil-0)  >= 0.10.6
+BuildRequires:  pkgconfig(suil-0)
 BuildRequires:  pkgconfig(twolame)
 BuildRequires:  pkgconfig(uuid)
-BuildRequires:  pkgconfig(vamp-hostsdk)
 BuildRequires:  pkgconfig(vorbis)
 BuildRequires:  pkgconfig(vorbisenc)
 BuildRequires:  pkgconfig(vorbisfile)
 BuildRequires:  pkgconfig(wavpack)
-BuildRequires:  pkgconfig(xcb-cursor)
-BuildRequires:  pkgconfig(xcb-keysyms)
-BuildRequires:  pkgconfig(xcb-util)
-BuildRequires:  pkgconfig(xkbcommon-x11)
-# WARNING lilv-0 >= 0.24.6;lv2 >= 1.16.0;serd-0 >= 0.30.2;sord-0 >= 
0.16.4;sratom-0 >= 0.6.4;suil-0 >= 0.10.6
-# check these versions after every update otherwise audacity builds libsuil 
itself.
-
-# This would require to patch our portaudio package with "PortMixer"... an 
extra API that never got integrated in PortAudio.
-#BuildRequires:  portaudio-devel
-Recommends:     %{name}-lang
+BuildRequires:  pkgconfig(zix-0)
+BuildRequires:  pkgconfig(zlib)
 # Nothing provides libavutil without a suffix
 Requires:       ffmpeg
-Requires:       libmp3lame0
-Provides:       %{name}-plugins = %{version}
-Obsoletes:      %{name}-plugins <= 2.4.2
+Recommends:     %{name}-lang
+# No Provides/Obsoletes audacity-plugins: the 3.x plugin modules it stood
+# for (mod-script-pipe et al. under the audacity libdir) are dropped in 4.0.
 # pipewire-libjack-0_3 replaces jack and when audacity loads it
 # causes a sigsev See https://bugzilla.suse.com/show_bug.cgi?id=1191585
-#Conflicts:      pipewire-libjack-0_3
-#Doesn't build for 32 bit anymore
-#error All sample block data is little endian...big endian not yet supported
-ExcludeArch:    i586 s390x
+# i586: 32-bit no longer supported upstream.
+# s390x, ppc64: big-endian; the au3 sample engine is little-endian only
+# ("All sample block data is little endian...big endian not yet supported").
+# ppc64le, riscv64: little-endian but with no Audacity 4 build on record;
+# excluded until verified, re-enable with a test build.
+ExcludeArch:    i586 s390x ppc64 ppc64le riscv64
 
 %description
 Audacity is a program that manipulates digital audio wave forms.
@@ -119,92 +119,92 @@
 AU, IRCAM, MP, and Ogg Vorbis. Wave data larger than the available
 physical memory size can be edited.
 
+%package -n libsbsms10
+Summary:        Subband Sinusoidal Modeling Synthesis audio library
+# No standalone sbsms in Factory: Audacity rebuilds the bundled sbsms
+# 2.2.0 extdep and ships its runtime here; no -devel subpackage, the
+# unversioned link is build-time only and removed at install time.
+
+%description -n libsbsms10
+Subband Sinusoidal Modeling Synthesis library for high-quality
+time-stretching and pitch-shifting, rebuilt from the sources bundled
+with Audacity (no standalone sbsms package in Factory).
+
 %lang_package
 
 %prep
-%setup -q -n %{name}-Audacity-%{version}
+%setup -q -n audacity-%{version}
+# Offline extdeps source cache, see
+# buildscripts/cmake/PrepareDepsSources.cmake ("offline/distro builds").
+# EXTDEPS_CACHE=... is exported at build time.
+mkdir -p .extdeps-cache
+tar -xf %{SOURCE1} -C .extdeps-cache
 %patch -P 0 -p1
-%patch -P 1 -p1
-
-%ifarch x86_64 aarch64
-%patch -P 3 -p1
-%endif
-
-cp -f %{SOURCE1} LICENSE_NYQUIST.txt
-# Make sure we use the system versions.
-rm -rf lib-src/{expat,libvamp,libsoxr,ffmpeg,lame}/
-
-#Included in src/AboutDialog.cpp but not supplied
-touch include/RevisionIdent.h
-
-%if %{with vst3}
-tar xf %{SOURCE3} --strip-components=1 --one-top-level=vst3sdk
-%endif
 
 %build
-%if 0%{?suse_version} < 1600
-export CC=gcc-12
-export CXX=g++-12
-%endif
-if ! test -e %{_libdir}/pkgconfig/lame.pc
-then
-export PKG_CONFIG_PATH="`echo $PWD`:%{_libdir}/pkgconfig"
-fi
-export CFLAGS="%{optflags} -fno-strict-aliasing -ggdb $(wx-config --cflags)"
-
+export EXTDEPS_CACHE="%{_builddir}/audacity-%{version}/.extdeps-cache"
+export LC_ALL=C.UTF-8
+export LANG=C.UTF-8
 %cmake  \
-       -DAUDACITY_REV_TIME=$(date -u -d "@${SOURCE_DATE_EPOCH}" 
"+%Y-%m-%dT%H:%M:%SZ") \
-       -DAUDACITY_REV_LONG=%{version} \
-       -DAUDACITY_BUILD_LEVEL=2 \
-       -DCMAKE_MODULE_LINKER_FLAGS:STRING="$(wx-config --libs)" \
-       -DCMAKE_SHARED_LINKER_FLAGS:STRING="$(wx-config --libs)" \
-       -Daudacity_conan_enabled=Off \
-       -Daudacity_has_networking:BOOL=Off \
-       -Daudacity_lib_preference:STRING=system \
-       -Duse_lame:STRING=system \
-       -Daudacity_use_ffmpeg:STRING=loaded \
+        -DCMAKE_BUILD_TYPE=RelWithDebInfo \
+        -DQT_QML_NO_CACHEGEN=ON \
+        -DAU4_BUILD_MODE=release \
+        -DAU4_BUILD_CONFIGURATION=app \
+        -DEXTDEPS_OVERRIDE_ALL=SYSTEM \
+        -DEXTDEPS_OVERRIDE_SBSMS=REBUILD \
+        -DEXTDEPS_OVERRIDE_VST3SDK=REBUILD \
+        -DMUSE_ENABLE_UNIT_TESTS=OFF \
+        -DMUSE_MODULE_UPDATE=OFF \
 %if %{without vst3}
-       -Daudacity_has_vst3=off \
+        -DAU_MODULE_EFFECTS_VST=OFF \
+        -DMUSE_MODULE_VST=OFF \
 %endif
-       -DVST3_DEFAULT_INSTALL_PATH=%{_libdir}/vst3/
-
+        -DAU_MODULE_EFFECTS_LV2=ON \
+        -DAU_USE_LIBCURL=OFF \
+        -Wno-dev
 %cmake_build
 
 %install
 %cmake_install
+cp -f %{SOURCE2} LICENSE_NYQUIST.txt
+# The bundled sbsms extdep bakes its build-tree lib dir into the binary
+# as RPATH; the shipped /usr/lib64/libsbsms.so.10 is found via the
+# default search path, so drop it.  No -devel subpackage: remove the
+# unversioned link (build-time only, already linked).
+patchelf --remove-rpath %{buildroot}%{_bindir}/%{name}
+# The bundled sbsms extdep installs its licenses to a nonstandard prefix;
+# relocate them with the other licenses (this also removes the stray dir).
+mkdir -p %{buildroot}%{_licensedir}/%{name}-sbsms
+mv %{buildroot}%{_prefix}/licenses/sbsms/COPYING 
%{buildroot}%{_prefix}/licenses/sbsms/LICENSE 
%{buildroot}%{_licensedir}/%{name}-sbsms/
+rmdir %{buildroot}%{_prefix}/licenses/sbsms %{buildroot}%{_prefix}/licenses
+rm %{buildroot}%{_libdir}/libsbsms.so
+%find_lang %{name} --with-qt
 
-# E-mail wrote to [email protected].
-mkdir -p %{buildroot}%{_datadir}/icons/hicolor/48x48/mimetypes/
-mv -f 
%{buildroot}%{_datadir}/pixmaps/gnome-mime-application-x-audacity-project.xpm \
-  
%{buildroot}%{_datadir}/icons/hicolor/48x48/mimetypes/application-x-audacity-project.xpm
-rm -rf %{buildroot}%{_datadir}/pixmaps/
-rm -rf %{buildroot}%{_datadir}/doc
-
-%find_lang %{name}
-
-%post
-ldconfig %{_libdir}/%{name}
-%end
-
-%postun
-ldconfig %{_libdir}/%{name}
-%end
+# No "check" section: upstream unit tests compile only with
+# MUSE_ENABLE_UNIT_TESTS=ON (set OFF above), so nothing runnable ships.
+
+%ldconfig_scriptlets -n libsbsms10
 
 %files
-%defattr(-,root,root)
 %doc README.md
 %license LICENSE.txt LICENSE_NYQUIST.txt
 %{_bindir}/%{name}
-%{_libdir}/%{name}
-%{_libdir}/%{name}/modules/mod-script-pipe.so
 %{_datadir}/%{name}/
-%{_datadir}/applications/%{name}.desktop
+# Upstream 4.x installs its data under a versioned dir
+%dir %{_datadir}/audacity-4.0/
+%dir %{_datadir}/audacity-4.0/locale/
+%{_datadir}/audacity-4.0/locale/languages.json
+%{_datadir}/audacity-4.0/workspaces/
+%{_datadir}/applications/org.audacityteam.Audacity.desktop
 %{_datadir}/icons/hicolor/*
-%{_datadir}/mime/packages/%{name}.xml
-%{_mandir}/man?/%{name}.?%{?ext_man}
-%dir %{_datadir}/metainfo/
-%{_datadir}/metainfo/%{name}.appdata.xml
+%{_datadir}/metainfo/org.audacityteam.Audacity.appdata.xml
+%{_datadir}/mime/packages/audacity.xml
+
+%files -n libsbsms10
+%license %{_licensedir}/%{name}-sbsms/COPYING
+%license %{_licensedir}/%{name}-sbsms/LICENSE
+%dir %{_licensedir}/%{name}-sbsms/
+%{_libdir}/libsbsms.so.10*
 
 %files lang -f %{name}.lang
-%defattr(-,root,root)
 

++++++ audacity-license-nyquist ++++++
--- /var/tmp/diff_new_pack.bBde6X/_old  2026-11-11 16:24:58.231968258 +0100
+++ /var/tmp/diff_new_pack.bBde6X/_new  2026-11-11 16:24:58.235968426 +0100
@@ -1,34 +1,117 @@
-There are a number of files under the nyquist subdirectory, which
-carry a non-commercial license :
+LICENSE INFORMATION
 
-lib-src/libnyquist/nyquist/xlisp/xlcont.c
-lib-src/libnyquist/nyquist/xlisp/xldbug.c
-lib-src/libnyquist/nyquist/xlisp/xldmem.c
-lib-src/libnyquist/nyquist/xlisp/xleval.c
-lib-src/libnyquist/nyquist/xlisp/xlfio.c
-lib-src/libnyquist/nyquist/xlisp/xlftab.c
-lib-src/libnyquist/nyquist/xlisp/xlimage.c
-lib-src/libnyquist/nyquist/xlisp/xlinit.c
-lib-src/libnyquist/nyquist/xlisp/xlio.c
-lib-src/libnyquist/nyquist/xlisp/xlisp.c
-lib-src/libnyquist/nyquist/xlisp/xlisp.h
-lib-src/libnyquist/nyquist/xlisp/xlmath.c
-lib-src/libnyquist/nyquist/xlisp/xlobj.c
-lib-src/libnyquist/nyquist/xlisp/xlprin.c
-lib-src/libnyquist/nyquist/xlisp/xlread.c
-lib-src/libnyquist/nyquist/xlisp/xlstr.c
-lib-src/libnyquist/nyquist/xlisp/xlsys.c
-
-To clarify this licensing here is the response from David:
-
-"The copyright notices in the source code are intended to suggest that 
-non-commercial users need not contact me for permission. It is granted
-in the source code comments. Originally, commercial users needed 
-a license and in some cases paid a fee. Now, commercial use is governed 
-by a BSD-like license as you've mentioned. I guess I should at least 
-update my copies of the source files to say that but I have no control 
-over what is floating around the net.
+Nyquist is built upon and derived from XLISP. Both are copyrighted software.
+Two copyright notices and licenses appear below.
 
-David Betz"
+In addition, Nyquist uses two LGPL libraries: libsndfile and liblo.
+These libraries are NOT covered by the Nyquist license, and Nyquist
+is NOT licensed under or restricted by GPL or LGPL licenses. The
+license agreements for libsndfile and liblo can be found in the 
+Nyquist source libraries nyquist/nylsf and nyquist/liblo, respectively.
 
+--------------------------------------------------------------------------------
+COPYRIGHT AND LICENSE INFORMATION FOR NYQUIST
+
+Copyright (c) 2000-2002, by Roger B. Dannenberg
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without 
modification,
+are permitted provided that the following conditions are met:
+
+Redistributions of source code must retain the above copyright notice, this 
list
+of conditions and the following disclaimer.
+
+Redistributions of source code must retain the copyright notice, the
+list of conditions, and the disclaimer, all three of which appear below under
+"COPYRIGHT AND LICENSE INFORMATION FOR XLISP."
+
+Redistributions in binary form must reproduce the above copyright notice, this
+list of conditions and the following disclaimer in the documentation and/or
+other materials provided with the distribution.
+
+Redistributions in binary form must reproduce the copyright notice, the
+list of conditions, and the disclaimer, all three of which appear below under
+"COPYRIGHT AND LICENSE INFORMATION FOR XLISP," in the documentation and/or
+other materials provided with the distribution.
+
+Neither the name of Roger B. Dannenberg, Carnegie Mellon University, nor the 
+names of any contributors may be used to endorse or promote products derived 
+from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 
FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+What follows is not a part of the license:
+
+Please send bug fixes and improvements to me at the address below.
+
+Please do not distribute modified versions of Nyquist without permission.
+
+Any redistribution of Nyquist should include a notice that Nyquist can be
+obtained free from http://www.cs.cmu.edu/~music.
+
+In addition, as a courtesy, I ask that you send me a copy of any product that
+makes substantial use of Nyquist. Please contact me at the address below for my
+current mailing address. I am asking this because I enjoy learning about
+applications of my software.
+
+When Nyquist is used to generate music and conduct research, please mention
+and acknowledge the use of Nyquist in program notes, acknowledgement sections
+of papers, and whereever thanks or credits would normally be given.
+
+Roger B. Dannenberg
+
[email protected]
+
+--------------------------------------------------------------------------------
+COPYRIGHT AND LICENSE INFORMATION FOR XLISP
+
+Copyright (c) 1984-2002, by David Michael Betz
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without 
modification,
+are permitted provided that the following conditions are met:
+
+Redistributions of source code must retain the above copyright notice, this 
list
+of conditions and the following disclaimer. 
+
+Redistributions in binary form must reproduce the above copyright notice, this
+list of conditions and the following disclaimer in the documentation and/or
+other materials provided with the distribution.
+
+Neither the name of David Michael Betz nor the names of any contributors may be
+used to endorse or promote products derived from this software without specific
+prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 
FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+What follows is not a part of the license:
+
+Please send bug fixes and improvements to me at the address below.
+
+In addition, as a courtesy, I ask that you send me a copy of any product that
+makes substantial use of XLISP. Please contact me at the address below for my
+current mailing address. I am asking this because I enjoy learning about
+applications of my software.
+
+David Betz
+
[email protected]
 

++++++ audacity-wxstring-untranslatable.patch ++++++
au3 passes wxString to APIs taking (const char*) or (const wxChar*) in
several places -- TranslatableString::untranslatable() (which only
overloads on (const char*) and (const QString&)), sqlite3_exec()/
sqlite3_prepare_v2()/GetValue() (which take UTF-8 SQL strings),
SettingsVisitorBase::Define() and ExportFFmpegOptions::
FetchCompatibleCodecList() (whose key/format parameters are
const wxChar*), Nyquist cvstring() (which takes const char*), and a
(const char*) cast.  That compiles only when wxWidgets still allows
the unsafe implicit wxString conversion (wxUSE_UNSAFE_WXSTRING_CONV);
with it disabled (e.g. openSUSE wxWidgets 3.2) it is a hard error:

  error: no matching function for call to
         'TranslatableString::untranslatable(wxString&)'
  error: cannot convert 'wxString' to 'const char*'
  error: invalid cast from type 'wxString' to type 'const char*'

Route the TranslatableString arguments through the au3::untranslatable(
const wxString&) bridge from WxMuseStringCompat.h -- the same idiom
Internat.h's Verbatim(const wxString&) already uses --, convert the
sqlite3 SQL strings explicitly with .ToUTF8().data() (the idiom
ProjectFileIO.cpp already uses for sqlite3_open_v2), and pass setting
keys as static_cast<const wxChar*>(key.c_str()) (the idiom NyquistBase
already uses for the other Define() call sites).  UTF-8 round-trip
preserves non-ASCII names on every platform.  Call sites passing
(const char*), (const XML_Char*), char arrays, string literals, or
wxCharBuffer-returning .mb_str()/.fn_str()/.ToUTF8() are left untouched.

PATCH-FIX-UPSTREAM: upstream relies on wxUSE_UNSAFE_WXSTRING_CONV.

Index: audacity-4.0.1/au3/libraries/au3-audio-io/AudioIO.cpp
===================================================================
--- audacity-4.0.1.orig/au3/libraries/au3-audio-io/AudioIO.cpp
+++ audacity-4.0.1/au3/libraries/au3-audio-io/AudioIO.cpp
@@ -1228,7 +1228,7 @@
             StartStreamCleanup();
             // PRL: PortAudio error messages are sadly not internationalized
             BasicUI::ShowMessageBox(
-                
TranslatableString::untranslatable(LAT1CTOWX(Pa_GetErrorText(err))));
+                au3::untranslatable(LAT1CTOWX(Pa_GetErrorText(err))));
             return 0;
         }
     }

Index: audacity-4.0.1/au3/libraries/au3-builtin-effects/EqualizationBase.cpp
===================================================================
--- audacity-4.0.1.orig/au3/libraries/au3-builtin-effects/EqualizationBase.cpp
+++ audacity-4.0.1/au3/libraries/au3-builtin-effects/EqualizationBase.cpp
@@ -114,9 +114,9 @@
             const wxString nameFreq = wxString::Format("f%i", point);
             const wxString nameVal = wxString::Format("v%i", point);
             visitor.Define(
-                curves[0].points[point].Freq, nameFreq, 0.0, 0.0, 0.0, 0.0);
+                curves[0].points[point].Freq, static_cast<const 
wxChar*>(nameFreq.c_str()), 0.0, 0.0, 0.0, 0.0);
             visitor.Define(
-                curves[0].points[point].dB, nameVal, 0.0, 0.0, 0.0, 0.0);
+                curves[0].points[point].dB, static_cast<const 
wxChar*>(nameVal.c_str()), 0.0, 0.0, 0.0, 0.0);
         }
     }
     return true;
@@ -137,8 +137,8 @@
             const wxString nameVal = wxString::Format("v%i", i);
             double f = -1000.0;
             double d = 0.0;
-            visitor.Define(f, nameFreq, 0.0, -10000.0, 1000000.0, 0.0);
-            visitor.Define(d, nameVal, 0.0, -10000.0, 10000.0, 0.0);
+            visitor.Define(f, static_cast<const wxChar*>(nameFreq.c_str()), 
0.0, -10000.0, 1000000.0, 0.0);
+            visitor.Define(d, static_cast<const wxChar*>(nameVal.c_str()), 
0.0, -10000.0, 10000.0, 0.0);
             if (f <= 0.0) {
                 break;
             }

Index: audacity-4.0.1/au3/libraries/au3-cloud-audiocom/sync/MixdownUploader.cpp
===================================================================
--- 
audacity-4.0.1.orig/au3/libraries/au3-cloud-audiocom/sync/MixdownUploader.cpp
+++ audacity-4.0.1/au3/libraries/au3-cloud-audiocom/sync/MixdownUploader.cpp
@@ -186,7 +186,7 @@
         BasicUI::CallAfter(
             [this, message = error.What()]
         {
-            ShowExportErrorDialog(TranslatableString::untranslatable(message), 
TranslatableString("cloud-audiocom", "Export failed"), true);
+            ShowExportErrorDialog(au3::untranslatable(message), 
TranslatableString("cloud-audiocom", "Export failed"), true);
         });
     }

Index: audacity-4.0.1/au3/libraries/au3-components/ComponentInterfaceSymbol.h
===================================================================
--- audacity-4.0.1.orig/au3/libraries/au3-components/ComponentInterfaceSymbol.h
+++ audacity-4.0.1/au3/libraries/au3-components/ComponentInterfaceSymbol.h
@@ -35,12 +35,12 @@
 
     // Allows implicit construction from an internal string re-used as a msgid
     ComponentInterfaceSymbol(const wxString& internal)
-        : mInternal{internal}, 
mMsgid{::TranslatableString::untranslatable(internal)}
+        : mInternal{internal}, mMsgid{au3::untranslatable(internal)}
     {}
 
     // Allows implicit construction from an internal string re-used as a msgid
     ComponentInterfaceSymbol(const wxChar* msgid)
-        : mInternal{msgid}, 
mMsgid{::TranslatableString::untranslatable(wxString(msgid))}
+        : mInternal{msgid}, mMsgid{au3::untranslatable(wxString(msgid))}
     {}
 
     // Two-argument version distinguishes internal from translatable string

Index: audacity-4.0.1/au3/libraries/au3-import-export/ExportProgressUI.h
===================================================================
--- audacity-4.0.1.orig/au3/libraries/au3-import-export/ExportProgressUI.h
+++ audacity-4.0.1/au3/libraries/au3-import-export/ExportProgressUI.h
@@ -42,7 +42,7 @@
     }
     catch (ExportException& e)
     {
-        BasicUI::ShowMessageBox(TranslatableString::untranslatable(e.What()));
+        BasicUI::ShowMessageBox(au3::untranslatable(e.What()));
     }
     catch (...)
     {

Index: audacity-4.0.1/au3/libraries/au3-module-manager/PluginManager.cpp
===================================================================
--- audacity-4.0.1.orig/au3/libraries/au3-module-manager/PluginManager.cpp
+++ audacity-4.0.1/au3/libraries/au3-module-manager/PluginManager.cpp
@@ -470,7 +470,7 @@
                     auto message = TranslatableString(
                         "module-manager", "Enable this plug-in?\n", 
"plug-ins", static_cast<int>(nIds));
                     for (const auto& name : names) {
-                        message.Join(TranslatableString::untranslatable(name), 
"\n");
+                        message.Join(au3::untranslatable(name), "\n");
                     }
                     bool enable = (MessageBoxResult::Yes == ShowMessageBox(
                                        message,

Index: audacity-4.0.1/au3/libraries/au3-nyquist-effects/NyquistBase.cpp
===================================================================
--- audacity-4.0.1.orig/au3/libraries/au3-nyquist-effects/NyquistBase.cpp
+++ audacity-4.0.1/au3/libraries/au3-nyquist-effects/NyquistBase.cpp
@@ -104,7 +104,7 @@
     mFileName = fName;
     // Use the file name verbatim as effect name.
     // This is only a default name, overridden if we find a $name line:
-    mName = TranslatableString::untranslatable(mFileName.GetName());
+    mName = au3::untranslatable(mFileName.GetName());
     mFileModified = mFileName.GetModificationTime();
     ParseFile();
 
@@ -280,7 +280,7 @@
                 ctrl.choices.data(), ctrl.choices.size());
         } else if (ctrl.type == NYQ_CTRL_STRING || ctrl.type == NYQ_CTRL_FILE) 
{
             visitor.Define(
-                ctrl.valStr, ctrl.var, wxString {}, ctrl.lowStr, ctrl.highStr);
+                ctrl.valStr, static_cast<const wxChar*>(ctrl.var.c_str()), 
wxString {}, ctrl.lowStr, ctrl.highStr);
             // parms.Write(ctrl.var, ctrl.valStr);
         }
     }
@@ -1439,7 +1439,7 @@
         // Assume the string has already been translated within the Lisp 
runtime
         // if necessary, by one of the gettext functions defined below, before 
it
         // is communicated back to C++
-        auto msg = 
TranslatableString::untranslatable(NyquistToWxString(nyx_get_string()));
+        auto msg = au3::untranslatable(NyquistToWxString(nyx_get_string()));
         if (!msg.empty()) { // Empty string may be used as a No-Op return 
value.
             if (!isOk) {
                 mLastError = msg.Translation();
@@ -1726,7 +1726,7 @@
                     extensions.push_back(ext);
                 }
             }
-            results.push_back({ 
TranslatableString::untranslatable(pieces[ii]), extensions });
+            results.push_back({ au3::untranslatable(pieces[ii]), extensions });
         }
     }
     return results;
@@ -1776,7 +1776,7 @@
         // would make the effectId differ from the URL-captured one and break
         // plugin lookup. Display labels are translated separately at dialog
         // time (convertControl in nyquistparameterextractorservice.cpp).
-        return TranslatableString::untranslatable(unquoted);
+        return au3::untranslatable(unquoted);
     } else if (
         allowParens && len >= 2 && s[0] == wxT('(') && s[len - 1] == wxT(')')) 
{
         Tokenizer tzer;
@@ -1800,7 +1800,7 @@
         }
     } else {
         // If string was not quoted, assume no translation exists
-        return TranslatableString::untranslatable(s);
+        return au3::untranslatable(s);
     }
 }
 
@@ -2080,17 +2080,17 @@
         if (name.EndsWith(wxT("..."))) {
             name = name.RemoveLast(3);
         }
-        mName = TranslatableString::untranslatable(name);
+        mName = au3::untranslatable(name);
         return true;
     }
 
     if (len >= 2 && tokens[0] == wxT("action")) {
-        mAction = TranslatableString::untranslatable(UnQuote(tokens[1]));
+        mAction = au3::untranslatable(UnQuote(tokens[1]));
         return true;
     }
 
     if (len >= 2 && tokens[0] == wxT("info")) {
-        mInfo = TranslatableString::untranslatable(UnQuote(tokens[1]));
+        mInfo = au3::untranslatable(UnQuote(tokens[1]));
         return true;
     }
 
@@ -2139,18 +2139,18 @@
     }
 
     if (len >= 2 && tokens[0] == wxT("author")) {
-        mAuthor = TranslatableString::untranslatable(UnQuote(tokens[1]));
+        mAuthor = au3::untranslatable(UnQuote(tokens[1]));
         return true;
     }
 
     if (len >= 2 && tokens[0] == wxT("release")) {
         // Value must be quoted if the release version string contains spaces.
-        mReleaseVersion = 
TranslatableString::untranslatable(UnQuote(tokens[1]));
+        mReleaseVersion = au3::untranslatable(UnQuote(tokens[1]));
         return true;
     }
 
     if (len >= 2 && tokens[0] == wxT("copyright")) {
-        mCopyright = TranslatableString::untranslatable(UnQuote(tokens[1]));
+        mCopyright = au3::untranslatable(UnQuote(tokens[1]));
         return true;
     }
 
@@ -2732,7 +2732,7 @@
     LVAL success;
     wxString Left = Str.BeforeLast('\n').BeforeLast('\n').ToAscii();
     wxString Right = Str.BeforeLast('\n').AfterLast('\n').ToAscii();
-    message = cvstring(Left);
+    message = cvstring(Left.ToUTF8());
     success = Right.EndsWith("OK") ? s_true : nullptr;
     dst = cons(message, success);
     return (void*)dst;

Index: audacity-4.0.1/au3/libraries/au3-project-file-io/DBConnection.cpp
===================================================================
--- audacity-4.0.1.orig/au3/libraries/au3-project-file-io/DBConnection.cpp
+++ audacity-4.0.1/au3/libraries/au3-project-file-io/DBConnection.cpp
@@ -392,7 +392,7 @@
     sql.Replace(wxT("<schema>"), schema);
 
     // Set the configuration
-    rc = sqlite3_exec(db, sql, nullptr, nullptr, nullptr);
+    rc = sqlite3_exec(db, sql.ToUTF8().data(), nullptr, nullptr, nullptr);
     if (rc != SQLITE_OK) {
         ADD_EXCEPTION_CONTEXT("sqlite3.rc", std::to_string(rc));
         ADD_EXCEPTION_CONTEXT("sqlite3.context", "DBConnection::ModeConfig");
@@ -625,7 +625,7 @@
     char* errmsg = nullptr;
 
     int rc = sqlite3_exec(mConnection.DB(),
-                          wxT("SAVEPOINT ") + name + wxT(";"),
+                          (wxT("SAVEPOINT ") + name + 
wxT(";")).ToUTF8().data(),
                           nullptr,
                           nullptr,
                           &errmsg);
@@ -649,7 +649,7 @@
     char* errmsg = nullptr;
 
     int rc = sqlite3_exec(mConnection.DB(),
-                          wxT("RELEASE ") + name + wxT(";"),
+                          (wxT("RELEASE ") + name + wxT(";")).ToUTF8().data(),
                           nullptr,
                           nullptr,
                           &errmsg);
@@ -673,7 +673,7 @@
     char* errmsg = nullptr;
 
     int rc = sqlite3_exec(mConnection.DB(),
-                          wxT("ROLLBACK TO ") + name + wxT(";"),
+                          (wxT("ROLLBACK TO ") + name + 
wxT(";")).ToUTF8().data(),
                           nullptr,
                           nullptr,
                           &errmsg);

Index: audacity-4.0.1/au3/libraries/au3-project-file-io/ProjectFileIO.cpp
===================================================================
--- audacity-4.0.1.orig/au3/libraries/au3-project-file-io/ProjectFileIO.cpp
+++ audacity-4.0.1/au3/libraries/au3-project-file-io/ProjectFileIO.cpp
@@ -839,7 +839,7 @@
     sql.Printf(ProjectFileSchema, ProjectFileID, 
ProjectSchemaVersion.GetPacked());
     sql.Replace("<schema>", schema);
 
-    rc = sqlite3_exec(db, sql, nullptr, nullptr, nullptr);
+    rc = sqlite3_exec(db, sql.ToUTF8().data(), nullptr, nullptr, nullptr);
     if (rc != SQLITE_OK) {
         SetDBError(
             TranslatableString("project-file-io", "Unable to initialize the 
project file")
@@ -906,7 +906,7 @@
     auto sql = wxString::Format(
         "DELETE FROM sampleblocks WHERE %sinset(blockid);",
         complement ? "NOT " : "");
-    rc = sqlite3_exec(db, sql, nullptr, nullptr, nullptr);
+    rc = sqlite3_exec(db, sql.ToUTF8().data(), nullptr, nullptr, nullptr);
     if (rc != SQLITE_OK) {
         ADD_EXCEPTION_CONTEXT("sqlite3.query", sql.ToStdString());
         ADD_EXCEPTION_CONTEXT("sqlite3.rc", std::to_string(rc));
@@ -1046,7 +1046,7 @@
     dbName.Replace("'", "''");
     sql.Printf("ATTACH DATABASE '%s' AS outbound;", dbName.ToUTF8());
 
-    rc = sqlite3_exec(db, sql, nullptr, nullptr, nullptr);
+    rc = sqlite3_exec(db, sql.ToUTF8().data(), nullptr, nullptr, nullptr);
     if (rc != SQLITE_OK) {
         SetDBError(
             TranslatableString("project-file-io", "Unable to attach 
destination database")
@@ -1683,7 +1683,7 @@
             =/*: %1 is the project number, %2 is the project name.*/
               TranslatableString("project-file-io", "[Project %1] Audacity 
“%2”")
               .Format(number + 1,
-                      name.empty() ? TranslatableString("project-file-io", 
"<untitled>") : TranslatableString::untranslatable((const char*)name))
+                      name.empty() ? TranslatableString("project-file-io", 
"<untitled>") : au3::untranslatable(name))
               .Translation();
     }
     // If we are not showing numbers, then <untitled> shows as 'Audacity'.
@@ -2011,7 +2011,7 @@
     const wxString rowIDSql
         =wxString::Format("SELECT ROWID FROM %s.%s WHERE id = 1;", schema, 
table);
 
-    if (!GetValue(rowIDSql, rowID, true)) {
+    if (!GetValue(rowIDSql.ToUTF8().data(), rowID, true)) {
         ADD_EXCEPTION_CONTEXT("sqlite3.rc", 
std::to_string(sqlite3_errcode(db)));
         ADD_EXCEPTION_CONTEXT("sqlite3.context", 
"ProjectGileIO::WriteDoc::rowid");

Index: audacity-4.0.1/au3/libraries/au3-strings/Languages.cpp
===================================================================
--- audacity-4.0.1.orig/au3/libraries/au3-strings/Languages.cpp
+++ audacity-4.0.1/au3/libraries/au3-strings/Languages.cpp
@@ -210,7 +210,7 @@
             auto str = wxString::FromUTF8(utf8Name);
             auto code = str.BeforeFirst(' ');
             auto name = str.AfterFirst(' ');
-            localLanguageName[code] = TranslatableString::untranslatable(name);
+            localLanguageName[code] = au3::untranslatable(name);
         }
         return localLanguageName;
     }();
@@ -240,7 +240,7 @@
 
         wxString fullCode = info->CanonicalName;
         wxString code = fullCode.Left(2);
-        auto name = TranslatableString::untranslatable(info->Description);
+        auto name = au3::untranslatable(info->Description);
 
         // Logic: Languages codes are sometimes hierarchical, with a
         // general language code and then a subheading.  For example,

Index: audacity-4.0.1/au3/modules/import-export/mod-ffmpeg/ExportFFmpeg.cpp
===================================================================
--- audacity-4.0.1.orig/au3/modules/import-export/mod-ffmpeg/ExportFFmpeg.cpp
+++ audacity-4.0.1/au3/modules/import-export/mod-ffmpeg/ExportFFmpeg.cpp
@@ -1599,7 +1599,7 @@
                         int label = sampRates[i];
                         if ((!lowrate || label >= lowrate) && (!highrate || 
label <= highrate)) {
                             wxString name = wxString::Format(wxT("%d"), label);
-                            
choices.push_back(TranslatableString::untranslatable(name));
+                            choices.push_back(au3::untranslatable(name));
                             if (label <= rate) {
                                 selected = i;
                             }

Index: 
audacity-4.0.1/au3/modules/import-export/mod-ffmpeg/ExportFFmpegOptions.cpp
===================================================================
--- 
audacity-4.0.1.orig/au3/modules/import-export/mod-ffmpeg/ExportFFmpegOptions.cpp
+++ audacity-4.0.1/au3/modules/import-export/mod-ffmpeg/ExportFFmpegOptions.cpp
@@ -892,7 +892,7 @@
         }
     }
 
-    FetchCompatibleCodecList(selcdcid, wxString(format));
+    FetchCompatibleCodecList(selcdcid, static_cast<const 
wxChar*>(wxString(format).c_str()));
 
     return;
 }

Index: audacity-4.0.1/au3/modules/import-export/mod-ffmpeg/FFmpeg.cpp
===================================================================
--- audacity-4.0.1.orig/au3/modules/import-export/mod-ffmpeg/FFmpeg.cpp
+++ audacity-4.0.1/au3/modules/import-export/mod-ffmpeg/FFmpeg.cpp
@@ -63,7 +63,7 @@
     auto ffmpeg = FFmpegFunctions::Load();
 
     if (ffmpeg) {
-        return TranslatableString::untranslatable(wxString::Format(
+        return au3::untranslatable(wxString::Format(
                 wxT("F(%d.%d.%d),C(%d.%d.%d),U(%d.%d.%d)"),
                 ffmpeg->AVFormatVersion.Major, ffmpeg->AVFormatVersion.Minor, 
ffmpeg->AVFormatVersion.Micro,
                 ffmpeg->AVCodecVersion.Major, ffmpeg->AVCodecVersion.Minor, 
ffmpeg->AVCodecVersion.Micro,

Index: audacity-4.0.1/au3/modules/import-export/mod-mp3/ExportMP3.cpp
===================================================================
--- audacity-4.0.1.orig/au3/modules/import-export/mod-mp3/ExportMP3.cpp
+++ audacity-4.0.1/au3/modules/import-export/mod-mp3/ExportMP3.cpp
@@ -1738,7 +1738,7 @@
 #ifndef DISABLE_DYNAMIC_LOADING_LAME
     if (exporter.LoadEncoderLibrary(prompt ? MP3Exporter::Yes : 
MP3Exporter::No)) {
 #endif // DISABLE_DYNAMIC_LOADING_LAME
-    versionString = 
TranslatableString::untranslatable(exporter.GetLibraryVersion());
+    versionString = au3::untranslatable(exporter.GetLibraryVersion());
 #ifdef MP3_EXPORT_BUILT_IN
     versionString.Join(TranslatableString("import-export", "(Built-in)"), " ");
 #endif

Index: audacity-4.0.1/au3/modules/import-export/mod-pcm/ExportPCM.cpp
===================================================================
--- audacity-4.0.1.orig/au3/modules/import-export/mod-pcm/ExportPCM.cpp
+++ audacity-4.0.1/au3/modules/import-export/mod-pcm/ExportPCM.cpp
@@ -110,7 +110,7 @@
         if (sf_format_check(&info)) {
             // Store subtype and name
             values.emplace_back(sub);
-            
names.push_back(TranslatableString::untranslatable(sf_encoding_index_name(i)));
+            names.push_back(au3::untranslatable(sf_encoding_index_name(i)));
         }
     }
 }
@@ -213,7 +213,7 @@
         default:
         {
             typeOption.values.emplace_back(type);
-            
typeOption.names.push_back(TranslatableString::untranslatable(sf_header_index_name(i)));
+            
typeOption.names.push_back(au3::untranslatable(sf_header_index_name(i)));
             ExportOption encodingOption {
                 type,
                 TranslatableString("import-export", "Encoding"),

Index: audacity-4.0.1/au3/modules/import-export/mod-pcm/ImportPCM.cpp
===================================================================
--- audacity-4.0.1.orig/au3/modules/import-export/mod-pcm/ImportPCM.cpp
+++ audacity-4.0.1/au3/modules/import-export/mod-pcm/ImportPCM.cpp
@@ -234,7 +234,7 @@
         );
 
     auto untranslated = SFCall<wxString>(sf_header_name, mInfo.format);
-    return TranslatableString::untranslatable(untranslated);
+    return au3::untranslatable(untranslated);
 }
 
 double PCMImportFileHandle::GetDuration() const

Reply via email to