name: Build

on: [pull_request]

jobs:

  commontasks:
    runs-on: ubuntu-latest
    outputs:
      matrix: ${{ steps.set-matrix.outputs.matrix }}
    steps:
    - uses: actions/checkout@v3
    - name: Avoid 0x0BDA
      #Find devices that not use 0x0BDA instead of const USB_VENDOR_ID_REALTEK
      run: grep -c -i "0x0BDA" os_dep/linux/usb_intf.c | grep -w 1
    - name: Find duplicates
      #Find devices that not use 0x0BDA instead of const USB_VENDOR_ID_REALTEK
      run: grep -i "{USB_DEVICE(" os_dep/linux/usb_intf.c | cut -d ')' -f1 | sort | uniq -cd | wc -c | grep -w 0
    - name: Get kernel matrix
      id: set-matrix
      run: |
        JSON=$(curl -s https://www.kernel.org/releases.json)
        VERSIONSARRAY=$(echo $JSON | jq -c '[.releases[] | {version: .version, moniker: .moniker} | select(.moniker != "linux-next") | .version]')
        echo ::set-output name=matrix::${VERSIONSARRAY}

  build:
    needs: commontasks
    strategy:
      fail-fast: false
      matrix:
        version: ${{fromJson(needs.commontasks.outputs.matrix)}}
        #version: [4.9.248, 4.4.248]
        include:
          #Version 4.15.x requested to test Ubuntu 18.04 LTS version
          - os: ubuntu-18.04
            version: $(uname -r)
            use_apt: true

    runs-on: ubuntu-22.04
    steps:
    - name: install deb packages
      env:
        VERSION: ${{matrix.version }}
      if: ${{ !matrix.use_apt }}
      run: |
        KERNEL_URL=https://kernel.ubuntu.com/~kernel-ppa/mainline/
        KERNEL_URL_DETAILS=$(wget --quiet -O - ${KERNEL_URL}v${VERSION}/ | grep -A8 "Build for amd64\|Test amd64")
        ALL_DEB=$(echo "$KERNEL_URL_DETAILS" |  grep -m1 'all.deb' | cut -d '"' -f 2)
        AMD64_DEB=$(echo "$KERNEL_URL_DETAILS" | grep -m1 "amd64.deb" | cut -d '"' -f 2)
        [  -z "$ALL_DEB" ] && exit 1
        [  -z "$AMD64_DEB" ] && exit 2
        wget -nv ${KERNEL_URL}v${VERSION}/$AMD64_DEB
        wget -nv ${KERNEL_URL}v${VERSION}/$ALL_DEB
        sudo dpkg --force-all -i *.deb
        echo "KVER=$(echo $ALL_DEB | cut -d '_' -f 2 | rev | cut -c14- | rev)-generic" >> $GITHUB_ENV
    - name: apt-linux-headers
      if: ${{ matrix.use_apt }}
      run: |
        sudo apt-get install linux-headers-$(uname -r)
        echo "KVER=${{matrix.version }}" >> $GITHUB_ENV
    - uses: actions/checkout@v3
    - name: build
      run: make KVER=$KVER
