gh-actions: workflows/ci
authorMichael Wallner <mike@php.net>
Tue, 12 Jan 2021 16:49:25 +0000 (17:49 +0100)
committerMichael Wallner <mike@php.net>
Tue, 12 Jan 2021 16:49:25 +0000 (17:49 +0100)
.github/workflows/ci.yml [new file with mode: 0644]
.gitmodules
.travis.yml [deleted file]
README.md
scripts/ci [new submodule]
scripts/gen_github_workflow_ci.php [new file with mode: 0755]
travis/brotli.sh [deleted file]
travis/pecl [deleted submodule]

diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644 (file)
index 0000000..9eee78c
--- /dev/null
@@ -0,0 +1,316 @@
+# generated file; do not edit!
+
+name: ci
+on:
+  workflow_dispatch:
+  push:
+  pull_request:
+
+jobs:
+  master-0:
+    name: master-0
+    continue-on-error: true
+    env:
+      PHP: master
+      enable_debug: yes
+      enable_zts: yes
+      enable_iconv: yes
+    steps:
+      - uses: actions/checkout@v2
+      - name: Install
+        run: |
+          sudo apt-get install -y \
+            php-cli \
+            php-pear \
+            libcurl4-openssl-dev \
+            libidn11-dev \
+            libidn2-0-dev \
+            libicu-dev \
+            libevent-dev \
+            libbrotli-dev
+      - name: Prepare
+        run: |
+          make -f scripts/ci/Makefile php || make -f scripts/ci/Makefile clean php
+          make -f scripts/ci/Makefile pecl PECL=m6w6/ext-raphf.git:raphf:master
+      - name: Build
+        run: |
+          make -f travis/pecl/Makefile ext PECL=http
+      - name: Test
+        run: |
+          make -f travis/pecl/Makefile test
+
+  cur-none-0:
+    name: cur-none-0
+    env:
+      PHP: 8.0
+      with_http_libicu_dir: no
+      with_http_libidn_dir: no
+      with_http_libidn2_dir: no
+      with_http_libcurl_dir: no
+      with_http_libevent_dir: no
+      with_http_libbrotli_dir: no
+    steps:
+      - uses: actions/checkout@v2
+      - name: Install
+        run: |
+          sudo apt-get install -y \
+            php-cli \
+            php-pear \
+            libcurl4-openssl-dev \
+            libidn11-dev \
+            libidn2-0-dev \
+            libicu-dev \
+            libevent-dev \
+            libbrotli-dev
+      - name: Prepare
+        run: |
+          make -f scripts/ci/Makefile php || make -f scripts/ci/Makefile clean php
+          make -f scripts/ci/Makefile pecl PECL=m6w6/ext-raphf.git:raphf:master
+      - name: Build
+        run: |
+          make -f travis/pecl/Makefile ext PECL=http
+      - name: Test
+        run: |
+          make -f travis/pecl/Makefile test
+
+  cur-dbg-zts-0:
+    name: cur-dbg-zts-0
+    env:
+      PHP: 8.0
+      enable_debug: yes
+      enable_zts: yes
+      enable_iconv: yes
+    steps:
+      - uses: actions/checkout@v2
+      - name: Install
+        run: |
+          sudo apt-get install -y \
+            php-cli \
+            php-pear \
+            libcurl4-openssl-dev \
+            libidn11-dev \
+            libidn2-0-dev \
+            libicu-dev \
+            libevent-dev \
+            libbrotli-dev
+      - name: Prepare
+        run: |
+          make -f scripts/ci/Makefile php || make -f scripts/ci/Makefile clean php
+          make -f scripts/ci/Makefile pecl PECL=m6w6/ext-raphf.git:raphf:master
+      - name: Build
+        run: |
+          make -f travis/pecl/Makefile ext PECL=http
+      - name: Test
+        run: |
+          make -f travis/pecl/Makefile test
+
+  cur-dbg-zts-1:
+    name: cur-dbg-zts-1
+    env:
+      PHP: 8.0
+      enable_debug: no
+      enable_zts: yes
+      enable_iconv: yes
+    steps:
+      - uses: actions/checkout@v2
+      - name: Install
+        run: |
+          sudo apt-get install -y \
+            php-cli \
+            php-pear \
+            libcurl4-openssl-dev \
+            libidn11-dev \
+            libidn2-0-dev \
+            libicu-dev \
+            libevent-dev \
+            libbrotli-dev
+      - name: Prepare
+        run: |
+          make -f scripts/ci/Makefile php || make -f scripts/ci/Makefile clean php
+          make -f scripts/ci/Makefile pecl PECL=m6w6/ext-raphf.git:raphf:master
+      - name: Build
+        run: |
+          make -f travis/pecl/Makefile ext PECL=http
+      - name: Test
+        run: |
+          make -f travis/pecl/Makefile test
+
+  cur-dbg-zts-2:
+    name: cur-dbg-zts-2
+    env:
+      PHP: 8.0
+      enable_debug: yes
+      enable_zts: no
+      enable_iconv: yes
+    steps:
+      - uses: actions/checkout@v2
+      - name: Install
+        run: |
+          sudo apt-get install -y \
+            php-cli \
+            php-pear \
+            libcurl4-openssl-dev \
+            libidn11-dev \
+            libidn2-0-dev \
+            libicu-dev \
+            libevent-dev \
+            libbrotli-dev
+      - name: Prepare
+        run: |
+          make -f scripts/ci/Makefile php || make -f scripts/ci/Makefile clean php
+          make -f scripts/ci/Makefile pecl PECL=m6w6/ext-raphf.git:raphf:master
+      - name: Build
+        run: |
+          make -f travis/pecl/Makefile ext PECL=http
+      - name: Test
+        run: |
+          make -f travis/pecl/Makefile test
+
+  cur-dbg-zts-3:
+    name: cur-dbg-zts-3
+    env:
+      PHP: 8.0
+      enable_debug: no
+      enable_zts: no
+      enable_iconv: yes
+    steps:
+      - uses: actions/checkout@v2
+      - name: Install
+        run: |
+          sudo apt-get install -y \
+            php-cli \
+            php-pear \
+            libcurl4-openssl-dev \
+            libidn11-dev \
+            libidn2-0-dev \
+            libicu-dev \
+            libevent-dev \
+            libbrotli-dev
+      - name: Prepare
+        run: |
+          make -f scripts/ci/Makefile php || make -f scripts/ci/Makefile clean php
+          make -f scripts/ci/Makefile pecl PECL=m6w6/ext-raphf.git:raphf:master
+      - name: Build
+        run: |
+          make -f travis/pecl/Makefile ext PECL=http
+      - name: Test
+        run: |
+          make -f travis/pecl/Makefile test
+
+  cur-cov-0:
+    name: cur-cov-0
+    env:
+      CFLAGS: '-O0 -g --coverage'
+      CXXFLAGS: '-O0 -g --coverage'
+      PHP: 8.0
+      enable_iconv: yes
+      with_http_libicu_dir: yes
+      with_http_libidn_dir: no
+      with_http_libidn2_dir: no
+    steps:
+      - uses: actions/checkout@v2
+      - name: Install
+        run: |
+          sudo apt-get install -y \
+            php-cli \
+            php-pear \
+            libcurl4-openssl-dev \
+            libidn11-dev \
+            libidn2-0-dev \
+            libicu-dev \
+            libevent-dev \
+            libbrotli-dev
+      - name: Prepare
+        run: |
+          make -f scripts/ci/Makefile php || make -f scripts/ci/Makefile clean php
+          make -f scripts/ci/Makefile pecl PECL=m6w6/ext-raphf.git:raphf:master
+      - name: Build
+        run: |
+          make -f travis/pecl/Makefile ext PECL=http
+      - name: Test
+        run: |
+          make -f travis/pecl/Makefile test
+      - name: Coverage
+        if: success()
+        run: |
+          cd src/.libs
+          bash <(curl -s https://codecov.io/bash) -X xcode -X coveragepy
+
+  cur-cov-1:
+    name: cur-cov-1
+    env:
+      CFLAGS: '-O0 -g --coverage'
+      CXXFLAGS: '-O0 -g --coverage'
+      PHP: 8.0
+      enable_iconv: yes
+      with_http_libicu_dir: no
+      with_http_libidn_dir: yes
+      with_http_libidn2_dir: no
+    steps:
+      - uses: actions/checkout@v2
+      - name: Install
+        run: |
+          sudo apt-get install -y \
+            php-cli \
+            php-pear \
+            libcurl4-openssl-dev \
+            libidn11-dev \
+            libidn2-0-dev \
+            libicu-dev \
+            libevent-dev \
+            libbrotli-dev
+      - name: Prepare
+        run: |
+          make -f scripts/ci/Makefile php || make -f scripts/ci/Makefile clean php
+          make -f scripts/ci/Makefile pecl PECL=m6w6/ext-raphf.git:raphf:master
+      - name: Build
+        run: |
+          make -f travis/pecl/Makefile ext PECL=http
+      - name: Test
+        run: |
+          make -f travis/pecl/Makefile test
+      - name: Coverage
+        if: success()
+        run: |
+          cd src/.libs
+          bash <(curl -s https://codecov.io/bash) -X xcode -X coveragepy
+
+  cur-cov-2:
+    name: cur-cov-2
+    env:
+      CFLAGS: '-O0 -g --coverage'
+      CXXFLAGS: '-O0 -g --coverage'
+      PHP: 8.0
+      enable_iconv: yes
+      with_http_libicu_dir: no
+      with_http_libidn_dir: no
+      with_http_libidn2_dir: yes
+    steps:
+      - uses: actions/checkout@v2
+      - name: Install
+        run: |
+          sudo apt-get install -y \
+            php-cli \
+            php-pear \
+            libcurl4-openssl-dev \
+            libidn11-dev \
+            libidn2-0-dev \
+            libicu-dev \
+            libevent-dev \
+            libbrotli-dev
+      - name: Prepare
+        run: |
+          make -f scripts/ci/Makefile php || make -f scripts/ci/Makefile clean php
+          make -f scripts/ci/Makefile pecl PECL=m6w6/ext-raphf.git:raphf:master
+      - name: Build
+        run: |
+          make -f travis/pecl/Makefile ext PECL=http
+      - name: Test
+        run: |
+          make -f travis/pecl/Makefile test
+      - name: Coverage
+        if: success()
+        run: |
+          cd src/.libs
+          bash <(curl -s https://codecov.io/bash) -X xcode -X coveragepy
+
index e53f88c..95347fa 100644 (file)
@@ -1,4 +1,6 @@
 [submodule "travis-pecl"]
-       path = travis/pecl
+       path = scripts/ci
        url = https://github.com/m6w6/travis-pecl.git
        branch = master
+[submodule "scripts/ci"]
+       url = https://github.com/m6w6/pecl-ci.git
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644 (file)
index 3772dc6..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-# autogenerated file; do not edit
-language: c
-
-addons:
- apt:
-  packages:
-   - php-cli
-   - php-pear
-   - libcurl4-openssl-dev
-   - libidn11-dev
-   - libidn2-0-dev
-   - libicu-dev
-   - libevent-dev
-   - libbrotli-dev
-
-cache:
- apt: true
- directories:
-  - $HOME/cache
-before_cache:
- - find $HOME/cache -name '*.gcda' -o -name '*.gcno' -delete
-
-env:
- - PHP=master enable_debug=yes enable_zts=yes enable_iconv=yes
- - PHP=8.0 with_http_libicu_dir=no with_http_libidn_dir=no with_http_libidn2_dir=no with_http_libcurl_dir=no with_http_libevent_dir=no with_http_libbrotli_dir=no
- - PHP=8.0 enable_debug=no enable_zts=no enable_iconv=yes
- - PHP=8.0 enable_debug=yes enable_zts=no enable_iconv=yes
- - PHP=8.0 enable_debug=no enable_zts=yes enable_iconv=yes
- - PHP=8.0 enable_debug=yes enable_zts=yes enable_iconv=yes
- - CFLAGS='-O0 -g --coverage' CXXFLAGS='-O0 -g --coverage' PHP=8.0 enable_iconv=yes with_http_libicu_dir=yes with_http_libidn_dir=no with_http_libidn2_dir=no 
- - CFLAGS='-O0 -g --coverage' CXXFLAGS='-O0 -g --coverage' PHP=8.0 enable_iconv=yes with_http_libidn_dir=yes with_http_libicu_dir=no with_http_libidn2_dir=no 
- - CFLAGS='-O0 -g --coverage' CXXFLAGS='-O0 -g --coverage' PHP=8.0 enable_iconv=yes with_http_libidn2_dir=yes with_http_libicu_dir=no with_http_libidn_dir=no 
-
-matrix:
- fast_finish: true
- allow_failures:
-  - env: PHP=master enable_debug=yes enable_zts=yes enable_iconv=yes
-
-install:
- - |
-   if test "$PHP" = master; then \
-     make -f travis/pecl/Makefile reconf; \
-     make -f travis/pecl/Makefile pecl-rm pecl-clean PECL=m6w6/ext-raphf.git:raphf:master; \
-   fi
- - make -f travis/pecl/Makefile php || make -f travis/pecl/Makefile clean php
- - make -f travis/pecl/Makefile pecl PECL=m6w6/ext-raphf.git:raphf:master
- - |
-   if test -n "$PECLs"; then \
-     IFS=$','; \
-     for pecl in $PECLs; do \
-       make -f travis/pecl/Makefile pecl PECL=$pecl; \
-     done; \
-     unset IFS; \
-   fi
-
-script:
- - make -f travis/pecl/Makefile ext PECL=http
- - make -f travis/pecl/Makefile test
-
-after_script:
- - make -f travis/pecl/Makefile cppcheck
-after_failure:
- - test -e tests/helper/server.log && cat tests/helper/server.log
-after_success:
- - test -n "$CFLAGS" && cd src/.libs && bash <(curl -s https://codecov.io/bash) -X xcode -X coveragepy
-
-notifications:
- webhooks:
-  urls:
-   - https://webhooks.gitter.im/e/28d35158ac7e385bd14d
-  on_success: change
-  on_failure: always
-  on_start: never
index 68bbe94..8be4afa 100644 (file)
--- a/README.md
+++ b/README.md
@@ -1,11 +1,16 @@
 # ext-http
 
-[![Build Status](https://travis-ci.com/m6w6/ext-http.svg?branch=master)](https://travis-ci.com/m6w6/ext-http)
+[![Build Status](https://github.com/m6w6/ext-http/workflows/ci/badge.svg)](https://github.com/m6w6/ext-http/actions?query=workflow%3Aci)
 [![Coverity Scan Build Status](https://scan.coverity.com/projects/8711/badge.svg)](https://scan.coverity.com/projects/m6w6-ext-http)
 [![codecov](https://codecov.io/gh/m6w6/ext-http/branch/master/graph/badge.svg)](https://codecov.io/gh/m6w6/ext-http)
-[![Join the chat at https://gitter.im/m6w6/ext-http](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/m6w6/ext-http)
 
-Extended HTTP support. Again.
+Extended HTTP support for PHP.
+
+## Branches and Versions:
+
+> **NOTE:**  
+  Use `v3.x` branch, and resp. v3 releases, for PHP-7. `master` and v4 releases are only for PHP-8.
+
 
 ## Documentation
 
@@ -13,7 +18,7 @@ See the [online markdown reference](https://mdref.m6w6.name/http).
 
 Known issues are listed in [BUGS](./BUGS) and future ideas can be found in [TODO](./TODO).
 
-## Installing
+## Install
 
 ### PECL
 
diff --git a/scripts/ci b/scripts/ci
new file mode 160000 (submodule)
index 0000000..5592d53
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 5592d53e5c8cebf7ea9cb65744c37669209b00fc
diff --git a/scripts/gen_github_workflow_ci.php b/scripts/gen_github_workflow_ci.php
new file mode 100755 (executable)
index 0000000..098da48
--- /dev/null
@@ -0,0 +1,96 @@
+#!/usr/bin/env php
+<?php echo "# generated file; do not edit!\n"; ?>
+
+name: ci
+on:
+  workflow_dispatch:
+  push:
+  pull_request:
+
+jobs:
+<?php
+
+$gen = include __DIR__ . "/ci/gen-matrix.php";
+$cur = "8.0";
+$job = $gen->github([
+"master" => [
+// most useful for all additional versions except current
+    "PHP" => ["master"],
+    "enable_debug" => "yes",
+    "enable_zts" => "yes",
+    "enable_iconv" => "yes",
+], 
+"cur-none" => [
+// everything disabled for current
+    "PHP" => $cur,
+    "with_http_libicu_dir" => "no",
+    "with_http_libidn_dir" => "no",
+    "with_http_libidn2_dir" => "no",
+    "with_http_libcurl_dir" => "no",
+    "with_http_libevent_dir" => "no",
+    "with_http_libbrotli_dir" => "no",
+], 
+"cur-dbg-zts" => [
+// everything enabled for current, switching debug/zts
+    "PHP" => $cur,
+    "enable_debug",
+    "enable_zts",
+    "enable_iconv" => "yes",
+], 
+"cur-cov" => [
+// once everything enabled for current, with coverage
+    "CFLAGS" => "'-O0 -g --coverage'",
+    "CXXFLAGS" => "'-O0 -g --coverage'",
+    "PHP" => $cur,
+    "enable_iconv" => "yes",
+    [
+        // mutually exclusive
+        "with_http_libicu_dir",
+        "with_http_libidn_dir",
+        "with_http_libidn2_dir",
+    ],
+]]);
+foreach ($job as $id => $env) {
+    printf("  %s:\n", $id);
+    printf("    name: %s\n", $id);
+    if ($env["PHP"] == "master") {
+        printf("    continue-on-error: true\n");
+    }
+    printf("    env:\n");
+    foreach ($env as $key => $val) {
+        printf("      %s: %s\n", $key, $val);
+    }
+?>
+    steps:
+      - uses: actions/checkout@v2
+      - name: Install
+        run: |
+          sudo apt-get install -y \
+            php-cli \
+            php-pear \
+            libcurl4-openssl-dev \
+            libidn11-dev \
+            libidn2-0-dev \
+            libicu-dev \
+            libevent-dev \
+            libbrotli-dev
+      - name: Prepare
+        run: |
+          make -f scripts/ci/Makefile php || make -f scripts/ci/Makefile clean php
+          make -f scripts/ci/Makefile pecl PECL=m6w6/ext-raphf.git:raphf:master
+      - name: Build
+        run: |
+          make -f travis/pecl/Makefile ext PECL=http
+      - name: Test
+        run: |
+          make -f travis/pecl/Makefile test
+<?php if (isset($env["CFLAGS"]) && strpos($env["CFLAGS"], "--coverage") != false) : ?>
+      - name: Coverage
+        if: success()
+        run: |
+          cd src/.libs
+          bash <(curl -s https://codecov.io/bash) -X xcode -X coveragepy
+<?php endif; ?>
+
+<?php
+}
diff --git a/travis/brotli.sh b/travis/brotli.sh
deleted file mode 100755 (executable)
index d23dd19..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/bash
-
-BROTLI_DIR="$with_http_libbrotli_dir"
-BROTLI_SRC="$BROTLI_DIR.git"
-
-if test -n "$BROTLI_DIR" && test "$BROTLI_DIR" != "no"; then
-       if test -d "$BROTLI_SRC"; then
-               cd "$BROTLI_SRC"
-               git pull
-       else
-               git clone https://github.com/google/brotli.git "$BROTLI_SRC"
-               cd "$BROTLI_SRC"
-       fi
-       git checkout $1
-       ./bootstrap
-       ./configure -C --prefix="$BROTLI_DIR"
-       make -j ${JOBS:2}
-       make install INSTALL=install
-fi
diff --git a/travis/pecl b/travis/pecl
deleted file mode 160000 (submodule)
index 4508f56..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 4508f562f8ef3c07b4490bef0e7563e73ef9a5f0