diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 000000000..85ef3f7e1 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,31 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License +# + +Containerfile + +.git +.idea +**/.mypy_cache +**/.pytest_cache +**/__pycache__ +**/*.pyc + +build +cmake-build-* +target diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e507e5a5d..2e4eb7ae0 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -269,3 +269,42 @@ jobs: if: always() run: env -0 | sort -z | tr '\0' '\n' shell: bash + + container: + name: Container image + runs-on: ubuntu-latest + steps: + + - uses: actions/checkout@v3 + + - name: Build Containerfile + run: | + docker build -f ./Containerfile -t local/qpid-cpp:local . + + - name: Run qpidd --help + run: | + docker run --rm local/qpid-cpp:local /usr/sbin/qpidd --help + + - name: Start qpidd + run: | + docker run --name qpidd -d --rm -p 5672:5672 local/qpid-cpp:local /usr/sbin/qpidd + + - name: Setup python 2.7 + id: python + uses: actions/setup-python@v4 + with: + python-version: 2.7 + architecture: x64 + + - name: Fetch qpid-python from git + uses: actions/checkout@v3 + with: + repository: apache/qpid-python + ref: main + path: qpid-python + + - name: Run qpid-python tests against the container + run: | + ${{ steps.python.outputs.python-path }} -m pip install qpid-tools qpid-qmf --no-deps + ${{ steps.python.outputs.python-path }} qpid-python-test -m qpid_tests + working-directory: qpid-python diff --git a/Containerfile b/Containerfile new file mode 100644 index 000000000..06b23bf5d --- /dev/null +++ b/Containerfile @@ -0,0 +1,60 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +FROM quay.io/centos/centos:stream9 as builder + +RUN dnf -y install epel-release 'dnf-command(config-manager)' +RUN dnf config-manager --set-enabled crb + +# I am referring to the CentOS7 package (.spec file in the src.rpm) to look up dependencies +# https://koji.fedoraproject.org/koji/buildinfo?buildID=1180279 +# TODO seemingly unavailable packages: +# xqilla-devel + +RUN dnf -y --setopt=install_weak_deps=0 --setopt=tsflags=nodocs install \ + rpm-build \ + gcc gcc-c++ make cmake \ + boost-devel boost-filesystem boost-program-options \ + xerces-c-devel \ + rdma-core-devel \ + libdb-devel libdb-cxx-devel libaio-devel \ + qpid-proton-c-devel \ + swig perl-devel python3-devel ruby-devel rubygem-rexml \ + libuuid-devel nss-devel nspr-devel nss-tools cyrus-sasl cyrus-sasl-lib cyrus-sasl-devel \ + wget tar patch findutils git pkgconfig + +# Workaround for latest release of qpid-python being incompatible with python 3 +WORKDIR /build +RUN git clone https://github.com/apache/qpid-python.git \ + && cd qpid-python \ + && python3 setup.py install + +# git clone https://github.com/apache/qpid-cpp.git +COPY . . +RUN eval "$(rpmbuild --eval '%set_build_flags')" \ + && cmake -S . -B cmake-build \ + -DBUILD_DOCS=OFF \ + -DBUILD_TESTING=OFF \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DPYTHON_EXECUTABLE=/usr/bin/python3 \ + && cmake --build "cmake-build" --parallel "$(nproc)" --verbose \ + && cmake --install "cmake-build" + +EXPOSE 5672 +CMD ["/usr/sbin/qpidd"]