Blob Blame History Raw
%{!?scl_name_base:%global scl_name_base rh-thermostat}
%{!?scl_name_version:%global scl_name_version 16}

%{!?scl:%global scl %{scl_name_base}%{scl_name_version}}
%scl_package %scl

%if 0%{?rhel}

%if 0%{?rhel} <= 6
  # EL 6
  %global custom_release 60
%else
  # EL 7
  %global custom_release 70
%endif

%else

%global custom_release 1

%endif

# do not produce empty debuginfo package
%global debug_package %{nil}

Name:       %{scl_name}
Version:    2.3
# Release should be higher than el6 builds. Use convention
# 60.X where X is an increasing int. 60 for EL-6. We use
# 70.X for EL-7. For some reason we cannot rely on the
# dist tag.
Release:    %{custom_release}.6%{?dist}
Summary:    Package that installs %{scl}

License:    GPLv2+
Source0:    README
Source1:    LICENSE

# Required for java macro expansion
BuildRequires:    rh-java-common-javapackages-tools
BuildRequires:    rh-mongodb32-scldevel
BuildRequires:    rh-java-common-scldevel-common
BuildRequires:    rh-maven33-scldevel
BuildRequires:    help2man

# This needs to require all packages shipped with the
# collection. The leaf package is thermostat-webapp
# which should pull in thermostat plus all deps, such
# as mongo-java-driver and mongodb from the mongodb collection.
Requires:         %{name}-thermostat-webapp
Requires:         %{name}-runtime >= %{version}-%{release}

%description
This is the main package for the %{scl} Software Collection.

%package runtime
Summary:    Package that handles %{scl} Software Collection.
# Thermostat depends on the mongodb collection
%{?scl_mongodb:
Requires:   %{scl_mongodb}}
%{!?scl_mongodb:
Requires:   mongodb
Requires:   mongodb-server}
%{?scl_java_common:
Requires:   %{?scl_prefix_java_common}runtime}

%description runtime
Package shipping essential scripts to work with the %{scl} Software Collection.

%package build
Requires:   %{name}-scldevel = %{version}-%{release}
Summary:    Build support tools for the %{scl} Software Collection.

%description build
Package shipping essential configuration marcros/files in order to be able
to build %{scl} Software Collection.

%package scldevel
Summary:    Package shipping development files for %{scl}.
Group:      Applications/File
Requires:   %{?scl_prefix_java_common}javapackages-tools
Requires:   %{name}-runtime = %{version}-%{release}
Requires:   %{?scl_prefix_java_common}scldevel-common
Requires:   %{?scl_prefix_mongodb}scldevel
Requires:   %{?scl_prefix_maven}scldevel

%description scldevel
Development files for %{scl} (useful e.g. for hierarchical collection
building with transitive dependencies).

%prep
%setup -c -T
#===================#
# SCL enable script #
#===================#
cat <<EOF >enable
# The thermostat1 collection depends on the mongodb collection
# for the mongo-java-driver and on the rh-java-commmon collection
# for shared dependencies. We need to source the enable script
# in order for xmvn builds to work.
. scl_source enable %{?scl_mongodb} %{?scl_java_common}

# Generic variables
export PATH="%{_bindir}:\${PATH:-/bin:/usr/bin}"
export MANPATH="%{_mandir}:\${MANPATH}"

# Needed by Java Packages Tools to locate java.conf
export JAVACONFDIRS="%{_sysconfdir}/java:\${JAVACONFDIRS:-/etc/java}"

# Required by XMvn to locate its configuration file(s)
export XDG_CONFIG_DIRS="%{_sysconfdir}/xdg:\${XDG_CONFIG_DIRS:-/etc/xdg}"

# Not really needed by anything for now, but kept for consistency with
# XDG_CONFIG_DIRS.
export XDG_DATA_DIRS="%{_datadir}:\${XDG_DATA_DIRS:-/usr/local/share:/usr/share}"
EOF

#===========#
# java.conf #
#===========#
cat <<EOF >java.conf
# Java configuration file for %{scl} software collection.
JAVA_LIBDIR=%{_javadir}
JNI_LIBDIR=%{_jnidir}
JVM_ROOT=%{_jvmdir}
EOF

#=============#
# XMvn config #
#=============#
cat <<EOF >configuration.xml
<!-- XMvn configuration file for %{scl} software collection -->
<configuration>
  <resolverSettings>
    <metadataRepositories>
      <repository>/opt/rh/%{scl}/root/usr/share/maven-metadata</repository>
    </metadataRepositories>
    <prefixes>
      <prefix>/opt/rh/%{scl}/root</prefix>
    </prefixes>
  </resolverSettings>
  <installerSettings>
    <metadataDir>opt/rh/%{scl}/root/usr/share/maven-metadata</metadataDir>
  </installerSettings>
  <repositories>
    <repository>
      <id>resolve-%{scl}</id>
      <type>compound</type>
      <properties>
        <prefix>opt/rh/%{scl}/root</prefix>
        <namespace>%{scl}</namespace>
      </properties>
      <configuration>
        <repositories>
          <repository>base-resolve</repository>
        </repositories>
      </configuration>
    </repository>
    <repository>
      <id>resolve</id>
      <type>compound</type>
      <configuration>
        <repositories>
        <!-- The %{scl} collection resolves from:
                    1. local repository
                    2. %{scl}
                    3. java-common
                    4. mongodb
                    5. maven
               collections. -->
          <repository>resolve-local</repository>
          <repository>resolve-%{scl}</repository>
          <repository>resolve-java-common</repository>
          <repository>resolve-%{scl_mongodb}</repository>
          <repository>resolve-%{scl_maven}</repository>
        </repositories>
      </configuration>
    </repository>
    <repository>
      <id>install</id>
      <type>compound</type>
      <properties>
        <prefix>opt/rh/%{scl}/root</prefix>
        <namespace>%{scl}</namespace>
      </properties>
      <configuration>
        <repositories>
          <repository>base-install</repository>
        </repositories>
      </configuration>
    </repository>
  </repositories>
</configuration>
EOF

#=====================#
# Javapackages config #
#=====================#
cat <<EOF >javapackages-config.json
{
    "maven.req": {
	"always_generate": [
	    "%{scl}-runtime"
	],
	"java_requires": {
	    "package_name": "java",
	    "always_generate": true,
	    "skip": false
	},
	"java_devel_requires": {
	    "package_name": "java-devel",
	    "always_generate": false,
	    "skip": false
	}
    },
    "javadoc.req": {
	"always_generate": [
	    "%{scl}-runtime"
	]
    }
}
EOF


#=====================#
# README and man page #
#=====================#
# This section generates README file from a template and creates man page
# from that file, expanding RPM macros in the template file.
cat >README <<'EOF'
%{expand:%(cat %{SOURCE0})}
EOF

# copy the license file so %%files section sees it
cp %{SOURCE1} .

# scldevel macros
cat << EOF > macros.%{scl_name_base}-scldevel
%%scl_rh_thermostat %{scl}
%%scl_prefix_rh_thermostat %{scl_prefix}
EOF


%build
# generate a helper script that will be used by help2man
cat >h2m_helper <<'EOF'
#!/bin/bash
[ "$1" == "--version" ] && echo "%{scl_name} %{version} Software Collection" || cat README
EOF
chmod a+x h2m_helper

# generate the man page
help2man -N --section 7 ./h2m_helper -o %{scl_name}.7


%install
(%scl_install)

install -d -m 755 %{buildroot}%{_scl_scripts}
install -p -m 755 enable %{buildroot}%{_scl_scripts}/

install -d -m 755 %{buildroot}%{_sysconfdir}/java
install -p -m 644 java.conf %{buildroot}%{_sysconfdir}/java/
install -p -m 644 javapackages-config.json %{buildroot}%{_sysconfdir}/java/

install -d -m 755 %{buildroot}%{_sysconfdir}/xdg/xmvn
install -p -m 644 configuration.xml %{buildroot}%{_sysconfdir}/xdg/xmvn/


# Create java/maven/icons directories so that they'll get properly owned.
mkdir -p %{buildroot}%{_javadir}
mkdir -p %{buildroot}%{_jnidir}
mkdir -p %{buildroot}%{_javadocdir}
mkdir -p %{buildroot}%{_mavenpomdir}
mkdir -p %{buildroot}%{_datadir}/maven-effective-poms
mkdir -p %{buildroot}%{_datadir}/maven-metadata
mkdir -p %{buildroot}%{_mavendepmapfragdir}
mkdir -p %{buildroot}%{_datadir}/licenses
mkdir -p %{buildroot}%{_libdir}
mkdir -p %{buildroot}%{_datadir}/icons/hicolor/scalable/apps

# install generated man page
mkdir -p %{buildroot}%{_mandir}/man7/
install -m 644 %{scl_name}.7 %{buildroot}%{_mandir}/man7/%{scl_name}.7

# scldevel macro
install -p -m 644 macros.%{scl_name_base}-scldevel %{buildroot}%{_root_sysconfdir}/rpm/

# Empty package (no file content).  The sole purpose of this package
# is collecting its dependencies so that the whole SCL can be
# installed by installing %{name}.
%files

%files runtime
%{scl_files}
%doc README
%doc LICENSE
%dir %{_sysconfdir}/java
%dir %{_javadir}
%dir %{_jnidir}
%dir %{_javadocdir}
%dir %{_mavenpomdir}
%dir %{_datadir}/maven-effective-poms
%dir %{_datadir}/maven-metadata
%dir %{_mavendepmapfragdir}
%dir %{_datadir}/licenses
%dir %{_libdir}
%{_sysconfdir}/java/java.conf
%{_sysconfdir}/java/javapackages-config.json
%{_sysconfdir}/xdg/xmvn/configuration.xml
%dir %{_mandir}/man7
%{_mandir}/man7/%{scl_name}.*

%files build
%{_root_sysconfdir}/rpm/macros.%{scl}-config

%files scldevel
%{_root_sysconfdir}/rpm/macros.%{scl_name_base}-scldevel


%changelog
* Tue Sep 06 2016 Jie Kang <jkang@redhat.com> - 2.3-6
- Own in-collection directory. Resolves RHBZ#1371518

* Fri Jun 24 2016 Severin Gehwolf <sgehwolf@redhat.com> - 2.3-5
- Also done runtime require rh-java-common-scldevel, but
  rather rh-java-common-scldevel-common.

* Thu Jun 23 2016 Severin Gehwolf <sgehwolf@redhat.com> - 2.3-4
- Don't require rh-java-common-scldevel, but
  rh-java-common-scldevel-common which does not drag in
  maven30.

* Thu Jun 23 2016 Severin Gehwolf <sgehwolf@redhat.com> - 2.3-3
- Really fix the scldevel macros.

* Thu Jun 23 2016 Severin Gehwolf <sgehwolf@redhat.com> - 2.3-2
- Fix scldevel macro.

* Tue Jun 21 2016 Severin Gehwolf <sgehwolf@redhat.com> - 2.3-1
- Initial package