diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5472f22..88e6c57 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -46,10 +46,10 @@ jobs: strategy: fail-fast: false matrix: - go: [ '1.11', '1.12', '1.13' ] + go: [ '1.11', '1.12', '1.13', '1.14' ] name: Go ${{ matrix.go }} - runs-on: ubuntu-18.04 + runs-on: ubuntu-20.04 steps: - name: Set up Go @@ -71,13 +71,13 @@ jobs: fail-fast: false name: Go (dynamic) - runs-on: ubuntu-18.04 + runs-on: ubuntu-20.04 steps: - name: Set up Go uses: actions/setup-go@v1 with: - go-version: '1.13' + go-version: '1.14' id: go - name: Check out code into the Go module directory uses: actions/checkout@v1 @@ -87,3 +87,47 @@ jobs: make build-libgit2-dynamic - name: Test run: make test-dynamic + + build-system-dynamic: + strategy: + fail-fast: false + name: Go (system-wide, dynamic) + + runs-on: ubuntu-20.04 + + steps: + - name: Set up Go + uses: actions/setup-go@v1 + with: + go-version: '1.14' + id: go + - name: Check out code into the Go module directory + uses: actions/checkout@v1 + - name: Build libgit2 + run: | + git submodule update --init + sudo ./script/build-libgit2.sh --dynamic --system + - name: Test + run: make test + + build-system-static: + strategy: + fail-fast: false + name: Go (system-wide, static) + + runs-on: ubuntu-20.04 + + steps: + - name: Set up Go + uses: actions/setup-go@v1 + with: + go-version: '1.14' + id: go + - name: Check out code into the Go module directory + uses: actions/checkout@v1 + - name: Build libgit2 + run: | + git submodule update --init + sudo ./script/build-libgit2.sh --static --system + - name: Test + run: go test --count=1 --tags "static,system_libgit2" ./... diff --git a/README.md b/README.md index 771c248..20c11e0 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ The `master` branch follows the tip of libgit2 itself (with some lag) and as suc ### Which branch to send Pull requests to -If there's something version-specific that you'd want to contribute to, you can send them to the `release-${MAJOR}-${MINOR}` branches, which follow libgit2's releases. +If there's something version-specific that you'd want to contribute to, you can send them to the `release-${MAJOR}.${MINOR}` branches, which follow libgit2's releases. Installing ---------- diff --git a/script/build-libgit2.sh b/script/build-libgit2.sh index fbb05ab..3cbfa4e 100755 --- a/script/build-libgit2.sh +++ b/script/build-libgit2.sh @@ -6,40 +6,61 @@ set -e -if [ "$#" -eq "0" ]; then - echo "Usage: $0 <--dynamic|--static>">&2 +usage() { + echo "Usage: $0 <--dynamic|--static> [--system]">&2 exit 1 +} + +if [ "$#" -eq "0" ]; then + usage fi ROOT="$(cd "$(dirname "$0")/.." && echo "${PWD}")" VENDORED_PATH="${ROOT}/vendor/libgit2" +BUILD_SYSTEM=OFF -case "$1" in - --static) - BUILD_PATH="${ROOT}/static-build" - BUILD_SHARED_LIBS=OFF - ;; +while [ $# -gt 0 ]; do + case "$1" in + --static) + BUILD_PATH="${ROOT}/static-build" + BUILD_SHARED_LIBS=OFF + ;; - --dynamic) - BUILD_PATH="${ROOT}/dynamic-build" - BUILD_SHARED_LIBS=ON - ;; + --dynamic) + BUILD_PATH="${ROOT}/dynamic-build" + BUILD_SHARED_LIBS=ON + ;; - *) - echo "Usage: $0 <--dynamic|--static>">&2 - exit 1 - ;; -esac + --system) + BUILD_SYSTEM=ON + ;; -mkdir -p "${BUILD_PATH}/build" "${BUILD_PATH}/install/lib" + *) + usage + ;; + esac + shift +done +if [ -z "${BUILD_SHARED_LIBS}" ]; then + usage +fi + +if [ "${BUILD_SYSTEM}" = "ON" ]; then + BUILD_INSTALL_PREFIX="/usr" +else + BUILD_INSTALL_PREFIX="${BUILD_PATH}/install" + mkdir -p "${BUILD_PATH}/install/lib" +fi + +mkdir -p "${BUILD_PATH}/build" && cd "${BUILD_PATH}/build" && cmake -DTHREADSAFE=ON \ -DBUILD_CLAR=OFF \ -DBUILD_SHARED_LIBS"=${BUILD_SHARED_LIBS}" \ -DCMAKE_C_FLAGS=-fPIC \ -DCMAKE_BUILD_TYPE="RelWithDebInfo" \ - -DCMAKE_INSTALL_PREFIX="${BUILD_PATH}/install" \ + -DCMAKE_INSTALL_PREFIX="${BUILD_INSTALL_PREFIX}" \ "${VENDORED_PATH}" && exec cmake --build . --target install