Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CI: working CI build for Linux + Windows #1

Open
wants to merge 58 commits into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
Show all changes
58 commits
Select commit Hold shift + click to select a range
90a43c1
chore(libheifactions)#: Create test action
BlueCyro Jul 24, 2024
29460c4
chore(libheifactions)#: Test changes to workflow
BlueCyro Jul 24, 2024
70efe2d
chore(libheifactions)#: Test build steps
BlueCyro Jul 24, 2024
fff72d3
chore(libheifactions)#: Remove hanging run tag
BlueCyro Jul 24, 2024
e2e4b5e
chore(libheifactions)#: List dir contents for debug
BlueCyro Jul 24, 2024
87a8e7f
chore(libheifactions)#: Use absolute path for cmake
BlueCyro Jul 24, 2024
c25ed00
chore(libheifactions)#: Test artifact upload
BlueCyro Jul 24, 2024
6a435ef
chore(libheifactions)#: Make using all available runner threads and p…
BlueCyro Jul 24, 2024
b56d815
chore(libheifactions)#: Adjust archive directory target
BlueCyro Jul 24, 2024
5f7117e
chore(libheifactions)#: Maybe you do it this way instead
BlueCyro Jul 24, 2024
aba351c
chore(libheifactions)#: More debug
BlueCyro Jul 24, 2024
df33e07
chore(libheifactions)#: Add working directories since cd doesn't stic…
BlueCyro Jul 24, 2024
be54ab0
chore(libheifactions)#: Adjust archive target
BlueCyro Jul 24, 2024
269c056
chore(libheifactions)#: Test build matrix
BlueCyro Jul 25, 2024
540b8ac
chore(libheifactions)#: Fix missing matrix keys
BlueCyro Jul 25, 2024
5bedf25
chore(libheifactions)#: Exclude dir keys from mutually-exclusive oper…
BlueCyro Jul 25, 2024
a60de96
chore(libheifactions)#: Use separate jobs instead of a matrix
BlueCyro Jul 25, 2024
9c3a6df
chore(libheifactions)#: Explicitly specify bash shell for creation of…
BlueCyro Jul 25, 2024
3815455
chore(libheifactions)#Use powershell syntax for output directory vari…
BlueCyro Jul 25, 2024
3c326e7
chore(libheifactions)#: Fix mislabeled build output variable usage
BlueCyro Jul 25, 2024
84bfbcb
chore(libheifactions)#: Fix sneaky quotes messing up the build output…
BlueCyro Jul 25, 2024
ae96191
chore(libheifactions)#: Re-un-fix the actually incorrect usage of the…
BlueCyro Jul 25, 2024
2489050
chore(libheifactions)#: Add more logging for debug
BlueCyro Jul 25, 2024
6352e83
chore(libheifactions)#: Add more logging to linux build for debug
BlueCyro Jul 25, 2024
5115dda
chore(libheifactions)#: Use cmake on windows to build the project ins…
BlueCyro Jul 25, 2024
1e99ba5
chore(libheifactions)#: Change archive target due to build process di…
BlueCyro Jul 25, 2024
6daf118
chore(libheifactions)#: Fix conflicting artifact names
BlueCyro Jul 25, 2024
fd0077a
chore(libheifactions)#: Try installing AOM on windows runner to see i…
BlueCyro Jul 29, 2024
2b36df2
chore(libheifactions)#: Grab ninja beforehand so that AOM can be inst…
BlueCyro Jul 29, 2024
a15d8ce
chore(libheifactions)#: Remove trailing run
BlueCyro Jul 29, 2024
821313e
chore(libheifactions)#: Install nasm as a dependency for building AOM…
BlueCyro Jul 29, 2024
e8bd120
chore(libheifactions)#: Move dependencies to the top, maybe that'll f…
BlueCyro Jul 29, 2024
a86ef32
chore(libheifactions)#: Try doing nasm and ninja setup just before aom
BlueCyro Jul 29, 2024
620832d
chore(libheifactions)#: Display contents of ninja build file to figur…
BlueCyro Jul 29, 2024
9f880f7
chore(libheifactions)#: Actually cat this time
BlueCyro Jul 29, 2024
47711a6
chore(libheifactions)#: Apparently build.libavif is not a file
BlueCyro Jul 29, 2024
82769ab
chore(libheifactions)#: See what's going wrong in build.ninja
BlueCyro Jul 29, 2024
fcd8980
chore(libheifactions)#: Try using bash for grabbing AOM to avoid weir…
BlueCyro Aug 6, 2024
ed4a6b7
chore(libheifactions)#: Explicitly call bash when running aom.cmd to …
BlueCyro Aug 6, 2024
b86e26c
chore(libheifactions)#: Add pkg config path to cmake command to try a…
BlueCyro Aug 6, 2024
45fcc35
chore(libheifactions)#: Add AOM pkgconfig to cmake file since it's th…
BlueCyro Aug 6, 2024
1435b71
chore(libheifactions)#: Maybe try putting the pkg config in the presets
BlueCyro Aug 6, 2024
7db48e7
chore(libheifactions)#: More explicit definition of the variable migh…
BlueCyro Aug 6, 2024
eca445c
chore(libheifactions)#: Try using AOM_INCLUDE_DIR on the root AOM folder
BlueCyro Aug 7, 2024
8a3e72b
chore(libheifactions)#: Point more directly at the AOM build files to…
BlueCyro Aug 8, 2024
3c15cd6
chore(libheifactions)#: Point both the library and include flags at t…
BlueCyro Aug 8, 2024
17a925b
chore(libheifactions)#: Point library path at static library directly
BlueCyro Aug 8, 2024
e791cdb
chore(libheifactions)#: Point library path at libavif build folder in…
BlueCyro Aug 8, 2024
b95cd85
chore(libheifactions)#: Maybe this one is better?
BlueCyro Aug 8, 2024
156603a
chore(libheifactions)#: Use .lib extension for windows instead of .a …
BlueCyro Aug 8, 2024
929c7a0
chore(libheifactions)#: Try running with powershell in vain
BlueCyro Aug 8, 2024
a7ece4e
chore(libheifactions)#: Don't even bother with the AOM script and jus…
BlueCyro Aug 8, 2024
3ff8214
chore(libheifactions)#: Try the .a file again now that bash isn't bei…
BlueCyro Aug 8, 2024
b72b8e5
ci: working build of library + AOM
jae1911 Sep 16, 2024
5d8e4ec
chore: move workflow to more explicit name
jae1911 Sep 16, 2024
dfb183b
ci: cleanup AOM build command
jae1911 Sep 16, 2024
e536fb6
feat: native ARM builds
jae1911 Jan 17, 2025
69032c2
feat: install libaom
jae1911 Jan 17, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
98 changes: 98 additions & 0 deletions .github/workflows/ydms-build.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
name: Build libheif
run-name: ${{ github.actor }} is building libheif
on:
push:
workflow_dispatch:

jobs:
Build-Linux:
strategy:
matrix:
osver: [ubuntu-latest, ubuntu-24.04-arm]

runs-on: ${{ matrix.osver }}

steps:
- name: Check out repository code
uses: actions/checkout@v4

- name: Set dist name
run: |
if ${{ matrix.osver == 'ubuntu-24.04-arm' }}; then
echo "distname=libheif-linux-arm" >> "$GITHUB_ENV"
else
echo "distname=libheif-linux" >> "$GITHUB_ENV"
fi

- name: Install libaom
run: |
sudo apt-get update
sudo apt-get install -y libaom-dev


- name: Make build directory
run: mkdir build

- name: Create output directory variable
id: buildoutput
run: echo "build-output-dir=${{ github.workspace }}/build" >> "$GITHUB_OUTPUT"

- name: Configure CMake
working-directory: ${{ steps.buildoutput.outputs.build-output-dir }}
run: cmake --preset=release-noplugins ..

- name: Build libheif
working-directory: ${{ steps.buildoutput.outputs.build-output-dir }}
run: make

- name: Archive and put a pretty bow on it
uses: actions/upload-artifact@v4
with:
name: ${{ env.distname }}
path: ${{ steps.buildoutput.outputs.build-output-dir }}/libheif

Build-Windows:
runs-on: windows-latest
steps:
- name: Check out repository code
uses: actions/checkout@v4

- name: Make build directory
run: mkdir build

- name: Create output directory variable
id: buildoutput
run: echo "build-output-dir=${{ github.workspace }}/build" >> "$Env:GITHUB_OUTPUT"

- uses: ilammy/setup-nasm@v1

- name: Compile AOM
run: |
cd "${{ github.workspace }}\third-party"

git clone -b v3.6.0 --depth 1 https://aomedia.googlesource.com/aom

cd aom

mkdir buildx

cd buildx

cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_DOCS=0 -DENABLE_EXAMPLES=0 -DENABLE_TESTDATA=0 -DENABLE_TESTS=0 -DENABLE_TOOLS=0 ..

cmake --build . --config Release

- name: Configure CMake
working-directory: ${{ steps.buildoutput.outputs.build-output-dir }}
run: |
cmake --preset=release-noplugins .. -DAOM_INCLUDE_DIR="${{ github.workspace }}\third-party\aom" -DAOM_LIBRARY="${{ github.workspace }}\third-party\aom\buildx\Release\aom.lib"

- name: Build libheif
working-directory: ${{ steps.buildoutput.outputs.build-output-dir }}
run: cmake --build . --config Release

- name: Archive and put a pretty bow on it
uses: actions/upload-artifact@v4
with:
name: libheif-windows
path: ${{ steps.buildoutput.outputs.build-output-dir }}/libheif/Release