%global pybasever 3.9 # __python_ver Could be 3 if/when ported to Python 3.5/3.6/3.7/.... %global __python_ver 3.9.16 %global __python %{_bindir}/python%{?pybasever} %global __python3 %{_bindir}/python%{?pybasever} %global __tar /opt/freeware/bin/tar %global python3_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())") %global python3_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))") %{!?pythonpath: %global pythonpath %(%{__python} -c "import os, sys; print(os.pathsep.join(x for x in sys.path if x))")} # Following not recognised by setup.py # %global __inst_layout --install-layout=unix %global include_tests 0 # The tests are performed by default # rpm -ba --define 'dotests 0' salt-2016.11.2-1.spec ... %{!?dotests:%define include_tests 1} %{?dotests:%define include_tests 0} %define fish_dir %{_datadir}/fish/vendor_functions.d %define _salttesting SaltTesting %define _salttesting_ver 3004 Name: salt Version: 3004.2 Release: 2 Summary: A parallel remote execution system Group: System Environment/Daemons License: ASL 2.0 URL: http://saltstack.org/ Source0: https://github.com/saltstack/salt/releases/download/v%{version}/%{name}-%{version}.tar.gz Source1: %{name}-master Source2: %{name}-syndic Source3: %{name}-minion Source4: %{name}-api Source5: %{name}-master.service Source6: %{name}-syndic.service Source7: %{name}-minion.service Source8: %{name}-api.service Source9: salt_README.aix Source10: %{name}-common.logrotate Source11: salt.bash Source12: salt.fish Source13: salt_common.fish Source14: salt-call.fish Source15: salt-cp.fish Source16: salt-key.fish Source17: salt-master.fish Source18: salt-minion.fish Source19: salt-run.fish Source20: salt-syndic.fish #python3.7 is no longer require contextvars, hence removing it Patch0:%{name}-3004-remove-contextvars.patch BuildArch: noarch # man files are in /opt/freeware/share %global _mandir /opt/freeware/share/man # service start/stop scripts are in /etc %global _initrddir /etc/rc.d/init.d # Requires: which #Requires: yum-utils BuildRequires: python3.9-devel >= 3.9.16 #BuildRequires: python3-tornado == 4.5.3-1 #BuildRequires: python3-futures >= 3.1.0.0-1 #BuildRequires: python3-pycrypto >= 2.6.1-1 #BuildRequires: python3-jinja2 >= 2.10.3-1 #BuildRequires: python3-msgpack >= 0.6.2-1 #BuildRequires: python3-pyzmq >= 18.1.1-1 #BuildRequires: zeromq >= 4.1.6-1 BuildRequires: python3.9-pyyaml >= 5.4.1.1-2 BuildRequires: python3.9-requests >= 2.27.1-2 #BuildRequires: python3-unittest2 >= 1.1.0-1 BuildRequires: python3.9-mock >= 3.0.5-2 BuildRequires: git >= 2.38.3-1 BuildRequires: python3.9-libcloud >= 2.8.0-2 BuildRequires: python3.9-six >= 1.13.0-2 #BuildRequires: python3-argparse >= 1.4.0-1 BuildRequires: python3.9-distro >= 1.5.0-2 Requires: python3.9 >= 3.9.16 #Requires: python3-pycrypto >= 2.6.1-1 Requires: python3.9-jinja2 >= 2.10.3-2 Requires: python3.9-msgpack >= 0.6.2-2 Requires: python3.9-pyyaml >= 5.4.1.1-2 Requires: python3.9-requests >= 2.27.1-2 Requires: zeromq >= 4.3.4-1 Requires: python3.9-markupsafe >= 1.1.1-2 Requires: python3.9-tornado == 6.0.3-2 #Requires: python3.9-futures >= 3.1.0.0-1 Requires: python3.9-six >= 1.13.0-2 #Requires: python3.9-unittest2 >= 1.1.0-1 Requires: python3.9-pyzmq >= 21.0.2-1 #Requires: python3-cherrypy >= 18.5.0-1 Requires: python3.9-distro >= 1.5.0-2 Requires: python3.9-pycryptodomex >= 3.10.1-2 Requires: python3.9-psutil >= 5.9.0-2 %description Salt is a distributed remote execution system used to execute commands and query data. It was developed in order to bring the best solutions found in the world of remote execution together and make them better, faster and more malleable. Salt accomplishes this via its ability to handle larger loads of information, and not just dozens, but hundreds or even thousands of individual servers, handle them quickly and through a simple and manageable interface. %package master Summary: Management component for salt, a parallel remote execution system Group: System Environment/Daemons Requires: %{name} = %{version}-%{release} %description master The Salt master is the central server to which all minions connect. %package minion Summary: Client component for Salt, a parallel remote execution system Group: System Environment/Daemons Requires: %{name} = %{version}-%{release} #Requires: python3-backports_abc >= 0.5-1 #Requires: python3-singledispatch >= 3.4.0.3-1 %description minion The Salt minion is the agent component of Salt. It listens for instructions from the master, runs jobs, and returns results back to the master. %package syndic Summary: Master-of-master component for Salt, a parallel remote execution system Group: System Environment/Daemons Requires: %{name}-master = %{version}-%{release} %description syndic The Salt syndic is a master daemon which can receive instruction from a higher-level master, allowing for tiered organization of your Salt infrastructure. %package api Summary: REST API for Salt, a parallel remote execution system Group: Applications/System Requires: %{name}-master = %{version}-%{release} Requires: python3.9-cherrypy >= 18.5.0-2 %description api salt-api provides a REST interface to the Salt master. %package cloud Summary: Cloud provisioner for Salt, a parallel remote execution system Group: Applications/System Requires: %{name}-master = %{version}-%{release} Requires: python3.9-libcloud >= 2.8.0-2 %description cloud The salt-cloud tool provisions new cloud VMs, installs salt-minion on them, and adds them to the master's collection of controllable minions. %package ssh Summary: Agentless SSH-based version of Salt, a parallel remote execution system Group: Applications/System Requires: %{name} = %{version}-%{release} %description ssh The salt-ssh tool can run remote execution functions and states without the use of an agent (salt-minion) service. %prep %setup -q -c %setup -q -T -D %patch0 -p0 cd /home/buildusr/rpmbuild/BUILD/%{name}-%{version}/%{name}-%{version} %build %install rm -rf %{buildroot} cd $RPM_BUILD_DIR/%{name}-%{version}/%{name}-%{version} # %{__python} setup.py install -O1 %{?__inst_layout } --root %{buildroot} %{__python} setup.py install -O1 --root %{buildroot} # Add some directories install -d -m 0755 %{buildroot}%{_var}/log/salt touch %{buildroot}%{_var}/log/salt/minion touch %{buildroot}%{_var}/log/salt/master install -d -m 0755 %{buildroot}%{_var}/cache/salt install -d -m 0755 %{buildroot}%{_sysconfdir}/salt install -d -m 0755 %{buildroot}%{_sysconfdir}/salt/master.d install -d -m 0755 %{buildroot}%{_sysconfdir}/salt/minion.d install -d -m 0755 %{buildroot}%{_sysconfdir}/salt/pki install -d -m 0755 %{buildroot}%{_sysconfdir}/salt/pki/master install -d -m 0755 %{buildroot}%{_sysconfdir}/salt/pki/minion install -d -m 0755 %{buildroot}%{_sysconfdir}/salt/cloud.conf.d install -d -m 0755 %{buildroot}%{_sysconfdir}/salt/cloud.deploy.d install -d -m 0755 %{buildroot}%{_sysconfdir}/salt/cloud.maps.d install -d -m 0755 %{buildroot}%{_sysconfdir}/salt/cloud.profiles.d install -d -m 0755 %{buildroot}%{_sysconfdir}/salt/cloud.providers.d install -d -m 0755 %{buildroot}%{_sysconfdir}/salt/proxy.d # Add the config files install -p -m 0640 conf/minion %{buildroot}%{_sysconfdir}/salt/minion install -p -m 0640 conf/master %{buildroot}%{_sysconfdir}/salt/master install -p -m 0640 conf/cloud %{buildroot}%{_sysconfdir}/salt/cloud install -p -m 0640 conf/roster %{buildroot}%{_sysconfdir}/salt/roster install -p -m 0640 conf/proxy %{buildroot}%{_sysconfdir}/salt/proxy %if ! (0%{?rhel} >= 7 || 0%{?fedora} >= 15) mkdir -p %{buildroot}%{_initrddir} install -p %{SOURCE1} %{buildroot}%{_initrddir}/ install -p %{SOURCE2} %{buildroot}%{_initrddir}/ install -p %{SOURCE3} %{buildroot}%{_initrddir}/ install -p %{SOURCE4} %{buildroot}%{_initrddir}/ %else # Add the unit files mkdir -p %{buildroot}%{_unitdir} install -p -m 0644 %{SOURCE6} %{buildroot}%{_unitdir}/ install -p -m 0644 %{SOURCE7} %{buildroot}%{_unitdir}/ install -p -m 0644 %{SOURCE8} %{buildroot}%{_unitdir}/ install -p -m 0644 %{SOURCE9} %{buildroot}%{_unitdir}/ #install -p -m 0644 %{SOURCE1} %{buildroot}%{_unitdir}/ %endif # Logrotate install -p %{SOURCE9} . mkdir -p %{buildroot}%{_sysconfdir}/logrotate.d/ install -p -m 0644 %{SOURCE10} %{buildroot}%{_sysconfdir}/logrotate.d/salt # Bash completion mkdir -p %{buildroot}%{_sysconfdir}/bash_completion.d/ install -p -m 0644 %{SOURCE11} %{buildroot}%{_sysconfdir}/bash_completion.d/salt.bash # Fish completion (TBD remove -v) mkdir -p %{buildroot}%{fish_dir} install -p -m 0644 %{SOURCE12} %{buildroot}%{fish_dir}/salt.fish install -p -m 0644 %{SOURCE13} %{buildroot}%{fish_dir}/salt_common.fish install -p -m 0644 %{SOURCE14} %{buildroot}%{fish_dir}/salt-call.fish install -p -m 0644 %{SOURCE15} %{buildroot}%{fish_dir}/salt-cp.fish install -p -m 0644 %{SOURCE16} %{buildroot}%{fish_dir}/salt-key.fish install -p -m 0644 %{SOURCE17} %{buildroot}%{fish_dir}/salt-master.fish install -p -m 0644 %{SOURCE18} %{buildroot}%{fish_dir}/salt-minion.fish install -p -m 0644 %{SOURCE19} %{buildroot}%{fish_dir}/salt-run.fish install -p -m 0644 %{SOURCE20} %{buildroot}%{fish_dir}/salt-syndic.fish %preun master # Stop salt-master process # if [ $1 -eq 0 ] ; then # /sbin/service salt-master stop >/dev/null 2>&1 # /sbin/chkconfig --del salt-master # fi # if [ $1 -eq 0 ] ; then # %{_initrddir}/salt-master stop >/dev/null 2>&1 # fi %preun syndic # Stop salt-syndic process # if [ $1 -eq 0 ] ; then # /sbin/service salt-syndic stop >/dev/null 2>&1 # /sbin/chkconfig --del salt-syndic # fi # if [ $1 -eq 0 ] ; then # %{_initrddir}/salt-syndic stop >/dev/null 2>&1 # fi %preun minion # Stop salt-minion process # if [ $1 -eq 0 ] ; then # /sbin/service salt-minion stop >/dev/null 2>&1 # /sbin/chkconfig --del salt-minion # fi # if [ $1 -eq 0 ] ; then # %{_initrddir}/salt-minion stop >/dev/null 2>&1 # fi %post master #test ! -e /etc/salt && ln -sf %{_sysconfdir}/salt /etc/salt ln -sf %{_sysconfdir}/salt /etc/salt # Launch salt-master process # /sbin/chkconfig --add salt-master # %{_initrddir}/salt-master start >/dev/null 2>&1 %post minion ln -sf %{_sysconfdir}/salt /etc/salt #test ! -e /etc/salt && ln -sf %{_sysconfdir}/salt /etc/salt # Launch salt-minion process # /sbin/chkconfig --add salt-minion # %{_initrddir}/salt-minion start >/dev/null 2>&1 %postun master # if [ "$1" -ge "1" ] ; then # /sbin/service salt-master condrestart >/dev/null 2>&1 || : # fi # if [ "$1" -ge "1" ] ; then # %{_initrddir}/salt-master condrestart >/dev/null 2>&1 || : # fi #%%postun syndic # if [ "$1" -ge "1" ] ; then # /sbin/service salt-syndic condrestart >/dev/null 2>&1 || : # fi # if [ "$1" -ge "1" ] ; then # %{_initrddir}/salt-syndic condrestart >/dev/null 2>&1 || : # fi %postun minion # if [ "$1" -ge "1" ] ; then # /sbin/service salt-minion condrestart >/dev/null 2>&1 || : # fi # if [ "$1" -ge "1" ] ; then # %{_initrddir}/salt-minion condrestart >/dev/null 2>&1 || : # fi # %if ( 0%{?include_tests} ) # %if %{include_tests} # %check # cd $RPM_BUILD_DIR/%{name}-%{version}/%{name}-%{version} # mkdir %{_tmppath}/salt-test-cache # PYTHONPATH=%{pythonpath}:$RPM_BUILD_DIR/%{name}-%{version}/%{_salttesting}-%{_salttesting_ver} %{__python} setup.py test --runtests-opts=-u # %endif #%check #cd $RPM_BUILD_DIR/%{name}-%{version}/%{name}-%{version} #mkdir %{_tmppath}/salt-test-cache #PYTHONPATH=%{pythonpath}:$RPM_BUILD_DIR/%{name}-%{version}/%{_salttesting}-%{_salttesting_ver} %{__python} setup.py test --runtests-opts=-u %clean rm -rf %{buildroot} %files %defattr(-,root,system,-) %doc $RPM_BUILD_DIR/%{name}-%{version}/%{name}-%{version}/LICENSE %{python3_sitelib}/* %{python3_sitelib}/%{name}/* %{python3_sitelib}/%{name}-%{version}-py?.?.egg-info %{_sysconfdir}/logrotate.d/salt %{_sysconfdir}/bash_completion.d/salt.bash %{_var}/cache/salt %{_var}/log/salt %doc $RPM_BUILD_DIR/%{name}-%{version}/%{name}-%{version}/salt_README.aix %{_bindir}/spm %doc %{_mandir}/man1/spm.1* # %config(noreplace) %{_sysconfdir}/salt/ # %config(noreplace) %{_sysconfdir}/salt/pki # %config(noreplace) %{fish_dir}/salt*.fish %files master %defattr(-,root,system) %doc %{_mandir}/man7/salt.7* %doc %{_mandir}/man1/salt.1* %doc %{_mandir}/man1/salt-cp.1* %doc %{_mandir}/man1/salt-key.1* %doc %{_mandir}/man1/salt-master.1* %doc %{_mandir}/man1/salt-run.1* %doc %{_mandir}/man1/salt-unity.1* %{_bindir}/salt %{_bindir}/salt-cp %{_bindir}/salt-key %{_bindir}/salt-master %{_bindir}/salt-run %{_bindir}/salt-unity %attr(0755, root, system) /%{_initrddir}/salt-master %config(noreplace) %{_sysconfdir}/salt/master %config(noreplace) %{_sysconfdir}/salt/master.d %config(noreplace) %{_sysconfdir}/salt/pki/master %config(noreplace) %{_var}/log/salt/master %files minion %defattr(-,root,system) %doc %{_mandir}/man1/salt-call.1* %doc %{_mandir}/man1/salt-minion.1* %doc %{_mandir}/man1/salt-proxy.1* %{_bindir}/salt-minion %{_bindir}/salt-call %{_bindir}/salt-proxy %attr(0755, root, system) /%{_initrddir}/salt-minion %config(noreplace) %{_sysconfdir}/salt/minion %config(noreplace) %{_sysconfdir}/salt/proxy %config(noreplace) %{_sysconfdir}/salt/minion.d %config(noreplace) %{_sysconfdir}/salt/pki/minion %config(noreplace) %{_var}/log/salt/minion %files syndic %defattr(-,root,system) %doc %{_mandir}/man1/salt-syndic.1* %{_bindir}/salt-syndic %attr(0755, root, system) /%{_initrddir}/salt-syndic %files api %defattr(-,root,system) %doc %{_mandir}/man1/salt-api.1* %{_bindir}/salt-api %attr(0755, root, system) /%{_initrddir}/salt-api %files cloud %defattr(-,root,system) %doc %{_mandir}/man1/salt-cloud.1* %{_bindir}/salt-cloud %{_sysconfdir}/salt/cloud.conf.d %{_sysconfdir}/salt/cloud.deploy.d %{_sysconfdir}/salt/cloud.maps.d %{_sysconfdir}/salt/cloud.profiles.d %{_sysconfdir}/salt/cloud.providers.d %config(noreplace) %{_sysconfdir}/salt/cloud %files ssh %defattr(-,root,system) %doc %{_mandir}/man1/salt-ssh.2* %{_bindir}/salt-ssh %config(noreplace) %{_sysconfdir}/salt/roster %changelog * Wed May 10 2023 Sangeetha Bandi - 3004.2-2 - Rebuild salt with python3.9 * Tue Aug 16 2022 Sangeetha Bandi - 3004.2-1 - Update to fix CVE-2022-22967 * Fri Jun 10 2022 Sangeetha Bandi - 3004-1 - Update to fix CVE-2021-21996 - Python3.7 is no longer require contextvars, remove contextvars from requirements/base.txt * Thu Jun 03 2021 Rishita Saha - 3003-1 - Update to fix CVE-2021-31607 * Mon Apr 19 2021 Rishita Saha - 3001.1-1 - Update to version 3001.1 * Mon Jun 22 2020 Rishita Saha - 2019.2.5-1 - Update to 2019.2.5 * Mon Feb 25 2019 Sangamesh Mallayya - 2019.2.3-1 - Update to 2019.2.3 with python3 builds. * Mon Nov 06 2017 Ravi Hirekurabar - Initial port.