diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f9127af --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +/yaws-1.89.tar.gz +/yaws-1.98.tar.gz +*.rpm +/yaws-2.0.tar.gz diff --git a/dead.package b/dead.package deleted file mode 100644 index 5204a84..0000000 --- a/dead.package +++ /dev/null @@ -1 +0,0 @@ -Orphaned for 6+ weeks diff --git a/sources b/sources new file mode 100644 index 0000000..51097a9 --- /dev/null +++ b/sources @@ -0,0 +1 @@ +03c9d371e5fe30a017f8a6c64fbb033b yaws-2.0.tar.gz diff --git a/yaws-2.0-no-ssl.patch b/yaws-2.0-no-ssl.patch new file mode 100644 index 0000000..e15f195 --- /dev/null +++ b/yaws-2.0-no-ssl.patch @@ -0,0 +1,46 @@ +From 61782043c076e0d7760bc10d7f10e7955ecc2bca Mon Sep 17 00:00:00 2001 +From: Filip Andres +Date: Tue, 28 Jul 2015 10:19:08 +0200 +Subject: [PATCH] disable SSL by default + +--- + scripts/yaws.conf.template | 26 +++++++++++++------------- + 1 file changed, 13 insertions(+), 13 deletions(-) + +diff --git a/scripts/yaws.conf.template b/scripts/yaws.conf.template +index d7a35a8..0a20c6d 100644 +--- a/scripts/yaws.conf.template ++++ b/scripts/yaws.conf.template +@@ -134,16 +134,16 @@ keepalive_timeout = 30000 + + + # Now an SSL server +- +- +- port = %sslport% +- docroot = %tmpdir% +- listen = 0.0.0.0 +- dir_listings = true +- auth_log = true +- +- keyfile = %certdir%/yaws-key.pem +- certfile = %certdir%/yaws-cert.pem +- depth = 0 +- +- ++# ++# ++# port = %sslport% ++# docroot = %tmpdir% ++# listen = 0.0.0.0 ++# dir_listings = true ++# auth_log = true ++# ++# keyfile = %certdir%/yaws-key.pem ++# certfile = %certdir%/yaws-cert.pem ++# depth = 0 ++# ++# +-- +2.1.0 + diff --git a/yaws-2.0-systemd.patch b/yaws-2.0-systemd.patch new file mode 100644 index 0000000..11695d8 --- /dev/null +++ b/yaws-2.0-systemd.patch @@ -0,0 +1,175 @@ +From 4a5e0ccaf43bc3d83bc7003326cca9670d6f7c24 Mon Sep 17 00:00:00 2001 +From: Filip Andres +Date: Fri, 24 Jul 2015 11:38:03 +0200 +Subject: [PATCH] Do not install any init scripts + +--- + scripts/Makefile.in | 5 +- + scripts/regular-install | 132 ------------------------------------------------ + 2 files changed, 2 insertions(+), 135 deletions(-) + delete mode 100755 scripts/regular-install + +diff --git a/scripts/Makefile.in b/scripts/Makefile.in +index 0b01ca4..a7698ab 100644 +--- a/scripts/Makefile.in ++++ b/scripts/Makefile.in +@@ -309,7 +309,7 @@ yappdir = @yappdir@ + yawsdir = @yawsdir@ + EXTRA_DIST = darwin debian freebsd gentoo netbsd openbsd redhat suse \ + gen-yaws gen-yaws-conf gen-yaws-generated Subst \ +- regular-install make-release make-upload \ ++ make-release make-upload \ + rebar-pre-script yaws.conf.template yaws.template + + all: all-am +@@ -573,8 +573,7 @@ include @top_srcdir@/include.mk + @MINGW_FALSE@ ETCDIR='$(sysconfdir)' \ + @MINGW_FALSE@ BINDIR='$(bindir)' \ + @MINGW_FALSE@ LOGDIR='$(logdir)' \ +-@MINGW_FALSE@ YAWSDIR='$(ERLANG_INSTALL_LIB_DIR_yaws)' \ +-@MINGW_FALSE@ ./regular-install) ++@MINGW_FALSE@ YAWSDIR='$(ERLANG_INSTALL_LIB_DIR_yaws)') + + # Local Variables: + # tab-width: 8 +diff --git a/scripts/regular-install b/scripts/regular-install +deleted file mode 100755 +index b1f24b0..0000000 +--- a/scripts/regular-install ++++ /dev/null +@@ -1,132 +0,0 @@ +-#!/bin/sh +- +-install -d ${DESTDIR}${ETCDIR} +-install -d ${DESTDIR}${LOGDIR} +- +-# Start by detecting if systemd is used +-(which systemctl && systemctl list-units) >/dev/null 2>&1 +-if [ $? = 0 ]; then +- install -d ${DESTDIR}${ETCDIR}/systemd/system/ +- sed -e "s;%prefix%;${PREFIX};g" \ +- -e "s;%etcdir%;${ETCDIR};g" \ +- -e "s;%bindir%;${BINDIR};g" \ +- systemd/yaws.service > ${DESTDIR}${ETCDIR}/systemd/system/yaws.service +- exit 0 +-fi +- +-# Else, looking at distro-specific files +-os=$( uname -s ) +-which lsb_release >/dev/null 2>&1 +-if [ $? = 0 ]; then +- os=$( lsb_release -si ) +-elif [ -f /etc/os-release ]; then +- . /etc/os-release +- os=${ID} +-elif [ -f /etc/arch-release ]; then +- os="arch" +-elif [ -f /etc/gentoo-release ]; then +- os="gentoo" +-elif [ -f /etc/fedora-release ]; then +- os="fedora" +-elif [ -f /etc/centos-release ]; then +- os="centos" +-elif [ -f /etc/redhat-release ]; then +- os="redhat" +-elif [ -f /etc/debian_version ]; then +- os="debian" +-elif [ -f /etc/SuSE-release ]; then +- os="suse" +-elif [ $os = "Darwin" -a $(id -u) = 0 ]; then +- os="darwin" +-elif [ $os = "FreeBSD" ]; then +- os="freebsd" +-elif [ $os = "NetBSD" ]; then +- os="netbsd" +-else +- os="Unknown" +-fi +- +-case $(printf $os | tr '[:upper:]' '[:lower:]') in +- debian | ubuntu) +- install -d ${DESTDIR}${ETCDIR}/init.d +- sed -e "s;%prefix%;${PREFIX};g" \ +- -e "s;%etcdir%;${ETCDIR};g" \ +- -e "s;%bindir%;${BINDIR};g" \ +- debian/yaws.init > ${DESTDIR}${ETCDIR}/init.d/yaws +- chmod +x ${DESTDIR}${ETCDIR}/init.d/yaws +- ;; +- +- gentoo) +- # seems gentoo don't like to be installed in /usr/local/etc since # +- # /sbin/runscript still reads /etc/conf.d +- install -d ${DESTDIR}${ETCDIR}/init.d +- install -d ${DESTDIR}${ETCDIR}/conf.d +- sed -e "s;%prefix%;${PREFIX};g" \ +- -e "s;%etcdir%;${ETCDIR};g" \ +- -e "s;%bindir%;${BINDIR};g" \ +- gentoo/yaws.init > ${DESTDIR}${ETCDIR}/init.d/yaws +- chmod +x ${DESTDIR}${ETCDIR}/init.d/yaws +- ;; +- +- redhat | fedora | centos) +- install -d ${DESTDIR}${ETCDIR}/init.d +- sed -e "s;%prefix%;${PREFIX};g" \ +- -e "s;%etcdir%;${ETCDIR};g" \ +- -e "s;%bindir%;${BINDIR};g" \ +- redhat/yaws.init > ${DESTDIR}${ETCDIR}/init.d/yaws +- chmod +x ${DESTDIR}${ETCDIR}/init.d/yaws +- ;; +- +- *suse*) +- install -d ${DESTDIR}${ETCDIR}/init.d +- sed -e "s;%prefix%;${PREFIX};g" \ +- -e "s;%etcdir%;${ETCDIR};g" \ +- -e "s;%bindir%;${BINDIR};g" \ +- suse/yaws.init > ${DESTDIR}${ETCDIR}/init.d/yaws +- chmod +x ${DESTDIR}${ETCDIR}/init.d/yaws +- ;; +- +- +- darwin) +- startupdir="/Library/StartupItems/Yaws" +- if [ ! -e ${startupdir} ]; then +- mkdir ${startupdir}; +- elif [ ! -d ${startupdir} ]; then +- echo "${startupdir} exists but is not a directory, bailing out ..." +- exit 1 +- fi +- sed -e "s;%prefix%;${PREFIX};g" \ +- -e "s;%etcdir%;${ETCDIR};g" \ +- -e "s;%bindir%;${BINDIR};g" \ +- darwin/Yaws.StartupItem > ${startupdir}/Yaws +- chmod +x ${startupdir}/Yaws +- cp darwin/Yaws.plist ${startupdir}/StartupParameters.plist +- # MacOS is particular about the ownership of startup items. +- chown -R root:wheel ${startupdir} +- ;; +- +- freebsd) +- install -d ${DESTDIR}${ETCDIR}/rc.d +- sed -e "s;%prefix%;${PREFIX};g" \ +- -e "s;%etcdir%;${ETCDIR};g" \ +- -e "s;%bindir%;${BINDIR};g" \ +- freebsd/yaws > ${DESTDIR}${ETCDIR}/rc.d/yaws +- chmod +x ${DESTDIR}${ETCDIR}/rc.d/yaws +- ;; +- +- netbsd) +- sed -e "s;%prefix%;${PREFIX};g" \ +- -e "s;%etcdir%;${ETCDIR};g" \ +- -e "s;%bindir%;${BINDIR};g" \ +- netbsd/yaws.sh > ${DESTDIR}${ETCDIR}/rc.d/yaws +- chmod +x /etc/rc.d/yaws +- ;; +- *) +- install -d ${DESTDIR}${ETCDIR} +- echo "Don't know how to make /etc/init scripts for this system" +- echo "possibly add ${PREFIX}/bin/yaws --daemon --heart to your /etc/rc.local manually" +- ;; +-esac +- +- +-exit 0 +-- +2.1.0 + diff --git a/yaws.logrotate b/yaws.logrotate new file mode 100644 index 0000000..4dc3e32 --- /dev/null +++ b/yaws.logrotate @@ -0,0 +1,11 @@ +/var/log/yaws/*.log /var/log/yaws/*.access { + weekly + rotate 2 + missingok + sharedscripts + notifempty + sharedscripts + postrotate + /sbin/service yaws reload >/dev/null 2>&1 || : + endscript +} diff --git a/yaws.service b/yaws.service new file mode 100644 index 0000000..5c0ff89 --- /dev/null +++ b/yaws.service @@ -0,0 +1,17 @@ +# REMOVEME: This file is only for backward compatibility +# REMOVEME: It should be remove for releases after epel7 +[Unit] +Description=The Yaws Web Server instance +After=network.target + +[Service] +User=root +Type=notify +Environment="HOME=/var/lib/yaws" +Type=simple +ExecStart=/usr/bin/yaws --erlarg -noinput --daemon --conf /etc/yaws/.conf +ExecReload=/usr/bin/yaws --hup +ExecStop=/usr/bin/yaws --stop + +[Install] +WantedBy=multi-user.target diff --git a/yaws.spec b/yaws.spec new file mode 100644 index 0000000..093b4ab --- /dev/null +++ b/yaws.spec @@ -0,0 +1,225 @@ +%bcond_without docs + +Name: yaws +Version: 2.0 +Release: 2%{?dist} +Summary: Web server for dynamic content written in Erlang +Group: System Environment/Daemons +# BSD: see LICENSE +# ERPL: json.erl, benchmarks/bench.erl, benchmarks/bench.hrl, +# benchmarks/all.erl, haxe.erl +# Copyright only: priv/soap.xsd, priv/wsdl.xsd +# W3C: priv/envelope.xsd +License: BSD and ERPL and Copyright only and W3C +URL: http://yaws.hyber.org/ +Source0: http://yaws.hyber.org/download/%{name}-%{version}.tar.gz +Source1: yaws.logrotate +Source2: yaws@.service +Source3: yaws.service +Patch0: yaws-2.0-systemd.patch +Patch1: yaws-2.0-no-ssl.patch + +BuildRequires: systemd-units +BuildRequires: erlang-erts +BuildRequires: erlang-erlsom +BuildRequires: erlang-kernel +BuildRequires: erlang-mnesia +BuildRequires: erlang-sasl +BuildRequires: erlang-ssl +BuildRequires: erlang-stdlib +BuildRequires: pam-devel +%if %{with docs} +BuildRequires: tex(latex) +BuildRequires: tex(dvips) +BuildRequires: tex-epstopdf +BuildRequires: latex2html +%endif + +Requires: erlang >= R13B +Requires: erlang-erlsom +Requires: erlang-ibrowse +Requires: erlang-xmlrpc +Requires: logrotate +Requires(post): systemd-units +Requires(preun): systemd-units +Requires(postun): systemd-units + + +%description +HTTP 1.0 and HTTP 1.1 web server capable of both static content page +delivery and dynamic content generation using embedded Erlang code in the +HTML pages. It provides virtual hosting capabilities and implements +HTTP tracing and other debugging functionality such as interactive +interpreter environment. Performance can be boosted with built-in support +for RAM caching and streaming capabilities of dynamically generated +content. Among security features are SSL and support for WWW-Authenticated +pages. + + +%package devel +Summary: Development Files for %{name} +Group: Development/Libraries +Requires: %{name} = %{version}-%{release} + +%description devel +This package contains a pkg-config configuration for %{name}. + + +%prep +%setup -q +%patch0 -p1 -b .no_systemd +%patch1 -p1 -b .no_ssl + +# This requires egssapi which is not yet available +rm -f src/authmod_gssapi.erl + +# Weird file name in Change Log is latin1-encoded +iconv -f iso8859-1 -t utf8 ChangeLog >ChangeLog.utf8 +touch -r ChangeLog ChangeLog.utf8 +mv ChangeLog.utf8 ChangeLog + +# These are corrupted +find . -name '*.dia' -delete + + +%build +export wwwdir=%{_localstatedir}/lib/%{name}/www +export appsdir=%{_localstatedir}/lib/%{name} +export yawsdir=%{_libdir}/erlang/lib/%{name}-%{version}/ +%configure +make %{?_smp_mflags} all +%if %{with docs} +# fails to build with smp_mflags sometimes +make docs EPSTOPDF=epstopdf +%endif + + +%install +make install DESTDIR=$RPM_BUILD_ROOT + +# Logrotate configuration +install -d $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d +install -p -m0644 %{SOURCE1} $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/yaws + +# The systemd bits +install -d $RPM_BUILD_ROOT/%{_unitdir} +cp -p %{SOURCE2} $RPM_BUILD_ROOT/%{_unitdir} + +# Backward compatibility: keep "systemctl start yaws" +# This should be removed in the future +install -p -m0644 %{SOURCE3} $RPM_BUILD_ROOT/%{_unitdir}/yaws.service + +# Remove some unneeded stuff +rm $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/%{name}-{cert,key}.pem +rm $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/%{name}.conf.template + + +%post +%systemd_post yaws@yaws.service + + +%preun +%systemd_preun yaws@yaws.service + + +%postun +%systemd_postun + + +%files +%defattr(-,root,root,-) +%{_unitdir}/yaws@.service +%{_unitdir}/yaws.service +%dir %{_sysconfdir}/yaws +%config(noreplace) %{_sysconfdir}/yaws/yaws.conf +%config(noreplace) %{_sysconfdir}/logrotate.d/yaws +%dir %{_localstatedir}/log/%{name} +%{_localstatedir}/lib/yaws +%{_bindir}/yaws +%{_libdir}/erlang/lib/%{name}-%{version} +%if %{with docs} +%doc %{_docdir}/yaws/yaws.pdf +%endif +%doc %{_datadir}/man/man1/yaws.1* +%doc %{_datadir}/man/man5/yaws.conf.5* +%doc %{_datadir}/man/man5/yaws_api.5* +%doc %{_datadir}/man/man5/yaws_soap_lib.5* +%doc README.md ChangeLog +%license LICENSE + + +%files devel +%defattr(-,root,root,-) +%{_libdir}/pkgconfig/yaws.pc + + +%changelog +* Fri Feb 05 2016 Fedora Release Engineering - 2.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Fri Jul 24 2015 Filip Andres - 2.0-1 +- Ver. 2.0 + +* Mon Jul 13 2015 Dan HorĂ¡k - 1.98-7 +- skip -m32 also on s390 + +* Fri Jun 26 2015 Filip Andres - 1.98-6 +- Do not use -m32 flag on armv7 builds + +* Sun Apr 5 2015 Antoine Catton - 1.98-5 +- Tested with SELinux + +* Wed Dec 31 2014 Antoine Catton - 1.98-4 +- Remove "--deamon" option (which was forking) + +* Sat Dec 06 2014 Antoine Catton - 1.98-3 +- Rename unit file to allow to specify an instance (while keeping backward compatible instance file) +- Add ability stop and reload yaws with systemctl +- Support running multiple instance +- Do not fork from systemd + +* Fri Feb 21 2014 Lubomir Rintel (GoodData) - 1.98-2 +- sysvinit -> systemd +- Remove old RPM artifacts + +* Thu Feb 13 2014 Lubomir Rintel (GoodData) - 1.98-1 +- Rebase + +* Sun Jul 22 2012 Fedora Release Engineering - 1.92-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Sat Jan 14 2012 Fedora Release Engineering - 1.92-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Tue Jan 03 2012 Lubomir Rintel (GoodData) - 1.92-1 +- Update + +* Tue Feb 08 2011 Fedora Release Engineering - 1.89-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Thu Nov 18 2010 Peter Lemenkov - 1.89-3 +- Make building docs conditional +- Added one more module to package +- Added missing runtime dependency - erlang-xmlrpc + +* Thu Oct 21 2010 Lubomir Rintel (GoodData) - 1.89-2 +- Require newer Erlang (Peter Lemenkov) +- Exclude examples/ and src/ + +* Wed Oct 20 2010 Lubomir Rintel (GoodData) - 1.89-1 +- Rebase to 1.89 +- No longer required patch for compiling using system-wide erlsom (Peter Lemenkov) +- Ver. 1.89 now requires erlang-ibrowse library (Peter Lemenkov) +- Shorten the dependency chain (Peter Lemenkov) + +* Mon Sep 13 2010 Lubomir Rintel (GoodData) - 1.88-1 +- Rebase to 1.88 +- Look for erlsom in system-wide location (Peter Lemenkov) +- Drop authmod_gssapi, dependencies not satisfied + +* Sat Nov 21 2009 Lubomir Rintel (Good Data) - 1.85-2 +- Install to erlang lib directory, make arch dependent +- Install the source code + +* Mon Nov 02 2009 Lubomir Rintel (Good Data) - 1.85-1 +- Initial packaging, partly based on Hans Ulrich Niedermann's package diff --git a/yaws@.service b/yaws@.service new file mode 100644 index 0000000..4d56fea --- /dev/null +++ b/yaws@.service @@ -0,0 +1,15 @@ +[Unit] +Description=The Yaws Web Server instance +After=network.target + +[Service] +User=root +Type=notify +Environment="HOME=/var/lib/yaws" +Type=simple +ExecStart=/usr/bin/yaws --erlarg -noinput --id %i --conf /etc/yaws/%i.conf +ExecReload=/usr/bin/yaws --hup --id %i +ExecStop=/usr/bin/yaws --stop --id %i + +[Install] +WantedBy=multi-user.target