diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 00000000..d7c6096c --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,62 @@ +version: 2.1 +orbs: + codecov: codecov/codecov@1.0.2 +jobs: + build-debian-gcc: + docker: + - image: "debian:latest" + steps: + - checkout + - run: + name: Installing Dependencies + command: ./docker/deps-debian.sh + - run: + name: Build test and install + command: 'OS=debian ./docker/build_test_install.sh' + - run: + name: Create coverage report + command: lcov --directory . --capture --output-file coverage.info && lcov --remove coverage.info '/usr/*' --output-file coverage.info + - codecov/upload: + file: coverage.info + + build-fedora-gcc: + docker: + - image: "fedora:latest" + steps: + - checkout + - run: + name: Installing Dependencies + command: ./docker/deps-fedora.sh + - run: + name: Build test and install + command: 'OS=fedora ./docker/build_test_install.sh' + build-archlinux-gcc: + docker: + - image: "archlinux:latest" + steps: + - checkout + - run: + name: Installing Dependencies + command: ./docker/deps-archlinux.sh + - run: + name: Build test and install + command: 'OS=archlinux ./docker/build_test_install.sh' + build-osx-clang: + macos: + xcode: "13.0.0" + steps: + - checkout + - run: + name: Installing CMake + command: 'brew install cmake jsoncpp argtable curl hiredis redis libmicrohttpd' + - run: + name: Build + command: 'OS=osx ./docker/build_test_install.sh' +workflows: + version: 2 + build: + jobs: + - build-debian-gcc + - build-fedora-gcc + - build-archlinux-gcc + - build-osx-clang \ No newline at end of file diff --git a/.dockerignore b/.dockerignore index e83bf66e..1ef11aa4 100644 --- a/.dockerignore +++ b/.dockerignore @@ -2,6 +2,7 @@ .DS_Store profile +cmake-build-* # xcode noise build/* *.mode1 diff --git a/.gitignore b/.gitignore index 024bd57f..dbc153ef 100644 --- a/.gitignore +++ b/.gitignore @@ -16,6 +16,7 @@ xcuserdata #Qt-creator noise build-* +cmake-build-* # svn & cvs .svn diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 767aafc2..00000000 --- a/.travis.yml +++ /dev/null @@ -1,33 +0,0 @@ -language: cpp -dist: trusty -services: - - docker -before_install: - - | - if [[ "$TRAVIS_OS_NAME" == "osx" ]] - then - brew update - brew install jsoncpp argtable curl hiredis redis - brew install libmicrohttpd - fi - -matrix: - include: - - env: OS=fedora - os: linux - - env: OS=arch - os: linux - - env: OS=debian9 - os: linux - - env: OS=debian10 - os: linux - - env: OS=ubuntu1604 - os: linux - - env: OS=ubuntu1804 - os: linux - - env: OS=osx - os: osx - compiler: clang - -script: - - cd docker && make ${OS}; diff --git a/Makefile b/Makefile index 9665d751..1eb36aa5 100644 --- a/Makefile +++ b/Makefile @@ -8,9 +8,6 @@ build: mkdir -p build cd build && cmake -DCMAKE_BUILD_TYPE=Debug -DWITH_COVERAGE=Yes .. && make -j$(nproc) -build-docker: - cd docker && make all - coverage: test mkdir -p reports gcovr -r . -d -e "build" -e "src/test" -e "src/examples" -e "src/stubgenerator/main.cpp" --html --html-details -o reports/coverage.html diff --git a/README.md b/README.md index d8a47c0a..b97398ab 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,9 @@ -**I am currently working on a new C++17 implementation -> [json-rpc-cxx](https://github.com/jsonrpcx/json-rpc-cxx).** +**I created a new C++17 header only implementation -> [json-rpc-cxx](https://github.com/jsonrpcx/json-rpc-cxx).** + +Master [![CircleCI](https://circleci.com/gh/cinemast/libjson-rpc-cpp/tree/master.svg?style=svg)](https://circleci.com/gh/cinemast/libjson-rpc-cpp/tree/master) +Develop [![CircleCI](https://circleci.com/gh/cinemast/libjson-rpc-cpp/tree/develop.svg?style=svg)](https://circleci.com/gh/cinemast/libjson-rpc-cpp/tree/develop) +[![codecov](https://codecov.io/gh/cinemast/libjson-rpc-cpp/branch/master/graph/badge.svg?token=QNoXsaI2ta)](https://codecov.io/gh/cinemast/libjson-rpc-cpp) -Master [![Build Status](https://travis-ci.org/cinemast/libjson-rpc-cpp.png?branch=master)](https://travis-ci.org/cinemast/libjson-rpc-cpp) [![codecov](https://codecov.io/gh/cinemast/libjson-rpc-cpp/branch/master/graph/badge.svg)](https://codecov.io/gh/cinemast/libjson-rpc-cpp) -Develop [![Build Status](https://travis-ci.org/cinemast/libjson-rpc-cpp.png?branch=develop)](https://travis-ci.org/cinemast/libjson-rpc-cpp) [![codecov](https://codecov.io/gh/cinemast/libjson-rpc-cpp/branch/develop/graph/badge.svg)](https://codecov.io/gh/cinemast/libjson-rpc-cpp) | -[![Coverity Status](https://scan.coverity.com/projects/3169/badge.svg?flat=1)](https://scan.coverity.com/projects/3169) libjson-rpc-cpp =============== diff --git a/dev/codecov.sh b/dev/codecov.sh deleted file mode 100755 index b0cbeef1..00000000 --- a/dev/codecov.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash - -for filename in `find . | egrep '\.o'`; -do - gcov-5 $filename > /dev/null; -done - -bash <(curl -s https://codecov.io/bash); diff --git a/dev/source-ship.py b/dev/source-ship.py deleted file mode 100644 index 277f2177..00000000 --- a/dev/source-ship.py +++ /dev/null @@ -1,83 +0,0 @@ -#!/usr/bin/env python3 - -__author__ = "Peter Spiess-Knafl" -__email__ = "dev@spiessknafl.at" -__license__ = "MIT" - -from changelog import ChangeLog -from subprocess import call -from shutil import copyfile -import os -import os.path -import sys -import urllib.request -import subprocess - -files = [] - - -def normalize_tag(tag): - return ''.join(filter(lambda x: x.isdigit() or x == '.', tag)) - - -def cleanup(): - for f in files: - if os.path.isfile(f): - os.remove(f) - - -def main(): - tag = subprocess.Popen(["git", "describe"],stdout = subprocess.PIPE).communicate() - changelog = "CHANGELOG.md" - user = "cinemast" - name = os.path.basename(os.getcwd()) - - cl = ChangeLog(changelog) - if cl.is_dirty() or len(cl.get_entry(tag)) == 0: - print ("Please fix your " + changelog) - cleanup() - sys.exit(1) - - with open("tmp.changelog", "w") as f: - entry = cl.get_entry(tag) - f.write(entry[0][3:] + "\n") - f.write(entry[1]) - files.append("tmp.changelog") - - tarball_name = name+"-"+normalize_tag(tag)+".tar.gz" - call(["git", "archive", "--format", "tar.gz", - "--prefix", name+"-"+normalize_tag(tag)+"/", "-o", - "export.tar.gz", tag]) - files.append("export.tar.gz") - - tarball_url = "https://codeload.github.com/"+user+"/"+name+"/tar.gz/"+tag - print(tarball_url) - urllib.request.urlretrieve(tarball_url, tarball_name) - copyfile(tarball_name, "original.tar.gz") - files.append(tarball_name) - files.append("original.tar.gz") - - call(["gunzip", "original.tar.gz"]) - call(["gunzip", "export.tar.gz"]) - files.append("original.tar") - files.append("export.tar") - - if call(["diffoscope", "original.tar", "export.tar"]) != 0: - print("Retrieved tarball differs from local export") - cleanup() - sys.exit(1) - - files.append(tarball_name+".asc") - if call(["gpg2", "--armor", "--detach-sign", tarball_name]) != 0: - print("Error signing tarball") - cleanup() - sys.exit(1) - - if call(["hub", "release", "create", "-f", "tmp.changelog", "-a", - tarball_name+".asc", tag]) != 0: - print("Error creating GitHub release") - cleanup() - - -if __name__ == "__main__": - main() diff --git a/docker/ArchLinux.Dockerfile b/docker/ArchLinux.Dockerfile index 93495528..37cfd937 100644 --- a/docker/ArchLinux.Dockerfile +++ b/docker/ArchLinux.Dockerfile @@ -1,26 +1,10 @@ -FROM archlinux/base:latest +FROM archlinux:latest MAINTAINER Peter Spiess-Knafl -ENV OS=arch -RUN pacman -Sy --noconfirm \ - sudo \ - sed \ - grep \ - awk \ - fakeroot \ - wget \ - cmake \ - make \ - gcc \ - git \ - jsoncpp \ - libmicrohttpd \ - curl \ - hiredis \ - redis - -RUN sudo -u nobody mkdir /tmp/argtable && cd /tmp && git clone https://aur.archlinux.org/argtable.git && cd argtable && sudo -u nobody makepkg -RUN pacman -U --noconfirm /tmp/argtable/*.pkg.tar.xz +ENV OS=archlinux RUN mkdir /app +COPY docker/deps-archlinux.sh /app +RUN chmod a+x /app/deps-archlinux.sh +RUN /app/deps-archlinux.sh COPY docker/build_test_install.sh /app COPY . /app RUN chmod a+x /app/build_test_install.sh diff --git a/docker/Centos7.Dockerfile b/docker/Centos7.Dockerfile deleted file mode 100644 index ef01d52d..00000000 --- a/docker/Centos7.Dockerfile +++ /dev/null @@ -1,14 +0,0 @@ -FROM centos:7 - -ENV OS=centos7 -RUN yum -y install epel-release -RUN yum -y install jsoncpp-devel libcurl-devel hiredis-devel redis cmake3 argtable-devel gcc-c++ wget gnutls-devel git gnutls-devel libgcrypt-devel -ENV MICROHTTPD_VERSION=0.9.37 -RUN wget https://ftp.gnu.org/gnu/libmicrohttpd/libmicrohttpd-${MICROHTTPD_VERSION}.tar.gz && tar xvz -f libmicrohttpd-${MICROHTTPD_VERSION}.tar.gz \ - && cd libmicrohttpd-${MICROHTTPD_VERSION} && ./configure && make -j$(nproc) && make install -RUN ln -sf /usr/bin/cmake3 /usr/bin/cmake -RUN mkdir /app -COPY docker/build_test_install.sh /app -COPY . /app -RUN chmod a+x /app/build_test_install.sh -RUN cd /app && ./build_test_install.sh \ No newline at end of file diff --git a/docker/Debian.Dockerfile b/docker/Debian.Dockerfile new file mode 100644 index 00000000..53c3d2fc --- /dev/null +++ b/docker/Debian.Dockerfile @@ -0,0 +1,11 @@ +FROM debian:latest +MAINTAINER Peter Spiess-Knafl +ENV OS=debian +RUN mkdir /app +COPY docker/deps-debian.sh /app +RUN chmod a+x /app/deps-debian.sh +RUN /app/deps-debian.sh +COPY docker/build_test_install.sh /app +COPY . /app +RUN chmod a+x /app/build_test_install.sh +RUN cd /app && ./build_test_install.sh diff --git a/docker/Debian10.Dockerfile b/docker/Debian10.Dockerfile deleted file mode 100644 index 45af33e5..00000000 --- a/docker/Debian10.Dockerfile +++ /dev/null @@ -1,20 +0,0 @@ -FROM debian:buster -MAINTAINER Peter Spiess-Knafl -ENV OS=debian10 -RUN apt-get update && apt-get install -y \ - wget \ - build-essential \ - cmake \ - libjsoncpp-dev \ - libargtable2-dev \ - libcurl4-openssl-dev \ - libmicrohttpd-dev \ - git \ - libhiredis-dev \ - redis-server - -RUN mkdir /app -COPY docker/build_test_install.sh /app -COPY . /app -RUN chmod a+x /app/build_test_install.sh -RUN cd /app && ./build_test_install.sh diff --git a/docker/Debian8.Dockerfile b/docker/Debian8.Dockerfile deleted file mode 100644 index f800b6d2..00000000 --- a/docker/Debian8.Dockerfile +++ /dev/null @@ -1,20 +0,0 @@ -FROM debian:8 -MAINTAINER Peter Spiess-Knafl -ENV OS=debian8 -RUN apt-get update && apt-get install -y \ - wget \ - build-essential \ - cmake \ - libjsoncpp-dev \ - libargtable2-dev \ - libcurl4-openssl-dev \ - libmicrohttpd-dev \ - git \ - libhiredis-dev \ - redis-server - -RUN mkdir /app -COPY docker/build_test_install.sh /app -COPY . /app -RUN chmod a+x /app/build_test_install.sh -RUN cd /app && ./build_test_install.sh diff --git a/docker/Debian9.Dockerfile b/docker/Debian9.Dockerfile deleted file mode 100644 index f23af210..00000000 --- a/docker/Debian9.Dockerfile +++ /dev/null @@ -1,20 +0,0 @@ -FROM debian:9 -MAINTAINER Peter Spiess-Knafl -ENV OS=debian9 -RUN apt-get update && apt-get install -y \ - wget \ - build-essential \ - cmake \ - libjsoncpp-dev \ - libargtable2-dev \ - libcurl4-openssl-dev \ - libmicrohttpd-dev \ - git \ - libhiredis-dev \ - redis-server - -RUN mkdir /app -COPY docker/build_test_install.sh /app -COPY . /app -RUN chmod a+x /app/build_test_install.sh -RUN cd /app && ./build_test_install.sh diff --git a/docker/Fedora.Dockerfile b/docker/Fedora.Dockerfile index b5b1e1e7..cdc4b1ab 100644 --- a/docker/Fedora.Dockerfile +++ b/docker/Fedora.Dockerfile @@ -1,20 +1,10 @@ FROM fedora:latest MAINTAINER Peter Spiess-Knafl ENV OS=fedora -RUN dnf -y install \ - gcc-c++ \ - jsoncpp-devel \ - libcurl-devel \ - libmicrohttpd-devel \ - catch-devel \ - git \ - cmake \ - make \ - argtable-devel \ - hiredis-devel \ - redis - RUN mkdir /app +COPY docker/deps-fedora.sh /app +RUN chmod a+x /app/deps-fedora.sh +RUN /app/deps-fedora.sh COPY docker/build_test_install.sh /app COPY . /app RUN chmod a+x /app/build_test_install.sh diff --git a/docker/Makefile b/docker/Makefile deleted file mode 100644 index 90c8436b..00000000 --- a/docker/Makefile +++ /dev/null @@ -1,24 +0,0 @@ - -all: debian9 debian10 ubuntu1604 ubuntu1804 arch fedora centos - -debian9: Debian9.Dockerfile - docker build --rm -f $< .. - -debian10: Debian10.Dockerfile - docker build --rm -f $< .. - -ubuntu1604: Ubuntu1604.Dockerfile - docker build --rm -f $< .. - -ubuntu1804: Ubuntu1804.Dockerfile - docker build --rm -f $< .. - -arch: ArchLinux.Dockerfile - docker build --rm -f $< .. - -fedora: Fedora.Dockerfile - docker build --rm -f $< .. - -osx: - export OS=osx - cd .. && ./docker/build_test_install.sh diff --git a/docker/Ubuntu1604.Dockerfile b/docker/Ubuntu1604.Dockerfile deleted file mode 100644 index 36ade0ad..00000000 --- a/docker/Ubuntu1604.Dockerfile +++ /dev/null @@ -1,20 +0,0 @@ -FROM ubuntu:16.04 -MAINTAINER Peter Spiess-Knafl -ENV OS=ubuntu1604 -RUN apt-get update && apt-get install -y \ - wget \ - build-essential \ - cmake \ - libjsoncpp-dev \ - libargtable2-dev \ - libcurl4-openssl-dev \ - libmicrohttpd-dev \ - git \ - libhiredis-dev \ - redis-server - -RUN mkdir /app -COPY docker/build_test_install.sh /app -COPY . /app -RUN chmod a+x /app/build_test_install.sh -RUN cd /app && ./build_test_install.sh diff --git a/docker/Ubuntu1804.Dockerfile b/docker/Ubuntu1804.Dockerfile deleted file mode 100644 index b2ad9af0..00000000 --- a/docker/Ubuntu1804.Dockerfile +++ /dev/null @@ -1,20 +0,0 @@ -FROM ubuntu:18.04 -MAINTAINER Peter Spiess-Knafl -ENV OS=ubuntu1804 -RUN apt-get update && apt-get install -y \ - wget \ - build-essential \ - cmake \ - libjsoncpp-dev \ - libargtable2-dev \ - libcurl4-openssl-dev \ - libmicrohttpd-dev \ - git \ - libhiredis-dev \ - redis-server - -RUN mkdir /app -COPY docker/build_test_install.sh /app -COPY . /app -RUN chmod a+x /app/build_test_install.sh -RUN cd /app && ./build_test_install.sh diff --git a/docker/build_test_install.sh b/docker/build_test_install.sh index 27f578fa..8bbcd7a3 100755 --- a/docker/build_test_install.sh +++ b/docker/build_test_install.sh @@ -3,7 +3,7 @@ set -evu PREFIX=/usr/local -if [ "$OS" == "arch" ] || [ "$OS" == "fedora" ] || [ "$OS" == "centos7" ] +if [ "$OS" == "archlinux" ] || [ "$OS" == "fedora" ] then PREFIX=/usr fi @@ -17,7 +17,7 @@ cmake -DCMAKE_INSTALL_PREFIX="$PREFIX" -DWITH_COVERAGE=YES -DCMAKE_BUILD_TYPE=Re -DBUILD_STATIC_LIBS=ON -DTCP_SOCKET_SERVER=YES -DTCP_SOCKET_CLIENT=YES \ -DBUILD_SHARED_LIBS=ON -DUNIX_DOMAIN_SOCKET_SERVER=NO -DUNIX_DOMAIN_SOCKET_CLIENT=NO .. -make -j$(nproc) +make echo "Running test suite" ./bin/unit_testsuite --durations yes diff --git a/docker/deps-archlinux.sh b/docker/deps-archlinux.sh new file mode 100755 index 00000000..677cfaf4 --- /dev/null +++ b/docker/deps-archlinux.sh @@ -0,0 +1,20 @@ +#!/bin/bash +set -evu +pacman -Syyu --noconfirm \ + sudo \ + sed \ + grep \ + awk \ + fakeroot \ + wget \ + cmake \ + make \ + gcc \ + git \ + jsoncpp \ + libmicrohttpd \ + curl \ + hiredis \ + redis \ + argtable \ + p11-kit \ No newline at end of file diff --git a/docker/deps-debian.sh b/docker/deps-debian.sh new file mode 100755 index 00000000..351e4423 --- /dev/null +++ b/docker/deps-debian.sh @@ -0,0 +1,3 @@ +#!/bin/bash +set -evu +apt-get update && apt-get update && apt-get install -y wget build-essential cmake libjsoncpp-dev libargtable2-dev libcurl4-openssl-dev libmicrohttpd-dev git libhiredis-dev redis-server lcov curl \ No newline at end of file diff --git a/docker/deps-fedora.sh b/docker/deps-fedora.sh new file mode 100755 index 00000000..1c884fd0 --- /dev/null +++ b/docker/deps-fedora.sh @@ -0,0 +1,14 @@ +#!/bin/bash +set -evu +dnf -y install \ + gcc-c++ \ + jsoncpp-devel \ + libcurl-devel \ + libmicrohttpd-devel \ + catch-devel \ + git \ + cmake \ + make \ + argtable-devel \ + hiredis-devel \ + redis \ No newline at end of file