summaryrefslogtreecommitdiff
path: root/efs-utils.spec
diff options
context:
space:
mode:
Diffstat (limited to 'efs-utils.spec')
-rw-r--r--efs-utils.spec225
1 files changed, 225 insertions, 0 deletions
diff --git a/efs-utils.spec b/efs-utils.spec
new file mode 100644
index 0000000..d78fd7e
--- /dev/null
+++ b/efs-utils.spec
@@ -0,0 +1,225 @@
+# RHEL 9 does not include pytest-mock.
+%bcond_with tests
+%global with_selinux 1
+%global selinuxtype targeted
+%global modulename efsutils
+%global watchdog_service_name amazon-efs-mount-watchdog
+
+Name: efs-utils
+Version: 1.35.1
+Release: 7%{?dist}
+Summary: Utilities for Amazon Elastic File System (EFS)
+
+License: MIT
+URL: https://github.com/aws/efs-utils
+Source0: %{url}/archive/v%{version}/%{name}-%{version}.tar.gz
+
+Source1: efsutils.te
+Source2: efsutils.if
+Source3: efsutils.fc
+Source4: efsutils_selinux.8
+
+# Patch a deprecation warning to avoid having it fill the logs.
+# https://github.com/aws/efs-utils/pull/189
+Patch: fix-deprecation-warning.patch
+
+BuildArch: noarch
+
+Requires: nfs-utils
+Requires: openssl
+Requires: stunnel
+Requires: util-linux
+Requires: which
+Requires: python3dist(botocore)
+
+%if 0%{?with_selinux}
+Requires: (%{name}-selinux if selinux-policy-%{selinuxtype})
+%endif
+
+BuildRequires: python3-devel
+BuildRequires: systemd-rpm-macros
+
+%if %{with tests}
+BuildRequires: python3dist(botocore)
+BuildRequires: python3dist(pytest)
+BuildRequires: python3dist(pytest-mock)
+%endif
+
+%global _description %{expand:
+Utilities for Amazon Elastic File System (EFS).}
+
+%description %{_description}
+
+%if 0%{?with_selinux}
+# SELinux subpackage
+%package selinux
+Summary: %{name} SELinux policy
+Requires: %{name} = %{version}-%{release}
+Requires: selinux-policy-%{selinuxtype}
+Requires(post): selinux-policy-%{selinuxtype}
+BuildRequires: selinux-policy-devel
+%{?selinux_requires}
+
+%description selinux
+Custom %{name} SELinux policy module
+%endif
+
+%prep
+%autosetup -n %{name}-%{version} -p1
+
+# Use unittest.mock for testing.
+sed -i 's/from mock/from unittest.mock/' test/common.py
+
+%build
+echo "Nothing to build"
+
+# Disable the automatic version checking.
+sed -i 's/enable_version_check = true/enable_version_check = false/' dist/efs-utils.conf
+
+%if 0%{?with_selinux}
+mkdir selinux
+cp -p %{SOURCE1} selinux/
+cp -p %{SOURCE2} selinux/
+cp -p %{SOURCE3} selinux/
+cp -p %{SOURCE4} selinux/
+
+%make_build -f %{_datadir}/selinux/devel/Makefile %{modulename}.pp
+bzip2 -9 %{modulename}.pp
+%endif
+
+
+%install
+# Watchdog service unit file.
+install -m 0755 -vd %{buildroot}%{_unitdir}
+install -vp -m 644 dist/%{watchdog_service_name}.service %{buildroot}%{_unitdir}/
+
+# Watchdog service itself.
+install -m 0755 -vd %{buildroot}%{_bindir}
+install -vp -m 755 src/watchdog/__init__.py %{buildroot}%{_bindir}/amazon-efs-mount-watchdog
+
+# Configuration files and Amazon root certificates.
+install -m 0755 -vd %{buildroot}%{_sysconfdir}/amazon/efs/
+install -vp -m 644 dist/%{name}.conf %{buildroot}%{_sysconfdir}/amazon/efs/
+install -vp -m 444 dist/%{name}.crt %{buildroot}%{_sysconfdir}/amazon/efs/
+
+# mount.efs script allows mounting EFS file systems by their short name.
+install -m 0755 -vd %{buildroot}%{_sbindir}
+install -vp -m 755 src/mount_efs/__init__.py %{buildroot}%{_sbindir}/mount.efs
+
+# Man page.
+install -m 0755 -vd %{buildroot}%{_mandir}/man8/
+install -vp -m 644 man/mount.efs.8 %{buildroot}%{_mandir}/man8/
+
+# Log directory.
+install -m 0755 -vd %{buildroot}%{_localstatedir}/log/amazon/efs
+
+%if 0%{?with_selinux}
+install -D -m 0644 -t %{buildroot}%{_mandir}/man8 selinux/%{modulename}_selinux.8
+install -D -m 0644 %{modulename}.pp.bz2 %{buildroot}%{_datadir}/selinux/packages/%{selinuxtype}/%{modulename}.pp.bz2
+install -D -p -m 0644 selinux/%{modulename}.if %{buildroot}%{_datadir}/selinux/devel/include/distributed/%{modulename}.if
+%endif
+
+
+%if %{with tests}
+%check
+# Avoid running tests with coverage enabled.
+touch pytest.ini
+
+# Ignore some tests that require networking and get stuck forever.
+# Also skip a broken version check test: https://github.com/aws/efs-utils/issues/194
+PYTHONPATH=$(pwd)/src %pytest \
+ --ignore test/mount_efs_test/test_main.py \
+ --ignore test/mount_efs_test/test_bootstrap_tls.py \
+ --ignore test/mount_efs_test/test_create_self_signed_cert.py \
+ --ignore test/watchdog_test/test_refresh_self_signed_certificate.py \
+ -k "not test_version_check_ready"
+%endif
+
+
+########################################################################################
+#
+# BEGIN SELINUX PRE/POST
+#
+# SELinux contexts are saved so that only affected files can be
+# relabeled after the policy module installation
+%if 0%{?with_selinux}
+%pre selinux
+%selinux_relabel_pre -s %{selinuxtype}
+
+%post selinux
+%selinux_modules_install -s %{selinuxtype} %{_datadir}/selinux/packages/%{selinuxtype}/%{modulename}.pp.bz2
+%selinux_relabel_post -s %{selinuxtype}
+
+if [ "$1" -le "1" ]; then # First install
+ %systemd_postun_with_restart %{watchdog_service_name}.service
+fi
+
+%postun selinux
+if [ $1 -eq 0 ]; then
+ %selinux_modules_uninstall -s %{selinuxtype} %{modulename}
+ %selinux_relabel_post -s %{selinuxtype}
+ %systemd_postun_with_restart %{watchdog_service_name}.service
+fi
+%endif
+########################################################################################
+
+
+%files -n %{name}
+%license LICENSE
+%doc CONTRIBUTING.md README.md
+%dir /var/log/amazon/efs
+%dir %{_sysconfdir}/amazon
+%dir %{_sysconfdir}/amazon/efs
+%config(noreplace) %{_sysconfdir}/amazon/efs/efs-utils.conf
+%{_unitdir}/%{watchdog_service_name}.service
+%{_sysconfdir}/amazon/efs/efs-utils.crt
+%{_sbindir}/mount.efs
+%{_bindir}/amazon-efs-mount-watchdog
+%{_mandir}/man8/mount.efs.8*
+
+
+%if 0%{?with_selinux}
+%files selinux
+%{_mandir}/man8/%{modulename}_selinux.8.*
+%{_datadir}/selinux/packages/%{selinuxtype}/%{modulename}.pp.*
+%{_datadir}/selinux/devel/include/distributed/%{modulename}.if
+%ghost %verify(not md5 size mode mtime) %{_sharedstatedir}/selinux/%{selinuxtype}/active/modules/200/%{modulename}
+%endif
+
+
+%post
+%systemd_post %{watchdog_service_name}.service
+
+%preun
+%systemd_preun %{watchdog_service_name}.service
+
+%postun
+%systemd_postun_with_restart %{watchdog_service_name}.service
+
+%changelog
+* Fri Jan 19 2024 Felix Kolwa <fkolwa@redhat.com> - 1.35.1-7
+- Bump revision number to 7.
+- Pull in changes from Major Hayden:
+ - Skip version check test
+ Opened upstream bug:
+ https://github.com/aws/efs-utils/issues/194
+ - Disable automatic version check
+
+* Mon Jan 08 2024 Felix Kolwa <fkolwa@redhat.com> - 1.35.0-6
+- Bump revision number to 6.
+
+* Thu Dec 07 2023 Felix Kolwa <fkolwa@redhat.com> - 1.35.0-5
+- Bump release to 5 to include selinux-policy-targeted-38.1.28-1 release.
+
+* Fri Nov 17 2023 fkolwa <fkolwa@redhat.com> - 1.35.0-4
+- Refactor watchdog service name
+
+* Wed Nov 15 2023 Major Hayden <major@redhat.com> - 1.35.0-3
+- Added deprecation warning patch.
+- Added SELinux policies. (RHEL-14154)
+
+* Tue Oct 10 2023 Major Hayden <major@redhat.com> - 1.35.0-2
+- Add patch for ignoring the fsap option.
+
+* Tue Sep 05 2023 Major Hayden <major@redhat.com> - 1.31.38-1
+- Initial package for version 1.31.38