I try to build an RPM package on RHEL8 with rpmbuild version 4.14.3.
This package shall have a dependency, that at least OpenJDK 1.8.0 is installed.
This OpenJDK 1.8.0 shall not be installed if java-11-openjdk or java-17-openjdk or java-21-openjdk are installed.
# rpm -qa | grep javajava-11-openjdk-devel-11.0.23.0.9-3.el8.x86_64tzdata-java-2024a-1.el8.noarchjavapackages-filesystem-5.3.0-1.module+el8+2447+6f56d9a6.noarchjava-11-openjdk-11.0.23.0.9-3.el8.x86_64java-11-openjdk-headless-11.0.23.0.9-3.el8.x86_64...When yum install my package:
Dependencies resolved.=================================== Package ===================================Installing: packageblabla Installing dependencies: java-1.8.0-openjdk java-1.8.0-openjdk-devel java-1.8.0-openjdk-headless Installing weak dependencies: gtk2 The SPEC-file:
%{?_with_rhel8:Requires: (( java-1.8.0-openjdk-devel or java-11-openjdk-devel ) and ( java-1.8.0-openjdk-devel or java-17-openjdk-devel ) and ( java-1.8.0-openjdk-devel or java-21-openjdk-devel )) }I tried with "unless" following https://rpm-software-management.github.io/rpm/manual/boolean_dependencies.htmlBut rpmbuild complains that I shall use "or".
error: line 150: Illegal context for 'unless', please use 'or' instead: Requires: (( java-1.8.0-openjdk-devel unless java-11-openjdk-devel ) and ( java-1.8.0-openjdk-devel unless java-17-openjdk-devel ) and ( java-1.8.0-openjdk-devel unless java-21-openjdk-devel ))Additionally the build is also then needed for RHEL7, which comes with rpm version 4.11.
Kind regards,Marcus