]> granicus.if.org Git - libevent/commitdiff
Add CI checks for OpenBSD (#1326)
authorneil <github@neilpang.com>
Sun, 13 Nov 2022 12:39:17 +0000 (20:39 +0800)
committerGitHub <noreply@github.com>
Sun, 13 Nov 2022 12:39:17 +0000 (15:39 +0300)
Initially 6.9 and 7.1 had been added, however due to some issues (you can read
about them below) 6.9 had been disabled.

netbsd 6.9 does not have correct library namings for autotools:

    2022-08-17T04:59:58.8339420Z libtool: link: (cd ".libs" && rm -f "libevent.so.1.0" && ln -s "libevent-2.2.so.1.0" "libevent.so.1.0")

    $ grep ^library_names= libevent.la·
    library_names='libevent-2.2.so.1.0 libevent.so.1.0'

    # And this is wrong, it should be:
    libtool: link: (cd ".libs" && rm -f "libevent-2.2.so.1" && ln -s "libevent-2.2.so.1.0.0" "libevent-2.2.so.1")
    libtool: link: (cd ".libs" && rm -f "libevent.so" && ln -s "libevent-2.2.so.1.0.0" "libevent.so")
    library_names='libevent-2.2.so.1.0.0 libevent-2.2.so.1 libevent.so'

**And I think that 7.1 should also fail, however it has system-wide libevent installed with evdns in the libevent.so**

Also there are some issues with `TEST_EXPORT_SHARED` test, because of libraries naming:

    2022-09-13T06:38:29.2150790Z [test-export] test for install tree(in system-wide path)
    2022-09-13T06:38:29.2151500Z [test-export] fail: link core and run core expects success but gets failure.
    2022-09-13T06:38:29.2063870Z /usr/bin/cc CMakeFiles/test-export.dir/test-export.c.o -o test-export   -L/usr/local/lib  -Wl,-z,origin,-rpath,/usr/local/lib -levent_core-2.2 -lpthread -Wl,-rpath-link,/usr/X11R6/lib:/usr/local/lib·
    2022-09-13T06:38:29.2152190Z ld: error: unable to find library -levent_core-2.2

    2022-09-13T06:38:28.3915680Z -- Install configuration: "Release"
    2022-09-13T06:38:28.3916700Z -- Up-to-date: /usr/local/lib/libevent_core-2.2.so.1.0.0
    2022-09-13T06:38:28.3917110Z -- Up-to-date: /usr/local/lib/libevent_core-2.2.so.1
    2022-09-13T06:38:28.3917480Z -- Up-to-date: /usr/local/lib/libevent_core.so
    # no libevent_core-2.2.so

So I have to disable it too.

Co-authored-by: Azat Khuzhin <azat@libevent.org>
.github/workflows/build.yml
test-export/test-export.py

index 9a02f2633121953cbe5c689bffb6333ebfbb1e9d..ad3a4d2b3f34dfccc6217a4a5a66ee45bf8fe3f5 100644 (file)
@@ -923,3 +923,191 @@ jobs:
           name: freebsd-${{ matrix.release }}-autotools-${{ matrix.EVENT_MATRIX }}-build
           path: build
 
+  openbsd-cmake-job:
+    runs-on: macos-12
+    if: "!contains(github.event.head_commit.message, 'ci/openbsd skip') && !contains(github.event.head_commit.message, 'ci/openbsd/cmake skip')"
+    strategy:
+      fail-fast: false
+      matrix:
+        release: [
+          # 6.9 has some issues with autoconf/autotools [1].
+          #   [1]: https://github.com/libevent/libevent/pull/1326#issuecomment-1229531718
+          #"6.9",
+          "7.1",
+        ]
+        EVENT_MATRIX:
+          - NONE
+          - NO_SSL
+          - DISABLE_OPENSSL
+          - DISABLE_THREAD_SUPPORT
+          - DISABLE_DEBUG_MODE
+          - DISABLE_MM_REPLACEMENT
+          - TEST_EXPORT_STATIC
+          # For now this test is disabled due to incorrect library paths [1].
+          #   [1]: https://github.com/libevent/libevent/pull/1326#issuecomment-1245159690
+          #
+          # - TEST_EXPORT_SHARED
+
+    steps:
+      - uses: actions/checkout@v2.0.0
+
+      - name: Cache Build
+        uses: actions/cache@v2
+        with:
+          path: build
+          key: openbsd-${{ matrix.release }}-cmake-${{ matrix.EVENT_MATRIX }}-v1
+
+      - name: Build
+        uses: vmactions/openbsd-vm@v0
+        with:
+          release: ${{ matrix.release }}
+          prepare: |
+            pkg_add  mbedtls cmake python3
+          usesh: true
+          run: |
+            if [ "${{ matrix.EVENT_MATRIX }}" == "DISABLE_OPENSSL" ]; then
+              EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_OPENSSL=ON"
+            
+            elif [ "${{ matrix.EVENT_MATRIX }}" == "NO_SSL" ]; then
+              EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_OPENSSL=ON -DEVENT__DISABLE_MBEDTLS=ON"
+            
+            elif [ "${{ matrix.EVENT_MATRIX }}" == "DISABLE_THREAD_SUPPORT" ]; then
+              EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_THREAD_SUPPORT=ON"
+            
+            elif [ "${{ matrix.EVENT_MATRIX }}" == "DISABLE_DEBUG_MODE" ]; then
+              EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_DEBUG_MODE=ON"
+            
+            elif [ "${{ matrix.EVENT_MATRIX }}" == "DISABLE_MM_REPLACEMENT" ]; then
+              EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_MM_REPLACEMENT=ON"
+            
+            elif [ "${{ matrix.EVENT_MATRIX }}" == "TEST_EXPORT_STATIC" ]; then
+              EVENT_CMAKE_OPTIONS="-DEVENT__LIBRARY_TYPE=STATIC -DEVENT__DISABLE_TESTS=ON -DEVENT__DISABLE_SAMPLES=ON"
+            
+            elif [ "${{ matrix.EVENT_MATRIX }}" == "TEST_EXPORT_SHARED" ]; then
+              EVENT_CMAKE_OPTIONS="-DEVENT__LIBRARY_TYPE=SHARED -DEVENT__DISABLE_TESTS=ON -DEVENT__DISABLE_SAMPLES=ON"
+            
+            else
+              EVENT_CMAKE_OPTIONS=""
+            fi
+            EVENT_CMAKE_OPTIONS="$EVENT_CMAKE_OPTIONS -DMBEDTLS_ROOT_DIR=/usr/local/opt/mbedtls@2"
+            
+            mkdir -p build
+            cd build
+            echo [cmake]: cmake .. $EVENT_CMAKE_OPTIONS
+            cmake .. $EVENT_CMAKE_OPTIONS || (rm -rf * && cmake .. $EVENT_CMAKE_OPTIONS)
+            cmake --build .
+
+      - name: Test
+        uses: nick-fields/retry@v2
+        with:
+          max_attempts: 5
+          timeout_minutes: 20
+          shell: bash
+          command: |
+            ssh openbsd sh <<EOF
+            cd $GITHUB_WORKSPACE
+            JOBS=1
+            export CTEST_PARALLEL_LEVEL=$JOBS
+            export CTEST_OUTPUT_ON_FAILURE=1
+            cd build
+            if [ "${{ matrix.EVENT_MATRIX }}" == "TEST_EXPORT_STATIC" ]; then
+              python3 ../test-export/test-export.py static
+            elif [ "${{ matrix.EVENT_MATRIX }}" == "TEST_EXPORT_SHARED" ]; then
+              python3 ../test-export/test-export.py shared
+            else
+              cmake --build . --target verify
+            fi
+            EOF
+
+      - uses: actions/upload-artifact@v1
+        if: failure()
+        with:
+          name: openbsd-${{ matrix.release }}-cmake-${{ matrix.EVENT_MATRIX }}-build
+          path: .
+
+  openbsd-autotools-job:
+    runs-on: macos-12
+    if: "!contains(github.event.head_commit.message, 'ci/openbsd skip') && !contains(github.event.head_commit.message, 'ci/openbsd/autotools skip')"
+    strategy:
+      fail-fast: false
+      matrix:
+        release: [
+          # 6.9 has some issues with autoconf/autotools [1].
+          #   [1]: https://github.com/libevent/libevent/pull/1326#issuecomment-1229531718
+          #"6.9",
+          "7.1",
+        ]
+        EVENT_MATRIX:
+          - NONE
+          - NO_SSL
+          - DISABLE_OPENSSL
+          - DISABLE_THREAD_SUPPORT
+          - DISABLE_DEBUG_MODE
+          - DISABLE_MM_REPLACEMENT
+
+    steps:
+      - uses: actions/checkout@v2.0.0
+
+      - name: Cache Build
+        uses: actions/cache@v2
+        with:
+          path: build
+          key: openbsd-${{ matrix.release }}-autotools-${{ matrix.EVENT_MATRIX }}-v1
+
+
+      - name: Build
+        uses: vmactions/openbsd-vm@v0
+        with:
+          release: ${{ matrix.release }}
+          prepare: |
+            pkg_add  mbedtls  python3 automake-1.16.3  autoconf-2.71  libtool pkgconf
+          usesh: true
+          run: |
+            export AUTOMAKE_VERSION=1.16
+            export AUTOCONF_VERSION=2.71
+            
+            if [ "${{ matrix.EVENT_MATRIX }}" == "DISABLE_OPENSSL" ]; then
+              EVENT_CONFIGURE_OPTIONS="--disable-openssl"
+            
+            elif [ "${{ matrix.EVENT_MATRIX }}" == "NO_SSL" ]; then
+              EVENT_CONFIGURE_OPTIONS="--disable-openssl --disable-mbedtls"
+            
+            elif [ "${{ matrix.EVENT_MATRIX }}" == "DISABLE_THREAD_SUPPORT" ]; then
+              EVENT_CONFIGURE_OPTIONS="--disable-thread-support"
+            
+            elif [ "${{ matrix.EVENT_MATRIX }}" == "DISABLE_DEBUG_MODE" ]; then
+              EVENT_CONFIGURE_OPTIONS="--disable-debug-mode"
+            
+            elif [ "${{ matrix.EVENT_MATRIX }}" == "DISABLE_MM_REPLACEMENT" ]; then
+              EVENT_CONFIGURE_OPTIONS="--disable-malloc-replacement"
+            
+            else
+              EVENT_CONFIGURE_OPTIONS=""
+            fi
+            
+            ./autogen.sh
+            mkdir -p build
+            cd build
+            echo [configure]: ../configure $EVENT_CONFIGURE_OPTIONS
+            ../configure $EVENT_CONFIGURE_OPTIONS
+            make V=1
+
+      - name: Test
+        uses: nick-fields/retry@v2
+        with:
+          max_attempts: 5
+          timeout_minutes: 20
+          shell: bash
+          command: |
+            ssh openbsd sh <<EOF
+            cd $GITHUB_WORKSPACE
+            JOBS=1
+            cd build
+            make verify
+            EOF
+
+      - uses: actions/upload-artifact@v1
+        if: failure()
+        with:
+          name: openbsd-${{ matrix.release }}-autotools-${{ matrix.EVENT_MATRIX }}-build
+          path: .
index 3320e3b281ebd5e5b4f0ad80223ec3e19f92e5cd..9eaf0d63796dd4cf1bedcf9f063c94dbdc19e066 100644 (file)
@@ -26,10 +26,7 @@ else:
 
 
 def exec_cmd(cmd, silent):
-    if silent:
-        p = subprocess.Popen(cmd, stdout=FNULL, stderr=FNULL, shell=True)
-    else:
-        p = subprocess.Popen(cmd, shell=True)
+    p = subprocess.Popen(cmd, shell=True)
     p.communicate()
     return p.poll()
 
@@ -47,7 +44,7 @@ def link_and_run(link, code):
     Returns:
         Returns 0 if links and runs successfully, otherwise 1.
     """
-    exec_cmd("cmake --build . --target clean", True)
+    exec_cmd("cmake --build . -v --target clean", True)
     arch = ''
     if platform.system() == "Windows":
         arch = '-A x64'
@@ -57,7 +54,7 @@ def link_and_run(link, code):
         cmd = "".join([cmd, " -DLIBEVENT_STATIC_LINK=1"])
     r = exec_cmd(cmd, True)
     if r == 0:
-        r = exec_cmd('cmake --build .', True)
+        r = exec_cmd('cmake --build . -v', True)
         if r == 0:
             r = exec_cmd('ctest', True)
     if r != 0:
@@ -177,7 +174,7 @@ if platform.system() == "Windows":
 else:
     prefix = "/usr/local"
 exec_cmd('cmake -DCMAKE_SKIP_INSTALL_RPATH=OFF -DCMAKE_INSTALL_PREFIX="%s" ..' % prefix, True)
-exec_cmd('cmake --build . --target install', True)
+exec_cmd('cmake --build . -v --target install', True)
 config_backup()
 os.environ["CMAKE_PREFIX_PATH"] = os.path.join(prefix, "lib/cmake/libevent")
 export_dll(dllpath)
@@ -189,11 +186,11 @@ del os.environ["CMAKE_PREFIX_PATH"]
 # into a temporary directory. Same as above, remove LibeventConfig.cmake from
 # build directory to avoid confusion when using find_package().
 print("[test-export] test for install tree(in non-system-wide path)")
-exec_cmd("cmake --build . --target uninstall", True)
+exec_cmd("cmake --build . -v --target uninstall", True)
 tempdir = tempfile.TemporaryDirectory()
 cmd = 'cmake -DCMAKE_SKIP_INSTALL_RPATH=OFF -DCMAKE_INSTALL_PREFIX="%s" ..' % tempdir.name
 exec_cmd(cmd, True)
-exec_cmd("cmake --build . --target install", True)
+exec_cmd("cmake --build . -v --target install", True)
 config_backup()
 os.environ["CMAKE_PREFIX_PATH"] = os.path.join(tempdir.name, "lib/cmake/libevent")
 dllpath = os.path.join(tempdir.name, "lib")