diff --git a/Makefile b/Makefile index 86898afc..70d55738 100644 --- a/Makefile +++ b/Makefile @@ -87,7 +87,28 @@ crio: .gopathok $(shell hack/find-godeps.sh $(GOPKGDIR) cmd/crio $(PROJECT)) crio.conf: crio ./bin/crio --config="" config --default > crio.conf -clean: +tarball-prep: + git archive --format=tar.gz --prefix=cri-o-testonly/ HEAD > ../cri-o-testonly_1.8.0.orig.tar.gz + +# -E needed to preserve CRIO_GIT_* and DEBUG envariables used in script +test-rpm: tarball-prep + sudo -E ./contrib/rpm/make-testonly-rpms \ + ../cri-o-testonly_1.8.0.orig.tar.gz + +test-deb: tarball-prep + sudo apt-add-repository -y ppa:projectatomic/ppa + sudo sed -i '/deb-src/s/# //g' /etc/apt/sources.list.d/projectatomic-ubuntu-ppa-zesty.list + sudo apt update + sudo apt build-dep cri-o + dpkg-buildpackage -us -uc + +clean-rpm: + rm -rf cri-o*.rpm ../cri-o-testonly*.tar.gz + +clean-deb: + rm -rf debian/cri-o ../*ppa* + +clean: clean-rpm clean-deb ifneq ($(GOPATH),) rm -f "$(GOPATH)/.gopathok" endif diff --git a/contrib/rpm/make-testonly-rpms b/contrib/rpm/make-testonly-rpms new file mode 100755 index 00000000..6ef0359b --- /dev/null +++ b/contrib/rpm/make-testonly-rpms @@ -0,0 +1,141 @@ +#!/bin/bash +# +# make-testonly-rpms - build cri-o testing rpms +# +# Invocation: run this while cd'ed to a checked-out copy of cri-o from git. +# +SCRIPT=$(basename $0) + +# Default settings. +# +# Where to fetch the rpm spec + extras. Can be overridden, see $usage +DEFAULT_GIT_REPO_URL=https://src.fedoraproject.org/rpms/cri-o.git +DEFAULT_GIT_REPO_BRANCH=master + +# Special case for CI: if this subdirectory exists and contains a specfile, +# its contents will be used for building instead of the git repo. +TEST_SPEC_DIR=spec-dir-for-ci--DO-NOT-MERGE + +# boilerplate: command-line option and arg processing +missing=" argument is missing; see $SCRIPT --help for details" +usage="Usage: $SCRIPT [--help] TARBALL_PATH + +--help display usage message + +$SCRIPT builds installable cri-o RPMs + +Command-line arguments: + + TARBALL_PATH is a path (relative is OK) to a tarball containing + cri-o sources. It should unpack into a subdirectory + named 'cri-o-testonly'. + +Environment: + + CRIO_GIT_REPO_URL if present in environment, is a URL to a git repo + containing an RPM spec file and all other files (e.g. + patches) needed to build and package cri-o. + Default: $DEFAULT_GIT_REPO_URL + + Special case for CI: if the subdirectory + $TEST_SPEC_DIR exists + under the current directory, and contains a file + with the extension .spec, this subdirectory + will be used as the base from which to build. + + GIT_BRANCH is a branch to use on the above git repo. This + allows testing spec PRs, e.g. 'pull/1/head' + Default: $DEFAULT_GIT_REPO_BRANCH +" + +for i +do + value=`expr "$i" : '[^=]*=\(.*\)'` + case "$i" in + -h*|--help) echo "$usage"; exit 0;; + -*) echo "$SCRIPT: unrecognized option $i" >&2 + echo "$usage" >&2 + exit 1;; + *) break;; + esac +done + +# First arg: path to tarball. Get its full path now, before we cd out. +# ${...?...} means: if arg is missing, abort with given error message. +TARBALL_PATH=${1?TARBALL_PATH$missing} +full_tarball_path=$(realpath $TARBALL_PATH) + +# fedpkg/rhpkg repo containing specfile, patches, what's needed for build +GIT_REPO_URL=${CRIO_GIT_REPO_URL-$DEFAULT_GIT_REPO_URL} + +# If present, final arg is a git branch +GIT_BRANCH=${CRIO_GIT_REPO_BRANCH-$DEFAULT_GIT_REPO_BRANCH} + +# Special case for CI. If certain well-known not-for-real-world-use +# subdirectory exists and contains a specfile, override the git repo. +if [ -d $TEST_SPEC_DIR ]; then + if [ -f $TEST_SPEC_DIR/*.spec ]; then + echo "$ME: WARNING: Using specfile in $TEST_SPEC_DIR" >&2 + GIT_REPO_URL=$(realpath $TEST_SPEC_DIR) + GIT_BRANCH= + else + echo "$ME: WARNING: no specfile found in $TEST_SPEC_DIR" >&2 + echo "$ME: Please delete that directory if you are done with it." >&2 + fi +fi + +# Done with boilerplate. Start working. +set -e + +orig_dir=$(realpath .) + +# Pull the RPM-building components +workdir=$(mktemp --tmpdir -d $SCRIPT.XXXXXXX) +trap 'test -z "$DEBUG" && cd / && rm -rf $workdir' EXIT +cd $workdir + +# The usual case is that we fetch the spec and associated files from +# a git repo, probably the fedpkg or rhpkg one. But for debugging, if +# the repo arg is a local directory, just copy it as-is. +if [[ "$GIT_REPO_URL" =~ ^/ && -d $GIT_REPO_URL ]]; then + cp -r $GIT_REPO_URL rpm_spec_dir + cd rpm_spec_dir +else + # The usual case. + git clone $GIT_REPO_URL rpm_spec_dir + cd rpm_spec_dir + git fetch origin $GIT_BRANCH:rpm_spec_branch + git checkout rpm_spec_branch +fi + +# "testonl" (no "y") because this is a pretend git hash; specfile uses abbrev. +cp $full_tarball_path ./cri-o-testonl.tar.gz + +# Grab the other source tarball (cri-tools). Adding %dump to a specfile +# causes it to list all defined macros; this gives us a full URL to source1 +SPEC=$(echo *.spec) +tmpspec=$(mktemp --suffix=.spec $SCRIPT.XXXXXXX) + +sed -e '/^%description/ a%dump\nexit 1\n' <$SPEC >$tmpspec +url=$(rpm -q --specfile $tmpspec 2>&1 |awk '/SOURCEURL1/ { print $3 }'|tail -1) +if [ -z "$url" ]; then + echo "$ME: FATAL: No SOURCEURL1 found in $tmpspec" + exit 1 +fi +rm -f $tmpspec +wget $url + +# Update source0 to point to the tarball we created above +sed -i -e 's/^\(%global[ ]\+commit0[ ]\+\)[0-9a-f]\+/\1 testonly/' $SPEC + +# Build it +yum-builddep -y $SPEC +rpmbuild -ba --define "_topdir $(pwd)" \ + --define "_sourcedir $(pwd)" $SPEC + +# Move rpms back into the directory from which we were invoked +mv RPMS/*/*.rpm $orig_dir/ + +# Clean up +cd / +rm -rf $workdir diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 00000000..5aa0c860 --- /dev/null +++ b/debian/changelog @@ -0,0 +1,109 @@ +cri-o-testonly (1.8.0-1~ubuntu17.04~ppa1) zesty; urgency=medium + + * test bump to v1.8.0-dev + + -- Lokesh Mandvekar Fri, 22 Sep 2017 08:33:33 -0400 + +cri-o (1.0.0-rc1-1~ubuntu17.04~ppa6) zesty; urgency=medium + + * include golang as build dep to make dh_golang happy + + -- Lokesh Mandvekar Mon, 11 Sep 2017 10:27:25 -0400 + +cri-o (1.0.0-rc1-1~ubuntu17.04~ppa5) zesty; urgency=medium + + * bump to v1.0.0-rc1 + + -- Lokesh Mandvekar Mon, 11 Sep 2017 09:20:57 -0400 + +cri-o (1.0.0-alpha.0.1-1~ubuntu17.04~ppa4) zesty; urgency=medium + + * include golang as build dep to make dh_golang happy + + -- Lokesh Mandvekar Tue, 29 Aug 2017 14:49:33 -0400 + +cri-o (1.0.0-alpha.0.1-1~ubuntu17.04~ppa3) zesty; urgency=medium + + * bump to ppa3, should build successfully now + + -- Lokesh Mandvekar Tue, 29 Aug 2017 14:32:46 -0400 + +cri-o (1.0.0-alpha.0.1-1~ubuntu17.04~ppa1) zesty; urgency=medium + + * append ".1" to version to get PPA to shut up about prior tarballs + + -- Lokesh Mandvekar Fri, 25 Aug 2017 18:58:42 -0400 + +cri-o (1.0.0-alpha.0-1~ubuntu17.04~ppa2) zesty; urgency=medium + + * built commit a38419a + + -- Lokesh Mandvekar Fri, 25 Aug 2017 15:52:13 -0400 + +cri-o (1.0.0-alpha.0-1~ubuntu17.04~ppa1) zesty; urgency=medium + + * bump to v1.0.0-alpha + + -- Lokesh Mandvekar Tue, 18 Jul 2017 16:19:44 -0400 + +cri-o (0.3-1~ubuntu17.04~ppa10) zesty; urgency=medium + + * update release tag format to mention distro version + * remove ppa9 build from PPA and rebuild + + -- Lokesh Mandvekar Tue, 04 Jul 2017 23:12:07 -0400 + +cri-o (0.3-1ppa9) zesty; urgency=medium + + * correct conmon install location + + -- Lokesh Mandvekar Fri, 30 Jun 2017 00:57:34 -0400 + +cri-o (0.3-1ppa8) zesty; urgency=medium + + * update release tag cause previous release exists already + + -- Lokesh Mandvekar Fri, 30 Jun 2017 00:33:44 -0400 + +cri-o (0.3-1ppa7) zesty; urgency=medium + + * correct crio.conf file and install paths for binaries and unitfiles + + -- Lokesh Mandvekar Thu, 29 Jun 2017 14:50:03 -0400 + +cri-o (0.3-1ppa6) zesty; urgency=medium + + * add additional config files and correct unitfile + + -- Lokesh Mandvekar Thu, 29 Jun 2017 13:45:10 -0400 + +cri-o (0.3-1ppa5) zesty; urgency=medium + + * include skopeo-containers as install-time dep + + -- Lokesh Mandvekar Thu, 29 Jun 2017 11:01:54 -0400 + +cri-o (0.3-1ppa4) zesty; urgency=medium + + * use correct path for runc executable from cri-o-runc in /etc/crio.conf + + -- Lokesh Mandvekar Thu, 29 Jun 2017 00:47:38 -0400 + +cri-o (0.3-1ppa3) zesty; urgency=medium + + * add dh-golang as build dep + * upstream commit 88037b1 used for building package + + -- Lokesh Mandvekar Thu, 29 Jun 2017 00:23:57 -0400 + +cri-o (0.3-1ppa2) zesty; urgency=medium + + * update debian/control Section field + + -- Lokesh Mandvekar Thu, 29 Jun 2017 00:18:16 -0400 + +cri-o (0.3-1ppa1) zesty; urgency=medium + + * Initial package + + -- Lokesh Mandvekar Thu, 29 Jun 2017 00:07:46 -0400 diff --git a/debian/compat b/debian/compat new file mode 100644 index 00000000..ec635144 --- /dev/null +++ b/debian/compat @@ -0,0 +1 @@ +9 diff --git a/debian/control b/debian/control new file mode 100644 index 00000000..5af98d1f --- /dev/null +++ b/debian/control @@ -0,0 +1,31 @@ +Source: cri-o-testonly +Section: devel +Priority: optional +Maintainer: Lokesh Mandvekar +Build-Depends: debhelper (>=9), + rsync, + libdevmapper-dev, + libgpgme11-dev, + libseccomp-dev, + golang, + golang-1.8, + btrfs-tools, + libglib2.0-dev, + go-md2man, + dh-golang, + git, + libostree-dev +Standards-Version: 3.9.6 +Homepage: https://github.com/kubernetes-incubator/cri-o +#Vcs-Git: git://anonscm.debian.org/collab-maint/cri-o.git +#Vcs-Browser: https://anonscm.debian.org/cgit/collab-maint/cri-o.git + +Package: cri-o-testonly +Architecture: all +Depends: ${misc:Depends}, + libdevmapper1.02.1, + libgpgme11, + cri-o-runc, + skopeo +Suggests: containernetworking-plugins +Description: OCI-based implementation of Kubernetes Container Runtime Interface. diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 00000000..44992ded --- /dev/null +++ b/debian/copyright @@ -0,0 +1,9 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: cri-o +Source: https://github.com/kubernetes-incubator/cri-o.git +Comment: + All golang deps bundled. + FIles under vendor/ could have their own independent licenses. + +Files: * +License: Apache-2.0 diff --git a/debian/rules b/debian/rules new file mode 100755 index 00000000..a63a19a0 --- /dev/null +++ b/debian/rules @@ -0,0 +1,71 @@ +#!/usr/bin/make -f +# See debhelper(7) (uncomment to enable) +# output every command that modifies files on the build system. +#export DH_VERBOSE = 1 + + +# see FEATURE AREAS in dpkg-buildflags(1) +#export DEB_BUILD_MAINT_OPTIONS = hardening=+all + +# see ENVIRONMENT in dpkg-buildflags(1) +# package maintainers to append CFLAGS +#export DEB_CFLAGS_MAINT_APPEND = -Wall -pedantic +# package maintainers to append LDFLAGS +#export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed + +export DH_VERBOSE=1 +export DH_GOPKG := github.com/kubernetes-incubator/cri-o +# Include test fixtures. +#export DH_GOLANG_INSTALL_EXTRA := discovery/file/fixtures \ + storage/local/fixtures config/testdata promql/testdata retrieval/testdata \ + promql/fuzz-data +# Do not build examples. +#export DH_GOLANG_EXCLUDES := documentation vendor + +# Lots of shameless copy-paste from the debian package for prometheus + +BUILDDIR := $(shell pwd) +GO := /usr/lib/go-1.8/bin/go +DESTDIR := $(BUILDDIR)/debian/cri-o +BUILDTAGS := 'selinux seccomp $(shell $(BUILDDIR)/hack/btrfs_tag.sh) $(shell $(BUILDDIR)/hack/libdm_tag.sh) containers_image_ostree_stub' + +%: + dh_clean + make clean + rm -rf $(BUILDDIR)/src $(BUILDDIR)/crio.conf + dh $@ --buildsystem=golang --with=golang --builddirectory=$(BUILDDIR) + +override_dh_auto_configure: + dh_auto_configure -O--buildsystem=golang + # Include vendored dependencies. + cp -rp $(BUILDDIR)/vendor $(BUILDDIR)/src + mkdir -p $(BUILDDIR)/src/$(DH_GOPKG) + rsync -a $(BUILDDIR)/* $(BUILDDIR)/src/$(DH_GOPKG) --exclude src + +override_dh_auto_build: + GOPATH=$(BUILDDIR) GO=$(GO) BUILDTAGS=$(BUILDTAGS) make binaries docs crio.conf + $(BUILDDIR)/crio --storage-driver=overlay2 --runtime /usr/lib/cri-o-runc/sbin/runc \ + --conmon /usr/lib/crio/bin/conmon \ + --cgroup-manager=systemd config > $(BUILDDIR)/crio.conf + +override_dh_auto_test: + +override_dh_auto_install: + PREFIX=$(DESTDIR)/usr ETCDIR_CRIO=$(DESTDIR)/etc/crio \ + make install.config install.completions + # install binaries + install -dp $(DESTDIR)/usr/bin + install -p -m 755 crio $(DESTDIR)/usr/bin + install -p -m 755 crioctl $(DESTDIR)/usr/bin + install -p -m 755 kpod $(DESTDIR)/usr/bin + install -dp $(DESTDIR)/usr/lib/crio/bin + install -p -m 755 conmon/conmon $(DESTDIR)/usr/lib/crio/bin + install -p -m 755 pause/pause $(DESTDIR)/usr/lib/crio/bin + install -dp $(DESTDIR)/etc/cni/net.d + install -p -m 644 contrib/cni/10-crio-bridge.conf $(DESTDIR)/etc/cni/net.d/100-crio-bridge.conf + install -p -m 644 contrib/cni/99-loopback.conf $(DESTDIR)/etc/cni/net.d/200-loopback.conf + install -dp $(DESTDIR)/lib/systemd/system + install -p -m 644 contrib/systemd/crio.service $(DESTDIR)/lib/systemd/system + install -p -m 644 contrib/systemd/crio-shutdown.service $(DESTDIR)/lib/systemd/system + sed -i 's/\/usr\/local\/bin\/crio/\/usr\/bin\/crio/g' $(DESTDIR)/lib/systemd/system/crio.service + rm -rf $(BUILDDIR)/obj-x86_64-linux-gnu diff --git a/debian/source/format b/debian/source/format new file mode 100644 index 00000000..163aaf8d --- /dev/null +++ b/debian/source/format @@ -0,0 +1 @@ +3.0 (quilt)