diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000..84728aa4 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,509 @@ +name: build + +on: + push: + +env: + CACHE_VERSION: 1 + DEBIAN_FRONTEND: noninteractive + DESTDIR: /tmp/destdir + HOMEBREW_NO_AUTO_UPDATE: 1 + LIBGL_ALWAYS_SOFTWARE: 'true' + +jobs: + linux-arm64: + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v2 + - name: Set up cache + id: cache + uses: actions/cache@v2 + with: + path: | + build + key: linux-arm64-v${{ env.CACHE_VERSION }} + - name: Fix GitHub's mess + run: | + sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list + sudo apt-get update -qq + sudo apt-get install -yqq --allow-downgrades libpcre2-8-0/focal libpcre2-16-0/focal libpcre2-32-0/focal libpcre2-posix2/focal + - name: Set up dependencies + run: | + sudo dpkg --add-architecture arm64 + sudo sed -i "s/deb http/deb [arch=amd64] http/" /etc/apt/sources.list + echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports focal main restricted universe multiverse" | sudo tee /etc/apt/sources.list.d/ports-arm64.list + echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports focal-updates main restricted universe multiverse" | sudo tee -a /etc/apt/sources.list.d/ports-arm64.list + echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports focal-backports main restricted universe multiverse" | sudo tee -a /etc/apt/sources.list.d/ports-arm64.list + sudo apt-get update -qq + sudo apt-get install -yqq build-essential meson + sudo apt-get install -yqq g++-aarch64-linux-gnu libasound2-dev:arm64 libfftw3-dev:arm64 libfreetype6-dev:arm64 libgl1-mesa-dev:arm64 libx11-dev:arm64 libxcomposite-dev:arm64 libxcursor-dev:arm64 libxrender-dev:arm64 qemu-user-static + - name: Build linux arm64 cross-compiled + env: + AR: aarch64-linux-gnu-ar + CC: aarch64-linux-gnu-gcc + CXX: aarch64-linux-gnu-g++ + LD: aarch64-linux-gnu-ld + NM: aarch64-linux-gnu-nm + STRIP: aarch64-linux-gnu-strip + LDFLAGS: -static-libgcc -static-libstdc++ + PKG_CONFIG_PATH: /usr/lib/aarch64-linux-gnu/pkgconfig + run: | + meson build --buildtype=release --prefix=/usr + ninja -C build + - name: Install linux armhf + run: | + ninja -C build install + - name: Set sha8 (non-release) + if: startsWith(github.ref, 'refs/tags/') != true + id: slug1 + run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)" + - name: Set sha8 (release) + if: startsWith(github.ref, 'refs/tags/') + id: slug2 + run: echo "::set-output name=sha8::$(echo ${{ github.ref_name }})" + - name: Set sha8 + id: slug + run: echo "::set-output name=sha8::$(echo ${{ steps.slug1.outputs.sha8 || steps.slug2.outputs.sha8 }})" + - name: Pack binaries + run: | + tar czf ${{ github.event.repository.name }}-linux-arm64-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}.tar.gz -C ${{ env.DESTDIR }}/usr/lib lv2 vst vst3 + - uses: actions/upload-artifact@v2 + with: + name: ${{ github.event.repository.name }}-linux-arm64-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }} + path: | + *.tar.gz + - uses: softprops/action-gh-release@v1 + if: startsWith(github.ref, 'refs/tags/') + with: + tag_name: ${{ github.ref_name }} + name: ${{ github.ref_name }} + draft: false + prerelease: false + files: | + *.tar.gz + + linux-armhf: + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v2 + - name: Set up cache + id: cache + uses: actions/cache@v2 + with: + path: | + build + key: linux-armhf-v${{ env.CACHE_VERSION }} + - name: Fix GitHub's mess + run: | + sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list + sudo apt-get update -qq + sudo apt-get install -yqq --allow-downgrades libpcre2-8-0/focal libpcre2-16-0/focal libpcre2-32-0/focal libpcre2-posix2/focal + - name: Set up dependencies + run: | + sudo dpkg --add-architecture armhf + sudo sed -i "s/deb http/deb [arch=amd64] http/" /etc/apt/sources.list + echo "deb [arch=armhf] http://ports.ubuntu.com/ubuntu-ports focal main restricted universe multiverse" | sudo tee /etc/apt/sources.list.d/ports-armhf.list + echo "deb [arch=armhf] http://ports.ubuntu.com/ubuntu-ports focal-updates main restricted universe multiverse" | sudo tee -a /etc/apt/sources.list.d/ports-armhf.list + echo "deb [arch=armhf] http://ports.ubuntu.com/ubuntu-ports focal-backports main restricted universe multiverse" | sudo tee -a /etc/apt/sources.list.d/ports-armhf.list + sudo apt-get update -qq + sudo apt-get install -yqq build-essential meson + sudo apt-get install -yqq +-arm-linux-gnueabihf libasound2-dev:armhf libfftw3-dev:armhf libfreetype6-dev:armhf libgl1-mesa-dev:armhf libx11-dev:armhf libxcomposite-dev:armhf libxcursor-dev:armhf libxrender-dev:armhf qemu-user-static + - name: Build linux armhf cross-compiled + env: + AR: arm-linux-gnueabihf-ar + CC: arm-linux-gnueabihf-gcc + CXX: arm-linux-gnueabihf-g++ + LD: arm-linux-gnueabihf-ld + NM: arm-linux-gnueabihf-nm + STRIP: arm-linux-gnueabihf-strip + CFLAGS: -mfpu=neon-vfpv4 -mfloat-abi=hard + CXXFLAGS: -mfpu=neon-vfpv4 -mfloat-abi=hard + LDFLAGS: -static-libgcc -static-libstdc++ + PKG_CONFIG_PATH: /usr/lib/arm-linux-gnueabihf/pkgconfig + run: | + meson build --buildtype=release --prefix=/usr + ninja -C build + - name: Install linux armhf + run: | + ninja -C build install + - name: Set sha8 (non-release) + if: startsWith(github.ref, 'refs/tags/') != true + id: slug1 + run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)" + - name: Set sha8 (release) + if: startsWith(github.ref, 'refs/tags/') + id: slug2 + run: echo "::set-output name=sha8::$(echo ${{ github.ref_name }})" + - name: Set sha8 + id: slug + run: echo "::set-output name=sha8::$(echo ${{ steps.slug1.outputs.sha8 || steps.slug2.outputs.sha8 }})" + - name: Pack binaries + run: | + tar czf ${{ github.event.repository.name }}-linux-armhf-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}.tar.gz -C ${{ env.DESTDIR }}/usr/lib lv2 vst vst3 + - uses: actions/upload-artifact@v2 + with: + name: ${{ github.event.repository.name }}-linux-armhf-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }} + path: | + *.tar.gz + - uses: softprops/action-gh-release@v1 + if: startsWith(github.ref, 'refs/tags/') + with: + tag_name: ${{ github.ref_name }} + name: ${{ github.ref_name }} + draft: false + prerelease: false + files: | + *.tar.gz + + linux-i686: + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v2 + - name: Set up cache + id: cache + uses: actions/cache@v2 + with: + path: | + build + key: linux-i686-v${{ env.CACHE_VERSION }} + - name: Fix GitHub's mess + run: | + sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list + sudo apt-get update -qq + sudo apt-get install -yqq --allow-downgrades libpcre2-8-0/focal libpcre2-16-0/focal libpcre2-32-0/focal libpcre2-posix2/focal + - name: Set up dependencies + run: | + sudo dpkg --add-architecture i386 + sudo apt-get update -qq + sudo apt-get install -yqq build-essential meson + sudo apt-get install -yqq g++-multilib libasound2-dev:i386 libfftw3-dev:i386 libfreetype6-dev:i386 libgl1-mesa-dev:i386 libx11-dev:i386 libxcomposite-dev:i386 libxcursor-dev:i386 libxrender-dev:i386 + - name: Build linux i686 + env: + CFLAGS: -m32 + CXXFLAGS: -m32 + LDFLAGS: -static-libgcc -static-libstdc++ -m32 + PKG_CONFIG_PATH: /usr/lib/i386-linux-gnu/pkgconfig + run: | + meson build --buildtype=release --prefix=/usr + ninja -C build + - name: Install linux i686 + run: | + ninja -C build install + - name: Set sha8 (non-release) + if: startsWith(github.ref, 'refs/tags/') != true + id: slug1 + run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)" + - name: Set sha8 (release) + if: startsWith(github.ref, 'refs/tags/') + id: slug2 + run: echo "::set-output name=sha8::$(echo ${{ github.ref_name }})" + - name: Set sha8 + id: slug + run: echo "::set-output name=sha8::$(echo ${{ steps.slug1.outputs.sha8 || steps.slug2.outputs.sha8 }})" + - name: Pack binaries + run: | + tar czf ${{ github.event.repository.name }}-linux-i686-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}.tar.gz -C ${{ env.DESTDIR }}/usr/lib lv2 vst vst3 + - uses: actions/upload-artifact@v2 + with: + name: ${{ github.event.repository.name }}-linux-i686-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }} + path: | + *.tar.gz + - uses: softprops/action-gh-release@v1 + if: startsWith(github.ref, 'refs/tags/') + with: + tag_name: ${{ github.ref_name }} + name: ${{ github.ref_name }} + draft: false + prerelease: false + files: | + *.tar.gz + + linux-x86_64: + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v2 + - name: Set up cache + id: cache + uses: actions/cache@v2 + with: + path: | + build + key: linux-x86_64-v${{ env.CACHE_VERSION }} + - name: Set up dependencies + run: | + sudo apt-get update -qq + sudo apt-get install -yqq build-essential meson + sudo apt-get install -yqq libasound2-dev libfftw3-dev libfreetype6-dev libgl1-mesa-dev libx11-dev libxcomposite-dev libxcursor-dev libxrender-dev + - name: Build linux x86_64 + env: + LDFLAGS: -static-libgcc -static-libstdc++ + run: | + meson build --buildtype=release --prefix=/usr + ninja -C build + - name: Install linux x86_64 + run: | + ninja -C build install + - name: Set sha8 (non-release) + if: startsWith(github.ref, 'refs/tags/') != true + id: slug1 + run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)" + - name: Set sha8 (release) + if: startsWith(github.ref, 'refs/tags/') + id: slug2 + run: echo "::set-output name=sha8::$(echo ${{ github.ref_name }})" + - name: Set sha8 + id: slug + run: echo "::set-output name=sha8::$(echo ${{ steps.slug1.outputs.sha8 || steps.slug2.outputs.sha8 }})" + - name: Pack binaries + run: | + tar czf ${{ github.event.repository.name }}-linux-x86_64-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}.tar.gz -C ${{ env.DESTDIR }}/usr/lib lv2 vst vst3 + - uses: actions/upload-artifact@v2 + with: + name: ${{ github.event.repository.name }}-linux-x86_64-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }} + path: | + *.tar.gz + - uses: softprops/action-gh-release@v1 + if: startsWith(github.ref, 'refs/tags/') + with: + tag_name: ${{ github.ref_name }} + name: ${{ github.ref_name }} + draft: false + prerelease: false + files: | + *.tar.gz + + linux-x86_64-debug: + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v2 + - name: Set up dependencies + run: | + sudo apt-get update -qq + sudo apt-get install -yqq build-essential meson + sudo apt-get install -yqq libasound2-dev libfftw3-dev libfreetype6-dev libgl1-mesa-dev libx11-dev libxcomposite-dev libxcursor-dev libxrender-dev + - name: Build linux x86_64 (debug) + env: + LDFLAGS: -static-libgcc -static-libstdc++ + run: | + meson build --buildtype=debug --prefix=/usr + ninja -C build + - name: Install linux x86_64 + run: | + ninja -C build install (debug) + - name: Set sha8 + id: slug + run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)" + - name: Pack binaries + run: | + tar czf ${{ github.event.repository.name }}-linux-x86_64-debug-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}.tar.gz -C ${{ env.DESTDIR }}/usr/lib lv2 vst vst3 + - uses: actions/upload-artifact@v2 + with: + name: ${{ github.event.repository.name }}-linux-x86_64-debug-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }} + path: | + *.tar.gz + + linux-x86_64-embed: + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v2 + - name: Set up dependencies + run: | + sudo apt-get update -qq + sudo apt-get install -yqq build-essential meson + sudo apt-get install -yqq libasound2-dev libfftw3-dev + - name: Build linux x86_64 (embed) + run: | + meson build --buildtype=release --prefix=/usr -Dlinux-embed=true + ninja -C build + + macos-intel: + runs-on: macos-10.15 + steps: + - uses: actions/checkout@v2 + - name: Set up cache + id: cache + uses: actions/cache@v2 + with: + path: | + build + key: macos-intel-v${{ env.CACHE_VERSION }} + - name: Set up dependencies + run: | + brew install meson + - name: Build macOS intel + env: + CFLAGS: -arch x86_64 -mmacosx-version-min=10.8 -DMAC_OS_X_VERSION_MAX_ALLOWED=MAC_OS_X_VERSION_10_8 -DMAC_OS_X_VERSION_MIN_REQUIRED=MAC_OS_X_VERSION_10_8 + CXXFLAGS: -arch x86_64 -mmacosx-version-min=10.8 -DMAC_OS_X_VERSION_MAX_ALLOWED=MAC_OS_X_VERSION_10_8 -DMAC_OS_X_VERSION_MIN_REQUIRED=MAC_OS_X_VERSION_10_8 + LDFLAGS: -arch x86_64 -mmacosx-version-min=10.8 -stdlib=libc++ + run: | + meson build --buildtype=release --prefix=/usr + ninja -C build + - name: Install macOS intel + run: | + ninja -C build install + - name: Set sha8 (non-release) + if: startsWith(github.ref, 'refs/tags/') != true + id: slug1 + run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)" + - name: Set sha8 (release) + if: startsWith(github.ref, 'refs/tags/') + id: slug2 + run: echo "::set-output name=sha8::$(echo ${{ github.ref_name }})" + - name: Set sha8 + id: slug + run: echo "::set-output name=sha8::$(echo ${{ steps.slug1.outputs.sha8 || steps.slug2.outputs.sha8 }})" + - name: Pack binaries + run: | + tar czf ${{ github.event.repository.name }}-macOS-intel-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}.tar.gz -C ${{ env.DESTDIR }}/usr/lib lv2 vst vst3 + - uses: actions/upload-artifact@v2 + with: + name: ${{ github.event.repository.name }}-macOS-intel-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }} + path: | + *.tar.gz + + macos-universal: + runs-on: macos-10.15 + steps: + - uses: actions/checkout@v2 + - name: Set up cache + id: cache + uses: actions/cache@v2 + with: + path: | + build + key: macos-universal-v${{ env.CACHE_VERSION }} + - name: Fix up Xcode + run: | + sudo rm -Rf /Library/Developer/CommandLineTools/SDKs/* + sudo xcode-select -s "/Applications/Xcode_12.3.app" + - name: Set up dependencies + run: | + brew install meson + - name: Build macOS universal + env: + CFLAGS: -mmacosx-version-min=10.12 -DMAC_OS_X_VERSION_MAX_ALLOWED=MAC_OS_X_VERSION_10_12 -DMAC_OS_X_VERSION_MIN_REQUIRED=MAC_OS_X_VERSION_10_12 + CXXFLAGS: -mmacosx-version-min=10.12 -DMAC_OS_X_VERSION_MAX_ALLOWED=MAC_OS_X_VERSION_10_12 -DMAC_OS_X_VERSION_MIN_REQUIRED=MAC_OS_X_VERSION_10_12 + LDFLAGS: -mmacosx-version-min=10.12 + run: | + meson build --buildtype=release --prefix=/usr -Dbuild-universal=true + ninja -C build + - name: Install macOS universal + run: | + ninja -C build install + - name: Set sha8 (non-release) + if: startsWith(github.ref, 'refs/tags/') != true + id: slug1 + run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)" + - name: Set sha8 (release) + if: startsWith(github.ref, 'refs/tags/') + id: slug2 + run: echo "::set-output name=sha8::$(echo ${{ github.ref_name }})" + - name: Set sha8 + id: slug + run: echo "::set-output name=sha8::$(echo ${{ steps.slug1.outputs.sha8 || steps.slug2.outputs.sha8 }})" + - name: Pack binaries + run: | + tar czf ${{ github.event.repository.name }}-macOS-universal-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}.tar.gz -C ${{ env.DESTDIR }}/usr/lib lv2 vst vst3 + - uses: actions/upload-artifact@v2 + with: + name: ${{ github.event.repository.name }}-macOS-universal-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }} + path: | + *.tar.gz + + win32: + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v2 + - name: Set up cache + id: cache + uses: actions/cache@v2 + with: + path: | + build + key: win32-v${{ env.CACHE_VERSION }} + - name: Fix GitHub's mess + run: | + sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list + sudo apt-get update -qq + sudo apt-get install -yqq --allow-downgrades libpcre2-8-0/focal libpcre2-16-0/focal libpcre2-32-0/focal libpcre2-posix2/focal + - name: Set up dependencies + run: | + sudo dpkg --add-architecture i386 + sudo apt-get update -qq + sudo apt-get install -yqq build-essential meson + sudo apt-get install -yqq binutils-mingw-w64-i686 g++-mingw-w64-i686 mingw-w64 wine-stable:i386 qttools5-dev qttools5-dev-tools xvfb + - name: Build win32 cross-compiled + run: | + meson build --buildtype=release --prefix=/usr --cross-file scripts/meson/win32.ini + ninja -C build + - name: Install win32 + run: | + ninja -C build install + - name: Set sha8 (non-release) + if: startsWith(github.ref, 'refs/tags/') != true + id: slug1 + run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)" + - name: Set sha8 (release) + if: startsWith(github.ref, 'refs/tags/') + id: slug2 + run: echo "::set-output name=sha8::$(echo ${{ github.ref_name }})" + - name: Set sha8 + id: slug + run: echo "::set-output name=sha8::$(echo ${{ steps.slug1.outputs.sha8 || steps.slug2.outputs.sha8 }})" + - name: Pack binaries + run: | + tar czf ${{ github.event.repository.name }}-win32-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}.tar.gz -C ${{ env.DESTDIR }}/usr/lib lv2 vst vst3 + - uses: actions/upload-artifact@v2 + with: + name: ${{ github.event.repository.name }}-win32-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }} + path: | + *.tar.gz + + win64: + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v2 + - name: Set up cache + id: cache + uses: actions/cache@v2 + with: + path: | + build + key: win64-v${{ env.CACHE_VERSION }} + - name: Fix GitHub's mess + run: | + sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list + sudo apt-get update -qq + sudo apt-get install -yqq build-essential meson + sudo apt-get install -yqq --allow-downgrades libpcre2-8-0/focal libpcre2-16-0/focal libpcre2-32-0/focal libpcre2-posix2/focal + - name: Set up dependencies + run: | + sudo dpkg --add-architecture i386 + sudo apt-get update -qq + sudo apt-get install -yqq binutils-mingw-w64-x86-64 g++-mingw-w64-x86-64 mingw-w64 wine-stable qttools5-dev qttools5-dev-tools xvfb + - name: Build win64 cross-compiled + run: | + meson build --buildtype=release --prefix=/usr --cross-file scripts/meson/win64.ini + ninja -C build + - name: Install win64 + run: | + ninja -C build install + - name: Set sha8 (non-release) + if: startsWith(github.ref, 'refs/tags/') != true + id: slug1 + run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)" + - name: Set sha8 (release) + if: startsWith(github.ref, 'refs/tags/') + id: slug2 + run: echo "::set-output name=sha8::$(echo ${{ github.ref_name }})" + - name: Set sha8 + id: slug + run: echo "::set-output name=sha8::$(echo ${{ steps.slug1.outputs.sha8 || steps.slug2.outputs.sha8 }})" + - name: Pack binaries + run: | + tar czf ${{ github.event.repository.name }}-win64-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}.tar.gz -C ${{ env.DESTDIR }}/usr/lib lv2 vst vst3 + - uses: actions/upload-artifact@v2 + with: + name: ${{ github.event.repository.name }}-win64-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }} + path: | + *.tar.gz diff --git a/.github/workflows/irc.yml b/.github/workflows/irc.yml new file mode 100644 index 00000000..108c326b --- /dev/null +++ b/.github/workflows/irc.yml @@ -0,0 +1,20 @@ +name: irc + +on: [push] + +jobs: + notification: + runs-on: ubuntu-latest + name: IRC notification + steps: + - name: Format message + id: message + run: | + message="${{ github.actor }} pushed $(echo '${{ github.event.commits[0].message }}' | head -n 1) ${{ github.event.commits[0].url }}" + echo ::set-output name=message::"${message}" + - name: IRC notification + uses: Gottox/irc-message-action@v2 + with: + channel: '#cardinal' + nickname: github-event-bot + message: ${{ steps.message.outputs.message }}