mirror of
https://github.com/cookiengineer/audacity
synced 2025-12-09 06:06:24 +01:00
Removed old build system
This was fun!!! Holler if I had too much fun. :-)
This commit is contained in:
321
.github/workflows/build.yml
vendored
321
.github/workflows/build.yml
vendored
@@ -1,321 +0,0 @@
|
||||
name: Build Audacity
|
||||
|
||||
on:
|
||||
push:
|
||||
# Remove the "#" from the next 2 lines if you need to disable this action
|
||||
branches:
|
||||
- disable
|
||||
pull_request:
|
||||
# Remove the "#" from the next 2 lines if you need to disable this action
|
||||
branches:
|
||||
- disable
|
||||
|
||||
jobs:
|
||||
build:
|
||||
# =========================================================================
|
||||
# Run asynchronous builds
|
||||
# =========================================================================
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os: [windows-2019, ubuntu-16.04, ubuntu-18.04, macos-latest]
|
||||
#os: [macos-latest]
|
||||
|
||||
runs-on: ${{ matrix.os }}
|
||||
|
||||
env:
|
||||
USE_AUDACITY_WX: true
|
||||
|
||||
steps:
|
||||
# =========================================================================
|
||||
# SHARED: Checkout source
|
||||
# =========================================================================
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
ref: master
|
||||
|
||||
# =========================================================================
|
||||
# SHARED: Retrieve the commit hash and generate revision header
|
||||
# =========================================================================
|
||||
- name: Generate Header
|
||||
shell: bash
|
||||
run: |
|
||||
set -x
|
||||
|
||||
# Generate the revision header
|
||||
git show -s --format="#define REV_LONG \"%H\"%n#define REV_TIME \"%cd\"%n" >src/RevisionIdent.h
|
||||
|
||||
# Export the long and short hashs to further steps
|
||||
echo "::set-env name=LONGHASH::$(git show -s --format='%H')"
|
||||
echo "::set-env name=SHORTHASH::$(git show -s --format='%h')"
|
||||
|
||||
# =========================================================================
|
||||
# SHARED: Retrieve the wxWidgets source and export the commit hash
|
||||
# =========================================================================
|
||||
- name: wxWidgets Hash
|
||||
shell: bash
|
||||
run: |
|
||||
set -x
|
||||
|
||||
# Get latest wxWidgets source
|
||||
git clone --depth 1 -n https://github.com/audacity/wxWidgets
|
||||
cd wxWidgets
|
||||
|
||||
# Export the commit hash to further steps
|
||||
echo "::set-env name=WXHASH::$(git show -s --format='%H')"
|
||||
|
||||
# =========================================================================
|
||||
# SHARED: Create and/or retrieve wxWidgets cached build
|
||||
# =========================================================================
|
||||
- name: Cache wxWidgets
|
||||
uses: actions/cache@v1
|
||||
with:
|
||||
# Increment the number at the end to force recreation of the cache
|
||||
key: wxWidgets_${{ matrix.os }}_${{ env.WXHASH }}.8
|
||||
path: wxroot
|
||||
|
||||
# =========================================================================
|
||||
# WINDOWS: Setup Nuget (for all versions of Windows)
|
||||
# =========================================================================
|
||||
- name: Setup Nuget
|
||||
uses: nuget/setup-nuget@v1
|
||||
if: startswith( matrix.os, 'windows' )
|
||||
|
||||
# =========================================================================
|
||||
# WINDOWS: Build (for all versions of Windows)
|
||||
# =========================================================================
|
||||
- name: Build Windows
|
||||
if: startswith( matrix.os, 'windows' )
|
||||
shell: cmd
|
||||
run: |
|
||||
:: Set up Visual Studio environment
|
||||
CALL "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars32.bat"
|
||||
ECHO ON
|
||||
|
||||
:: Setup environment
|
||||
choco install zip
|
||||
|
||||
:: Identify wxWidgets installation directory
|
||||
SET WXWIN=%GITHUB_WORKSPACE%\wxroot
|
||||
|
||||
:: Build wxWidgets if needed
|
||||
IF NOT EXIST %WXWIN% (
|
||||
MKDIR %WXWIN%
|
||||
|
||||
CD wxWidgets
|
||||
git checkout
|
||||
git submodule update --init
|
||||
|
||||
:: Build it
|
||||
CD build\msw
|
||||
nmake -f makefile.vc BUILD=release SHARED=1
|
||||
IF NOT %ERRORLEVEL% == 0 EXIT %ERRORLEVEL%
|
||||
CD ..\..
|
||||
|
||||
:: "Install" wxWidgets
|
||||
XCOPY include %WXWIN%\include /E /I /Q /Y
|
||||
XCOPY lib %WXWIN%\lib /E /I /Q /Y
|
||||
XCOPY locale %WXWIN%\locale /E /I /Q /Y
|
||||
XCOPY src %WXWIN%\src /E /I /Q /Y
|
||||
|
||||
CD ..
|
||||
)
|
||||
|
||||
:: Build Audacity
|
||||
CD win
|
||||
|
||||
:: Restore packages (for gettext)
|
||||
nuget restore audacity.sln
|
||||
|
||||
:: Build solution
|
||||
msbuild audacity.sln /m /p:Configuration=Release /p:Platform=Win32
|
||||
IF NOT %ERRORLEVEL% == 0 EXIT %ERRORLEVEL%
|
||||
|
||||
:: "Install" Audacity
|
||||
MKDIR "%LONGHASH%"
|
||||
XCOPY Release "%LONGHASH%" /E /I /Q /Y
|
||||
XCOPY %WXWIN%\lib\vc_dll\*u_net_*.dll "%LONGHASH%" /E /I /Q /Y
|
||||
XCOPY %WXWIN%\lib\vc_dll\*u_vc_*.dll "%LONGHASH%" /E /I /Q /Y
|
||||
XCOPY %WXWIN%\lib\vc_dll\*u_xml_*.dll "%LONGHASH%" /E /I /Q /Y
|
||||
XCOPY %WXWIN%\lib\vc_dll\*u_adv_*.dll "%LONGHASH%" /E /I /Q /Y
|
||||
XCOPY %WXWIN%\lib\vc_dll\*u_core_*.dll "%LONGHASH%" /E /I /Q /Y
|
||||
XCOPY %WXWIN%\lib\vc_dll\*u_html_*.dll "%LONGHASH%" /E /I /Q /Y
|
||||
XCOPY %WXWIN%\lib\vc_dll\*u_qa_*.dll "%LONGHASH%" /E /I /Q /Y
|
||||
CD "%LONGHASH%"
|
||||
DEL /Q /S *.iobj *.exp *.ilk *.lib *.ipdb *.pdb include
|
||||
#CD ..
|
||||
|
||||
:: Create artifact
|
||||
|
||||
zip -r9 "..\..\%LONGHASH%.zip" *
|
||||
|
||||
# =========================================================================
|
||||
# UBUNTU: Build (for all versions of Ubuntu)
|
||||
# =========================================================================
|
||||
- name: Build Ubuntu
|
||||
if: startswith( matrix.os, 'ubuntu' )
|
||||
shell: bash
|
||||
run: |
|
||||
set -x
|
||||
|
||||
# Setup environment
|
||||
sudo apt-get update -y
|
||||
sudo apt-get install -y libgtk2.0-dev libasound2-dev autoconf automake autogen zip
|
||||
|
||||
# Identify wxWidgets installation directory
|
||||
WXROOT="${GITHUB_WORKSPACE}/wxroot"
|
||||
|
||||
# Build wxWidgets if needed
|
||||
if [ ! -e "${WXROOT}" ]
|
||||
then
|
||||
mkdir "${WXROOT}"
|
||||
|
||||
cd wxWidgets
|
||||
git checkout
|
||||
git submodule update --init
|
||||
|
||||
./configure --with-gtk
|
||||
make -j $(nproc) install DESTDIR="${WXROOT}"
|
||||
|
||||
cd ..
|
||||
fi
|
||||
|
||||
# "Install" wxWidgets
|
||||
sudo cp -a "${WXROOT}"/* /
|
||||
|
||||
# Configure Audacity
|
||||
mkdir bld
|
||||
cd bld
|
||||
../configure --with-lib-preference='local system'
|
||||
|
||||
# Build lib-src first
|
||||
#
|
||||
# This allows using multiple make jobs (-j). If not done this way
|
||||
# the build may fail (bug in our make process)
|
||||
cd lib-src
|
||||
make -j $(nproc)
|
||||
cd ..
|
||||
|
||||
# And then the rest
|
||||
make -j $(nproc)
|
||||
|
||||
# Identify installation directory
|
||||
DESTDIR="$(pwd)/linux"
|
||||
mkdir -p "${DESTDIR}"
|
||||
|
||||
# Create wrapper script
|
||||
#
|
||||
# (This is only needed if using our wxWidgets libs)
|
||||
cat >"${DESTDIR}/audacity" <<"EOF"
|
||||
#!/bin/sh
|
||||
export LD_LIBRARY_PATH="${0%/*}:${LD_LIBRARY_PATH}"
|
||||
"${0%/*}/audacity.bin"
|
||||
EOF
|
||||
chmod +x "${DESTDIR}/audacity"
|
||||
|
||||
# Copy over dist files
|
||||
cp -a audacity "${DESTDIR}/audacity.bin"
|
||||
cp -aL nyquist plug-ins "${DESTDIR}"
|
||||
mkdir "${DESTDIR}/help" "${DESTDIR}/locale/"
|
||||
cp -aL $(find locale/ -type d) "${DESTDIR}/locale/"
|
||||
|
||||
# Copy wxWidgets libraries
|
||||
cp -a "${WXROOT}"/usr/local/lib/*.so* "${DESTDIR}"
|
||||
|
||||
# Create artifact (zipped as Github actions don't preserve permissions)
|
||||
cd "${DESTDIR}"
|
||||
zip -r9 "${GITHUB_WORKSPACE}/${LONGHASH}.zip" *
|
||||
|
||||
# =========================================================================
|
||||
# MACOS: Build (for all versions of MacOS)
|
||||
# =========================================================================
|
||||
- name: Build Mac
|
||||
if: startswith( matrix.os, 'macos' )
|
||||
shell: bash
|
||||
run: |
|
||||
set -x
|
||||
|
||||
# The minimum OS X version supported by Audacity is 10.7.
|
||||
minver=10.7
|
||||
|
||||
# Make the "msgfmt" command available
|
||||
brew install gettext
|
||||
brew link --force gettext
|
||||
|
||||
# Make sure MacOS supplied commands are used
|
||||
export PATH="/usr/bin:/usr/sbin:/bin:/sbin:/usr/local/bin"
|
||||
|
||||
# Identify wxWidgets installation directory
|
||||
WXROOT="${GITHUB_WORKSPACE}/wxroot"
|
||||
|
||||
# Build wxWidgets if needed
|
||||
if [ ! -e "${WXROOT}" ]
|
||||
then
|
||||
mkdir "${WXROOT}"
|
||||
|
||||
cd wxWidgets
|
||||
git checkout
|
||||
git submodule update --init
|
||||
|
||||
# Make sure our flags are included
|
||||
export CXX="g++ -std=c++1z -stdlib=libc++"
|
||||
export LD="g++ -std=c++1z -stdlib=libc++"
|
||||
|
||||
# Build x86_64, release, shared configuration
|
||||
./configure --prefix=/usr/local/x86_64 \
|
||||
--enable-debug=no \
|
||||
--enable-macosx-arch="x86_64" \
|
||||
--enable-shared=yes \
|
||||
--enable-unicode=yes \
|
||||
--enable-universal_binary=no \
|
||||
--enable-webkit=no \
|
||||
--enable-webviewwebkit=no \
|
||||
--with-expat=builtin \
|
||||
--with-flavour="release" \
|
||||
--with-libjpeg=builtin \
|
||||
--with-libpng=builtin \
|
||||
--with-libtiff=builtin \
|
||||
--with-macosx-version-min="${minver}" \
|
||||
--with-regex=builtin \
|
||||
--with-zlib=builtin \
|
||||
--without-liblzma
|
||||
|
||||
${run} make -j $(sysctl -n hw.ncpu) install DESTDIR="${WXROOT}"
|
||||
|
||||
unset CXX LD
|
||||
|
||||
cd ..
|
||||
fi
|
||||
|
||||
# "Install" wxWidgets
|
||||
sudo cp -a "${WXROOT}/usr/local" /usr/
|
||||
|
||||
# Build Audacity
|
||||
cd mac
|
||||
|
||||
# Temporary workaround until they can be incorporated into
|
||||
# the Xcode project itself
|
||||
sed -i '' -e "s/TARGET=10.9/TARGET=${minver}/g" \
|
||||
-e "s/macosx10.9/macosx/g" Audacity.xcodeproj/project.pbxproj
|
||||
|
||||
xcodebuild -configuration Release64 install
|
||||
cd ..
|
||||
|
||||
# "Install" Audacity
|
||||
mkdir -p macos
|
||||
cp -a /tmp/Audacity.dst/Audacity.app macos
|
||||
|
||||
# Create artifact (zipped as Github actions don't preserve permissions)
|
||||
cd "/tmp/Audacity.dst"
|
||||
zip -r9 "${GITHUB_WORKSPACE}/${LONGHASH}.zip" *
|
||||
|
||||
# =========================================================================
|
||||
# SHARED: Attach the artifact to the workflow results
|
||||
# =========================================================================
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-artifact@v1
|
||||
with:
|
||||
name: ${{ matrix.os }}_${{ env.SHORTHASH }}
|
||||
path: ${{ env.LONGHASH }}.zip
|
||||
|
||||
Reference in New Issue
Block a user