Skip to content

Commit ce26110

Browse files
kngbvernoux
authored andcommitted
Add hw/sw testing under docker
Signed-off-by: Daniel Ekman <knegge@gmail.com>
1 parent 708e404 commit ce26110

File tree

8 files changed

+379
-0
lines changed

8 files changed

+379
-0
lines changed

testing/Dockerfile.archlinux

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
ARG IMAGE_NAME=archlinux
2+
ARG IMAGE_TAG=latest
3+
FROM ${IMAGE_NAME}:${IMAGE_TAG}
4+
LABEL org.opencontainers.image.authors='Daniel Ekman <knegge@gmail.com>'
5+
6+
RUN pacman -Sy --noconfirm archlinux-keyring &&\
7+
pacman -Syu --noconfirm &&\
8+
pacman -S --noconfirm \
9+
base-devel \
10+
cmake \
11+
git \
12+
libusb \
13+
pkg-config \
14+
soapysdr
15+
16+
ARG HOST_TOOLS_REF=https://github.com/hydrasdr/rfone_host.git
17+
RUN git clone --depth 1 ${HOST_TOOLS_REF} hydrasdr-host &&\
18+
cd hydrasdr-host &&\
19+
cmake -B build \
20+
-DCMAKE_BUILD_TYPE=Release \
21+
-DCMAKE_INSTALL_PREFIX=/usr &&\
22+
cmake --build build --target install
23+
24+
ARG SOAPY_MODULE_REF=https://github.com/hydrasdr/SoapyHydraSDR.git
25+
RUN git clone --depth 1 ${SOAPY_MODULE_REF} soapyhydrasdr &&\
26+
cd soapyhydrasdr &&\
27+
cmake -B build \
28+
-DCMAKE_BUILD_TYPE=Release \
29+
-DCMAKE_INSTALL_PREFIX=/usr&&\
30+
cmake --build build --target install
31+
32+
COPY test.sh /
33+
CMD ["bash", "/test.sh"]

testing/Dockerfile.debian

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
ARG IMAGE_NAME=debian
2+
ARG IMAGE_TAG=latest
3+
FROM ${IMAGE_NAME}:${IMAGE_TAG}
4+
LABEL org.opencontainers.image.authors='Daniel Ekman <knegge@gmail.com>'
5+
6+
ARG DEBIAN_FRONTEND=noninteractive
7+
ENV TZ=Etc/UTC
8+
9+
RUN apt update &&\
10+
apt install -qy \
11+
build-essential \
12+
cmake \
13+
git \
14+
libsoapysdr-dev \
15+
libusb-1.0-0-dev \
16+
pkg-config \
17+
soapysdr-tools
18+
19+
ARG HOST_TOOLS_REF=https://github.com/hydrasdr/rfone_host.git
20+
RUN git clone --depth 1 ${HOST_TOOLS_REF} hydrasdr-host &&\
21+
cd hydrasdr-host &&\
22+
cmake -B build \
23+
-DCMAKE_BUILD_TYPE=Release \
24+
-DCMAKE_INSTALL_PREFIX=/usr &&\
25+
cmake --build build --target install
26+
27+
ARG SOAPY_MODULE_REF=https://github.com/hydrasdr/SoapyHydraSDR.git
28+
RUN git clone --depth 1 ${SOAPY_MODULE_REF} soapyhydrasdr &&\
29+
cd soapyhydrasdr &&\
30+
cmake -B build \
31+
-DCMAKE_BUILD_TYPE=Release \
32+
-DCMAKE_INSTALL_PREFIX=/usr&&\
33+
cmake --build build --target install
34+
35+
COPY test.sh /
36+
CMD ["bash", "/test.sh"]

testing/Dockerfile.fedora

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
ARG IMAGE_NAME=fedora
2+
ARG IMAGE_TAG=latest
3+
FROM ${IMAGE_NAME}:${IMAGE_TAG}
4+
LABEL org.opencontainers.image.authors='Daniel Ekman <knegge@gmail.com>'
5+
6+
ARG RHEL
7+
RUN dnf update -y --best --allowerasing &&\
8+
if [ -n "$RHEL" ]; then \
9+
dnf install -y epel-release &&\
10+
dnf config-manager --set-enabled crb || dnf config-manager --set-enabled powertools || true ;\
11+
fi &&\
12+
dnf install -y \
13+
cmake \
14+
gcc \
15+
gcc-c++ \
16+
git \
17+
gzip \
18+
libusb1-devel \
19+
make \
20+
pkg-config \
21+
SoapySDR-devel \
22+
tar
23+
24+
ARG HOST_TOOLS_REF=https://github.com/hydrasdr/rfone_host.git
25+
RUN git clone --depth 1 ${HOST_TOOLS_REF} hydrasdr-host &&\
26+
cd hydrasdr-host &&\
27+
cmake -B build \
28+
-DCMAKE_BUILD_TYPE=Release \
29+
-DCMAKE_INSTALL_PREFIX=/usr &&\
30+
cmake --build build --target install
31+
32+
ARG SOAPY_MODULE_REF=https://github.com/hydrasdr/SoapyHydraSDR.git
33+
RUN git clone --depth 1 ${SOAPY_MODULE_REF} soapyhydrasdr &&\
34+
cd soapyhydrasdr &&\
35+
cmake -B build \
36+
-DCMAKE_BUILD_TYPE=Release \
37+
-DCMAKE_INSTALL_PREFIX=/usr&&\
38+
cmake --build build --target install
39+
40+
COPY test.sh /
41+
CMD ["bash", "/test.sh"]

testing/Dockerfile.opensuse

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
ARG IMAGE_NAME=opensuse/tumbleweed
2+
ARG IMAGE_TAG=latest
3+
FROM ${IMAGE_NAME}:${IMAGE_TAG}
4+
LABEL org.opencontainers.image.authors='Daniel Ekman <knegge@gmail.com>'
5+
6+
RUN zypper refresh &&\
7+
zypper install -y \
8+
cmake \
9+
gcc \
10+
gcc-c++ \
11+
git \
12+
gzip \
13+
make \
14+
libusb-1_0-devel \
15+
pkg-config \
16+
soapy-sdr \
17+
soapy-sdr-devel \
18+
tar
19+
20+
ARG HOST_TOOLS_REF=https://github.com/hydrasdr/rfone_host.git
21+
RUN git clone --depth 1 ${HOST_TOOLS_REF} hydrasdr-host &&\
22+
cd hydrasdr-host &&\
23+
cmake -B build \
24+
-DCMAKE_BUILD_TYPE=Release \
25+
-DCMAKE_INSTALL_PREFIX=/usr &&\
26+
cmake --build build --target install
27+
28+
ARG SOAPY_MODULE_REF=https://github.com/hydrasdr/SoapyHydraSDR.git
29+
RUN git clone --depth 1 ${SOAPY_MODULE_REF} soapyhydrasdr &&\
30+
cd soapyhydrasdr &&\
31+
cmake -B build \
32+
-DCMAKE_BUILD_TYPE=Release \
33+
-DCMAKE_INSTALL_PREFIX=/usr&&\
34+
cmake --build build --target install
35+
36+
COPY test.sh /
37+
CMD ["bash", "/test.sh"]

testing/README.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# Software platform testing
2+
3+
This features a dockerized build for testing of the library and soapy module for different distributions.
4+
5+
## Requirements
6+
7+
Install:<br>
8+
docker<br>
9+
docker compose (sometimes called docker-compose)
10+
11+
## Usage
12+
13+
To build and test all, run:<br>
14+
```bash
15+
bash ./run_all.sh
16+
```
17+
18+
To build and test a single dist:
19+
```bash
20+
docker compose build ubuntu_noble
21+
docker compose run --rm -it ubuntu_noble
22+
```
23+
24+
## Description
25+
26+
The `Dockerfile.*` contains build instructions for each packaging system.<br>
27+
These have special args that can be used to control the build.
28+
29+
All details to build distribution versions is in `docker-compose.yml` and new ones can easily be added.<br>
30+
31+
When running it will launch [test.sh](test.sh) inside the container.

testing/docker-compose.yml

Lines changed: 166 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,166 @@
1+
services:
2+
debian_sid:
3+
build:
4+
context: .
5+
dockerfile: Dockerfile.debian
6+
args:
7+
IMAGE_TAG: sid
8+
device_cgroup_rules:
9+
- 'c 189:* rwm'
10+
volumes:
11+
- '/dev/bus/usb:/dev/bus/usb'
12+
debian_trixie:
13+
build:
14+
context: .
15+
dockerfile: Dockerfile.debian
16+
args:
17+
IMAGE_TAG: trixie
18+
device_cgroup_rules:
19+
- 'c 189:* rwm'
20+
volumes:
21+
- '/dev/bus/usb:/dev/bus/usb'
22+
debian_bookworm:
23+
build:
24+
context: .
25+
dockerfile: Dockerfile.debian
26+
args:
27+
IMAGE_TAG: bookworm
28+
device_cgroup_rules:
29+
- 'c 189:* rwm'
30+
volumes:
31+
- '/dev/bus/usb:/dev/bus/usb'
32+
debian_bullseye:
33+
build:
34+
context: .
35+
dockerfile: Dockerfile.debian
36+
args:
37+
IMAGE_TAG: bullseye
38+
device_cgroup_rules:
39+
- 'c 189:* rwm'
40+
volumes:
41+
- '/dev/bus/usb:/dev/bus/usb'
42+
ubuntu_plucky:
43+
build:
44+
context: .
45+
dockerfile: Dockerfile.debian
46+
args:
47+
IMAGE_NAME: ubuntu
48+
IMAGE_TAG: plucky
49+
device_cgroup_rules:
50+
- 'c 189:* rwm'
51+
volumes:
52+
- '/dev/bus/usb:/dev/bus/usb'
53+
ubuntu_noble:
54+
build:
55+
context: .
56+
dockerfile: Dockerfile.debian
57+
args:
58+
IMAGE_NAME: ubuntu
59+
IMAGE_TAG: noble
60+
device_cgroup_rules:
61+
- 'c 189:* rwm'
62+
volumes:
63+
- '/dev/bus/usb:/dev/bus/usb'
64+
ubuntu_jammy:
65+
build:
66+
context: .
67+
dockerfile: Dockerfile.debian
68+
args:
69+
IMAGE_NAME: ubuntu
70+
IMAGE_TAG: jammy
71+
device_cgroup_rules:
72+
- 'c 189:* rwm'
73+
volumes:
74+
- '/dev/bus/usb:/dev/bus/usb'
75+
ubuntu_focal:
76+
build:
77+
context: .
78+
dockerfile: Dockerfile.debian
79+
args:
80+
IMAGE_NAME: ubuntu
81+
IMAGE_TAG: focal
82+
device_cgroup_rules:
83+
- 'c 189:* rwm'
84+
volumes:
85+
- '/dev/bus/usb:/dev/bus/usb'
86+
fedora_44:
87+
build:
88+
context: .
89+
dockerfile: Dockerfile.fedora
90+
args:
91+
IMAGE_TAG: 44
92+
device_cgroup_rules:
93+
- 'c 189:* rwm'
94+
volumes:
95+
- '/dev/bus/usb:/dev/bus/usb'
96+
fedora_43:
97+
build:
98+
context: .
99+
dockerfile: Dockerfile.fedora
100+
args:
101+
IMAGE_TAG: 43
102+
device_cgroup_rules:
103+
- 'c 189:* rwm'
104+
volumes:
105+
- '/dev/bus/usb:/dev/bus/usb'
106+
fedora_42:
107+
build:
108+
context: .
109+
dockerfile: Dockerfile.fedora
110+
args:
111+
IMAGE_TAG: 42
112+
device_cgroup_rules:
113+
- 'c 189:* rwm'
114+
volumes:
115+
- '/dev/bus/usb:/dev/bus/usb'
116+
fedora_41:
117+
build:
118+
context: .
119+
dockerfile: Dockerfile.fedora
120+
args:
121+
IMAGE_TAG: 41
122+
device_cgroup_rules:
123+
- 'c 189:* rwm'
124+
volumes:
125+
- '/dev/bus/usb:/dev/bus/usb'
126+
almalinux_10:
127+
build:
128+
context: .
129+
dockerfile: Dockerfile.fedora
130+
args:
131+
IMAGE_NAME: almalinux
132+
IMAGE_TAG: 10
133+
RHEL: 1
134+
device_cgroup_rules:
135+
- 'c 189:* rwm'
136+
volumes:
137+
- '/dev/bus/usb:/dev/bus/usb'
138+
almalinux_9:
139+
build:
140+
context: .
141+
dockerfile: Dockerfile.fedora
142+
args:
143+
IMAGE_NAME: almalinux
144+
IMAGE_TAG: 9
145+
RHEL: 1
146+
device_cgroup_rules:
147+
- 'c 189:* rwm'
148+
volumes:
149+
- '/dev/bus/usb:/dev/bus/usb'
150+
archlinux:
151+
build:
152+
context: .
153+
dockerfile: Dockerfile.archlinux
154+
device_cgroup_rules:
155+
- 'c 189:* rwm'
156+
volumes:
157+
- '/dev/bus/usb:/dev/bus/usb'
158+
opensuse_tumbleweed:
159+
build:
160+
context: .
161+
dockerfile: Dockerfile.opensuse
162+
device_cgroup_rules:
163+
- 'c 189:* rwm'
164+
volumes:
165+
- '/dev/bus/usb:/dev/bus/usb'
166+

testing/run_all.sh

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#!/bin/bash
2+
set -eu
3+
4+
if docker compose version >/dev/null 2>&1; then
5+
echo "docker compose (v2) is installed."
6+
COMPOSE="docker compose"
7+
elif docker-compose version >/dev/null 2>&1; then
8+
echo "docker-compose (v1) is installed."
9+
COMPOSE="docker-compose"
10+
else
11+
echo "No docker compos found, exiting."
12+
exit 1
13+
fi
14+
15+
# get all services
16+
SERVICES=$(${COMPOSE} config --services)
17+
echo -e "Building images:\n${SERVICES}"
18+
19+
# build all
20+
for SERVICE in ${SERVICES}; do
21+
${COMPOSE} build "${SERVICE}"
22+
done
23+
24+
# run all
25+
for SERVICE in ${SERVICES}; do
26+
echo -e "\n\n\nStarting image: ${SERVICE}"
27+
${COMPOSE} run --rm "${SERVICE}"
28+
done

testing/test.sh

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
#!/bin/bash
2+
if [ -f /etc/os-release ]; then
3+
grep PRETTY_NAME /etc/os-release
4+
fi
5+
hydrasdr_info
6+
timeout 15 SoapySDRUtil --args=driver=hydrasdr --rate=10e6 --direction=RX
7+
exit 0

0 commit comments

Comments
 (0)