Ctrl K
ComunidadGuías…

packaging/rpm/ferron-template.spec

Rama develop-3.x · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
Name:           ferron3
Version:        $VERSION
Release:        1%{?dist}
Summary:        A fast, modern web server built for production debugging.

License:        MIT
URL:            https://ferron.sh

Requires:       glibc >= 2.31
Requires:       ca-certificates
Requires(post): systemd
Requires(pre):  shadow-utils
Requires(postun): systemd
Conflicts:      ferron
Conflicts:      ferron-lts
Conflicts:      ferron3-fips

Provides:       webserver

%description
A fast, modern web server built for production debugging.

%global debug_package %{nil}

%prep

%build
# No build commands necessary, since binaries are precompiled

%install
mkdir -p %{buildroot}/usr/sbin
mkdir -p %{buildroot}/usr/lib/systemd/system
mkdir -p %{buildroot}/usr/share/ferron/wwwroot
mkdir -p %{buildroot}/var/log/ferron
mkdir -p %{buildroot}/var/lib/ferron
mkdir -p %{buildroot}/run/ferron
mkdir -p %{buildroot}/etc/ferron

install -m 0755 data/usr/sbin/ferron %{buildroot}/usr/sbin/ferron
install -m 0755 data/usr/sbin/ferron-fmt %{buildroot}/usr/sbin/ferron-fmt
install -m 0755 data/usr/sbin/ferron-kdl2ferron %{buildroot}/usr/sbin/ferron-kdl2ferron
install -m 0755 data/usr/sbin/ferron-passwd %{buildroot}/usr/sbin/ferron-passwd
install -m 0755 data/usr/sbin/ferron-precompress %{buildroot}/usr/sbin/ferron-precompress
install -m 0755 data/usr/sbin/ferron-serve %{buildroot}/usr/sbin/ferron-serve

install -m 0644 data/etc/ferron/ferron.conf %{buildroot}/etc/ferron/ferron.conf

install -m 0644 data/usr/lib/systemd/system/ferron.service %{buildroot}/usr/lib/systemd/system/ferron.service

cp -r data/usr/share/ferron/wwwroot %{buildroot}/usr/share/ferron/

%pre
if ! id ferron &>/dev/null; then
    useradd -r -d /var/lib/ferron -s /sbin/nologin ferron
fi

%post
if [ $1 -eq 1 ]; then
    # Initial installation
    mkdir -p /var/www/ferron
    if [ ! -e /var/www/ferron/index.html ]; then
        cp -r /usr/share/ferron/wwwroot/* /var/www/ferron/
    fi

    chown -R ferron:ferron /var/log/ferron /var/lib/ferron /var/www/ferron /run/ferron
    find /var/www/ferron -type f -exec chmod 644 {} \;
    find /var/www/ferron -type d -exec chmod 755 {} \;
    find /var/log/ferron -type f -exec chmod 644 {} \;
    find /var/log/ferron -type d -exec chmod 755 {} \;
    find /run/ferron -type f -exec chmod 644 {} \;
    find /run/ferron -type d -exec chmod 755 {} \;

    if type selinuxenabled >/dev/null 2>&1 && selinuxenabled; then
        if type setsebool >/dev/null 2>&1; then
            # ACME and reverse proxy (taken from Caddy's RPM spec)
            setsebool -P httpd_can_network_connect on
        fi

        if type semanage >/dev/null 2>&1; then
            semanage fcontext -a -t httpd_exec_t "/usr/sbin/ferron" 2>/dev/null || semanage fcontext -m -t httpd_exec_t "/usr/sbin/ferron" 2>/dev/null || semanage fcontext -a -t httpd_exec_t "/usr/bin/ferron" 2>/dev/null || semanage fcontext -m -t httpd_exec_t "/usr/bin/ferron" || :
            semanage fcontext -a -t httpd_config_t "/etc/ferron/ferron.conf" 2>/dev/null || semanage fcontext -m -t httpd_config_t "/etc/ferron/ferron.conf" || :
            semanage fcontext -a -t httpd_sys_content_t "/var/www/ferron(/.*)?" 2>/dev/null || semanage fcontext -m -t httpd_sys_content_t "/var/www/ferron(/.*)?" || :
            semanage fcontext -a -t httpd_log_t "/var/log/ferron(/.*)?" 2>/dev/null || semanage fcontext -m -t httpd_log_t "/var/log/ferron(/.*)?" || :
            semanage fcontext -a -t httpd_var_lib_t "/var/lib/ferron(/.*)?" 2>/dev/null || semanage fcontext -m -t httpd_var_lib_t "/var/lib/ferron(/.*)?" || :
            semanage fcontext -a -t httpd_var_run_t "/run/ferron(/.*)?" 2>/dev/null || semanage fcontext -m -t httpd_var_run_t "/run/ferron(/.*)?" || :
        fi

        if type restorecon >/dev/null 2>&1; then
            restorecon -r /usr/sbin/ferron{,-*} /etc/ferron/ferron.conf /var/www/ferron /var/log/ferron /var/lib/ferron || :
        fi

        if type semanage >/dev/null 2>&1; then
            # QUIC (taken from Caddy's RPM spec)
            semanage port -a -t http_port_t -p udp 80 2>/dev/null || semanage port -m -t http_port_t -p udp 80 || :
            semanage port -a -t http_port_t -p udp 443 2>/dev/null || semanage port -m -t http_port_t -p udp 443 || :
        fi
    fi
fi

# systemd macros aren't used, so that the RPM package can be built on Debian-based systems
if [ $1 -eq 1 ] && [ -x "/usr/lib/systemd/systemd-update-helper" ]; then
    # Initial installation
    /usr/lib/systemd/systemd-update-helper install-system-units ferron.service || :
fi

%preun
if [ $1 -eq 0 ] && [ -x "/usr/lib/systemd/systemd-update-helper" ]; then
    # Package removal, not upgrade
    /usr/lib/systemd/systemd-update-helper remove-system-units ferron.service || :
fi

%postun
if [ $1 -eq 0 ]; then
    if type selinuxenabled >/dev/null 2>&1 && selinuxenabled; then
        if type setsebool >/dev/null 2>&1; then
            # ACME and reverse proxy (taken from Caddy's RPM spec)
            setsebool -P httpd_can_network_connect off
        fi

        if type semanage >/dev/null 2>&1; then
            semanage fcontext -d "/usr/sbin/ferron" 2>/dev/null || semanage fcontext -d "/usr/bin/ferron" || :
            semanage fcontext -d "/etc/ferron/ferron.conf" || :
            semanage fcontext -d "/var/www/ferron(/.*)?" || :
            semanage fcontext -d "/var/log/ferron(/.*)?" || :
            semanage fcontext -d "/var/lib/ferron(/.*)?" || :
            semanage fcontext -d "/run/ferron(/.*)?" || :
        fi

        if type restorecon >/dev/null 2>&1; then
            restorecon -r /usr/sbin/ferron{,-*} /etc/ferron/ferron.conf /var/www/ferron /var/log/ferron /var/lib/ferron /run/ferron || :
        fi

        if type semanage >/dev/null 2>&1; then
            # QUIC (taken from Caddy's RPM spec)
            semanage port -d -t http_port_t -p udp 80 || :
            semanage port -d -t http_port_t -p udp 443 || :
        fi
    fi
fi

%files
%defattr(-,root,root,-)
/usr/sbin/ferron
/usr/sbin/ferron-fmt
/usr/sbin/ferron-kdl2ferron
/usr/sbin/ferron-passwd
/usr/sbin/ferron-precompress
/usr/sbin/ferron-serve
/usr/lib/systemd/system/ferron.service
/usr/share/ferron/wwwroot
%dir /var/log/ferron
%dir /var/lib/ferron
%dir /run/ferron
%ghost /var/www/ferron
%config(noreplace) /etc/ferron/ferron.conf