diff --git a/python-supervisor.spec b/python-supervisor.spec index 89e7eb7..f4dce82 100644 --- a/python-supervisor.spec +++ b/python-supervisor.spec @@ -1,41 +1,65 @@ %global _empty_manifest_terminate_build 0 +%global modname supervisor Name: python-supervisor Version: 4.2.2 -Release: 1 +Release: 2 Summary: A system for controlling process state under UNIX -License: BSD-derived (http://www.repoze.org/LICENSE.txt) +License: BSD-3-Clause URL: http://supervisord.org/ Source0: https://files.pythonhosted.org/packages/d3/7f/c780b7471ba0ff4548967a9f7a8b0bfce222c3a496c3dfad0164172222b0/supervisor-4.2.2.tar.gz +Source1: supervisord.service +Source2: supervisord.conf +Source3: supervisor.logrotate +Source4: supervisor.tmpfiles BuildArch: noarch Requires: python3-pytest Requires: python3-pytest-cov %description -Supervisor is a client/server system that allows its users to control a number of processes on UNIX-like operating systems. +Supervisor is a client/server system that allows its users to +control a number of processes on UNIX-like operating systems. %package -n python3-supervisor Summary: A system for controlling process state under UNIX -Provides: python-supervisor +BuildRequires: systemd BuildRequires: python3-devel BuildRequires: python3-setuptools +Provides: python-supervisor +Provides: supervisor +Recommends: logrotate %description -n python3-supervisor -Supervisor is a client/server system that allows its users to control a number of processes on UNIX-like operating systems. +Supervisor is a client/server system that allows its users to +control a number of processes on UNIX-like operating systems. %package help Summary: Development documents and examples for supervisor Provides: python3-supervisor-doc %description help -Supervisor is a client/server system that allows its users to control a number of processes on UNIX-like operating systems. +Supervisor is a client/server system that allows its users to +control a number of processes on UNIX-like operating systems. %prep -%autosetup -n supervisor-4.2.2 +%autosetup -n supervisor-%{version} %build %py3_build %install %py3_install + +mkdir -p %{buildroot}/%{_sysconfdir}/supervisord.d +mkdir -p %{buildroot}/%{_sysconfdir}/logrotate.d/ +mkdir -p %{buildroot}%{_unitdir} +mkdir -p %{buildroot}/%{_localstatedir}/log/%{modname} +mkdir -p %{buildroot}/%{_rundir}/%{modname} +chmod 755 %{buildroot}/%{_localstatedir}/log/%{modname} +install -p -m 644 %{SOURCE1} %{buildroot}%{_unitdir}/supervisord.service +install -p -m 644 %{SOURCE2} %{buildroot}/%{_sysconfdir}/supervisord.conf +install -p -m 644 %{SOURCE3} %{buildroot}/%{_sysconfdir}/logrotate.d/supervisor +install -D -p -m 0644 %{SOURCE4} %{buildroot}%{_tmpfilesdir}/%{modname}.conf +sed -i s'/^#!.*//' $( find %{buildroot}/%{python3_sitelib}/supervisor/ -type f) + install -d -m755 %{buildroot}/%{_pkgdocdir} if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi @@ -62,12 +86,32 @@ popd mv %{buildroot}/filelist.lst . mv %{buildroot}/doclist.lst . +%post +%systemd_post %{modname}d.service + +%preun +%systemd_preun %{modname}d.service + +%postun +%systemd_postun %{modname}d.service + %files -n python3-supervisor -f filelist.lst %dir %{python3_sitelib}/* +%license COPYRIGHT.txt LICENSES.txt +%dir %{_localstatedir}/log/%{modname} +%{_unitdir}/supervisord.service +%{_tmpfilesdir}/%{modname}.conf +%config(noreplace) %{_sysconfdir}/supervisord.conf +%dir %{_sysconfdir}/supervisord.d +%dir %{_rundir}/%{modname} +%config(noreplace) %{_sysconfdir}/logrotate.d/supervisor %files help -f doclist.lst %{_docdir}/* %changelog +* Wed Mar 27 2024 wangshuo - 4.2.2-2 +- License compliance rectification, add modname supervisor, add service and conf file + * Tue Sep 07 2021 Python_Bot - 4.2.2-1 - Package Spec generated diff --git a/supervisor.logrotate b/supervisor.logrotate new file mode 100644 index 0000000..d35c6be --- /dev/null +++ b/supervisor.logrotate @@ -0,0 +1,7 @@ +/var/log/supervisor/*.log { + missingok + weekly + notifempty + nocompress +} + diff --git a/supervisor.tmpfiles b/supervisor.tmpfiles new file mode 100644 index 0000000..e9b04ef --- /dev/null +++ b/supervisor.tmpfiles @@ -0,0 +1 @@ +D /run/supervisor 0775 root root - diff --git a/supervisord.conf b/supervisord.conf new file mode 100644 index 0000000..0c9a724 --- /dev/null +++ b/supervisord.conf @@ -0,0 +1,130 @@ +; Sample supervisor config file. + +[unix_http_server] +file=/run/supervisor/supervisor.sock ; (the path to the socket file) +;chmod=0700 ; sockef file mode (default 0700) +;chown=nobody:nogroup ; socket file uid:gid owner +;username=user ; (default is no username (open server)) +;password=123 ; (default is no password (open server)) + +;[inet_http_server] ; inet (TCP) server disabled by default +;port=127.0.0.1:9001 ; (ip_address:port specifier, *:port for all iface) +;username=user ; (default is no username (open server)) +;password=123 ; (default is no password (open server)) + +[supervisord] +logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log) +logfile_maxbytes=50MB ; (max main logfile bytes b4 rotation;default 50MB) +logfile_backups=10 ; (num of main logfile rotation backups;default 10) +loglevel=info ; (log level;default info; others: debug,warn,trace) +pidfile=/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid) +nodaemon=false ; (start in foreground if true;default false) +minfds=1024 ; (min. avail startup file descriptors;default 1024) +minprocs=200 ; (min. avail process descriptors;default 200) +;umask=022 ; (process file creation umask;default 022) +;user=chrism ; (default is current user, required if root) +;identifier=supervisor ; (supervisord identifier, default is 'supervisor') +;directory=/tmp ; (default is not to cd during start) +;nocleanup=true ; (don't clean up tempfiles at start;default false) +;childlogdir=/tmp ; ('AUTO' child log dir, default $TEMP) +;environment=KEY=value ; (key value pairs to add to environment) +;strip_ansi=false ; (strip ansi escape codes in logs; def. false) + +; the below section must remain in the config file for RPC +; (supervisorctl/web interface) to work, additional interfaces may be +; added by defining them in separate rpcinterface: sections +[rpcinterface:supervisor] +supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface + +[supervisorctl] +serverurl=unix:///run/supervisor/supervisor.sock ; use a unix:// URL for a unix socket +;serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket +;username=chris ; should be same as http_username if set +;password=123 ; should be same as http_password if set +;prompt=mysupervisor ; cmd line prompt (default "supervisor") +;history_file=~/.sc_history ; use readline history if available + +; The below sample program section shows all possible program subsection values, +; create one or more 'real' program: sections to be able to control them under +; supervisor. + +;[program:theprogramname] +;command=/bin/cat ; the program (relative uses PATH, can take args) +;process_name=%(program_name)s ; process_name expr (default %(program_name)s) +;numprocs=1 ; number of processes copies to start (def 1) +;directory=/tmp ; directory to cwd to before exec (def no cwd) +;umask=022 ; umask for process (default None) +;priority=999 ; the relative start priority (default 999) +;autostart=true ; start at supervisord start (default: true) +;autorestart=true ; retstart at unexpected quit (default: true) +;startsecs=10 ; number of secs prog must stay running (def. 1) +;startretries=3 ; max # of serial start failures (default 3) +;exitcodes=0,2 ; 'expected' exit codes for process (default 0,2) +;stopsignal=QUIT ; signal used to kill process (default TERM) +;stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10) +;user=chrism ; setuid to this UNIX account to run the program +;redirect_stderr=true ; redirect proc stderr to stdout (default false) +;stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO +;stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB) +;stdout_logfile_backups=10 ; # of stdout logfile backups (default 10) +;stdout_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0) +;stdout_events_enabled=false ; emit events on stdout writes (default false) +;stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO +;stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB) +;stderr_logfile_backups=10 ; # of stderr logfile backups (default 10) +;stderr_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0) +;stderr_events_enabled=false ; emit events on stderr writes (default false) +;environment=A=1,B=2 ; process environment additions (def no adds) +;serverurl=AUTO ; override serverurl computation (childutils) + +; The below sample eventlistener section shows all possible +; eventlistener subsection values, create one or more 'real' +; eventlistener: sections to be able to handle event notifications +; sent by supervisor. + +;[eventlistener:theeventlistenername] +;command=/bin/eventlistener ; the program (relative uses PATH, can take args) +;process_name=%(program_name)s ; process_name expr (default %(program_name)s) +;numprocs=1 ; number of processes copies to start (def 1) +;events=EVENT ; event notif. types to subscribe to (req'd) +;buffer_size=10 ; event buffer queue size (default 10) +;directory=/tmp ; directory to cwd to before exec (def no cwd) +;umask=022 ; umask for process (default None) +;priority=-1 ; the relative start priority (default -1) +;autostart=true ; start at supervisord start (default: true) +;autorestart=unexpected ; restart at unexpected quit (default: unexpected) +;startsecs=10 ; number of secs prog must stay running (def. 1) +;startretries=3 ; max # of serial start failures (default 3) +;exitcodes=0,2 ; 'expected' exit codes for process (default 0,2) +;stopsignal=QUIT ; signal used to kill process (default TERM) +;stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10) +;user=chrism ; setuid to this UNIX account to run the program +;redirect_stderr=true ; redirect proc stderr to stdout (default false) +;stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO +;stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB) +;stdout_logfile_backups=10 ; # of stdout logfile backups (default 10) +;stdout_events_enabled=false ; emit events on stdout writes (default false) +;stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO +;stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB) +;stderr_logfile_backups ; # of stderr logfile backups (default 10) +;stderr_events_enabled=false ; emit events on stderr writes (default false) +;environment=A=1,B=2 ; process environment additions +;serverurl=AUTO ; override serverurl computation (childutils) + +; The below sample group section shows all possible group values, +; create one or more 'real' group: sections to create "heterogeneous" +; process groups. + +;[group:thegroupname] +;programs=progname1,progname2 ; each refers to 'x' in [program:x] definitions +;priority=999 ; the relative start priority (default 999) + +; The [include] section can just contain the "files" setting. This +; setting can list multiple files (separated by whitespace or +; newlines). It can also contain wildcards. The filenames are +; interpreted as relative to this file. Included files *cannot* +; include files themselves. + +[include] +files = supervisord.d/*.ini + diff --git a/supervisord.service b/supervisord.service new file mode 100644 index 0000000..428a41f --- /dev/null +++ b/supervisord.service @@ -0,0 +1,13 @@ +[Unit] +Description=Process Monitoring and Control Daemon +After=rc-local.service + +[Service] +Type=forking +ExecStart=/usr/bin/supervisord -c /etc/supervisord.conf +RuntimeDirectory=supervisor +RuntimeDirectoryMode=755 + +[Install] +WantedBy=multi-user.target +