From 3c185e7ae5878ce143897c4761ff522252a6e6d0 Mon Sep 17 00:00:00 2001 From: tastytea Date: Tue, 27 Nov 2018 05:46:45 +0100 Subject: [PATCH] Added automatic package generation --- .drone.yml | 58 +++++++++++++++++++++++++++++++++++++++++ CMakeLists.txt | 2 ++ README.md | 25 +++++++++++++++--- packages.CMakeLists.txt | 44 +++++++++++++++++++++++++++++++ 4 files changed, 126 insertions(+), 3 deletions(-) create mode 100644 packages.CMakeLists.txt diff --git a/.drone.yml b/.drone.yml index a248aec..2caffe5 100644 --- a/.drone.yml +++ b/.drone.yml @@ -1,4 +1,39 @@ pipeline: + build_package: + image: ubuntu:trusty + pull: true + when: + event: tag + environment: + - LANG=C.utf8 + - CXX=g++-5 + - CXXFLAGS=-pipe -O2 + commands: + - rm /etc/apt/apt.conf.d/docker-clean + - echo "deb http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu trusty main" >> /etc/apt/sources.list.d/ubuntu-toolchain-r.list + - gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 0x60c317803a41ba51845e371a1e9377a2ba9ef27f + - gpg --armor --export 0x60c317803a41ba51845e371a1e9377a2ba9ef27f | apt-key add - + - apt-get update -q + - apt-get install -qy g++-5 cmake3 pkg-config + - apt-get install -qy libcrypto++-dev libmagick++-dev libxdg-basedir-dev + - apt-get install -qy dpkg-dev d-shlibs rpm file wget + - gpg --import /var/autosign_gpg.key + - rm -rf build && mkdir -p build && cd build + - cmake -DCMAKE_INSTALL_PREFIX=/usr .. + - make VERBOSE=1 + - make install DESTDIR=install + - make package + - cmake -DWITH_DEB=ON .. + - make package + - cmake -DWITH_DEB=OFF -DWITH_RPM=ON .. + - make package + - gpg --verbose --detach-sign *.tar.gz + - gpg --verbose --detach-sign *.deb + - gpg --verbose --detach-sign *.rpm + volumes: + - /var/cache/debian-package-cache:/var/cache/apt/archives + - /home/tastytea/misc/autosign_gpg.key:/var/autosign_gpg.key + gcc5: image: debian:stretch-slim pull: true @@ -29,6 +64,8 @@ pipeline: gcc6: image: debian:stretch-slim pull: true + when: + event: [push, pull_request] environment: - LANG=C.utf8 - CXX=g++-6 @@ -144,6 +181,18 @@ pipeline: volumes: - /var/cache/debian-package-cache:/var/cache/apt/archives + prepare_release: + image: ubuntu:xenial + pull: true + when: + event: tag + commands: + - cp -v build/libravatarserv-${DRONE_TAG}_x86_64.tar.gz . + - cp -v build/libravatarserv-${DRONE_TAG}_x86_64.tar.gz.sig . + - cp -v build/libravatarserv_${DRONE_TAG}-0_amd64.deb . + - cp -v build/libravatarserv_${DRONE_TAG}-0_amd64.deb.sig . + - cp -v build/libravatarserv-${DRONE_TAG}-0.x86_64.rpm . + - cp -v build/libravatarserv-${DRONE_TAG}-0.x86_64.rpm.sig . gitea_release: image: plugins/gitea-release pull: true @@ -153,6 +202,15 @@ pipeline: secrets: [ gitea_token ] title: ${DRONE_TAG} prerelease: true + files: + - libravatarserv-${DRONE_TAG}_x86_64.tar.gz + - libravatarserv-${DRONE_TAG}_x86_64.tar.gz.sig + - libravatarserv_${DRONE_TAG}-0_amd64.deb + - libravatarserv_${DRONE_TAG}-0_amd64.deb.sig + - libravatarserv-${DRONE_TAG}-0.x86_64.rpm + - libravatarserv-${DRONE_TAG}-0.x86_64.rpm.sig + checksum: + - sha512 notify: image: drillster/drone-email diff --git a/CMakeLists.txt b/CMakeLists.txt index c84200f..7e4aab1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -44,3 +44,5 @@ target_link_libraries(${CMAKE_PROJECT_NAME} "${MAGICPP_LDFLAGS} ${LIBCRYPTOPP_LDFLAGS}" "${LIBXDG_BASEDIR_LDFLAGS} -lstdc++fs") install(TARGETS ${CMAKE_PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_BINDIR}) + +include(packages.CMakeLists.txt) diff --git a/README.md b/README.md index 0adc00e..bfc5fb4 100644 --- a/README.md +++ b/README.md @@ -65,16 +65,35 @@ The avatar directory could look like this: ## Install -### Dependencies +### Gentoo + +Gentoo ebuilds are available via my +[repository](https://schlomp.space/tastytea/overlay). + +### Automatically generated packages + +Binary packages are generated automatically for each +[release](https://schlomp.space/tastytea/libravatarserv/releases) in the +formats: + +* deb +* rpm +* tar.gz + +They are generated on Ubuntu Trusty 64 bit. + +### From source + +#### Dependencies * C++ compiler (tested: [gcc](https://gcc.gnu.org/) 5/6/7/8, [clang](https://llvm.org/) 5/6) * [cmake](https://cmake.org/) (at least 3.2) * [crypto++](https://cryptopp.com) (tested: 7.0 / 5.6) -* [imagemagick](https://www.imagemagick.org/) (tested: 7.0 / 6.9) +* [imagemagick](https://www.imagemagick.org/) (tested: 7.0 / 6.7) * [libxdg-basedir](http://repo.or.cz/w/libxdg-basedir.git) (tested: 1.2) -### Compile +#### Compile ```SH mkdir build diff --git a/packages.CMakeLists.txt b/packages.CMakeLists.txt new file mode 100644 index 0000000..8a9983c --- /dev/null +++ b/packages.CMakeLists.txt @@ -0,0 +1,44 @@ +# Packages +set(CPACK_PACKAGE_NAME ${CMAKE_PROJECT_NAME}) +set(CPACK_PACKAGE_VERSION_MAJOR ${${CMAKE_PROJECT_NAME}_VERSION_MAJOR}) +set(CPACK_PACKAGE_VERSION_MINOR ${${CMAKE_PROJECT_NAME}_VERSION_MINOR}) +set(CPACK_PACKAGE_VERSION_PATCH ${${CMAKE_PROJECT_NAME}_VERSION_PATCH}) +set(CPACK_PACKAGE_VERSION ${${CMAKE_PROJECT_NAME}_VERSION}) +set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Simple libravatar server.") +set(CPACK_PACKAGE_CONTACT "tastytea ") +set(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/LICENSE") +set(CPACK_RESOURCE_FILE_README "${PROJECT_SOURCE_DIR}/README.md") +list(APPEND CPACK_SOURCE_IGNORE_FILES "/\\\\.git" + "/.gitignore" + "/build/" + "\\\\.sublime-" + "/.drone.yml") +execute_process(COMMAND uname -m + OUTPUT_VARIABLE CPACK_PACKAGE_ARCHITECTURE + OUTPUT_STRIP_TRAILING_WHITESPACE) +set(CPACK_PACKAGE_FILE_NAME + "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}_${CPACK_PACKAGE_ARCHITECTURE}") +set(CPACK_GENERATOR "TGZ") +set(CPACK_SOURCE_GENERATOR "TGZ") + +if (WITH_DEB) + set(CPACK_GENERATOR "DEB") + set(CPACK_DEBIAN_PACKAGE_HOMEPAGE "https://schlomp.space/tastytea/${CMAKE_PROJECT_NAME}") + set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) + execute_process(COMMAND dpkg --print-architecture + OUTPUT_VARIABLE CPACK_DEBIAN_PACKAGE_ARCHITECTURE + OUTPUT_STRIP_TRAILING_WHITESPACE) + set(CPACK_PACKAGE_FILE_NAME + "${CPACK_PACKAGE_NAME}_${CPACK_PACKAGE_VERSION}-0_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}") +endif() + +if (WITH_RPM) + set(CPACK_GENERATOR "RPM") + set(CPACK_RPM_PACKAGE_LICENSE "GPL-3") + set(CPACK_RPM_PACKAGE_URL "https://schlomp.space/tastytea/${CMAKE_PROJECT_NAME}") + set(CPACK_RPM_PACKAGE_REQUIRES "cryptopp++, libMagick++, libxdg-basedir >= 1.2.0") + set(CPACK_PACKAGE_FILE_NAME + "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-0.${CPACK_PACKAGE_ARCHITECTURE}") +endif() + +include(CPack)