Skip to content

Commit

Permalink
Add target ros2
Browse files Browse the repository at this point in the history
make TARGETS=ros2 subpackages
Adding github workflow for subpackages
renaming rpm/ros2/rolling/ros2_rolling.spec ->
rpm/ros2/ros2_rolling.spec

Adding fixes based on tests added

Signed-off-by: Yariv Rachmani <[email protected]>
  • Loading branch information
Yarboa committed Feb 12, 2025
1 parent 97ccd69 commit 5fe959f
Show file tree
Hide file tree
Showing 15 changed files with 104 additions and 39 deletions.
29 changes: 29 additions & 0 deletions .github/workflows/check-subpackages
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
name: Build Subpackages

on:
pull_request

jobs:
build-subpackages:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Install dependencies
run: sudo apt-get update && sudo apt-get install -y make

- name: Run make for each subsystem
run: |
for dir in subsystems/*; do
if [ -d "$dir" ]; then
subsystem=$(basename "$dir")
echo "Running make for $subsystem..."
make TARGETS=$subsystem subpackages
if [ $? -ne 0 ]; then
echo "❌ Make failed for $subsystem" >&2
exit 1
fi
fi
done

1 change: 0 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,6 @@ rpm: clean dist ## - Creates a local RPM package, useful for develop
subpackages: $(TARGETS)
$(TARGETS):
@echo "Entering directory: subsystem/$@"
$(MAKE) -C subsystems/$@
make -f subsystems/$@/Makefile $@

install-policy: all ## - Install selinux policies only
Expand Down
6 changes: 3 additions & 3 deletions rpm/img_tempdir/img_tempdir.spec
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ Release: 1%{?dist}
Summary: Drop-in configuration for QM nested containers using img tempdir
License: GPL-2.0-only
URL: https://github.com/containers/qm
Source0: %{url}/archive/qm-img_tmpdir-%{version}.tar.gz
Source0: %{url}/archive/qm-img_tempdir-%{version}.tar.gz
BuildArch: noarch

Requires: qm = %{version}-%{release}
Expand All @@ -13,11 +13,11 @@ Requires: qm = %{version}-%{release}
This sub-package installs drop-in configurations for QM nested containers that use img tempdir.

%prep
%autosetup -Sgit -n qm-img_tmpdir-%{version}
%autosetup -Sgit -n qm-img_tempdir-%{version}

%install
install -d %{buildroot}%{_sysconfdir}/qm/containers/containers.conf.d
install -m 644 %{_builddir}/qm-video-%{version}/etc/qm/containers/containers.conf.d/qm_dropin_img_tempdir.conf \
install -m 644 %{_builddir}/qm-img_tempdir-%{version}/etc/qm/containers/containers.conf.d/qm_dropin_img_tempdir.conf \
%{buildroot}%{_sysconfdir}/qm/containers/containers.conf.d/

%files
Expand Down
2 changes: 1 addition & 1 deletion rpm/kvm/qm-kvm.spec
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
%global rootfs_qm %{_prefix}/lib/qm/rootfs/

Name: qm-kvm
Version: 0.6.9
Version: 0
Release: 1%{?dist}
Summary: Drop-in configuration for QM containers to mount bind /dev/kvm
License: GPL-2.0-only
Expand Down
23 changes: 9 additions & 14 deletions rpm/ros2/rolling/ros2_rolling.spec → rpm/ros2/ros2_rolling.spec
Original file line number Diff line number Diff line change
Expand Up @@ -2,47 +2,42 @@

# rootfs macros for QM ROS2 Rolling
%global rootfs_qm %{_prefix}/lib/qm/rootfs/
%global ros2_container %{rootfs_qm}/%{_sysconfdir}/containers/systemd/

Name: qm-ros2-rolling
Version: 0.6.9
Version: 0
Release: 1%{?dist}
Summary: Subpackage container for quadlet container to ROS2 Rolling environment
License: GPL-2.0-only
URL: https://github.com/containers/qm
Source0: %{url}/archive/v%{version}.tar.gz
BuildArch: noarch
Source0: %{url}/archive/qm-ros2-%{version}.tar.gz

BuildRequires: make
BuildRequires: git-core
BuildRequires: pkgconfig(systemd)
BuildArch: noarch
Requires: qm = %{version}-%{release}
Requires: podman

%description
This subpackage provides a containerized ROS2 Rolling environment within the
Quality Management (QM) system. It enables ROS2 applications to run in isolated
containers managed by Podman and systemd within the QM environment.

%prep
%autosetup -Sgit -n qm-%{version}
%autosetup -Sgit -n qm-ros2-%{version}

%build
# No special build requirements for ROS2 Rolling container
%{__make} all

%install
# Create the necessary directory structure
mkdir -p %{buildroot}%{ros2_container}
install -d %{buildroot}%{rootfs_qm}%{_sysconfdir}/containers/systemd

# Install the ROS2 Rolling container file
install -m 644 %{_builddir}/qm-ros2-%{version}/subsystems/ros2/etc/containers/systemd/ros2-rolling.container %{buildroot}%{rootfs_qm}%{_sysconfdir}/containers/systemd/ros2-rolling.container

install -m 644 subsystems/ros2/etc/containers/systemd/ros2-rolling.container %{buildroot}%{ros2_container}

%files
%license LICENSE
%doc README.md
%{ros2_container}ros2-rolling.container
%doc README.md SECURITY.md
%{rootfs_qm}%{_sysconfdir}/containers/systemd/ros2-rolling.container


%changelog
* Fri Jul 21 2023 RH Container Bot <[email protected]> - 0.6.8-1
Expand Down
2 changes: 1 addition & 1 deletion rpm/tty7/tty7.spec
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ Release: 1%{?dist}
Summary: Drop-in configuration for QM containers to mount bind /dev/tty7
License: GPL-2.0-only
URL: https://github.com/containers/qm
Source0: %{url}/archive/qm-tty7%{version}.tar.gz
Source0: %{url}/archive/qm-tty7-%{version}.tar.gz

BuildArch: noarch
Requires: qm = %{version}-%{release}
Expand Down
2 changes: 1 addition & 1 deletion rpm/ttyUSB0/ttyUSB0.spec
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ Release: 1%{?dist}
Summary: Drop-in configuration for QM containers to mount bind ttyUSB0
License: GPL-2.0-only
URL: https://github.com/containers/qm
Source0: %{url}/archive/qm-ttyUSB0%{version}.tar.gz
Source0: %{url}/archive/qm-ttyUSB0-%{version}.tar.gz
BuildArch: noarch

Requires: qm = %{version}-%{release}
Expand Down
2 changes: 1 addition & 1 deletion subsystems/dvb/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ dist: ## - Creates the QM dvb package
cd $(ROOTDIR) && mv /tmp/qm-dvb-${VERSION}.tar.gz ./rpm

.PHONY: dvb
dvp: dist ## - Creates a local RPM package, useful for development
dvb: dist ## - Creates a local RPM package, useful for development
cd $(ROOTDIR) && mkdir -p ${RPM_TOPDIR}/{RPMS,SRPMS,BUILD,SOURCES}
cd $(ROOTDIR) && tools/version-update -v ${VERSION}
cd $(ROOTDIR) && cp ./rpm/qm-dvb-${VERSION}.tar.gz ${RPM_TOPDIR}/SOURCES
Expand Down
6 changes: 6 additions & 0 deletions subsystems/img_tempdir/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,14 @@ SPECFILE_SUBPACKAGE_IMG_TEMPDIR ?= ${ROOTDIR}/rpm/img_tempdir/img_tempdir.spec
dist: ## - Creates the QM img_tempdir package
cd $(ROOTDIR) && tar cvz \
--dereference \
--transform 's|subsystems/img_tempdir/Makefile|Makefile|' \
--transform 's|rpm/img_tempdir/img_tempdir.spec|img_tempdir.spec|' \
--transform s/qm/qm-img_tempdir-${VERSION}/ \
-f /tmp/qm-img_tempdir-${VERSION}.tar.gz \
../qm/rpm/img_tempdir/img_tempdir.spec \
../qm/subsystems/img_tempdir/Makefile \
../qm/tools/version-update \
../qm/VERSION \
../qm/README.md \
../qm/SECURITY.md \
../qm/LICENSE \
Expand Down
21 changes: 14 additions & 7 deletions subsystems/ros2/Makefile
Original file line number Diff line number Diff line change
@@ -1,26 +1,33 @@
SPECFILE_SUBPACKAGE_ROS2_ROLLING=rpm/ros2/rolling/ros2_rolling.spec
RPM_TOPDIR ?= $(PWD)/rpmbuild
VERSION ?= $(shell cat VERSION)
ROOTDIR ?= $(PWD)
SPECFILE_SUBPACKAGE_ROS2_ROLLING ?= ${ROOTDIR}/rpm/ros2/ros2_rolling.spec

.PHONY: dist
dist: ## - Creates the QM ros2 package
cd $(ROOTDIR) && tar cvz \
--exclude-from=build-aux/exclude_from_tar_gz_subpackage_kvm.txt \
--dereference \
--transform 's|subsystems/ros2/Makefile|Makefile|' \
--transform 's|rpm/ros2/ros2_rolling.spec|ros2_rolling.spec|' \
--transform s/qm/qm-ros2-${VERSION}/ \
-f /tmp/qm-ros2-${VERSION}.tar.gz \
../qm/rpm/ros2/ros2_rolling.spec \
../qm/subsystems/ros2/Makefile \
../qm/tools/version-update \
../qm/VERSION \
../qm/README.md \
../qm/SECURITY.md \
../qm/LICENSE \
../qm/ \
../qm/subsystems/ros2/etc/containers/systemd/ros2-rolling.container
cd $(ROOTDIR) && mv /tmp/qm-ros2-${VERSION}.tar.gz ./rpm


.PHONY: rpm
rpm: dist ## - Creates a local RPM package, useful for development
.PHONY: ros2
ros2: dist ## - Creates a local RPM package, useful for development
cd $(ROOTDIR) && mkdir -p ${RPM_TOPDIR}/{RPMS,SRPMS,BUILD,SOURCES}
cd $(ROOTDIR) && tools/version-update -v ${VERSION}
cd $(ROOTDIR) && cp ./rpm/v${VERSION}.tar.gz ${RPM_TOPDIR}/SOURCES
cd $(ROOTDIR) && rpmbuild -ba \
cd $(ROOTDIR) && cp ./rpm/qm-ros2-${VERSION}.tar.gz ${RPM_TOPDIR}/SOURCES
rpmbuild -ba \
--define="_topdir ${RPM_TOPDIR}" \
--define="version ${VERSION}" \
${SPECFILE_SUBPACKAGE_ROS2_ROLLING}
Expand Down
13 changes: 10 additions & 3 deletions subsystems/text2speech/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,22 @@ SPECFILE_SUBPACKAGE_TEXT2SPEECH ?= ${ROOTDIR}/rpm/text2speech/text2speech.spec
dist: ## - Creates the QM input package
cd $(ROOTDIR) && tar cvz \
--dereference \
--transform 's|subsystems/text2speech/Makefile|Makefile|' \
--transform 's|rpm/text2speech/text2speech.spec|text2speech.spec|' \
--transform s/qm/qm-text2speech-${VERSION}/ \
-f /tmp/qm-text2speech-${VERSION}.tar.gz \
../qm/rpm/text2speech/text2speech.spec \
../qm/subsystems/text2speech/Makefile \
../qm/tools/version-update \
../qm/VERSION \
../qm/README.md \
../qm/CODE-OF-CONDUCT.md \
../qm/SECURITY.md \
../qm/LICENSE \
../qm/LICENSE
cd $(ROOTDIR) && mv /tmp/qm-text2speech-${VERSION}.tar.gz ./rpm

.PHONY: qm-text2speech
qm-text2speech: dist ## - Creates a local RPM package, useful for development
.PHONY: text2speech
text2speech: dist ## - Creates a local RPM package, useful for development
cd $(ROOTDIR) && mkdir -p ${RPM_TOPDIR}/{RPMS,SRPMS,BUILD,SOURCES}
cd $(ROOTDIR) && tools/version-update -v ${VERSION}
cd $(ROOTDIR) && cp ./rpm/qm-text2speech-${VERSION}.tar.gz ${RPM_TOPDIR}/SOURCES
Expand Down
13 changes: 11 additions & 2 deletions subsystems/tty7/Makefile
Original file line number Diff line number Diff line change
@@ -1,11 +1,20 @@
SPECFILE_SUBPACKAGE_TTY7=rpm/tty7/tty7.spec
RPM_TOPDIR ?= $(PWD)/rpmbuild
VERSION ?= $(shell cat VERSION)
ROOTDIR ?= $(PWD)
SPECFILE_SUBPACKAGE_TTY7 ?= ${ROOTDIR}/rpm/tty7/tty7.spec

.PHONY: dist
dist: ## - Creates the QM tty7 package
cd $(ROOTDIR) && tar cvz \
--dereference \
--transform 's|subsystems/tty7/Makefile|Makefile|' \
--transform 's|rpm/tty7/tty7.spec|tty7.spec|' \
--transform s/qm/qm-tty7-${VERSION}/ \
-f /tmp/qm-tty7-${VERSION}.tar.gz \
../qm/rpm/tty7/tty7.spec \
../qm/subsystems/tty7/Makefile \
../qm/tools/version-update \
../qm/VERSION \
../qm/README.md \
../qm/SECURITY.md \
../qm/LICENSE \
Expand All @@ -17,7 +26,7 @@ tty7: dist ## - Creates a local RPM package, useful for development
cd $(ROOTDIR) && mkdir -p ${RPM_TOPDIR}/{RPMS,SRPMS,BUILD,SOURCES}
cd $(ROOTDIR) && tools/version-update -v ${VERSION}
cd $(ROOTDIR) && cp ./rpm/qm-tty7-${VERSION}.tar.gz ${RPM_TOPDIR}/SOURCES
cd $(ROOTDIR) && rpmbuild -ba \
rpmbuild -ba \
--define="_topdir ${RPM_TOPDIR}" \
--define="version ${VERSION}" \
${SPECFILE_SUBPACKAGE_TTY7}
Expand Down
12 changes: 9 additions & 3 deletions subsystems/ttyUSB0/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -8,18 +8,24 @@ dist: ## - Creates the QM ttyUSB0 package
cd $(ROOTDIR) && tar cvz \
--dereference \
--transform s/qm/qm-ttyUSB0-${VERSION}/ \
--transform 's|subsystems/ttyUSB0/Makefile|Makefile|' \
--transform 's|rpm/ttyUSB0/ttyUSB0.spec|ttyUSB0.spec|' \
-f /tmp/qm-ttyUSB0-${VERSION}.tar.gz \
../qm/rpm/ttyUSB0/ttyUSB0.spec \
../qm/subsystems/ttyUSB0/Makefile \
../qm/tools/version-update \
../qm/VERSION \
../qm/README.md \
../qm/SECURITY.md \
../qm/LICENSE \
../qm/etc/containers/systemd/qm.container.d/qm_dropin_mount_bind_ttyUSB0.conf
cd $(ROOTDIR) && mv /tmp/qm-ttyUSB0-${VERSION}.tar.gz ./rpm

.PHONY: ttyusb0
ttyusb0: dist ## - Creates a local RPM package, useful for development
.PHONY: ttyUSB0
ttyUSB0: dist ## - Creates a local RPM package, useful for development
cd $(ROOTDIR) && mkdir -p ${RPM_TOPDIR}/{RPMS,SRPMS,BUILD,SOURCES}
cd $(ROOTDIR) && tools/version-update -v ${VERSION}
cd $(ROOTDIR) && cp ./rpm/qm-ttyUSB0${VERSION}.tar.gz ${RPM_TOPDIR}/SOURCES
cd $(ROOTDIR) && cp ./rpm/qm-ttyUSB0-${VERSION}.tar.gz ${RPM_TOPDIR}/SOURCES
rpmbuild -ba \
--define="_topdir ${RPM_TOPDIR}" \
--define="version ${VERSION}" \
Expand Down
6 changes: 6 additions & 0 deletions subsystems/video/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,14 @@ SPECFILE_SUBPACKAGE_VIDEO ?= ${ROOTDIR}/rpm/video/video.spec
dist: ## - Creates the QM video package
cd $(ROOTDIR) && tar cvz \
--dereference \
--transform 's|subsystems/video/Makefile|Makefile|' \
--transform 's|rpm/video/video.spec|video.spec|' \
--transform s/qm/qm-video-${VERSION}/ \
-f /tmp/qm-video-${VERSION}.tar.gz \
../qm/rpm/video/video.spec \
../qm/subsystems/video/Makefile \
../qm/tools/version-update \
../qm/VERSION \
../qm/README.md \
../qm/SECURITY.md \
../qm/LICENSE \
Expand Down
5 changes: 3 additions & 2 deletions tools/version-update
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ echo "Updating version from ${PREV_VERSION} to ${VERSION}"
# If the spec file has already been versioned, update it.
sed -i "s/Version: ${PREV_VERSION}$/Version: ${VERSION}/g" "${BASEDIR}/rpm/qm.spec"
sed -i "s/Version: ${PREV_VERSION}$/Version: ${VERSION}/g" "${BASEDIR}/rpm/kvm/qm-kvm.spec"
sed -i "s/Version: ${PREV_VERSION}$/Version: ${VERSION}/g" "${BASEDIR}/rpm/ros2/rolling/ros2_rolling.spec"
sed -i "s/Version: ${PREV_VERSION}$/Version: ${VERSION}/g" "${BASEDIR}/rpm/ros2/ros2_rolling.spec"
sed -i "s/Version: ${PREV_VERSION}$/Version: ${VERSION}/g" "${BASEDIR}/rpm/sound/sound.spec"
sed -i "s/Version: ${PREV_VERSION}$/Version: ${VERSION}/g" "${BASEDIR}/rpm/video/video.spec"
sed -i "s/Version: ${PREV_VERSION}$/Version: ${VERSION}/g" "${BASEDIR}/rpm/radio/radio.spec"
Expand All @@ -71,13 +71,14 @@ sed -i "s/Version: ${PREV_VERSION}$/Version: ${VERSION}/g" "${BASEDIR}/rpm/text2
# Otherwise, set the new version.
sed -i "s/Version: 0$/Version: ${VERSION}/g" "${BASEDIR}/rpm/qm.spec"
sed -i "s/Version: 0$/Version: ${VERSION}/g" "${BASEDIR}/rpm/kvm/qm-kvm.spec"
sed -i "s/Version: 0$/Version: ${VERSION}/g" "${BASEDIR}/rpm/ros2/rolling/ros2_rolling.spec"
sed -i "s/Version: 0$/Version: ${VERSION}/g" "${BASEDIR}/rpm/ros2/ros2_rolling.spec"
sed -i "s/Version: 0$/Version: ${VERSION}/g" "${BASEDIR}/rpm/sound/sound.spec"
sed -i "s/Version: 0$/Version: ${VERSION}/g" "${BASEDIR}/rpm/video/video.spec"
sed -i "s/Version: 0$/Version: ${VERSION}/g" "${BASEDIR}/rpm/radio/radio.spec"
sed -i "s/Version: 0$/Version: ${VERSION}/g" "${BASEDIR}/rpm/dvb/dvb.spec"
sed -i "s/Version: 0$/Version: ${VERSION}/g" "${BASEDIR}/rpm/tty7/tty7.spec"
sed -i "s/Version: 0$/Version: ${VERSION}/g" "${BASEDIR}/rpm/input/input.spec"
sed -i "s/Version: 0$/Version: ${VERSION}/g" "${BASEDIR}/rpm/ttyUSB0/ttyUSB0.spec"
sed -i "s/Version: 0$/Version: ${VERSION}/g" "${BASEDIR}/rpm/img_tempdir/img_tempdir.spec"
sed -i "s/Version: 0$/Version: ${VERSION}/g" "${BASEDIR}/rpm/windowmanager/windowmanager.spec"
sed -i "s/Version: 0$/Version: ${VERSION}/g" "${BASEDIR}/rpm/text2speech/text2speech.spec"
Expand Down

0 comments on commit 5fe959f

Please sign in to comment.