On Fri, Jul 1, 2022 at 4:39 PM Ilya Maximets <i.maxim...@ovn.org> wrote:
>
> On 6/29/22 15:52, Frode Nordahl wrote:
> > Use a separate GitHub Actions job for deb test so that we can
> > control base image for package test.
> >
> > The CI deb package test code currently attempts to use `apt` to
> > install local packages.  That may not produce the expected result.
> >
> > Explicitly install the local packages with `dpkg` after installing
> > dependencies from `apt` instead.
> >
> > Also enable test installation of ipsec deb package.
> >
> > Signed-off-by: Frode Nordahl <frode.nord...@canonical.com>
> > ---
> >  .ci/linux-build.sh                   | 21 ++++++++--
> >  .github/workflows/build-and-test.yml | 62 +++++++++++++++++++++-------
> >  2 files changed, 65 insertions(+), 18 deletions(-)
> >
> > diff --git a/.ci/linux-build.sh b/.ci/linux-build.sh
> > index 9963fb810..a8c437aaf 100755
> > --- a/.ci/linux-build.sh
> > +++ b/.ci/linux-build.sh
> > @@ -207,10 +207,23 @@ if [ "$DEB_PACKAGE" ]; then
> >      mk-build-deps --install --root-cmd sudo --remove debian/control
> >      dpkg-checkbuilddeps
> >      DEB_BUILD_OPTIONS='parallel=4 nocheck' fakeroot debian/rules binary
> > -    # Not trying to install ipsec package as there are issues with 
> > system-wide
> > -    # installed python3-openvswitch package and the pyenv used by Travis.
> > -    packages=$(ls $(pwd)/../*.deb | grep -v ipsec)
> > -    sudo apt install ${packages}
> > +    packages=$(ls $(pwd)/../*.deb)
> > +    deps=""
> > +    for pkg in $packages; do
> > +        _ifs=$IFS
> > +        IFS=","
> > +        for dep in $(dpkg-deb -f $pkg Depends); do
> > +            dep_name=$(echo "$dep"|awk '{print$1}')
> > +            # Don't install internal package inter-dependencies from apt
> > +            echo $dep_name | grep -q openvswitch && continue
> > +            deps+=" $dep_name"
> > +        done
> > +        IFS=$_ifs
> > +    done
> > +    # install package dependencies from apt
> > +    echo $deps | xargs sudo apt -y install
> > +    # install the locally built openvswitch packages
> > +    sudo dpkg -i $packages
> >      exit 0
> >  fi
> >
> > diff --git a/.github/workflows/build-and-test.yml 
> > b/.github/workflows/build-and-test.yml
> > index ec34a9b0d..b36282ce5 100644
> > --- a/.github/workflows/build-and-test.yml
> > +++ b/.github/workflows/build-and-test.yml
> > @@ -9,13 +9,10 @@ jobs:
> >          automake libtool gcc bc libjemalloc1 libjemalloc-dev    \
> >          libssl-dev llvm-dev libelf-dev libnuma-dev libpcap-dev  \
> >          ninja-build selinux-policy-dev
> > -      deb_dependencies: |
> > -        linux-headers-$(uname -r) build-essential fakeroot devscripts 
> > equivs
> >        AFXDP:       ${{ matrix.afxdp }}
> >        ASAN:        ${{ matrix.asan }}
> >        UBSAN:       ${{ matrix.ubsan }}
> >        CC:          ${{ matrix.compiler }}
> > -      DEB_PACKAGE: ${{ matrix.deb_package }}
> >        DPDK:        ${{ matrix.dpdk }}
> >        DPDK_SHARED: ${{ matrix.dpdk_shared }}
> >        KERNEL:      ${{ matrix.kernel }}
> > @@ -148,11 +145,7 @@ jobs:
> >      - name: update APT cache
> >        run:  sudo apt update || true
> >      - name: install common dependencies
> > -      if:   matrix.deb_package == ''
> >        run:  sudo apt install -y ${{ env.dependencies }}
> > -    - name: install dependencies for debian packages
> > -      if:   matrix.deb_package != ''
> > -      run:  sudo apt install -y ${{ env.deb_dependencies }}
> >      - name: install libunbound libunwind
> >        if:   matrix.m32 == ''
> >        run:  sudo apt install -y libunbound-dev libunwind-dev
> > @@ -163,13 +156,6 @@ jobs:
> >      - name: build
> >        run:  ./.ci/linux-build.sh
> >
> > -    - name: upload deb packages
> > -      if:   matrix.deb_package != ''
> > -      uses: actions/upload-artifact@v2
> > -      with:
> > -        name: deb-packages
> > -        path: '/home/runner/work/ovs/*.deb'
> > -
> >      - name: copy logs on failure
> >        if: failure() || cancelled()
> >        run: |
> > @@ -224,3 +210,51 @@ jobs:
> >        with:
> >          name: logs-osx-clang---disable-ssl
> >          path: config.log
> > +
> > +  build-linux-deb:
> > +    env:
> > +      deb_dependencies: |
> > +        linux-headers-$(uname -r) build-essential fakeroot devscripts 
> > equivs
> > +      DEB_PACKAGE: ${{ matrix.deb_package }}
>
> We should, porbbaly, just remove the 'matrix' from this job
> and define env variables directly. i.e.:
>
>        DEB_PACKAGE: yes
>
> > +
> > +    name: linux ${{ join(matrix.*, ' ') }}
>
> And here just:
>        name: linux deb
> Or something along these lines.
>
> > +    runs-on: ubuntu-22.04
> > +    timeout-minutes: 30
> > +
> > +    strategy:
> > +      fail-fast: false
> > +      matrix:
> > +        include:
> > +          - compiler:     gcc
> > +            deb_package:  deb
>
> The 'matrix' section can be just removed this way.
> And we're not using the 'compiler' anywhere.

Ack, I'll incorporate the proposed changes. Thx!

-- 
Frode Nordahl

> > +
> > +    steps:
> > +    - name: checkout
> > +      uses: actions/checkout@v2
> > +
> > +    - name: update PATH
> > +      run:  |
> > +        echo "$HOME/bin"        >> $GITHUB_PATH
> > +        echo "$HOME/.local/bin" >> $GITHUB_PATH
> > +
> > +    - name: set up python
> > +      uses: actions/setup-python@v2
> > +      with:
> > +        python-version: '3.9'
> > +
> > +    - name: update APT cache
> > +      run:  sudo apt update || true
> > +    - name: install dependencies for debian packages
> > +      run:  sudo apt install -y ${{ env.deb_dependencies }}
> > +
> > +    - name: prepare
> > +      run:  ./.ci/linux-prepare.sh
> > +
> > +    - name: build
> > +      run:  ./.ci/linux-build.sh
> > +
> > +    - name: upload deb packages
> > +      uses: actions/upload-artifact@v2
> > +      with:
> > +        name: deb-packages
> > +        path: '/home/runner/work/ovs/*.deb'
>
_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to