From df2c2dd4cbfe139922e3452e679f04fba8d2e9d8 Mon Sep 17 00:00:00 2001 From: Ronald Tse Date: Sun, 1 Oct 2017 01:43:23 +0800 Subject: [PATCH 1/6] First attempt to make rnp work on OpenBSD --- ci/before_install.sh | 6 +++++- ci/env-freebsd.sh | 1 + ci/env-openbsd.sh | 16 ++++++++++++++++ ci/install.sh | 13 ++++++++----- 4 files changed, 30 insertions(+), 6 deletions(-) create mode 100755 ci/env-openbsd.sh diff --git a/ci/before_install.sh b/ci/before_install.sh index d88d3c0f68..51be401b15 100755 --- a/ci/before_install.sh +++ b/ci/before_install.sh @@ -42,7 +42,11 @@ freebsd_install() { } openbsd_install() { - echo "" + sudo pkg_add bzip2 + sudo pkg_add cmake + sudo pkg_add gettext-tools + sudo pkg_add gnupg-2.1.15p2 + sudo pkg_add wget } netbsd_install() { diff --git a/ci/env-freebsd.sh b/ci/env-freebsd.sh index ed5b713eaa..f367c5a53c 100755 --- a/ci/env-freebsd.sh +++ b/ci/env-freebsd.sh @@ -11,3 +11,4 @@ export BUILD_MODE=normal export CLANG_FORMAT_DIFF="clang-format-diff-4.0" export CC=clang export MAKE=gmake + diff --git a/ci/env-openbsd.sh b/ci/env-openbsd.sh new file mode 100755 index 0000000000..cc1be59130 --- /dev/null +++ b/ci/env-openbsd.sh @@ -0,0 +1,16 @@ +#!/bin/sh +set -ex + +export PATH=/usr/local/bin:$PATH +export LOCAL_BUILDS=${WORKSPACE}/local-builds +export BOTAN_INSTALL="${LOCAL_BUILDS}/builds/botan-install" +export CMOCKA_INSTALL="${LOCAL_BUILDS}/builds/cmocka-install" +export JSONC_INSTALL="${LOCAL_BUILDS}/builds/json-c-install" +export GPG21_INSTALL="${LOCAL_BUILDS}/builds/gpg21-install" +export BUILD_MODE=normal +export CLANG_FORMAT_DIFF="clang-format-diff-4.0" +export CC=clang +export MAKE=gmake +export AUTOCONF_VERSION=2.69 +export AUTOMAKE_VERSION=1.15 +export GPG=gpg2 diff --git a/ci/install.sh b/ci/install.sh index 75e6d536fa..db67db7428 100755 --- a/ci/install.sh +++ b/ci/install.sh @@ -5,6 +5,7 @@ set -exu : "${CORES:=2}" : "${MAKE:=make}" +: "${GPG:=gpg}" # botan botan_build=${LOCAL_BUILDS}/botan @@ -58,6 +59,8 @@ if [ ! -e "${JSONC_INSTALL}/lib/libjson-c.so" ] && \ mkdir -p "${jsonc_build}" pushd ${jsonc_build} wget https://s3.amazonaws.com/json-c_releases/releases/json-c-0.12.1.tar.gz -O json-c.tar.gz + + # TODO: this doesn't work on OpenBSD tar tar xzf json-c.tar.gz --strip 1 autoreconf -ivf @@ -72,7 +75,7 @@ if [ ! -e "${GPG21_INSTALL}/bin/gpg" ]; then mkdir -p "${gpg21_build}" cd "${gpg21_build}" - gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 249B39D24F25E3B6 04376F3EE0856959 2071B08A33BD3F06 8A861B1C7EFD60D9 + ${GPG} --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 249B39D24F25E3B6 04376F3EE0856959 2071B08A33BD3F06 8A861B1C7EFD60D9 for archive in npth:1.5 libgpg-error:1.27; do pkgname="${archive%:*}" @@ -80,7 +83,7 @@ if [ ! -e "${GPG21_INSTALL}/bin/gpg" ]; then wget -c https://www.gnupg.org/ftp/gcrypt/${pkgname}/${pkgname}-${version}.tar.bz2 wget -c https://www.gnupg.org/ftp/gcrypt/${pkgname}/${pkgname}-${version}.tar.bz2.sig - gpg --verify ${pkgname}-${version}.tar.bz2.sig + ${GPG} --verify ${pkgname}-${version}.tar.bz2.sig tar -xjf ${pkgname}-${version}.tar.bz2 cd ${pkgname}-${version}/ # autoreconf -ivf @@ -95,7 +98,7 @@ if [ ! -e "${GPG21_INSTALL}/bin/gpg" ]; then wget -c https://www.gnupg.org/ftp/gcrypt/${pkgname}/${pkgname}-${version}.tar.bz2 wget -c https://www.gnupg.org/ftp/gcrypt/${pkgname}/${pkgname}-${version}.tar.bz2.sig - gpg --verify ${pkgname}-${version}.tar.bz2.sig + ${GPG} --verify ${pkgname}-${version}.tar.bz2.sig tar -xjf ${pkgname}-${version}.tar.bz2 cd ${pkgname}-${version}/ # autoreconf -ivf @@ -106,7 +109,7 @@ if [ ! -e "${GPG21_INSTALL}/bin/gpg" ]; then wget -c https://www.gnupg.org/ftp/gcrypt/pinentry/pinentry-1.0.0.tar.bz2 wget -c https://www.gnupg.org/ftp/gcrypt/pinentry/pinentry-1.0.0.tar.bz2.sig - gpg --verify pinentry-1.0.0.tar.bz2.sig + ${GPG} --verify pinentry-1.0.0.tar.bz2.sig tar -xjf pinentry-1.0.0.tar.bz2 cd pinentry-1.0.0 ./configure --prefix="${GPG21_INSTALL}" \ @@ -119,7 +122,7 @@ if [ ! -e "${GPG21_INSTALL}/bin/gpg" ]; then wget -c https://www.gnupg.org/ftp/gcrypt/gnupg/gnupg-2.1.23.tar.bz2 wget -c https://www.gnupg.org/ftp/gcrypt/gnupg/gnupg-2.1.23.tar.bz2.sig - gpg --verify gnupg-2.1.23.tar.bz2.sig + ${GPG} --verify gnupg-2.1.23.tar.bz2.sig tar -xjf gnupg-2.1.23.tar.bz2 cd gnupg-2.1.23 ./configure --prefix="${GPG21_INSTALL}" \ From d78acdcb450a038914c1ba65f65d9d565c5576ab Mon Sep 17 00:00:00 2001 From: Ronald Tse Date: Sun, 1 Oct 2017 01:49:36 +0800 Subject: [PATCH 2/6] Add libiconv --- ci/before_install.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/ci/before_install.sh b/ci/before_install.sh index 51be401b15..b2b009ab90 100755 --- a/ci/before_install.sh +++ b/ci/before_install.sh @@ -47,6 +47,7 @@ openbsd_install() { sudo pkg_add gettext-tools sudo pkg_add gnupg-2.1.15p2 sudo pkg_add wget + sudo pkg_add libiconv } netbsd_install() { From 4948b0ae2c02de9f6276f7d6274f3328b64b44a5 Mon Sep 17 00:00:00 2001 From: Ronald Tse Date: Tue, 12 Dec 2017 21:49:51 +0800 Subject: [PATCH 3/6] OpenBSD --- ci/before_install.sh | 6 ++++++ ci/install.sh | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/ci/before_install.sh b/ci/before_install.sh index b2b009ab90..6ea0a1dac9 100755 --- a/ci/before_install.sh +++ b/ci/before_install.sh @@ -44,6 +44,7 @@ freebsd_install() { openbsd_install() { sudo pkg_add bzip2 sudo pkg_add cmake + sudo pkg_add gmake sudo pkg_add gettext-tools sudo pkg_add gnupg-2.1.15p2 sudo pkg_add wget @@ -52,6 +53,11 @@ openbsd_install() { netbsd_install() { echo "" + pkgin -y install gnupg + pkgin -y install cmake + pkgin -y install gettext-tools + pkgin -y install clang + pkgin -y install wget } linux_install() { diff --git a/ci/install.sh b/ci/install.sh index db67db7428..b372f529ae 100755 --- a/ci/install.sh +++ b/ci/install.sh @@ -100,11 +100,11 @@ if [ ! -e "${GPG21_INSTALL}/bin/gpg" ]; then wget -c https://www.gnupg.org/ftp/gcrypt/${pkgname}/${pkgname}-${version}.tar.bz2.sig ${GPG} --verify ${pkgname}-${version}.tar.bz2.sig tar -xjf ${pkgname}-${version}.tar.bz2 - cd ${pkgname}-${version}/ + pushd ${pkgname}-${version}/ # autoreconf -ivf ./configure --prefix="${GPG21_INSTALL}" --with-libgpg-error-prefix="${GPG21_INSTALL}" ${MAKE} -j${CORES} install - cd .. + popd done wget -c https://www.gnupg.org/ftp/gcrypt/pinentry/pinentry-1.0.0.tar.bz2 From a105bf05332085942e95dda0146bac1cfb2aaa92 Mon Sep 17 00:00:00 2001 From: Erick Borsboom Date: Mon, 22 Jan 2018 12:55:54 +0800 Subject: [PATCH 4/6] initial CI tests for OpenBSD --- ci/before_install.sh | 43 ++++++++++++++++++++++++++++++++++++------- ci/env-netbsd.sh | 18 ++++++++++++++++++ ci/env-openbsd.sh | 5 +---- ci/style-check.sh | 1 - ci/success.sh | 1 - 5 files changed, 55 insertions(+), 13 deletions(-) create mode 100755 ci/env-netbsd.sh diff --git a/ci/before_install.sh b/ci/before_install.sh index 6ea0a1dac9..920f13f9e1 100755 --- a/ci/before_install.sh +++ b/ci/before_install.sh @@ -42,13 +42,42 @@ freebsd_install() { } openbsd_install() { - sudo pkg_add bzip2 - sudo pkg_add cmake - sudo pkg_add gmake - sudo pkg_add gettext-tools - sudo pkg_add gnupg-2.1.15p2 - sudo pkg_add wget - sudo pkg_add libiconv + if [ "$(id -u)" -ne 0 ]; then + echo "need to run as root" + exit 1 + fi + + export PKG_PATH="https://cloudflare.cdn.openbsd.org/pub/OpenBSD/$(uname -r)/packages/$(uname -m)" + + # CI script dependencies + for pkg in bash git wget; do + pkg_info | grep -q "${pkg}" && \ + continue + + pkg_add -I "${pkg}" + done + + rm -f /bin/bash + ln -s /usr/local/bin/bash /bin/bash + grep -q "^/bin/bash" || \ + echo "/bin/bash" >> /etc/shells + + for pkg in automake gnupg; do + pkg_ver="$(pkg_add -In ${pkg} 2>&1 | grep ^Ambiguous | tr ' ' '\n' | grep ${pkg}- | sort -V | tail -1)" + + pkg_info | grep -q "${pkg_ver}" && \ + continue + + echo "Installing: ${pkg_ver}" + pkg_add -I "${pkg_ver}" + done + + rm -f ${GPG21_INSTALL}/bin/gpg + ln /usr/local/bin/gpg2 ${GPG21_INSTALL}/bin/gpg + + # Python will be installed as a dependency of gnupg + rm -f /bin/python + ln -s /usr/local/bin/python2.7 /bin/python } netbsd_install() { diff --git a/ci/env-netbsd.sh b/ci/env-netbsd.sh new file mode 100755 index 0000000000..370d2e6457 --- /dev/null +++ b/ci/env-netbsd.sh @@ -0,0 +1,18 @@ +#!/bin/sh +set -ex + +source /root/.profile + +export PATH=/usr/local/bin:$PATH +export LOCAL_BUILDS=${WORKSPACE}/local-builds +export BOTAN_INSTALL="${LOCAL_BUILDS}/builds/botan-install" +export CMOCKA_INSTALL="${LOCAL_BUILDS}/builds/cmocka-install" +export JSONC_INSTALL="${LOCAL_BUILDS}/builds/json-c-install" +export GPG21_INSTALL="${LOCAL_BUILDS}/builds/gpg21-install" +export BUILD_MODE=normal +export CLANG_FORMAT_DIFF="clang-format-diff-4.0" +export CC=clang +export MAKE=gmake +export AUTOCONF_VERSION=2.69 +export AUTOMAKE_VERSION=1.15 +export GPG=gpg diff --git a/ci/env-openbsd.sh b/ci/env-openbsd.sh index cc1be59130..eb3b723a0a 100755 --- a/ci/env-openbsd.sh +++ b/ci/env-openbsd.sh @@ -9,8 +9,5 @@ export JSONC_INSTALL="${LOCAL_BUILDS}/builds/json-c-install" export GPG21_INSTALL="${LOCAL_BUILDS}/builds/gpg21-install" export BUILD_MODE=normal export CLANG_FORMAT_DIFF="clang-format-diff-4.0" -export CC=clang +export CC=gcc export MAKE=gmake -export AUTOCONF_VERSION=2.69 -export AUTOMAKE_VERSION=1.15 -export GPG=gpg2 diff --git a/ci/style-check.sh b/ci/style-check.sh index 683bbcde6d..b40bc46723 100755 --- a/ci/style-check.sh +++ b/ci/style-check.sh @@ -11,4 +11,3 @@ if [ "$diffs" != "" ]; then echo "$diffs" exit 1 fi - diff --git a/ci/success.sh b/ci/success.sh index 7d7129b285..c2fb10a9e6 100755 --- a/ci/success.sh +++ b/ci/success.sh @@ -6,4 +6,3 @@ if [ "$BUILD_MODE" = "coverage" ]; then gcov-4.8 --object-file rnp_tests-rnp_tests.o rnp_tests.c bash <(curl -s https://codecov.io/bash) fi - From ff784c44fff265959c35f0c53f39692b68c1236f Mon Sep 17 00:00:00 2001 From: Ronald Tse Date: Tue, 23 Jan 2018 10:57:24 +0800 Subject: [PATCH 5/6] Try to make it run again --- ci/before_install.sh | 7 ++++--- ci/env-openbsd.sh | 7 +++++++ 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/ci/before_install.sh b/ci/before_install.sh index 920f13f9e1..5759b4927d 100755 --- a/ci/before_install.sh +++ b/ci/before_install.sh @@ -49,8 +49,8 @@ openbsd_install() { export PKG_PATH="https://cloudflare.cdn.openbsd.org/pub/OpenBSD/$(uname -r)/packages/$(uname -m)" - # CI script dependencies - for pkg in bash git wget; do + # CI script and build dependencies + for pkg in bash git wget bzip2 cmake gmake gettext-tools libiconv; do pkg_info | grep -q "${pkg}" && \ continue @@ -59,7 +59,7 @@ openbsd_install() { rm -f /bin/bash ln -s /usr/local/bin/bash /bin/bash - grep -q "^/bin/bash" || \ + grep -q "^/bin/bash" /etc/shells || \ echo "/bin/bash" >> /etc/shells for pkg in automake gnupg; do @@ -72,6 +72,7 @@ openbsd_install() { pkg_add -I "${pkg_ver}" done + # Create link to expected gpg binary name and location rm -f ${GPG21_INSTALL}/bin/gpg ln /usr/local/bin/gpg2 ${GPG21_INSTALL}/bin/gpg diff --git a/ci/env-openbsd.sh b/ci/env-openbsd.sh index eb3b723a0a..5f2644c183 100755 --- a/ci/env-openbsd.sh +++ b/ci/env-openbsd.sh @@ -11,3 +11,10 @@ export BUILD_MODE=normal export CLANG_FORMAT_DIFF="clang-format-diff-4.0" export CC=gcc export MAKE=gmake + +# TODO: make these read from pkg_info +export AUTOCONF_VERSION=2.69 +export AUTOMAKE_VERSION=1.15 + +# TODO: use this environment variable in test scripts +export GPG=gpg2 From 8a66d3d19b29bf17d30a667311cdb889d0fd0fe4 Mon Sep 17 00:00:00 2001 From: Ronald Tse Date: Sat, 27 Jan 2018 00:55:00 +0800 Subject: [PATCH 6/6] OpenBSD: use symlink for binary alias --- ci/before_install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/before_install.sh b/ci/before_install.sh index 5759b4927d..310a4ee082 100755 --- a/ci/before_install.sh +++ b/ci/before_install.sh @@ -74,7 +74,7 @@ openbsd_install() { # Create link to expected gpg binary name and location rm -f ${GPG21_INSTALL}/bin/gpg - ln /usr/local/bin/gpg2 ${GPG21_INSTALL}/bin/gpg + ln -s /usr/local/bin/gpg2 ${GPG21_INSTALL}/bin/gpg # Python will be installed as a dependency of gnupg rm -f /bin/python