https://bugzilla.redhat.com/show_bug.cgi?id=1749383
--- Comment #6 from Simone Caronni negativo17@gmail.com ---
BuildRequires: systemd BuildRequires: systemd
Duplicate BuildRequires. Also please sort all the BuildRequires tags all together, they are in 3 blocks not in alphabetical order and with no explanation. Makes spotting obvious mistakes a bit harder.
%description Apache Mesos is a cluster manager that provides efficient resource isolation and sharing across distributed applications, or frameworks. It can run Hadoop, MPI, Hypertable, Spark, and other applications on a dynamically shared pool of nodes.
Please align to 80 characters columns, if possible.
Group: Development/Libraries
Remove all the Groups tags, they are obsolete since RHEL 5.
Requires: mesos%{?_isa} = %{version}-%{release}
Should be %{name}%{?_isa}, for consistency.
BuildRequires: python2-devel
Do not sort BuildRequires in the subpackage definition. It is also a duplicate.
%setup -q %patch0 -p1 -F2
Please use the %autosetup macro. Also do not change the fuzz lines, the strict fuzz rules are there to avoid patching the wrong block (it happened!). Rebase the patch if necessary.
# Apparently bundled: # 1. CSI spec: https://github.com/container-storage-interface/spec/releases # 2. ConcurrentQueue: https://github.com/cameron314/concurrentqueue # 3. File gmock-all.cc from Google Gmock: https://github.com/google/googletest # 4. Nvidia GPU deployment kit nvml.h header file. cd 3rdparty tar xzf concurrentqueue-7b69a8f.tar.gz tar xzf googletest-release-1.8.0.tar.gz tar xzf nvml-352.79.tar.gz cd ..
If this is the case, then they must be listed in the bundled Provides tags.
%make_build %{?_smp_mflags} V=1
Remove _smp_mflags, it's already part of the macro:
$ rpm --showrc | grep make_build -13: make_build %{__make} %{_make_output_sync} %{?_smp_mflags}
%if %skiptests echo "Skipping tests, do to mock issues" %else export LD_LIBRARY_PATH=`pwd`/src/.libs make check %endif
I would not print anything if disabled, maybe add a comment, but as you wish. If you want to keep the output then typo (s/do/due/g).
%{__python2} setup.py install --root=%{buildroot} --prefix=/usr
Use %{_prefix} instead of explicit /usr.
# fedora guidelines no .a|.la rm -f %{buildroot}%{_libdir}/*.la rm -f %{buildroot}%{_libdir}/libexamplemodule* rm -f %{buildroot}%{_libdir}/libtest* rm -f %{buildroot}/%{_libdir}/%{name}/modules/*.la
You can probably just do something like:
find %{buildroot} -name '*.a' -o -name '*.la' -delete
But as you prefer.
mkdir -p -m0755 %{buildroot}%{_sysconfdir}/tmpfiles.d install -m 0644 %{SOURCE1} %{buildroot}%{_sysconfdir}/tmpfiles.d/%{name}.conf %config(noreplace) %{_sysconfdir}/tmpfiles.d/%{name}.conf
Please replace these with the macro and don't mark it as a config file as it is under /usr/lib/tmpfiles.d/:
mkdir -p -m0755 %{buildroot}%{_tmpfilesdir} install -m 0644 %{SOURCE1} %{buildroot}%{_tmpfilesdir}/%{name}.conf %{_tmpfilesdir}/%{name}.conf
mkdir -p -m0755 %{buildroot}/%{_var}/log/%{name} mkdir -p -m0755 %{buildroot}/%{_var}/lib/%{name}
Please use:
mkdir -p -m0755 %{buildroot}/%{_localstatedir}/log/%{name} mkdir -p -m0755 %{buildroot}/%{_sharedstatedir}/%{name}
install -m cp -rf
Please replace with "install -p -m" as you are supposed to preserve timestamps if possible. Same for cp, you can use the -a switch (for example).
pathfix.py -pni "%{__python2} %{py2_shbang_opts}" %{buildroot}/usr/bin/mesos-cat pathfix.py -pni "%{__python2} %{py2_shbang_opts}" %{buildroot}/usr/bin/mesos-scp pathfix.py -pni "%{__python2} %{py2_shbang_opts}" %{buildroot}/usr/bin/mesos-ps pathfix.py -pni "%{__python2} %{py2_shbang_opts}" %{buildroot}/usr/bin/mesos-tail pathfix.py -pni "/usr/bin/bash" %{buildroot}/usr/share/mesos/examples pathfix.py -pni "/usr/bin/bash" %{buildroot}/usr/sbin/mesos*.sh
Please be consistent across the SPEC file, replace those paths with %{_bindir}, %{_sbindir}, and %{_datadir}.
%files %doc LICENSE NOTICE
It should be:
%files %license LICENSE %doc NOTICE
Also, the license is fine in a reduced number of packages as long as it is installed in any combination of the packages being installed. Considering the base mesos package is required by all subpackages, you can skip entirely the %license and %doc tag in all subpackages.
%{_libdir}/*.so
Why is this unversioned? If it can not be versioned it needs an explanation or to be moved to a different path.
if ! getent passwd mesos >/dev/null ; then useradd -r -g mesos -d %{_sharedstatedir}/%{name} -s /sbin/nologin \ -c "%{name} daemon account" mesos fi
Please use the packaging guidelines format, and especially add the shadow-utils requirement: https://docs.fedoraproject.org/en-US/packaging-guidelines/UsersAndGroups/#_d...
Also, you can probably use a variable at the top of the file:
%global user mesos %global group mesos
And then replace all occurrences in the SPEC file, in the %pre and %files section.
%systemd_post %{name}-slave.service %{name}-master.service
Please use the BuildRequires indicated:
https://docs.fedoraproject.org/en-US/packaging-guidelines/Scriptlets/#_syste...
/sbin/ldconfig
If you plan on building this only on Fedora & CentOS/RHEL 8 you can skip it entirely.
Otherwise, if you also target EPEL-7 there is this:
https://fedoraproject.org/wiki/EPEL:Packaging#Shared_Libraries
%changelog
- Wed Sep 04 2019 Javi Roman javiroman@apache.org - 1.8.1
Feel free to trim the changelog before you, maybe just leave one message before yours. As you wish. The package version at the end should be "1.8.1-1", you can update this automatically with "rpmdev-bumpspec" to have it properly formatted.