diff options
Diffstat (limited to 'contrib')
-rwxr-xr-x | contrib/build_rpm.sh | 83 | ||||
-rw-r--r-- | contrib/cirrus/cron-fail_addrs.csv | 1 | ||||
-rw-r--r-- | contrib/cirrus/lib.sh | 42 | ||||
-rwxr-xr-x | contrib/cirrus/logcollector.sh | 13 | ||||
-rwxr-xr-x | contrib/cirrus/logformatter | 2 | ||||
-rwxr-xr-x | contrib/cirrus/logformatter.t | 16 | ||||
-rwxr-xr-x | contrib/cirrus/runner.sh | 5 | ||||
-rwxr-xr-x | contrib/cirrus/setup_environment.sh | 66 | ||||
-rw-r--r-- | contrib/helloimage/Containerfile | 8 | ||||
-rw-r--r-- | contrib/helloimage/README.md | 55 | ||||
-rwxr-xr-x | contrib/helloimage/podman_hello_world.bash | 23 | ||||
-rw-r--r-- | contrib/msi/podman.wxs | 4 | ||||
-rw-r--r-- | contrib/spec/podman.spec.in | 571 |
13 files changed, 197 insertions, 692 deletions
diff --git a/contrib/build_rpm.sh b/contrib/build_rpm.sh deleted file mode 100755 index 3039c1bf9..000000000 --- a/contrib/build_rpm.sh +++ /dev/null @@ -1,83 +0,0 @@ -#!/usr/bin/env bash -set -euxo pipefail - -# returned path can vary: /usr/bin/dnf /bin/dnf ... -pkg_manager=$(command -v dnf yum | head -n1) -echo "Package manager binary: $pkg_manager" - - -if [[ $pkg_manager == *yum ]]; then - echo "[virt7-container] -name=virt7-container -baseurl=https://buildlogs.centos.org/centos/7/virt/x86_64/container/ -enabled=1 -gpgcheck=0" > /etc/yum.repos.d/container_virt.repo - echo "[paas_openshift_origin311] -name=paas_openshift_origin311 -# Use this if you need the newest *-testing packages -# baseurl=https://buildlogs.centos.org/centos/7/paas/x86_64/openshift-origin311/ -baseurl=http://mirror.centos.org/centos/7/paas/x86_64/openshift-origin311/ -enabled=1 -gpgcheck=0" > /etc/yum.repos.d/paas_openshift_origin311.repo -fi - -declare -a PKGS=(\ - createrepo \ - device-mapper-devel \ - git \ - glib2-devel \ - glibc-static \ - go-compilers-golang-compiler \ - golang \ - gpgme-devel \ - libassuan-devel \ - libseccomp-devel \ - libselinux-devel \ - make \ - redhat-rpm-config \ - rpm-build \ - rpmdevtools \ - systemd-devel \ - ) - -if [[ $pkg_manager == *dnf ]]; then - # We need to enable PowerTools if we want to get - # install all the pkgs we define in PKGS - # PowerTools exists on centos-8 but not on fedora-30 and rhel-8 - if (dnf -v -C repolist all|grep "Repo-id : PowerTools" >/dev/null); then - sudo dnf config-manager --set-enabled PowerTools - fi - - PKGS+=(python3-devel \ - ) -fi - -# Package name on fedora 30 is golang-github-cpuguy83-go-md2man -if (grep -i 'Fedora' /etc/redhat-release | grep " 30" ) ; then - PKGS+=(golang-github-cpuguy83-go-md2man \ - btrfs-progs-devel \ - ) -# btrfs-progs-devel is not available in CentOS/RHEL-8 -elif ! (grep -i 'Red Hat\|CentOS' /etc/redhat-release | grep " 8" ) ; then - PKGS+=(golang-github-cpuguy83-md2man \ - btrfs-progs-devel \ - ) -fi - -# disable doc until go-md2man rpm becomes available -# disable debug to avoid error: Empty %files file ~/rpmbuild/BUILD/libpod-.../debugsourcefiles.list -export extra_arg="--without doc --without debug" - -echo ${PKGS[*]} -sudo $pkg_manager install -y ${PKGS[*]} - -# clean up src.rpm as it's been built -sudo rm -f podman-*.src.rpm - -make -f .copr/Makefile -# workaround for https://github.com/containers/podman/issues/4627 -if [ -d ~/rpmbuild/BUILD ]; then - chmod -R +w ~/rpmbuild/BUILD -fi - -rpmbuild --rebuild ${extra_arg:-} podman-*.src.rpm diff --git a/contrib/cirrus/cron-fail_addrs.csv b/contrib/cirrus/cron-fail_addrs.csv deleted file mode 100644 index 276158163..000000000 --- a/contrib/cirrus/cron-fail_addrs.csv +++ /dev/null @@ -1 +0,0 @@ -rh.container.bot@gmail.com,podman-monitor@lists.podman.io diff --git a/contrib/cirrus/lib.sh b/contrib/cirrus/lib.sh index c7352106a..09a255e6f 100644 --- a/contrib/cirrus/lib.sh +++ b/contrib/cirrus/lib.sh @@ -138,7 +138,9 @@ passthrough_envars(){ } setup_rootless() { - req_env_vars ROOTLESS_USER GOPATH GOSRC SECRET_ENV_RE + req_env_vars GOPATH GOSRC SECRET_ENV_RE + + ROOTLESS_USER="${ROOTLESS_USER:-some${RANDOM}dude}" local rootless_uid local rootless_gid @@ -150,9 +152,11 @@ setup_rootless() { # shellcheck disable=SC2154 if passwd --status $ROOTLESS_USER then - msg "Updating $ROOTLESS_USER user permissions on possibly changed libpod code" - chown -R $ROOTLESS_USER:$ROOTLESS_USER "$GOPATH" "$GOSRC" - return 0 + if [[ $PRIV_NAME = "rootless" ]]; then + msg "Updating $ROOTLESS_USER user permissions on possibly changed libpod code" + chown -R $ROOTLESS_USER:$ROOTLESS_USER "$GOPATH" "$GOSRC" + return 0 + fi fi msg "************************************************************" msg "Setting up rootless user '$ROOTLESS_USER'" @@ -164,7 +168,11 @@ setup_rootless() { msg "creating $rootless_uid:$rootless_gid $ROOTLESS_USER user" groupadd -g $rootless_gid $ROOTLESS_USER useradd -g $rootless_gid -u $rootless_uid --no-user-group --create-home $ROOTLESS_USER - chown -R $ROOTLESS_USER:$ROOTLESS_USER "$GOPATH" "$GOSRC" + + # We also set up rootless user for image-scp tests (running as root) + if [[ $PRIV_NAME = "rootless" ]]; then + chown -R $ROOTLESS_USER:$ROOTLESS_USER "$GOPATH" "$GOSRC" + fi echo "$ROOTLESS_USER ALL=(root) NOPASSWD: ALL" > /etc/sudoers.d/ci-rootless mkdir -p "$HOME/.ssh" "/home/$ROOTLESS_USER/.ssh" @@ -206,16 +214,22 @@ setup_rootless() { } install_test_configs() { - echo "Installing cni config, policy and registry config" - req_env_vars GOSRC SCRIPT_BASE - cd $GOSRC || exit 1 - install -v -D -m 644 ./cni/87-podman-bridge.conflist /etc/cni/net.d/ - # This config must always sort last in the list of networks (podman picks first one - # as the default). This config prevents allocation of network address space used - # by default in google cloud. https://cloud.google.com/vpc/docs/vpc#ip-ranges - install -v -D -m 644 $SCRIPT_BASE/99-do-not-use-google-subnets.conflist /etc/cni/net.d/ - + msg "Installing ./test/registries.conf system-wide." install -v -D -m 644 ./test/registries.conf /etc/containers/ + if [[ "$TEST_ENVIRON" =~ netavark ]]; then + # belt-and-suspenders: any pre-existing CNI config. will spoil + # default use tof netavark (when both are installed). + rm -rf /etc/cni/net.d/* + else + echo "Installing cni config, policy and registry config" + req_env_vars GOSRC SCRIPT_BASE + cd $GOSRC || exit 1 + install -v -D -m 644 ./cni/87-podman-bridge.conflist /etc/cni/net.d/ + # This config must always sort last in the list of networks (podman picks first one + # as the default). This config prevents allocation of network address space used + # by default in google cloud. https://cloud.google.com/vpc/docs/vpc#ip-ranges + install -v -D -m 644 $SCRIPT_BASE/99-do-not-use-google-subnets.conflist /etc/cni/net.d/ + fi } # Remove all files provided by the distro version of podman. diff --git a/contrib/cirrus/logcollector.sh b/contrib/cirrus/logcollector.sh index 38a15ded1..0cfbf7135 100755 --- a/contrib/cirrus/logcollector.sh +++ b/contrib/cirrus/logcollector.sh @@ -74,6 +74,19 @@ case $1 in echo "Cgroups: " $(stat -f -c %T /sys/fs/cgroup) # Any not-present packages will be listed as such $PKG_LST_CMD "${PKG_NAMES[@]}" | sort -u + + # TODO: Remove this once netavark/aardvark-dns packages are used + if [[ "$TEST_ENVIRON" =~ netavark ]]; then + _npath=/usr/local/libexec/podman/ + for name in netavark aardvark-dns; do + echo "$name binary details:" + if [[ -r "$_npath/${name}.info" ]]; then + cat "$_npath/${name}.info" + else + echo "WARNING: $_npath/${name}.info not found." + fi + done + fi ;; time) # Assumed to be empty/undefined outside of Cirrus-CI (.cirrus.yml) diff --git a/contrib/cirrus/logformatter b/contrib/cirrus/logformatter index 70f119b5b..49ca91399 100755 --- a/contrib/cirrus/logformatter +++ b/contrib/cirrus/logformatter @@ -341,7 +341,7 @@ END_HTML # Highlight the important (non-boilerplate) podman command. $line =~ s/\s+--remote\s+/ /g; # --remote takes no args # Strip out the global podman options, but show them on hover - $line =~ s{(\S+\/podman(-remote)?)((\s+--(root|runroot|runtime|tmpdir|storage-opt|conmon|cgroup-manager|cni-config-dir|storage-driver|events-backend|url) \S+)*)(.*)}{ + $line =~ s{(\S+\/podman(-remote)?)((\s+--(root|runroot|runtime|tmpdir|storage-opt|conmon|cgroup-manager|network-config-dir|storage-driver|events-backend|url) \S+)*)(.*)}{ my ($full_path, $remote, $options, $args) = ($1, $2||'', $3, $6); $options =~ s/^\s+//; diff --git a/contrib/cirrus/logformatter.t b/contrib/cirrus/logformatter.t index d905693ad..a377faa34 100755 --- a/contrib/cirrus/logformatter.t +++ b/contrib/cirrus/logformatter.t @@ -122,17 +122,17 @@ $SCRIPT_BASE/integration_test.sh |& ${TIMESTAMP} [+0103s] /var/tmp/go/src/github.com/containers/podman/test/e2e/pod_restart_test.go:18 [+0103s] [It] podman pod restart single empty pod [+0103s] /var/tmp/go/src/github.com/containers/podman/test/e2e/pod_restart_test.go:41 -[+0103s] Running: /var/tmp/go/src/github.com/containers/podman/bin/podman --storage-opt vfs.imagestore=/tmp/podman/imagecachedir --root /tmp/podman_test553496330/crio --runroot /tmp/podman_test553496330/crio-run --runtime /usr/bin/runc --conmon /usr/bin/conmon --cni-config-dir /etc/cni/net.d --cgroup-manager systemd --tmpdir /tmp/podman_test553496330 --events-backend file --storage-driver vfs pod create --infra=false --share +[+0103s] Running: /var/tmp/go/src/github.com/containers/podman/bin/podman --storage-opt vfs.imagestore=/tmp/podman/imagecachedir --root /tmp/podman_test553496330/crio --runroot /tmp/podman_test553496330/crio-run --runtime /usr/bin/runc --conmon /usr/bin/conmon --network-config-dir /etc/cni/net.d --cgroup-manager systemd --tmpdir /tmp/podman_test553496330 --events-backend file --storage-driver vfs pod create --infra=false --share [+0103s] 4810be0cfbd42241e349dbe7d50fbc54405cd320a6637c65fd5323f34d64af89 [+0103s] output: 4810be0cfbd42241e349dbe7d50fbc54405cd320a6637c65fd5323f34d64af89 -[+0103s] Running: /var/tmp/go/src/github.com/containers/podman/bin/podman --storage-opt vfs.imagestore=/tmp/podman/imagecachedir --root /tmp/podman_test553496330/crio --runroot /tmp/podman_test553496330/crio-run --runtime /usr/bin/runc --conmon /usr/bin/conmon --cni-config-dir /etc/cni/net.d --cgroup-manager systemd --tmpdir /tmp/podman_test553496330 --events-backend file --storage-driver vfs pod restart 4810be0cfbd42241e349dbe7d50fbc54405cd320a6637c65fd5323f34d64af89 +[+0103s] Running: /var/tmp/go/src/github.com/containers/podman/bin/podman --storage-opt vfs.imagestore=/tmp/podman/imagecachedir --root /tmp/podman_test553496330/crio --runroot /tmp/podman_test553496330/crio-run --runtime /usr/bin/runc --conmon /usr/bin/conmon --network-config-dir /etc/cni/net.d --cgroup-manager systemd --tmpdir /tmp/podman_test553496330 --events-backend file --storage-driver vfs pod restart 4810be0cfbd42241e349dbe7d50fbc54405cd320a6637c65fd5323f34d64af89 [+0103s] Error: no containers in pod 4810be0cfbd42241e349dbe7d50fbc54405cd320a6637c65fd5323f34d64af89 have no dependencies, cannot start pod: no such container [+0103s] output: [+0103s] [AfterEach] Podman pod restart [+0103s] /var/tmp/go/src/github.com/containers/podman/test/e2e/pod_restart_test.go:28 -[+0103s] Running: /var/tmp/go/src/github.com/containers/podman/bin/podman --storage-opt vfs.imagestore=/tmp/podman/imagecachedir --root /tmp/podman_test553496330/crio --runroot /tmp/podman_test553496330/crio-run --runtime /usr/bin/runc --conmon /usr/bin/conmon --cni-config-dir /etc/cni/net.d --cgroup-manager systemd --tmpdir /tmp/podman_test553496330 --events-backend file --storage-driver vfs pod rm -fa +[+0103s] Running: /var/tmp/go/src/github.com/containers/podman/bin/podman --storage-opt vfs.imagestore=/tmp/podman/imagecachedir --root /tmp/podman_test553496330/crio --runroot /tmp/podman_test553496330/crio-run --runtime /usr/bin/runc --conmon /usr/bin/conmon --network-config-dir /etc/cni/net.d --cgroup-manager systemd --tmpdir /tmp/podman_test553496330 --events-backend file --storage-driver vfs pod rm -fa [+0103s] 4810be0cfbd42241e349dbe7d50fbc54405cd320a6637c65fd5323f34d64af89 -[+0104s] Running: /var/tmp/go/src/github.com/containers/libpod/bin/podman-remote --storage-opt vfs.imagestore=/tmp/podman/imagecachedir --root /tmp/podman_test553496330/crio --runroot /tmp/podman_test553496330/crio-run --runtime /usr/bin/runc --conmon /usr/bin/conmon --cni-config-dir /etc/cni/net.d --cgroup-manager systemd --tmpdir /tmp/podman_test553496330 --events-backend file --storage-driver vfs --remote --url unix:/run/user/12345/podman-xyz.sock pod rm -fa +[+0104s] Running: /var/tmp/go/src/github.com/containers/libpod/bin/podman-remote --storage-opt vfs.imagestore=/tmp/podman/imagecachedir --root /tmp/podman_test553496330/crio --runroot /tmp/podman_test553496330/crio-run --runtime /usr/bin/runc --conmon /usr/bin/conmon --network-config-dir /etc/cni/net.d --cgroup-manager systemd --tmpdir /tmp/podman_test553496330 --events-backend file --storage-driver vfs --remote --url unix:/run/user/12345/podman-xyz.sock pod rm -fa [+0104s] 4810be0cfbd42241e349dbe7d50fbc54405cd320a6637c65fd5323f34d64af89 again @@ -183,7 +183,7 @@ $SCRIPT_BASE/integration_test.sh |& ${TIMESTAMP} --runroot /tmp/podman_test553496330/crio-run --runtime /usr/bin/runc --conmon /usr/bin/conmon ---cni-config-dir /etc/cni/net.d +--network-config-dir /etc/cni/net.d --cgroup-manager systemd --tmpdir /tmp/podman_test553496330 --events-backend file @@ -194,7 +194,7 @@ $SCRIPT_BASE/integration_test.sh |& ${TIMESTAMP} --runroot /tmp/podman_test553496330/crio-run --runtime /usr/bin/runc --conmon /usr/bin/conmon ---cni-config-dir /etc/cni/net.d +--network-config-dir /etc/cni/net.d --cgroup-manager systemd --tmpdir /tmp/podman_test553496330 --events-backend file @@ -208,7 +208,7 @@ $SCRIPT_BASE/integration_test.sh |& ${TIMESTAMP} --runroot /tmp/podman_test553496330/crio-run --runtime /usr/bin/runc --conmon /usr/bin/conmon ---cni-config-dir /etc/cni/net.d +--network-config-dir /etc/cni/net.d --cgroup-manager systemd --tmpdir /tmp/podman_test553496330 --events-backend file @@ -220,7 +220,7 @@ $SCRIPT_BASE/integration_test.sh |& ${TIMESTAMP} --runroot /tmp/podman_test553496330/crio-run --runtime /usr/bin/runc --conmon /usr/bin/conmon ---cni-config-dir /etc/cni/net.d +--network-config-dir /etc/cni/net.d --cgroup-manager systemd --tmpdir /tmp/podman_test553496330 --events-backend file diff --git a/contrib/cirrus/runner.sh b/contrib/cirrus/runner.sh index c52fd9216..6376bafa2 100755 --- a/contrib/cirrus/runner.sh +++ b/contrib/cirrus/runner.sh @@ -12,7 +12,7 @@ set -eo pipefail # most notably: # # PODBIN_NAME : "podman" (i.e. local) or "remote" -# TEST_ENVIRON : 'host' or 'container'; desired environment in which to run +# TEST_ENVIRON : 'host', 'host-netavark', or 'container'; desired environment in which to run # CONTAINER : 1 if *currently* running inside a container, 0 if host # @@ -233,8 +233,7 @@ function _run_altbuild() { make build-no-cgo ;; *RPM*) - make -f ./.copr/Makefile - rpmbuild --rebuild ./podman-*.src.rpm + make package ;; Alt*Cross) arches=(\ diff --git a/contrib/cirrus/setup_environment.sh b/contrib/cirrus/setup_environment.sh index 8f535c7e7..829bb651d 100755 --- a/contrib/cirrus/setup_environment.sh +++ b/contrib/cirrus/setup_environment.sh @@ -130,7 +130,7 @@ esac # Required to be defined by caller: The environment where primary testing happens # shellcheck disable=SC2154 case "$TEST_ENVIRON" in - host) + host*) # The e2e tests wrongly guess `--cgroup-manager` option # shellcheck disable=SC2154 if [[ "$CG_FS_TYPE" == "cgroup2fs" ]] || [[ "$PRIV_NAME" == "root" ]] @@ -141,6 +141,43 @@ case "$TEST_ENVIRON" in warn "Forcing CGROUP_MANAGER=cgroupfs" echo "CGROUP_MANAGER=cgroupfs" >> /etc/ci_environment fi + # TODO: For the foreseeable future, need to support running tests + # with and without the latest netavark/aardvark. Once they're more + # stable and widely supported in Fedora, they can be pre-installed + # from its RPM at VM image build-time. + if [[ "$TEST_ENVIRON" =~ netavark ]]; then + for info in "netavark $NETAVARK_BRANCH $NETAVARK_URL $NETAVARK_DEBUG" \ + "aardvark-dns $AARDVARK_BRANCH $AARDVARK_URL $AARDVARK_DEBUG"; do + + read _name _branch _url _debug <<<"$info" + req_env_vars _name _branch _url _debug + msg "Downloading latest $_name from upstream branch '$_branch'" + # Use identifiable archive filename in of a get_ci_env.sh environment + curl --fail --location -o /tmp/$_name.zip "$_url" + + # Needs to be in a specific location + # ref: https://github.com/containers/common/blob/main/pkg/config/config_linux.go#L39 + _pdir=/usr/local/libexec/podman + mkdir -p $_pdir + cd $_pdir + msg "$PWD" + unzip /tmp/$_name.zip + if ((_debug)); then + warn "Using debug $_name binary" + mv $_name.debug $_name + else + rm $_name.debug + fi + chmod 0755 $_pdir/$_name + cd - + done + + restorecon -F -v $_nvdir + # This is critical, it signals to all tests that netavark + # use is expected. + msg "Forcing NETWORK_BACKEND=netavark in all subsequent environments." + echo "NETWORK_BACKEND=netavark" >> /etc/ci_environment + fi ;; container) if ((CONTAINER==0)); then # not yet inside a container @@ -177,19 +214,26 @@ esac # Required to be defined by caller: Are we testing as root or a regular user case "$PRIV_NAME" in - root) ;; + root) + if [[ "$TEST_FLAVOR" = "sys" ]]; then + # Used in local image-scp testing + setup_rootless + echo "PODMAN_ROOTLESS_USER=$ROOTLESS_USER" >> /etc/ci_environment + fi + ;; rootless) # load kernel modules since the rootless user has no permission to do so modprobe ip6_tables || : modprobe ip6table_nat || : - # Needs to exist for setup_rootless() - ROOTLESS_USER="${ROOTLESS_USER:-some${RANDOM}dude}" - echo "ROOTLESS_USER=$ROOTLESS_USER" >> /etc/ci_environment setup_rootless ;; *) die_unknown PRIV_NAME esac +if [[ -n "$ROOTLESS_USER" ]]; then + echo "ROOTLESS_USER=$ROOTLESS_USER" >> /etc/ci_environment +fi + # Required to be defined by caller: Are we testing podman or podman-remote client # shellcheck disable=SC2154 case "$PODBIN_NAME" in @@ -211,7 +255,7 @@ case "$TEST_FLAVOR" in # Defined in .cirrus.yml # shellcheck disable=SC2154 if [[ "$ALT_NAME" =~ RPM ]]; then - bigto dnf install -y glibc-minimal-langpack rpm-build + bigto dnf install -y glibc-minimal-langpack go-rpm-macros rpkg rpm-build shadow-utils-subid-devel fi ;& docker-py) @@ -240,19 +284,19 @@ case "$TEST_FLAVOR" in # Use existing host bits when testing is to happen inside a container # since this script will run again in that environment. # shellcheck disable=SC2154 - if [[ "$TEST_ENVIRON" == "host" ]]; then + if [[ "$TEST_ENVIRON" =~ host ]]; then if ((CONTAINER)); then die "Refusing to config. host-test in container"; fi remove_packaged_podman_files - make install PREFIX=/usr ETCDIR=/etc + make && make install PREFIX=/usr ETCDIR=/etc elif [[ "$TEST_ENVIRON" == "container" ]]; then if ((CONTAINER)); then remove_packaged_podman_files - make install PREFIX=/usr ETCDIR=/etc + make && make install PREFIX=/usr ETCDIR=/etc fi else - die "Invalid value for $$TEST_ENVIRON=$TEST_ENVIRON" + die "Invalid value for \$TEST_ENVIRON=$TEST_ENVIRON" fi install_test_configs @@ -266,7 +310,7 @@ case "$TEST_FLAVOR" in # Ref: https://gitlab.com/gitlab-org/gitlab-runner/-/issues/27270#note_499585550 remove_packaged_podman_files - make install PREFIX=/usr ETCDIR=/etc + make && make install PREFIX=/usr ETCDIR=/etc msg "Installing docker and containerd" # N/B: Tests check/expect `docker info` output, and this `!= podman info` diff --git a/contrib/helloimage/Containerfile b/contrib/helloimage/Containerfile new file mode 100644 index 000000000..bea71cae0 --- /dev/null +++ b/contrib/helloimage/Containerfile @@ -0,0 +1,8 @@ +FROM registry.access.redhat.com/ubi8-micro:latest + +LABEL maintainer="Podman Maintainers" +LABEL artist="Máirín Ní Ḋuḃṫaiġ, Twitter:@mairin" +WORKDIR /tmp + +COPY podman_hello_world.bash . +ENTRYPOINT ./podman_hello_world.bash diff --git a/contrib/helloimage/README.md b/contrib/helloimage/README.md new file mode 100644 index 000000000..93edcc527 --- /dev/null +++ b/contrib/helloimage/README.md @@ -0,0 +1,55 @@ +![PODMAN logo](../../logo/podman-logo-source.svg) + +# Podman Hello World image + +## Overview + +This directory contains the Containerfile and bash script necessary to create the +"hello" podman image housed on quay.io under the Podman account in a public +repository. The image is public and can be pulled without credentials. + +Using this image is helpful to: + + * Prove that basic Podman operations are working on the host. + * Shows that the image was pulled from the quay.io container registry. + * Container creation was successfuly accomplished. (`podman ps -a`) + * The created container was able to stream output to your terminal. + +## Directory Contents + +The contents of this directory contain: + * ./Containerfile + * ./podman_hello_world.bash + +## Sample Usage + +To simply run the image: + +``` +podman run quay.io/podman/hello + +! ... Hello Podman World ...! + + .--"--. + / - - \ + / (O) (O) \ + ~~~| -=(,Y,)=- | + .---. /` \ |~~ + ~/ o o \~~~~.----. ~~ + | =(X)= |~ / (O (O) \ + ~~~~~~~ ~| =(Y_)=- | + ~~~~ ~~~| U |~~ + +Project: https://github.com/containers/podman +Website: https://podman.io +Documents: https://docs.podman.io +Twitter: @Podman_io +``` +To build the image yourself, copy the files from this directory into +a local directory and issue these commands: + +``` +chmod 755 ./podman_hello_world.bash +podman build -t myhello . +podman run myhello +``` diff --git a/contrib/helloimage/podman_hello_world.bash b/contrib/helloimage/podman_hello_world.bash new file mode 100755 index 000000000..c28141174 --- /dev/null +++ b/contrib/helloimage/podman_hello_world.bash @@ -0,0 +1,23 @@ +#!/bin/sh +### +# ASCII art by the incomparable Máirín Duffy, +# duffy@redhat.com, Twitter: @mairin +# January 2022 +### +echo " " +echo "! ... Hello Podman World ...!" +echo " " +echo " .--\"--. " +echo " / - - \\ " +echo " / (O) (O) \\ " +echo " ~~~| -=(,Y,)=- | " +echo " .---. /\` \\ |~~ " +echo " ~/ o o \\~~~~.----. ~~ " +echo " | =(X)= |~ / (O (O) \\ " +echo " ~~~~~~~ ~| =(Y_)=- | " +echo " ~~~~ ~~~| U |~~ " +echo "" +echo "Project: https://github.com/containers/podman" +echo "Website: https://podman.io" +echo "Documents: https://docs.podman.io" +echo "Twitter: @Podman_io" diff --git a/contrib/msi/podman.wxs b/contrib/msi/podman.wxs index c2826fc19..c4ba623c0 100644 --- a/contrib/msi/podman.wxs +++ b/contrib/msi/podman.wxs @@ -29,6 +29,9 @@ <Component Id="WinPathExecutable" Guid="00F5B731-D4A6-4B69-87B0-EA4EBAB89F95" Win64="Yes"> <File Id="8F507E28-A61D-4E64-A92B-B5A00F023AE8" Name="winpath.exe" Source="bin/windows/winpath.exe" KeyPath="yes"/> </Component> + <Component Id="WinSshProxyExecutable" Guid="0DA730AB-2F97-40E8-A8FC-356E88EAA4D2" Win64="Yes"> + <File Id="4A2AD125-34E7-4BD8-BE28-B2A9A5EDBEB5" Name="win-sshproxy.exe" Source="bin/windows/win-sshproxy.exe" KeyPath="yes"/> + </Component> </Directory> </Directory> </Directory> @@ -41,6 +44,7 @@ <ComponentRef Id="INSTALLDIR_Component"/> <ComponentRef Id="MainExecutable"/> <ComponentRef Id="WinPathExecutable"/> + <ComponentRef Id="WinSshProxyExecutable"/> <ComponentGroupRef Id="ManFiles"/> </Feature> diff --git a/contrib/spec/podman.spec.in b/contrib/spec/podman.spec.in deleted file mode 100644 index cb041df6c..000000000 --- a/contrib/spec/podman.spec.in +++ /dev/null @@ -1,571 +0,0 @@ -%global with_devel 0 -%global with_bundled 1 -%global with_check 0 -%global with_unit_test 0 -%bcond_without doc - -%global debug_package %{nil} - -# podman hack directory -%define hackdir %{_builddir}/%{repo}-%{shortcommit0} - -%global provider github -%global provider_tld com -%global project containers -%global repo podman -# https://github.com/containers/podman -%global provider_prefix %{provider}.%{provider_tld}/%{project}/%{repo} -%global import_path %{provider_prefix} -%global git0 https://%{provider}.%{provider_tld}/%{project}/%{repo} -%global commit0 #COMMIT# -%global shortcommit0 %(c=%{commit0}; echo ${c:0:8}) - -Name: podman -%if 0%{?fedora} -Epoch: 99 -%else -Epoch: 0 -%endif -Version: 3.3.0 -Release: #COMMITDATE#.git%{shortcommit0}%{?dist} -Summary: Manage Pods, Containers and Container Images -License: ASL 2.0 -URL: %{git_podman} -Source0: %{git0}/archive/%{commit0}/%{repo}-%{shortcommit0}.tar.gz -Source1: conmon.tar.gz -# e.g. el6 has ppc64 arch without gcc-go, so EA tag is required -#ExclusiveArch: %%{?go_arches:%%{go_arches}}%%{!?go_arches:%%{ix86} x86_64 aarch64 %%{arm}} -ExclusiveArch: aarch64 %{arm} ppc64le s390x x86_64 -# The COPR process will uncomment this -#BuildRequires: golang-bin -# -# btrfs-progs-devel package is not available in CentOS/RHEL-8 -%if 0%{?rhel} != 8 && 0%{?centos} != 8 -BuildRequires: btrfs-progs-devel -%endif -BuildRequires: glib2-devel -BuildRequires: glibc-devel -BuildRequires: glibc-static -BuildRequires: git -%if %{with doc} -BuildRequires: go-md2man -%endif -BuildRequires: gpgme-devel -BuildRequires: libassuan-devel -BuildRequires: libgpg-error-devel -BuildRequires: libseccomp-devel -BuildRequires: libselinux-devel -BuildRequires: pkgconfig -BuildRequires: make -BuildRequires: systemd-devel -Requires: catatonit >= 0.1.7 -Requires: containers-common -Requires: conmon -Requires: containernetworking-plugins >= 0.6.0-3 -Requires: iptables -%if 0%{?rhel} < 8 || 0%{?centos} < 8 -Requires: container-selinux -Requires: runc -%else -%if 0%{?rhel} || 0%{?centos} -Requires: runc -%else -Requires: oci-runtime -Recommends: crun -%endif -Recommends: container-selinux -Recommends: slirp4netns -Recommends: fuse-overlayfs -Recommends: xz -%endif - -# vendored libraries -# awk '{print "Provides: bundled(golang("$1")) = "$2}' vendor.conf | sort -# [thanks to Carl George <carl@george.computer> for containerd.spec] -Provides: bundled(golang(github.com/Azure/go-ansiterm)) = 19f72df4d05d31cbe1c56bfc8045c96babff6c7e -Provides: bundled(golang(github.com/blang/semver)) = v3.5.0 -Provides: bundled(golang(github.com/boltdb/bolt)) = master -Provides: bundled(golang(github.com/buger/goterm)) = 2f8dfbc7dbbff5dd1d391ed91482c24df243b2d3 -Provides: bundled(golang(github.com/BurntSushi/toml)) = v0.2.0 -Provides: bundled(golang(github.com/containerd/cgroups)) = 77e628511d924b13a77cebdc73b757a47f6d751b -Provides: bundled(golang(github.com/containerd/continuity)) = master -Provides: bundled(golang(github.com/containernetworking/cni)) = v0.7.0-alpha1 -Provides: bundled(golang(github.com/containernetworking/plugins)) = 1fb94a4222eafc6f948eacdca9c9f2158b427e53 -Provides: bundled(golang(github.com/containers/image)) = c6e0eee0f8eb38e78ae2e44a9aeea0576f451617 -Provides: bundled(golang(github.com/containers/psgo)) = dd34e7e448e5d4f3c7ce87b5da7738b00778dbfd -Provides: bundled(golang(github.com/containers/storage)) = 8b1a0f8d6863cf05709af333b8997a437652ec4c -Provides: bundled(golang(github.com/coreos/go-systemd)) = v14 -Provides: bundled(golang(github.com/cri-o/ocicni)) = master -Provides: bundled(golang(github.com/cyphar/filepath-securejoin)) = v0.2.1 -Provides: bundled(golang(github.com/davecgh/go-spew)) = v1.1.0 -Provides: bundled(golang(github.com/docker/distribution)) = 7a8efe719e55bbfaff7bc5718cdf0ed51ca821df -Provides: bundled(golang(github.com/docker/docker)) = 86f080cff0914e9694068ed78d503701667c4c00 -Provides: bundled(golang(github.com/docker/docker-credential-helpers)) = d68f9aeca33f5fd3f08eeae5e9d175edf4e731d1 -Provides: bundled(golang(github.com/docker/go-connections)) = 3ede32e2033de7505e6500d6c868c2b9ed9f169d -Provides: bundled(golang(github.com/docker/go-units)) = v0.3.2 -Provides: bundled(golang(github.com/docker/libtrust)) = aabc10ec26b754e797f9028f4589c5b7bd90dc20 -Provides: bundled(golang(github.com/docker/spdystream)) = ed496381df8283605c435b86d4fdd6f4f20b8c6e -Provides: bundled(golang(github.com/fatih/camelcase)) = f6a740d52f961c60348ebb109adde9f4635d7540 -Provides: bundled(golang(github.com/fsnotify/fsnotify)) = 7d7316ed6e1ed2de075aab8dfc76de5d158d66e1 -Provides: bundled(golang(github.com/fsouza/go-dockerclient)) = master -Provides: bundled(golang(github.com/ghodss/yaml)) = 04f313413ffd65ce25f2541bfd2b2ceec5c0908c -Provides: bundled(golang(github.com/godbus/dbus)) = a389bdde4dd695d414e47b755e95e72b7826432c -Provides: bundled(golang(github.com/gogo/protobuf)) = c0656edd0d9eab7c66d1eb0c568f9039345796f7 -Provides: bundled(golang(github.com/golang/glog)) = 23def4e6c14b4da8ac2ed8007337bc5eb5007998 -Provides: bundled(golang(github.com/golang/groupcache)) = b710c8433bd175204919eb38776e944233235d03 -Provides: bundled(golang(github.com/golang/protobuf)) = 4bd1920723d7b7c925de087aa32e2187708897f7 -Provides: bundled(golang(github.com/googleapis/gnostic)) = 0c5108395e2debce0d731cf0287ddf7242066aba -Provides: bundled(golang(github.com/google/gofuzz)) = 44d81051d367757e1c7c6a5a86423ece9afcf63c -Provides: bundled(golang(github.com/gorilla/context)) = v1.1 -Provides: bundled(golang(github.com/gorilla/mux)) = v1.3.0 -Provides: bundled(golang(github.com/hashicorp/errwrap)) = 7554cd9344cec97297fa6649b055a8c98c2a1e55 -Provides: bundled(golang(github.com/hashicorp/golang-lru)) = 0a025b7e63adc15a622f29b0b2c4c3848243bbf6 -Provides: bundled(golang(github.com/hashicorp/go-multierror)) = 83588e72410abfbe4df460eeb6f30841ae47d4c4 -Provides: bundled(golang(github.com/imdario/mergo)) = 0.2.2 -Provides: bundled(golang(github.com/json-iterator/go)) = 1.0.0 -Provides: bundled(golang(github.com/kr/pty)) = v1.0.0 -Provides: bundled(golang(github.com/mattn/go-runewidth)) = v0.0.1 -Provides: bundled(golang(github.com/Microsoft/go-winio)) = 78439966b38d69bf38227fbf57ac8a6fee70f69a -Provides: bundled(golang(github.com/Microsoft/hcsshim)) = 43f9725307998e09f2e3816c2c0c36dc98f0c982 -Provides: bundled(golang(github.com/mistifyio/go-zfs)) = v2.1.1 -Provides: bundled(golang(github.com/mrunalp/fileutils)) = master -Provides: bundled(golang(github.com/mtrmac/gpgme)) = b2432428689ca58c2b8e8dea9449d3295cf96fc9 -Provides: bundled(golang(github.com/Nvveen/Gotty)) = master -Provides: bundled(golang(github.com/opencontainers/go-digest)) = v1.0.0-rc0 -Provides: bundled(golang(github.com/opencontainers/image-spec)) = v1.0.0 -Provides: bundled(golang(github.com/opencontainers/runc)) = 6e15bc3f92fd4c58b3285e8f27eaeb6b22d62920 -Provides: bundled(golang(github.com/opencontainers/runtime-spec)) = v1.0.0 -Provides: bundled(golang(github.com/opencontainers/runtime-tools)) = 625e2322645b151a7cbb93a8b42920933e72167f -Provides: bundled(golang(github.com/opencontainers/selinux)) = b6fa367ed7f534f9ba25391cc2d467085dbb445a -Provides: bundled(golang(github.com/openshift/imagebuilder)) = master -Provides: bundled(golang(github.com/pkg/errors)) = v0.8.0 -Provides: bundled(golang(github.com/pmezard/go-difflib)) = 792786c7400a136282c1664665ae0a8db921c6c2 -Provides: bundled(golang(github.com/pquerna/ffjson)) = d49c2bc1aa135aad0c6f4fc2056623ec78f5d5ac -Provides: bundled(golang(github.com/containers/buildah)) = a2c8358455f9b6a254c572455af2a0afcfcec544 -Provides: bundled(golang(github.com/seccomp/containers-golang)) = master -Provides: bundled(golang(github.com/seccomp/libseccomp-golang)) = v0.9.0 -Provides: bundled(golang(github.com/sirupsen/logrus)) = v1.0.0 -Provides: bundled(golang(github.com/spf13/pflag)) = 9ff6c6923cfffbcd502984b8e0c80539a94968b7 -Provides: bundled(golang(github.com/stretchr/testify)) = 4d4bfba8f1d1027c4fdbe371823030df51419987 -Provides: bundled(golang(github.com/syndtr/gocapability)) = e7cb7fa329f456b3855136a2642b197bad7366ba -Provides: bundled(golang(github.com/tchap/go-patricia)) = v2.2.6 -Provides: bundled(golang(github.com/ulikunitz/xz)) = v0.5.4 -# "-" are not accepted in version strings, so comment out below line -#Provides: bundled(golang(github.com/urfave/cli)) = fix-short-opts-parsing -Provides: bundled(golang(github.com/vbatts/tar-split)) = v0.10.2 -Provides: bundled(golang(github.com/vishvananda/netlink)) = master -Provides: bundled(golang(github.com/vishvananda/netns)) = master -Provides: bundled(golang(github.com/xeipuuv/gojsonpointer)) = master -Provides: bundled(golang(github.com/xeipuuv/gojsonreference)) = master -Provides: bundled(golang(github.com/xeipuuv/gojsonschema)) = master -Provides: bundled(golang(golang.org/x/crypto)) = 81e90905daefcd6fd217b62423c0908922eadb30 -Provides: bundled(golang(golang.org/x/net)) = c427ad74c6d7a814201695e9ffde0c5d400a7674 -Provides: bundled(golang(golang.org/x/sys)) = master -Provides: bundled(golang(golang.org/x/text)) = f72d8390a633d5dfb0cc84043294db9f6c935756 -Provides: bundled(golang(golang.org/x/time)) = f51c12702a4d776e4c1fa9b0fabab841babae631 -Provides: bundled(golang(google.golang.org/grpc)) = v1.0.4 -Provides: bundled(golang(gopkg.in/cheggaaa/pb.v1)) = v1.0.7 -Provides: bundled(golang(gopkg.in/inf.v0)) = v0.9.0 -Provides: bundled(golang(gopkg.in/mgo.v2)) = v2 -Provides: bundled(golang(gopkg.in/square/go-jose.v2)) = v2.1.3 -Provides: bundled(golang(gopkg.in/yaml.v2)) = v2 -Provides: bundled(golang(k8s.io/api)) = 5ce4aa0bf2f097f6021127b3d879eeda82026be8 -Provides: bundled(golang(k8s.io/apiextensions-apiserver)) = 1b31e26d82f1ec2e945c560790e98f34bb5f2e63 -Provides: bundled(golang(k8s.io/apimachinery)) = 616b23029fa3dc3e0ccefd47963f5651a6543d94 -Provides: bundled(golang(k8s.io/apiserver)) = 4d1163080139f1f9094baf8a3a6099e85e1867f6 -Provides: bundled(golang(k8s.io/client-go)) = 7cd1d3291b7d9b1e2d54d4b69eb65995eaf8888e -Provides: bundled(golang(k8s.io/kube-openapi)) = 275e2ce91dec4c05a4094a7b1daee5560b555ac9 -Provides: bundled(golang(k8s.io/utils)) = 258e2a2fa64568210fbd6267cf1d8fd87c3cb86e - -%description -%{summary} -%{repo} provides a library for applications looking to use -the Container Pod concept popularized by Kubernetes. - -%package remote -Summary: Remote Podman client - -%description -n podman-remote -%{summary} -This package provides the Podman remote client which -can be used to access Podman running on a server. - -%if 0%{?with_devel} -%package devel -Summary: Library for applications looking to use Container Pods -BuildArch: noarch -Provides: %{repo}-devel = %{version}-%{release} - -%if 0%{?with_check} && ! 0%{?with_bundled} -BuildRequires: golang(github.com/BurntSushi/toml) -BuildRequires: golang(github.com/containerd/cgroups) -BuildRequires: golang(github.com/containernetworking/plugins/pkg/ns) -BuildRequires: golang(github.com/containers/image/copy) -BuildRequires: golang(github.com/containers/image/directory) -BuildRequires: golang(github.com/containers/image/docker) -BuildRequires: golang(github.com/containers/image/docker/archive) -BuildRequires: golang(github.com/containers/image/docker/reference) -BuildRequires: golang(github.com/containers/image/docker/tarfile) -BuildRequires: golang(github.com/containers/image/image) -BuildRequires: golang(github.com/containers/image/oci/archive) -BuildRequires: golang(github.com/containers/image/pkg/strslice) -BuildRequires: golang(github.com/containers/image/pkg/sysregistriesv2) -BuildRequires: golang(github.com/containers/image/signature) -BuildRequires: golang(github.com/containers/image/storage) -BuildRequires: golang(github.com/containers/image/tarball) -BuildRequires: golang(github.com/containers/image/transports/alltransports) -BuildRequires: golang(github.com/containers/image/types) -BuildRequires: golang(github.com/containers/storage) -BuildRequires: golang(github.com/containers/storage/pkg/archive) -BuildRequires: golang(github.com/containers/storage/pkg/idtools) -BuildRequires: golang(github.com/containers/storage/pkg/reexec) -BuildRequires: golang(github.com/coreos/go-systemd/dbus) -BuildRequires: golang(github.com/cri-o/ocicni/pkg/ocicni) -BuildRequires: golang(github.com/docker/distribution/reference) -BuildRequires: golang(github.com/docker/docker/daemon/caps) -BuildRequires: golang(github.com/docker/docker/pkg/mount) -BuildRequires: golang(github.com/docker/docker/pkg/namesgenerator) -BuildRequires: golang(github.com/docker/docker/pkg/stringid) -BuildRequires: golang(github.com/docker/docker/pkg/system) -BuildRequires: golang(github.com/docker/docker/pkg/term) -BuildRequires: golang(github.com/docker/docker/pkg/truncindex) -BuildRequires: golang(github.com/ghodss/yaml) -BuildRequires: golang(github.com/godbus/dbus) -BuildRequires: golang(github.com/mattn/go-sqlite3) -BuildRequires: golang(github.com/mrunalp/fileutils) -BuildRequires: golang(github.com/opencontainers/go-digest) -BuildRequires: golang(github.com/opencontainers/image-spec/specs-go/v1) -BuildRequires: golang(github.com/opencontainers/runc/libcontainer) -BuildRequires: golang(github.com/opencontainers/runtime-spec/specs-go) -BuildRequires: golang(github.com/opencontainers/runtime-tools/generate) -BuildRequires: golang(github.com/opencontainers/selinux/go-selinux) -BuildRequires: golang(github.com/opencontainers/selinux/go-selinux/label) -BuildRequires: golang(github.com/pkg/errors) -BuildRequires: golang(github.com/sirupsen/logrus) -BuildRequires: golang(golang.org/x/crypto/ssh/terminal) -BuildRequires: golang(golang.org/x/sys/unix) -BuildRequires: golang(k8s.io/apimachinery/pkg/util/wait) -BuildRequires: golang(k8s.io/client-go/tools/remotecommand) -BuildRequires: golang(k8s.io/kubernetes/pkg/kubelet/container) -%endif - -Requires: golang(github.com/BurntSushi/toml) -Requires: golang(github.com/containerd/cgroups) -Requires: golang(github.com/containernetworking/plugins/pkg/ns) -Requires: golang(github.com/containers/image/copy) -Requires: golang(github.com/containers/image/directory) -Requires: golang(github.com/containers/image/docker) -Requires: golang(github.com/containers/image/docker/archive) -Requires: golang(github.com/containers/image/docker/reference) -Requires: golang(github.com/containers/image/docker/tarfile) -Requires: golang(github.com/containers/image/image) -Requires: golang(github.com/containers/image/oci/archive) -Requires: golang(github.com/containers/image/pkg/strslice) -Requires: golang(github.com/containers/image/pkg/sysregistriesv2) -Requires: golang(github.com/containers/image/signature) -Requires: golang(github.com/containers/image/storage) -Requires: golang(github.com/containers/image/tarball) -Requires: golang(github.com/containers/image/transports/alltransports) -Requires: golang(github.com/containers/image/types) -Requires: golang(github.com/containers/storage) -Requires: golang(github.com/containers/storage/pkg/archive) -Requires: golang(github.com/containers/storage/pkg/idtools) -Requires: golang(github.com/containers/storage/pkg/reexec) -Requires: golang(github.com/coreos/go-systemd/dbus) -Requires: golang(github.com/cri-o/ocicni/pkg/ocicni) -Requires: golang(github.com/docker/distribution/reference) -Requires: golang(github.com/docker/docker/daemon/caps) -Requires: golang(github.com/docker/docker/pkg/mount) -Requires: golang(github.com/docker/docker/pkg/namesgenerator) -Requires: golang(github.com/docker/docker/pkg/stringid) -Requires: golang(github.com/docker/docker/pkg/system) -Requires: golang(github.com/docker/docker/pkg/term) -Requires: golang(github.com/docker/docker/pkg/truncindex) -Requires: golang(github.com/ghodss/yaml) -Requires: golang(github.com/godbus/dbus) -Requires: golang(github.com/mattn/go-sqlite3) -Requires: golang(github.com/mrunalp/fileutils) -Requires: golang(github.com/opencontainers/go-digest) -Requires: golang(github.com/opencontainers/image-spec/specs-go/v1) -Requires: golang(github.com/opencontainers/runc/libcontainer) -Requires: golang(github.com/opencontainers/runtime-spec/specs-go) -Requires: golang(github.com/opencontainers/runtime-tools/generate) -Requires: golang(github.com/opencontainers/selinux/go-selinux) -Requires: golang(github.com/opencontainers/selinux/go-selinux/label) -Requires: golang(github.com/pkg/errors) -Requires: golang(github.com/sirupsen/logrus) -Requires: golang(golang.org/x/crypto/ssh/terminal) -Requires: golang(golang.org/x/sys/unix) -Requires: golang(k8s.io/apimachinery/pkg/util/wait) -Requires: golang(k8s.io/client-go/tools/remotecommand) -Requires: golang(k8s.io/kubernetes/pkg/kubelet/container) - -Provides: golang(%{import_path}/cmd/%{name}/docker) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/%{name}/formats) = %{version}-%{release} -Provides: golang(%{import_path}/libkpod) = %{version}-%{release} -Provides: golang(%{import_path}/libpod) = %{version}-%{release} -Provides: golang(%{import_path}/libpod/common) = %{version}-%{release} -Provides: golang(%{import_path}/libpod/driver) = %{version}-%{release} -Provides: golang(%{import_path}/libpod/layers) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/annotations) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/chrootuser) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registrar) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage) = %{version}-%{release} -Provides: golang(%{import_path}/utils) = %{version}-%{release} - -%description -n libpod-devel -%{summary} - -This package contains library source intended for -building other packages which use import path with -%{import_path} prefix. -%endif - -%if 0%{?with_unit_test} && 0%{?with_devel} -%package unit-test-devel -Summary: Unit tests for %{name} package -%if 0%{?with_check} -#Here comes all BuildRequires: PACKAGE the unit tests -#in %%check section need for running -%endif - -# test subpackage tests code from devel subpackage -Requires: %{name}-devel = %{version}-%{release} - -%if 0%{?with_check} && ! 0%{?with_bundled} -BuildRequires: golang(github.com/stretchr/testify/assert) -BuildRequires: golang(github.com/urfave/cli) -%endif - -Requires: golang(github.com/stretchr/testify/assert) -Requires: golang(github.com/urfave/cli) - -%description unit-test-devel -%{summary} -libpod provides a library for applications looking to use the Container Pod concept popularized by Kubernetes. - -This package contains unit tests for project -providing packages with %{import_path} prefix. -%endif - -%if %{with doc} -%package manpages -Summary: Man pages for the %{name} commands -BuildArch: noarch - -%description manpages -Man pages for the %{name} commands -%endif - -%if 0%{?fedora} && ! 0%{?centos} -%package tests -Summary: Tests for %{name} - -Requires: %{name} = %{epoch}:%{version}-%{release} -Requires: gnupg -Requires: bats -Requires: jq -Requires: skopeo -Requires: nmap-ncat -Requires: httpd-tools -Requires: openssl -Requires: socat -Requires: buildah - -%description tests -%{summary} - -This package contains system tests for %{name} -%endif - -%prep -%autosetup -Sgit -n %{repo}-%{shortcommit0} - -# untar conmon -tar zxf %{SOURCE1} - -%build -mkdir _build -pushd _build - -# These flags should work for all rpm distros and arches -export CGO_CFLAGS="-O2 -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -ffat-lto-objects -fexceptions -fasynchronous-unwind-tables -fstack-protector-strong -fstack-clash-protection -D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE" - -%if 0%{?fedora} || 0%{?rhel} -# This flag is only present on RH-family distros -export CGO_CFLAGS+=" -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1" -%endif - -%ifnarch %{ix86} -# Build fails on i686 with this flag -export CGO_CFLAGS+=" -D_FILE_OFFSET_BITS=64" -%endif - -%ifarch x86_64 -# Builds only on x86_64 with this flag -export CGO_CFLAGS+=" -m64 -mtune=generic" -%if 0%{?fedora} || 0%{?rhel} >= 8 -# Build fails on rhel7 and non-86_64 with this flag -export CGO_CFLAGS+=" -fcf-protection" -%endif -%endif - -mkdir -p src/%{provider}.%{provider_tld}/%{project} -ln -s ../../../../ src/%{import_path} -popd -ln -s vendor src -export GO111MODULE=on -export GOPATH=$(pwd)/_build:$(pwd):$(pwd):%{gopath} -export BUILDTAGS="selinux seccomp systemd $(%{hackdir}/hack/btrfs_installed_tag.sh) $(%{hackdir}/hack/btrfs_tag.sh) $(%{hackdir}/hack/libdm_tag.sh) exclude_graphdriver_devicemapper" - -%if %{with doc} -BUILDTAGS=$BUILDTAGS make binaries docs -%else -BUILDTAGS=$BUILDTAGS make binaries -%endif - -%install -install -dp %{buildroot}%{_unitdir} -install -dp %{buildroot}%{_usr}/lib/systemd/user -PODMAN_VERSION=%{version} %{__make} DESTDIR=%{buildroot} PREFIX=%{_prefix} ETCDIR=%{_sysconfdir} \ - install.bin-nobuild \ - install.remote-nobuild \ -%if %{with doc} - install.man-nobuild \ -%endif - install.systemd \ - install.completions - -mv pkg/hooks/README.md pkg/hooks/README-hooks.md - -# source codes for building projects -%if 0%{?with_devel} -install -d -p %{buildroot}/%{gopath}/src/%{import_path}/ - -echo "%%dir %%{gopath}/src/%%{import_path}/." >> devel.file-list -# find all *.go but no *_test.go files and generate devel.file-list -for file in $(find . \( -iname "*.go" -or -iname "*.s" \) \! -iname "*_test.go" | grep -v "vendor") ; do - dirprefix=$(dirname $file) - install -d -p %{buildroot}/%{gopath}/src/%{import_path}/$dirprefix - cp -pav $file %{buildroot}/%{gopath}/src/%{import_path}/$file - echo "%%{gopath}/src/%%{import_path}/$file" >> devel.file-list - - while [ "$dirprefix" != "." ]; do - echo "%%dir %%{gopath}/src/%%{import_path}/$dirprefix" >> devel.file-list - dirprefix=$(dirname $dirprefix) - done -done -%endif - -%if 0%{?fedora} && ! 0%{?centos} -install -d -p %{buildroot}/%{_datadir}/%{name}/test/system -cp -pav test/system %{buildroot}/%{_datadir}/%{name}/test/ -%endif - -# testing files for this project -%if 0%{?with_unit_test} && 0%{?with_devel} -install -d -p %{buildroot}/%{gopath}/src/%{import_path}/ -# find all *_test.go files and generate unit-test-devel.file-list -for file in $(find . -iname "*_test.go" | grep -v "vendor") ; do - dirprefix=$(dirname $file) - install -d -p %{buildroot}/%{gopath}/src/%{import_path}/$dirprefix - cp -pav $file %{buildroot}/%{gopath}/src/%{import_path}/$file - echo "%%{gopath}/src/%%{import_path}/$file" >> unit-test-devel.file-list - - while [ "$dirprefix" != "." ]; do - echo "%%dir %%{gopath}/src/%%{import_path}/$dirprefix" >> devel.file-list - dirprefix=$(dirname $dirprefix) - done -done -%endif - -%if 0%{?with_devel} -sort -u -o devel.file-list devel.file-list -%endif - -%check -%if 0%{?with_check} && 0%{?with_unit_test} && 0%{?with_devel} -%if ! 0%{?with_bundled} -export GOPATH=%{buildroot}/%{gopath}:%{gopath} -%else -# Since we aren't packaging up the vendor directory we need to link -# back to it somehow. Hack it up so that we can add the vendor -# directory from BUILD dir as a gopath to be searched when executing -# tests from the BUILDROOT dir. -ln -s ./ ./vendor/src # ./vendor/src -> ./vendor - -export GOPATH=%{buildroot}/%{gopath}:$(pwd)/vendor:%{gopath} -%endif - -%if ! 0%{?gotest:1} -%global gotest go test -%endif - -%gotest %{import_path}/cmd/%{name} -%gotest %{import_path}/libkpod -%gotest %{import_path}/libpod -%gotest %{import_path}/pkg/registrar -%endif - -#define license tag if not already defined -%{!?_licensedir:%global license %doc} - -%files -%license LICENSE -%doc README.md CONTRIBUTING.md pkg/hooks/README-hooks.md install.md CODE-OF-CONDUCT.md transfer.md -%{_bindir}/%{name} -%{_datadir}/bash-completion/completions/* -%{_datadir}/zsh/site-functions/* -%{_datadir}/fish/vendor_completions.d/* -%{_unitdir}/podman-auto-update.service -%{_unitdir}/podman-auto-update.timer -%{_unitdir}/podman.service -%{_unitdir}/podman.socket -%{_unitdir}/podman-restart.service -%{_usr}/lib/systemd/user/podman.service -%{_usr}/lib/systemd/user/podman.socket -%{_usr}/lib/systemd/user/podman-auto-update.service -%{_usr}/lib/systemd/user/podman-auto-update.timer -%{_usr}/lib/systemd/user/podman-restart.service -%{_usr}/lib/tmpfiles.d/podman.conf -%dir %{_libexecdir}/%{name} -%{_libexecdir}/%{name}/rootlessport - -%if 0%{?with_devel} -%files -n libpod-devel -f devel.file-list -%license LICENSE -%doc README.md CONTRIBUTING.md pkg/hooks/README-hooks.md install.md CODE-OF-CONDUCT.md transfer.md -%dir %{gopath}/src/%{provider}.%{provider_tld}/%{project} -%endif - -%if 0%{?with_unit_test} && 0%{?with_devel} -%files unit-test-devel -f unit-test-devel.file-list -%license LICENSE -%doc README.md CONTRIBUTING.md pkg/hooks/README-hooks.md install.md CODE-OF-CONDUCT.md transfer.md -%endif - -%files -n podman-remote -%license LICENSE -%doc README.md CONTRIBUTING.md pkg/hooks/README-hooks.md install.md CODE-OF-CONDUCT.md transfer.md -%{_bindir}/%{name}-remote - -%if %{with doc} -%files manpages -%{_mandir}/man1/*.1* -%{_mandir}/man5/*.5* -%endif - -%if 0%{?fedora} && ! 0%{?centos} -%files tests -%license LICENSE -%{_datadir}/%{name}/test -%dir %{_datadir}/%{name}/test/system -%endif - -%changelog -* Sat Aug 4 2018 Dan Walsh <dwalsh@redhat.com> - 0.8.1-1.git6b4ab2a -- Bump to v0.8.1 - -* Sun Jul 29 2018 Lokesh Mandvekar (Bot) <lsm5+bot@fedoraproject.org> - 0.8.10.8.1-1.dev.git1a439f9.dev.git5a4e590.dev.git433cbd51 -- bump to 0.8.1 -- autobuilt 433cbd5 |