diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..8d853338 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,88 @@ +name: CI +on: [push, pull_request] + +jobs: + docs: + runs-on: ubuntu-20.04 + env: + COLOR: "ON" + steps: + - uses: actions/checkout@v2 + - name: Install Dependencies + run: sudo apt-get install -y python3-sphinx + - name: Build Documentation + run: | + mkdir -p doc/build + cd doc/build + cmake .. + make doc + + build: + runs-on: ubuntu-20.04 + strategy: + matrix: + cxx: [g++, clang++] + polybar_build_type: ["full"] + build_type: ["Release"] + include: + - cxx: g++ + polybar_build_type: "tests" + build_type: "Coverage" + - cxx: g++ + polybar_build_type: "minimal" + build_type: "Release" + env: + CXX: ${{ matrix.cxx }} + BUILD_TYPE: ${{ matrix.build_type }} + POLYBAR_BUILD_TYPE: ${{ matrix.polybar_build_type }} + POLYBAR_DIR: ${{ github.workspace }} + BUILD_DIR: "${{ github.workspace}}/build" + MAKEFLAGS: "-j4" + COLOR: "ON" + steps: + - name: Install Dependencies + run: | + sudo apt-get update + sudo apt-get install -y \ + libxcb-composite0-dev \ + libxcb-ewmh-dev \ + libxcb-icccm4-dev \ + libxcb-image0-dev \ + libxcb-randr0-dev \ + libxcb-util0-dev \ + libxcb1-dev \ + libcairo2-dev \ + python3-xcbgen \ + xcb-proto + + if [ "$POLYBAR_BUILD_TYPE" != "minimal" ]; then + sudo apt-get install -y \ + libxcb-xkb-dev \ + libxcb-cursor-dev \ + libxcb-xrm-dev \ + i3-wm \ + libcurl4-openssl-dev \ + libjsoncpp-dev \ + libasound2-dev \ + libpulse-dev \ + libiw-dev \ + libmpdclient-dev + fi + - uses: actions/checkout@v2 + with: + submodules: true + - name: Summary + run: ./common/ci/summary.sh + - name: Configure + run: ./common/ci/configure.sh + - name: Build + run: | + cd $BUILD_DIR + make + - name: Tests + if: ${{ matrix.polybar_build_type == 'tests' }} + run: | + cd $BUILD_DIR + make check + cd $POLYBAR_DIR + bash <(curl -s https://codecov.io/bash) -F unittests -a "-ap" -Z diff --git a/.travis.yml b/.travis.yml index 5c4fd79c..6fc0927a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -37,7 +37,7 @@ addons: - libiw-dev - libmpdclient-dev -script: source ${TRAVIS_BUILD_DIR}/common/travis/build.sh +script: source ${TRAVIS_BUILD_DIR}/common/ci/build.sh matrix: include: @@ -59,7 +59,7 @@ matrix: addons: {apt: {packages: [*base_deps, *optional_deps]}} - compiler: gcc - env: BUILD_TYPE=Coverage POLYBAR_BUILD_TYPE=tests BUILD_TESTS=ON + env: BUILD_TYPE=Coverage POLYBAR_BUILD_TYPE=tests addons: {apt: {packages: [*base_deps, *optional_deps]}} script: make check after_success: @@ -82,8 +82,8 @@ cache: apt: true before_script: - - source ${TRAVIS_BUILD_DIR}/common/travis/summary.sh - - source ${TRAVIS_BUILD_DIR}/common/travis/configure.sh + - source ${TRAVIS_BUILD_DIR}/common/ci/summary.sh + - source ${TRAVIS_BUILD_DIR}/common/ci/configure.sh # Only fetch the newest 5 commits instead of 50 git: diff --git a/README.md b/README.md index 0ff03acc..1f36a658 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,7 @@ A fast and easy-to-use tool for creating status bars.
+
diff --git a/common/ci/configure.sh b/common/ci/configure.sh
new file mode 100755
index 00000000..90718748
--- /dev/null
+++ b/common/ci/configure.sh
@@ -0,0 +1,46 @@
+#!/usr/bin/env bash
+
+set -eo pipefail
+
+if [ -d "$BUILD_DIR" ]; then
+ rm -Rf "$BUILD_DIR"
+fi
+
+mkdir -p "${BUILD_DIR}"
+cd "${BUILD_DIR}"
+
+if [ "$POLYBAR_BUILD_TYPE" != "minimal" ]; then
+ ENABLE_PULSEAUDIO=ON
+ ENABLE_NETWORK=ON
+ ENABLE_MPD=ON
+ ENABLE_CURL=ON
+ ENABLE_ALSA=ON
+ ENABLE_I3=ON
+ WITH_XRM=ON
+ WITH_XKB=ON
+ WITH_XRANDR_MONITORS=ON
+ WITH_XCURSOR=ON
+fi
+
+if [ "$POLYBAR_BUILD_TYPE" = "tests" ]; then
+ BUILD_TESTS=ON
+fi
+
+cmake \
+ -DCMAKE_CXX_COMPILER="${CXX}" \
+ -DCMAKE_CXX_FLAGS="${CXXFLAGS} -Werror" \
+ -DCMAKE_BUILD_TYPE="${BUILD_TYPE}" \
+ -DBUILD_TESTS:BOOL="${BUILD_TESTS:-OFF}" \
+ -DBUILD_DOC:BOOL="${BUILD_DOC:-OFF}" \
+ -DWITH_XRANDR=ON \
+ -DENABLE_PULSEAUDIO="${ENABLE_PULSEAUDIO:-OFF}" \
+ -DENABLE_NETWORK="${ENABLE_NETWORK:-OFF}" \
+ -DENABLE_MPD="${ENABLE_MPD:-OFF}" \
+ -DENABLE_CURL="${ENABLE_CURL:-OFF}" \
+ -DENABLE_ALSA="${ENABLE_ALSA:-OFF}" \
+ -DENABLE_I3="${ENABLE_I3:-OFF}" \
+ -DWITH_XRM="${WITH_XRM:-OFF}" \
+ -DWITH_XKB="${WITH_XKB:-OFF}" \
+ -DWITH_XRANDR_MONITORS="${WITH_XRANDR_MONITORS:-OFF}" \
+ -DWITH_XCURSOR="${WITH_XCURSOR:-OFF}" \
+ ..
diff --git a/common/ci/summary.sh b/common/ci/summary.sh
new file mode 100755
index 00000000..a6bfcf82
--- /dev/null
+++ b/common/ci/summary.sh
@@ -0,0 +1,19 @@
+#!/usr/bin/env bash
+
+set -eo pipefail
+
+set -x
+
+"${CXX}" --version
+cmake --version
+
+set +x
+
+echo "PATH=${PATH}"
+echo "CXX=${CXX}"
+echo "CXXFLAGS=${CXXFLAGS}"
+echo "LDFLAGS=${LDFLAGS}"
+echo "LD_LIBRARY_PATH=${LD_LIBRARY_PATH}"
+echo "MAKEFLAGS=${MAKEFLAGS}"
+echo "POLYBAR_BUILD_TYPE=${POLYBAR_BUILD_TYPE}"
+echo "CMAKE_BUILD_TYPE=${BUILD_TYPE}"
diff --git a/common/travis/build.sh b/common/travis/build.sh
deleted file mode 100755
index 9e376049..00000000
--- a/common/travis/build.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/bash
-cd "${TRAVIS_BUILD_DIR}/build" || false
-make || exit $?
diff --git a/common/travis/configure.sh b/common/travis/configure.sh
deleted file mode 100755
index b67d78bd..00000000
--- a/common/travis/configure.sh
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/bin/bash
-mkdir -p "${TRAVIS_BUILD_DIR}/build"
-cd "${TRAVIS_BUILD_DIR}/build" || false
-
-FLAGS=""
-
-# Disable all extra modules and X extensions for minimal builds
-# Most of these should already be turned off because their libraries are not
-# installed, but some may not be
-if [ "$POLYBAR_BUILD_TYPE" == "minimal" ]; then
- FLAGS=(
- "-DENABLE_PULSEAUDIO=OFF"
- "-DENABLE_NETWORK=OFF"
- "-DENABLE_MPD=OFF"
- "-DENABLE_CURL=OFF"
- "-DENABLE_ALSA=OFF"
- "-DENABLE_I3=OFF"
- "-DWITH_XRM=OFF"
- "-DWITH_XKB=OFF"
- "-DWITH_XRANDR_MONITORS=OFF"
- "-DWITH_XCURSOR=OFF"
- "-DWITH_XRANDR=ON"
- )
-fi
-
-cmake \
- -DCMAKE_CXX_COMPILER="${CXX}" \
- -DCMAKE_CXX_FLAGS="${CXXFLAGS} -Werror" \
- -DCMAKE_BUILD_TYPE="${BUILD_TYPE}" \
- -DBUILD_TESTS:BOOL="${BUILD_TESTS:-OFF}" \
- -DBUILD_DOC:BOOL="${BUILD_DOC:-OFF}" \
- "${FLAGS[@]}" ..
diff --git a/common/travis/summary.sh b/common/travis/summary.sh
deleted file mode 100755
index 708d6f7b..00000000
--- a/common/travis/summary.sh
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/bash
-echo "${CXX} --version"
-eval "${CXX} --version"
-
-echo "cmake --version"
-cmake --version
-
-echo "PATH=${PATH}"
-echo "CXX=${CXX}"
-echo "CXXFLAGS=${CXXFLAGS}"
-echo "LDFLAGS=${LDFLAGS}"
-echo "LD_LIBRARY_PATH=${LD_LIBRARY_PATH}"
-echo "JOBS=${JOBS}"