summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.appveyor.yml36
-rw-r--r--.github/workflows/build.yml101
-rw-r--r--.travis.yml88
-rw-r--r--README.md3
4 files changed, 102 insertions, 126 deletions
diff --git a/.appveyor.yml b/.appveyor.yml
deleted file mode 100644
index 448f183..0000000
--- a/.appveyor.yml
+++ /dev/null
@@ -1,36 +0,0 @@
-# Build matrix / environment variables are explained on:
-# https://www.appveyor.com/docs/appveyor-yml/
-# This file can be validated on: https://ci.appveyor.com/tools/validate-yaml
-
-version: "{build}"
-
-environment:
- matrix:
- # AppVeyor currently has no custom job name feature.
- # http://help.appveyor.com/discussions/questions/1623-can-i-provide-a-friendly-name-for-jobs
- - JOB: Visual Studio 2019
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
- CMAKE_GENERATOR: Visual Studio 16 2019
-
-platform:
- - x86
- - x64
-
-configuration:
- - RelWithDebInfo
- - Debug
-
-build_script:
- - git submodule update --init --recursive
- - mkdir build
- - cd build
- - if "%platform%"=="x86" (set CMAKE_GENERATOR_PLATFORM="Win32")
- else (set CMAKE_GENERATOR_PLATFORM="%platform%")
- - cmake --version
- - cmake .. -G "%CMAKE_GENERATOR%" -A "%CMAKE_GENERATOR_PLATFORM%"
- -DCMAKE_CONFIGURATION_TYPES="%CONFIGURATION%"
- - cmake --build . --config "%CONFIGURATION%"
- - cd ..
-
-test_script:
- - cd build && ctest --verbose --build-config "%CONFIGURATION%" && cd ..
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
new file mode 100644
index 0000000..efb81ee
--- /dev/null
+++ b/.github/workflows/build.yml
@@ -0,0 +1,101 @@
+# Copyright 2021 The LevelDB Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file. See the AUTHORS file for names of contributors.
+
+name: ci
+on: [push, pull_request]
+
+permissions:
+ contents: read
+
+jobs:
+ build-and-test:
+ name: >-
+ CI
+ ${{ matrix.os }}
+ ${{ matrix.compiler }}
+ ${{ matrix.optimized && 'release' || 'debug' }}
+ runs-on: ${{ matrix.os }}
+ strategy:
+ fail-fast: false
+ matrix:
+ compiler: [clang, gcc, msvc]
+ os: [ubuntu-latest, macos-latest, windows-latest]
+ optimized: [true, false]
+ exclude:
+ # MSVC only works on Windows.
+ - os: ubuntu-latest
+ compiler: msvc
+ - os: macos-latest
+ compiler: msvc
+ # Not testing with GCC on macOS.
+ - os: macos-latest
+ compiler: gcc
+ # Only testing with MSVC on Windows.
+ - os: windows-latest
+ compiler: clang
+ - os: windows-latest
+ compiler: gcc
+ include:
+ - compiler: clang
+ CC: clang
+ CXX: clang++
+ - compiler: gcc
+ CC: gcc
+ CXX: g++
+ - compiler: msvc
+ CC:
+ CXX:
+
+ env:
+ CMAKE_BUILD_DIR: ${{ github.workspace }}/build
+ CMAKE_BUILD_TYPE: ${{ matrix.optimized && 'RelWithDebInfo' || 'Debug' }}
+ CC: ${{ matrix.CC }}
+ CXX: ${{ matrix.CXX }}
+ BINARY_SUFFIX: ${{ startsWith(matrix.os, 'windows') && '.exe' || '' }}
+ BINARY_PATH: >-
+ ${{ format(
+ startsWith(matrix.os, 'windows') && '{0}\build\{1}\' || '{0}/build/',
+ github.workspace,
+ matrix.optimized && 'RelWithDebInfo' || 'Debug') }}
+
+ steps:
+ - uses: actions/checkout@v2
+ with:
+ submodules: true
+
+ - name: Install dependencies on Linux
+ if: ${{ runner.os == 'Linux' }}
+ run: |
+ sudo apt-get update
+ sudo apt-get install libgoogle-perftools-dev libkyotocabinet-dev \
+ libsnappy-dev libsqlite3-dev
+
+ - name: Generate build config
+ run: >-
+ cmake -S "${{ github.workspace }}" -B "${{ env.CMAKE_BUILD_DIR }}"
+ -DCMAKE_BUILD_TYPE=${{ env.CMAKE_BUILD_TYPE }}
+ -DCMAKE_INSTALL_PREFIX=${{ runner.temp }}/install_test/
+
+ - name: Build
+ run: >-
+ cmake --build "${{ env.CMAKE_BUILD_DIR }}"
+ --config "${{ env.CMAKE_BUILD_TYPE }}"
+
+ - name: Run Tests
+ working-directory: ${{ github.workspace }}/build
+ run: ctest -C "${{ env.CMAKE_BUILD_TYPE }}" --verbose
+
+ - name: Run LevelDB Benchmarks
+ run: ${{ env.BINARY_PATH }}db_bench${{ env.BINARY_SUFFIX }}
+
+ - name: Run SQLite Benchmarks
+ if: ${{ runner.os != 'Windows' }}
+ run: ${{ env.BINARY_PATH }}db_bench_sqlite3${{ env.BINARY_SUFFIX }}
+
+ - name: Run Kyoto Cabinet Benchmarks
+ if: ${{ runner.os == 'Linux' && matrix.compiler == 'clang' }}
+ run: ${{ env.BINARY_PATH }}db_bench_tree_db${{ env.BINARY_SUFFIX }}
+
+ - name: Test CMake installation
+ run: cmake --build "${{ env.CMAKE_BUILD_DIR }}" --target install
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index ad59b19..0000000
--- a/.travis.yml
+++ /dev/null
@@ -1,88 +0,0 @@
-# Build matrix / environment variables are explained on:
-# http://about.travis-ci.org/docs/user/build-configuration/
-# This file can be validated on: http://lint.travis-ci.org/
-
-language: cpp
-dist: bionic
-osx_image: xcode12.5
-
-compiler:
-- gcc
-- clang
-os:
-- linux
-- osx
-
-env:
-- BUILD_TYPE=Debug
-- BUILD_TYPE=RelWithDebInfo
-
-jobs:
- allow_failures:
- # Homebrew's GCC is currently broken on XCode 11.
- - compiler: gcc
- os: osx
-
-addons:
- apt:
- sources:
- - sourceline: 'deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-12 main'
- key_url: 'https://apt.llvm.org/llvm-snapshot.gpg.key'
- - sourceline: 'ppa:ubuntu-toolchain-r/test'
- packages:
- - clang-12
- - cmake
- - gcc-11
- - g++-11
- - libgoogle-perftools-dev
- - libkyotocabinet-dev
- - libsnappy-dev
- - libsqlite3-dev
- - ninja-build
- homebrew:
- packages:
- - cmake
- - crc32c
- - gcc@11
- - gperftools
- - kyoto-cabinet
- - llvm@12
- - ninja
- - snappy
- - sqlite3
- update: true
-
-install:
-# The following Homebrew packages aren't linked by default, and need to be
-# prepended to the path explicitly.
-- if [ "$TRAVIS_OS_NAME" = "osx" ]; then
- export PATH="$(brew --prefix llvm)/bin:$PATH";
- fi
-# /usr/bin/gcc points to an older compiler on both Linux and macOS.
-- if [ "$CXX" = "g++" ]; then export CXX="g++-11" CC="gcc-11"; fi
-# /usr/bin/clang points to an older compiler on both Linux and macOS.
-#
-# Homebrew's llvm package doesn't ship a versioned clang++ binary, so the values
-# below don't work on macOS. Fortunately, the path change above makes the
-# default values (clang and clang++) resolve to the correct compiler on macOS.
-- if [ "$TRAVIS_OS_NAME" = "linux" ]; then
- if [ "$CXX" = "clang++" ]; then export CXX="clang++-12" CC="clang-12"; fi;
- fi
-- echo ${CC}
-- echo ${CXX}
-- ${CXX} --version
-- cmake --version
-
-before_script:
-- mkdir -p build && cd build
-- cmake .. -G Ninja -DCMAKE_BUILD_TYPE=$BUILD_TYPE
- -DCMAKE_INSTALL_PREFIX=$HOME/.local
-- cmake --build .
-- cd ..
-
-script:
-- cd build && ctest --verbose && cd ..
-- "if [ -f build/db_bench ] ; then build/db_bench ; fi"
-- "if [ -f build/db_bench_sqlite3 ] ; then build/db_bench_sqlite3 ; fi"
-- "if [ -f build/db_bench_tree_db ] ; then build/db_bench_tree_db ; fi"
-- cd build && cmake --build . --target install
diff --git a/README.md b/README.md
index 81144dd..3c4d14d 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,6 @@
**LevelDB is a fast key-value storage library written at Google that provides an ordered mapping from string keys to string values.**
-[![Build Status](https://travis-ci.org/google/leveldb.svg?branch=master)](https://travis-ci.org/google/leveldb)
-[![Build status](https://ci.appveyor.com/api/projects/status/g2j5j4rfkda6eyw5/branch/master?svg=true)](https://ci.appveyor.com/project/pwnall/leveldb)
+[![ci](https://github.com/google/leveldb/actions/workflows/build.yml/badge.svg)](https://github.com/google/leveldb/actions/workflows/build.yml)
Authors: Sanjay Ghemawat (sanjay@google.com) and Jeff Dean (jeff@google.com)