From 4254e4e062f3d75563ceb432cba6e62c1585b273 Mon Sep 17 00:00:00 2001 From: Jan Kotanski Date: Fri, 19 Apr 2024 19:00:54 +0200 Subject: [PATCH] Issue 91: add ubunut noble tests (#92) * update tests * update tests * update config * update config * install taurus * add sleep time * add noninteractive * fix syntax error * fix syntax error * update config * update config * update docker * install taurus pyqtgraph * set DISPLAY --- .ci/install.sh | 61 +++++++++++++++++++++++++++++----- .ci/ubuntu24.04_py3/Dockerfile | 47 ++++++++++++++++++++++++++ .github/workflows/tests.yml | 2 +- 3 files changed, 100 insertions(+), 10 deletions(-) create mode 100644 .ci/ubuntu24.04_py3/Dockerfile diff --git a/.ci/install.sh b/.ci/install.sh index 7bbb013..76a006c 100755 --- a/.ci/install.sh +++ b/.ci/install.sh @@ -2,7 +2,7 @@ # workaround for a bug in debian9, i.e. starting mysql hangs -if [ "$1" = "debian11" ] || [ "$1" = "debian12" ]; then +if [ "$1" = "debian11" ] || [ "$1" = "debian12" ] || [ "$1" = "ubuntu24.04" ]; then docker exec --user root ndts service mariadb restart else docker exec --user root ndts service mysql stop @@ -14,17 +14,44 @@ else fi -docker exec --user root ndts /bin/sh -c 'export DEBIAN_FRONTEND=noninteractive; apt-get -qq update; apt-get -qq install -y tango-db tango-common; sleep 10' -if [ "$?" != "0" ]; then exit 255; fi +docker exec --user root ndts /bin/bash -c 'export DEBIAN_FRONTEND=noninteractive; apt-get -qq update; apt-get -qq install -y xvfb libxcb1 libx11-xcb1 libxcb-keysyms1 libxcb-image0 libxcb-icccm4 libxcb-render-util0 xkb-data tango-common; sleep 10' +if [ "$?" -ne "0" ]; then exit 255; fi +if [ "$1" = "ubuntu24.04" ]; then + # docker exec --user tango ndts /bin/bash -c '/usr/lib/tango/DataBaseds 2 -ORBendPoint giop:tcp::10000 &' + docker exec --user root ndts /bin/bash -c 'echo -e "[client]\nuser=root\npassword=rootpw" > /root/.my.cnf' + docker exec --user root ndts /bin/bash -c 'echo -e "[client]\nuser=tango\nhost=localhost\npassword=rootpw" > /var/lib/tango/.my.cnf' + docker exec --user root ndts /usr/bin/mysql -e 'GRANT ALL PRIVILEGES ON tango.* TO "tango"@"%" identified by "rootpw"' + docker exec --user root ndts /usr/bin/mysql -e 'GRANT ALL PRIVILEGES ON tango.* TO "tango"@"localhost" identified by "rootpw"' + docker exec --user root ndts /usr/bin/mysql -e 'FLUSH PRIVILEGES' + docker exec --user root ndts /bin/bash -c 'export DEBIAN_FRONTEND=noninteractive; apt-get -qq update; apt-get install --reinstall -y libxcb-xinerama0' + docker exec --user root ndts /bin/bash -c 'export DEBIAN_FRONTEND=noninteractive; apt-get -qq update; apt-get -qq install -y libxkbcommon-x11-0 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0 libxcb-render-util0 libxcb-xinerama0 libxcb-xfixes0 libegl1-mesa ' +fi if [ "$1" = "ubuntu20.04" ] || [ "$1" = "ubuntu20.10" ] || [ "$1" = "ubuntu21.04" ] || [ "$1" = "ubuntu21.10" ] || [ "$1" = "ubuntu22.04" ]; then # docker exec --user tango ndts /bin/bash -c '/usr/lib/tango/DataBaseds 2 -ORBendPoint giop:tcp::10000 &' docker exec --user root ndts /bin/bash -c 'echo -e "[client]\nuser=root\npassword=rootpw" > /root/.my.cnf' docker exec --user root ndts /bin/bash -c 'echo -e "[client]\nuser=tango\nhost=127.0.0.1\npassword=rootpw" > /var/lib/tango/.my.cnf' fi +echo "install tango-db" +docker exec --user root ndts /bin/bash -c 'apt-get -qq update; export DEBIAN_FRONTEND=noninteractive; apt-get -qq install -y tango-db; sleep 10' +if [ "$?" -ne "0" ]; then exit 255; fi +if [ "$1" = "ubuntu24.04" ]; then + docker exec --user tango ndts /usr/bin/mysql -e 'create database tango' + docker exec --user tango ndts /bin/bash -c '/usr/bin/mysql tango < /usr/share/dbconfig-common/data/tango-db/install/mysql' +fi + docker exec --user root ndts service tango-db restart + +docker exec --user root ndts mkdir -p /tmp/runtime-tango +docker exec --user root ndts chown -R tango:tango /tmp/runtime-tango + docker exec --user root ndts /bin/bash -c 'export DEBIAN_FRONTEND=noninteractive; apt-get -qq update; apt-get -qq install -y xvfb libxcb1 libx11-xcb1 libxcb-keysyms1 libxcb-image0 libxcb-icccm4 libxcb-render-util0 xkb-data' if [ "$?" != "0" ]; then exit 255; fi +if [ "$1" = "ubuntu24.04" ]; then + # docker exec --user tango ndts /bin/bash -c '/usr/lib/tango/DataBaseds 2 -ORBendPoint giop:tcp::10000 &' + docker exec --user root ndts /bin/bash -c 'export DEBIAN_FRONTEND=noninteractive; apt-get -qq update; apt-get -qq install -y libxcb-xinerama0' + docker exec --user root ndts /bin/bash -c 'export DEBIAN_FRONTEND=noninteractive; apt-get -qq update; apt-get -qq install -y libxkbcommon-x11-0 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0 libxcb-render-util0 libxcb-xinerama0 libxcb-xfixes0 libegl1-mesa ' +fi docker exec --user root ndts mkdir -p /tmp/runtime-tango docker exec --user root ndts chown -R tango:tango /tmp/runtime-tango @@ -44,8 +71,17 @@ docker exec --user root ndts service tango-starter restart if [ "$2" = "2" ]; then echo "install python-pytango" - docker exec --user root ndts /bin/sh -c 'export DEBIAN_FRONTEND=noninteractive; apt-get -qq update; apt-get -qq install -y python-pytango python-h5py python-qtpy python-click git python-itango python-pint' + docker exec --user root ndts /bin/sh -c 'export DEBIAN_FRONTEND=noninteractive; apt-get -qq update; apt-get -qq install -y python-pytango python-h5py python-qtpy python-click git python-itango python-pint nxsconfigserver-db ; sleep 10' else + echo "install nxsconfigserver-db" + docker exec --user root ndts /bin/bash -c 'export DEBIAN_FRONTEND=noninteractive; apt-get -qq update; apt-get install -y nxsconfigserver-db; sleep 10' + if [ "$1" = "ubuntu24.04" ]; then + docker exec --user root ndts /usr/bin/mysql -e 'GRANT ALL PRIVILEGES ON nxsconfig.* TO "tango"@"%" identified by "rootpw"' + docker exec --user root ndts /usr/bin/mysql -e 'GRANT ALL PRIVILEGES ON nxsconfig.* TO "tango"@"localhost" identified by "rootpw"' + docker exec --user root ndts /usr/bin/mysql -e 'FLUSH PRIVILEGES' + docker exec --user tango ndts /usr/bin/mysql -e 'create database nxsconfig' + docker exec --user tango ndts /bin/bash -c '/usr/bin/mysql nxsconfig < /usr/share/dbconfig-common/data/nxsconfigserver-db/install/mysql' + fi echo "install python3-pytango" if [ "$1" = "debian9" ]; then docker exec --user root ndts /bin/sh -c 'git clone https://github.com/hgrecco/pint pint-src; cd pint-src' @@ -54,8 +90,8 @@ else docker exec --user root ndts /bin/sh -c 'cd itango-src; git checkout tags/v0.1.7 -b b0.1.7; python3 setup.py install' # docker exec --user root ndts /bin/sh -c 'cd taurus-src; git checkout; python3 setup.py install' fi - if [ "$1" = "ubuntu20.04" ] || [ "$1" = "ubuntu22.04" ] || [ "$1" = "debian11" ]|| [ "$1" = "debian12" ]; then - docker exec --user root ndts /bin/sh -c 'export DEBIAN_FRONTEND=noninteractive; apt-get -qq update; apt-get install -y git python3-six python3-numpy graphviz python3-sphinx g++ build-essential python3-dev pkg-config python3-all-dev python3-setuptools libtango-dev python3-setuptools python3-tango python3-tz python3-enum34 python3ango; apt-get -qq install -y nxsconfigserver-db; sleep 10' + if [ "$1" = "ubuntu24.04" ] ||[ "$1" = "ubuntu20.04" ] || [ "$1" = "ubuntu22.04" ] || [ "$1" = "debian11" ]|| [ "$1" = "debian12" ]; then + docker exec --user root ndts /bin/sh -c 'export DEBIAN_FRONTEND=noninteractive; apt-get -qq update; apt-get install -y git python3-six python3-numpy graphviz python3-sphinx g++ build-essential python3-dev pkg-config python3-all-dev python3-setuptools libtango-dev python3-setuptools python3-tango python3-tz; apt-get -qq install -y nxsconfigserver-db; sleep 10' else docker exec --user root ndts /bin/sh -c 'export DEBIAN_FRONTEND=noninteractive; apt-get -qq update; apt-get install -y git python3-six python3-numpy graphviz python3-sphinx g++ build-essential python3-dev pkg-config python3-all-dev python3-setuptools libtango-dev python3-setuptools python3-pytango python3-tz python3-enum34 python3ango; apt-get -qq install -y nxsconfigserver-db; sleep 10' fi @@ -81,7 +117,7 @@ fi if [ "$2" = "2" ]; then echo "install sardana, taurus and nexdatas" - docker exec --user root ndts /bin/sh -c 'export DEBIAN_FRONTEND=noninteractive; apt-get -qq update; apt-get -qq install -y nxsconfigserver-db; sleep 10; apt-get -qq install -y python-nxsconfigserver python-nxswriter python-nxstools python-nxsrecselector python-setuptools' + docker exec --user root ndts /bin/sh -c 'export DEBIAN_FRONTEND=noninteractive; apt-get -qq update; apt-get -qq install -y python-nxsconfigserver python-nxswriter python-nxstools python-nxsrecselector python-setuptools' if [ "$1" = "debian10" ]; then docker exec --user root ndts /bin/sh -c 'export DEBIAN_FRONTEND=noninteractive; apt-get -qq update; apt-get -qq install -y python-taurus python-sardana' else @@ -95,9 +131,16 @@ if [ "$2" = "2" ]; then docker exec --user root ndts /bin/sh -c 'cd sardana-src; git checkout tags/2.8.4 -b b2.8.4; python setup.py install' fi else + if [ "$1" = "ubuntu24.04" ]; then + docker exec --user root ndts /bin/sh -c 'export DEBIAN_FRONTEND=noninteractive; apt-get -qq update; apt-get -qq install -y python3-taurus-pyqtgraph' + fi echo "install sardana, taurus and nexdatas" - docker exec --user root ndts /bin/sh -c 'export DEBIAN_FRONTEND=noninteractive; apt-get -qq update; apt-get install -y nxsconfigserver-db; sleep 10; apt-get -qq install -y python3-nxsconfigserver python3-nxswriter python3-nxstools python3-nxsrecselector python3-setuptools nxsrecselector3 nxswriter3 nxsconfigserver3 nxstools3 python3-packaging' - if [ "$1" = "ubuntu20.04" ] || [ "$1" = "ubuntu22.04" ] || [ "$1" = "debian11" ] ; then + if [ "$1" = "debian10" ] ; then + docker exec --user root ndts /bin/sh -c 'export DEBIAN_FRONTEND=noninteractive; apt-get -qq update; apt-get -qq install -y python3-nxsconfigserver python3-nxswriter python3-nxstools python3-nxsrecselector python3-setuptools nxsrecselector3 nxswriter3 nxsconfigserver3 nxstools3 python3-packaging' + else + docker exec --user root ndts /bin/sh -c 'export DEBIAN_FRONTEND=noninteractive; apt-get -qq update; apt-get -qq install -y python3-nxsconfigserver python3-nxswriter python3-nxstools python3-nxsrecselector python3-setuptools nxsrecselector nxswriter nxsconfigserver nxstools python3-packaging' + fi + if [ "$1" = "ubuntu20.04" ] || [ "$1" = "ubuntu24.04" ] || [ "$1" = "ubuntu22.04" ] || [ "$1" = "debian11" ] || [ "$1" = "debian12" ] || [ "$1" = "debian10" ] ; then docker exec --user root ndts /bin/sh -c 'export DEBIAN_FRONTEND=noninteractive; apt-get -qq update; apt-get -qq install -y python3-taurus python3-sardana' else docker exec --user root ndts /bin/sh -c 'git clone https://gitlab.com/taurus-org/taurus taurus-src; cd taurus-src' diff --git a/.ci/ubuntu24.04_py3/Dockerfile b/.ci/ubuntu24.04_py3/Dockerfile new file mode 100644 index 0000000..95e43ad --- /dev/null +++ b/.ci/ubuntu24.04_py3/Dockerfile @@ -0,0 +1,47 @@ +FROM ubuntu:24.04 + +MAINTAINER DESY, Jan Kotanski + +ENV DEBIAN_FRONTEND=noninteractive + +RUN apt-get -qq update && export DEBIAN_FRONTEND=noninteractive && apt-get install -y curl gpg-agent mariadb-client python3-h5py python3-sphinx apt-utils debconf-utils net-tools omniidl libomniorb4-dev libcos4-dev libzmq3-dev python3-setuptools python3-setuptools libterm-readline-gnu-perl software-properties-common coreutils procps apt-transport-https gnupg2 ca-certificates wget python3-h5py python3-sphinx apt-utils debconf-utils net-tools omniidl libomniorb4-dev libcos4-dev libzmq3-dev python3-setuptools python3-lxml liblog4j1.2-java python3-setuptools python3-pytest python3-opencv + +RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections +RUN curl -s http://repos.pni-hdri.de/debian_repo.pub.gpg | gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/debian-hdri-repo.gpg --import +RUN chmod 644 /etc/apt/trusted.gpg.d/debian-hdri-repo.gpg + +RUN cd /etc/apt/sources.list.d && wget http://repos.pni-hdri.de/noble-pni-hdri.list \ + && useradd -ms /bin/bash tango + +# switch to the german archive mirror +# RUN sed -i 's|http://archive|http://de.archive|g' /etc/apt/sources.list + +# install packages +RUN apt-get -qq update && export DEBIAN_FRONTEND=noninteractive && apt-get -qq dist-upgrade +RUN apt-get -qq update && export DEBIAN_FRONTEND=noninteractive && apt-get install -y mariadb-client python3-h5py python3-sphinx apt-utils debconf-utils net-tools omniidl python3-pninexus python3-pyqt5 python3-pyqt5.qtsvg python3-qtchecker python3-pyfai qt5-qmake qtchooser python3-requests xvfb libxcb1 libx11-xcb1 libxcb-keysyms1 libxcb-image0 libxcb-icccm4 libxcb-render-util0 xkb-data liblog4j1.2-java python3-pyqt5 git python3-tz python3-pyqtgraph python3-setuptools python3-zmq python3-scipy python3-pyqt5.qtwebkit hdf5-filter-plugin + + +RUN /bin/bash -c 'export DEBIAN_FRONTEND=noninteractive; debconf-set-selections <<< "mariadb-server mysql-server/root_password password rootpw"' \ + && /bin/bash -c 'export DEBIAN_FRONTEND=noninteractive; debconf-set-selections <<< "mariadb-server mysql-server/root_password_again password rootpw"' \ + && apt-get -qq update && apt-get -qq install -y mariadb-server python3-mysqldb dialog \ + && /bin/bash -c 'sleep 10' +RUN /bin/bash -c 'export DEBIAN_FRONTEND=noninteractive; debconf-set-selections <<< "tango-db tango-db/db/app-user string tango"' \ + && /bin/bash -c 'export DEBIAN_FRONTEND=noninteractive; debconf-set-selections <<< "tango-db tango-db/mysql/app-pass password rootpw"' \ + && /bin/bash -c 'export DEBIAN_FRONTEND=noninteractive; debconf-set-selections <<< "tango-db tango-db/mysql/admin-pass password rootpw"' \ + && /bin/bash -c 'export DEBIAN_FRONTEND=noninteractive; debconf-set-selections <<< "tango-db tango-db/password-confirm password rootpw"' \ + && /bin/bash -c 'export DEBIAN_FRONTEND=noninteractive; debconf-set-selections <<< "tango-db tango-db/app-password-confirm password rootpw"' \ + && /bin/bash -c 'export DEBIAN_FRONTEND=noninteractive; debconf-set-selections <<< "nxsconfigserver-db nxsconfigserver-db/mysql/app-pass password rootpw"' \ + && /bin/bash -c 'export DEBIAN_FRONTEND=noninteractive; debconf-set-selections <<< "nxsconfigserver-db nxsconfigserver-db/mysql/admin-pass password rootpw"' \ + && /bin/bash -c 'export DEBIAN_FRONTEND=noninteractive; debconf-set-selections <<< "nxsconfigserver-db nxsconfigserver-db/app-password-confirm password rootpw"' \ + && /bin/bash -c 'export DEBIAN_FRONTEND=noninteractive; debconf-set-selections <<< "nxsconfigserver-db nxsconfigserver-db/db/app-user string tango"' \ + && sed -i "s/\[mysql\]/\[mysqld\]\nsql_mode = NO_ZERO_IN_DATE,NO_ENGINE_SUBSTITUTION\ncharacter_set_server=latin1\ncollation_server=latin1_swedish_ci\n\[mysql\]/g" /etc/mysql/conf.d/mysql.cnf + +ENV PKG_CONFIG_PATH=/home/tango/lib/pkgconfig + +ENV MYSQL_HOST=localhost +ENV DISPLAY=":99.0" +USER tango +WORKDIR /home/tango + + + diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index b665fd5..6d04c70 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -24,7 +24,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - os: [debian12, debian11, debian10, ubuntu22.04 , ubuntu20.04] + os: [debian12, debian11, debian10, ubuntu24.04, ubuntu22.04, ubuntu20.04] steps: - uses: actions/checkout@v2 - uses: actions/setup-python@v2