name: Build alsa-utils

on: [push, pull_request]

jobs:
  fedora_latest_build:
    runs-on: ubuntu-latest
    container:
      image: fedora:latest
    steps:
    - name: Prepare environment
      run: |
        dnf -y upgrade
        dnf -y install @development-tools libtool bzip2 gettext-devel ncurses-devel

    - name: Checkout alsa-lib
      uses: actions/checkout@v4
      with:
        repository: alsa-project/alsa-lib
        ref: master
        path: alsa-lib
    - name: Configure alsa-lib
      run: |
        cd alsa-lib
        head -5 configure.ac
        libtoolize --force --copy --automake
        aclocal
        autoheader
        automake --foreign --copy --add-missing
        autoconf
        export CFLAGS="-O2 -Wall -W -Wunused-const-variable=0 -pipe -g"
        ./configure
        echo "Version: $(cat version)"
    - name: Build alsa-lib
      run: |
        cd alsa-lib
        make
    - name: Install alsa-lib
      run: |
        cd alsa-lib
        make install

    - name: Checkout
      uses: actions/checkout@v4
      with:
        path: alsa-utils
    - name: Checkout all tags
      run: |
        cd alsa-utils
        git fetch --prune --tags --force
        git fetch --prune --unshallow --force
    - name: Modify version
      run: |
        cd alsa-utils
        mv configure.ac configure.ac.old
        version=$(git describe | sed -e 's/v//')
        if test -z "$version"; then version=$(git describe --tags | sed -e 's/v//'); fi
        if test -z "$version"; then version1=$(cat configure.ac.old | grep "AC_INIT(.*)" | cut -d ' ' -f 2 | sed -e 's/)//'); version2=$(git rev-parse --short HEAD); version="${version1}-g${version2}"; fi
        echo "Version: ${version}"
        sed -r "s/AC_INIT\(alsa-utils,.*\)/AC_INIT(alsa-utils, ${version})/" < configure.ac.old > configure.ac.tmp
        sed -e 's;po/Makefile.in;;' < configure.ac.tmp > configure.ac
        grep AC_INIT configure.ac
    - name: Configure
      run: |
        cd alsa-utils
        head -5 configure.ac
        aclocal
        gettextize -c -f --no-changelog
        libtoolize --force --copy --automake
        aclocal -I m4
        autoheader
        automake --foreign --copy --add-missing
        autoconf
        export CFLAGS="-O2 -Wall -W -Wunused-const-variable=0 -pipe -g"
        ./configure
        echo "Version: $(cat version)"
    - name: Build
      run: |
        cd alsa-utils
        make
    - name: Install test
      run: |
        cd alsa-utils
        make install
    - name: Create package
      run: |
        cd alsa-utils
        make dist-bzip2
    - name: Unpack package
      run: |
        mkdir artifacts
        cd alsa-utils
        tar xjf alsa-utils-$(cat version).tar.bz2
        cp alsa-utils-$(cat version).tar.bz2 ../artifacts
    - name: Configure package
      run: |
        cd alsa-utils
        cd alsa-utils-$(cat version)
        export CFLAGS="-O2 -Wall -W -Wunused-const-variable=0 -pipe -g"
        ./configure
    - name: Build package
      run: |
        cd alsa-utils
        cd alsa-utils-$(cat version)
        make
    - name: Install package
      run: |
        cd alsa-utils
        cd alsa-utils-$(cat version)
        make install
    - name: Archive package
      uses: actions/upload-artifact@v4
      with:
        name: alsa-utils-test-package
        path: artifacts/

  ubuntu_last_build:
    runs-on: ubuntu-latest
    container:
      image: ubuntu:latest
    steps:
    - name: Prepare
      run: |
        export DEBIAN_FRONTEND=noninteractive
        apt-get update
        apt-get -y install apt-utils
        apt-get -y full-upgrade
        apt-get install -y git build-essential pkg-config m4 autoconf automake libtool gettext ncurses-dev

    - name: Checkout alsa-lib
      uses: actions/checkout@v4
      with:
        repository: alsa-project/alsa-lib
        ref: master
    - name: Configure alsa-lib
      run: |
        libtoolize --force --copy --automake
        aclocal
        autoheader
        automake --foreign --copy --add-missing
        autoconf
        export CFLAGS="-O2 -Wall -W -Wunused-const-variable=0 -pipe -g"
        ./configure
    - name: Build alsa-lib
      run: |
        make
    - name: Install alsa-lib
      run: |
        make install

    - name: Checkout
      uses: actions/checkout@v4
    - name: Configure
      run: |
        mv configure.ac configure.ac.old
        sed -e 's;po/Makefile.in;;' < configure.ac.old > configure.ac
        aclocal
        gettextize -c -f --no-changelog
        libtoolize --force --copy --automake
        aclocal -I m4
        autoheader
        automake --foreign --copy --add-missing
        autoconf
        export CFLAGS="-O2 -Wall -W -Wunused-const-variable=0 -pipe -g"
        ./configure
    - name: Build
      run: |
        make
    - name: Install
      run: |
        make install
