# -*- 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@ %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 chown -R memgraph:memgraph $i/telemetry || exit 1 # Make snapshots directory immutable (optional) 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/logrotate.d/memgraph" %config(noreplace) "/etc/logrotate.d/memgraph_audit" @CPACK_RPM_USER_INSTALL_FILES@ %changelog @CPACK_RPM_SPEC_CHANGELOG@