Not having one logrotate file produced an error during rpmlint. It makes sense to have one logrotate file after Memgraph is installed because it's easier to manage config files. There are two logrotate files in the codebase, one for Community and one for Enterprise edition. Having rotate files per offering also makes sense because offerings are affected less often compared to the features. It's easier to maintain.
147 lines
4.6 KiB
RPMSpec
147 lines
4.6 KiB
RPMSpec
# -*- rpm-spec -*-
|
|
BuildRoot: %_topdir/@CPACK_PACKAGE_FILE_NAME@@CPACK_RPM_PACKAGE_COMPONENT_PART_PATH@
|
|
Summary: @CPACK_RPM_PACKAGE_SUMMARY@
|
|
Name: @CPACK_RPM_PACKAGE_NAME@
|
|
Version: @CPACK_RPM_PACKAGE_VERSION@
|
|
Release: @CPACK_RPM_PACKAGE_RELEASE@
|
|
License: @CPACK_RPM_PACKAGE_LICENSE@
|
|
# Group field is deprecated
|
|
# Group: @CPACK_RPM_PACKAGE_GROUP@
|
|
Vendor: @CPACK_RPM_PACKAGE_VENDOR@
|
|
BuildRequires: systemd
|
|
|
|
@TMP_RPM_URL@
|
|
@TMP_RPM_REQUIRES@
|
|
@TMP_RPM_REQUIRES_PRE@
|
|
@TMP_RPM_REQUIRES_POST@
|
|
@TMP_RPM_REQUIRES_PREUN@
|
|
@TMP_RPM_REQUIRES_POSTUN@
|
|
@TMP_RPM_PROVIDES@
|
|
@TMP_RPM_OBSOLETES@
|
|
@TMP_RPM_CONFLICTS@
|
|
@TMP_RPM_AUTOPROV@
|
|
@TMP_RPM_AUTOREQ@
|
|
@TMP_RPM_AUTOREQPROV@
|
|
@TMP_RPM_BUILDARCH@
|
|
@TMP_RPM_PREFIXES@
|
|
|
|
@TMP_RPM_DEBUGINFO@
|
|
|
|
# This is needed to prevent Python compilation errors when building the RPM
|
|
# package
|
|
# https://github.com/scylladb/scylla/issues/2235
|
|
%global __os_install_post \
|
|
/usr/lib/rpm/redhat/brp-compress \
|
|
%{!?__debug_package:\
|
|
/usr/lib/rpm/redhat/brp-strip %{__strip} \
|
|
/usr/lib/rpm/redhat/brp-strip-comment-note %{__strip} %{__objdump} \
|
|
} \
|
|
/usr/lib/rpm/redhat/brp-strip-static-archive %{__strip} \
|
|
%{!?__jar_repack:/usr/lib/rpm/redhat/brp-java-repack-jars} \
|
|
%{nil}
|
|
|
|
%define _rpmdir %_topdir/RPMS
|
|
%define _srcrpmdir %_topdir/SRPMS
|
|
@FILE_NAME_DEFINE@
|
|
%define _unpackaged_files_terminate_build 0
|
|
@TMP_RPM_SPEC_INSTALL_POST@
|
|
@CPACK_RPM_SPEC_MORE_DEFINE@
|
|
@CPACK_RPM_COMPRESSION_TYPE_TMP@
|
|
|
|
%description
|
|
@CPACK_RPM_PACKAGE_DESCRIPTION@
|
|
|
|
# This is a shortcutted spec file generated by CMake RPM generator
|
|
# we skip _install step because CPack does that for us.
|
|
# We do only save CPack installed tree in _prepr
|
|
# and then restore it in build.
|
|
%prep
|
|
# Put the systemd unit where it is expected on this system
|
|
mkdir -p $RPM_BUILD_ROOT/%{_unitdir}
|
|
mv $RPM_BUILD_ROOT/lib/systemd/system/memgraph.service $RPM_BUILD_ROOT/%{_unitdir}
|
|
rm -rf $RPM_BUILD_ROOT/lib
|
|
# Fix the incorrect directory permissions set by cpack (this is fixed in CMake 3.11)
|
|
find $RPM_BUILD_ROOT -type d | xargs chmod 755
|
|
# After setting up custom prep, continue with CMake's default
|
|
mv $RPM_BUILD_ROOT %_topdir/tmpBBroot
|
|
|
|
%install
|
|
if [ -e $RPM_BUILD_ROOT ];
|
|
then
|
|
rm -rf $RPM_BUILD_ROOT
|
|
fi
|
|
mv %_topdir/tmpBBroot $RPM_BUILD_ROOT
|
|
|
|
@TMP_RPM_DEBUGINFO_INSTALL@
|
|
|
|
%clean
|
|
|
|
%post
|
|
# memgraph user and group must be set in preinst
|
|
chown memgraph:memgraph /var/lib/memgraph || exit 1
|
|
chmod 750 /var/lib/memgraph || exit 1
|
|
chown memgraph:adm /var/log/memgraph || exit 1
|
|
chmod 750 /var/log/memgraph || exit 1
|
|
|
|
# Create telemetry directory in examples
|
|
for i in /usr/share/memgraph/examples/*; do
|
|
# The telemetry directory may already exist from some prior installation
|
|
if [ ! -d $i/telemetry ]; then
|
|
mkdir $i/telemetry || exit 1
|
|
fi
|
|
done
|
|
|
|
# Change ownership of all examples
|
|
chown -R memgraph:memgraph /usr/share/memgraph/examples || exit 1
|
|
|
|
# Make snapshots directory immutable (optional)
|
|
for i in /usr/share/memgraph/examples/*; do
|
|
chattr +i -R $i/snapshots || true
|
|
done
|
|
|
|
# Generate SSL certificates
|
|
if [ ! -d /etc/memgraph/ssl ]; then
|
|
mkdir /etc/memgraph/ssl || exit 1
|
|
openssl req -x509 -newkey rsa:4096 -days 3650 -nodes \
|
|
-keyout /etc/memgraph/ssl/key.pem -out /etc/memgraph/ssl/cert.pem \
|
|
-subj "/C=GB/ST=London/L=London/O=Memgraph Ltd./CN=Memgraph DB" || exit 1
|
|
chown memgraph:memgraph /etc/memgraph/ssl/* || exit 1
|
|
chmod 400 /etc/memgraph/ssl/* || exit 1
|
|
fi
|
|
@RPM_SYMLINK_POSTINSTALL@
|
|
@CPACK_RPM_SPEC_POSTINSTALL@
|
|
|
|
%postun
|
|
@CPACK_RPM_SPEC_POSTUNINSTALL@
|
|
|
|
%pre
|
|
# Add the 'memgraph' user and group
|
|
getent group memgraph >/dev/null || groupadd -r memgraph || exit 1
|
|
getent passwd memgraph >/dev/null || \
|
|
useradd -r -g memgraph -d /var/lib/memgraph -s /bin/bash memgraph || exit 1
|
|
echo "Don't forget to switch to the 'memgraph' user to use Memgraph" || exit 1
|
|
@CPACK_RPM_SPEC_PREINSTALL@
|
|
|
|
%preun
|
|
# Remove optional immutability from examples directory to allow removal
|
|
chattr -i -R /usr/share/memgraph/examples || true
|
|
@CPACK_RPM_SPEC_PREUNINSTALL@
|
|
|
|
%files
|
|
%defattr(@TMP_DEFAULT_FILE_PERMISSIONS@,@TMP_DEFAULT_USER@,@TMP_DEFAULT_GROUP@,@TMP_DEFAULT_DIR_PERMISSIONS@)
|
|
@CPACK_RPM_INSTALL_FILES@
|
|
# Since we moved the memgraph.service file, declare it explicitly here.
|
|
# NOTE: memgraph.service must not be marked as configuration file.
|
|
%{_unitdir}/memgraph.service
|
|
|
|
# Override CPACK_RPM_ABSOLUTE_INSTALL_FILES with our %config(noreplace), cpack
|
|
# uses plain %config.
|
|
%config(noreplace) "/etc/memgraph/memgraph.conf"
|
|
%config(noreplace) "/etc/memgraph/auth_module/ldap.example.yaml"
|
|
%config(noreplace) "/etc/logrotate.d/memgraph"
|
|
|
|
@CPACK_RPM_USER_INSTALL_FILES@
|
|
|
|
%changelog
|
|
@CPACK_RPM_SPEC_CHANGELOG@
|