# HG changeset patch # User Michael Schloh von Bennewitz # Date 1408986391 -7200 # Node ID ef076e9bc56b3641470ddd56cd14d9a57a81ff93 # Parent 07be25b95aca7e95750a6e3a5590131fc8455552 Import package vendor original specs for necessary manipulations. diff -r 07be25b95aca -r ef076e9bc56b tftp/fsl.tftp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tftp/fsl.tftp Mon Aug 25 19:06:31 2014 +0200 @@ -0,0 +1,16 @@ +## +## fsl.tftp -- OSSP fsl configuration +## + +ident (tftpd)/.+ q{ + prefix( + prefix="%b %d %H:%M:%S %N <%L> $1[%P]: " + ) + -> { + debug: file( + path="@l_prefix@/var/tftp/tftp.log", + perm=0644 + ) + } +}; + diff -r 07be25b95aca -r ef076e9bc56b tftp/rc.tftp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tftp/rc.tftp Mon Aug 25 19:06:31 2014 +0200 @@ -0,0 +1,65 @@ +#!@l_prefix@/bin/openpkg rc +## +## rc.tftp -- Run-Commands +## + +%config + tftp_enable="$openpkg_rc_def" + tftp_listen="127.0.0.1:69" + tftp_flags="" + tftp_rootdir="@l_prefix@/pub" + tftp_log_prolog="true" + tftp_log_epilog="true" + tftp_log_numfiles="10" + tftp_log_minsize="1M" + tftp_log_complevel="9" + +%common + tftp_pidfile="@l_prefix@/var/tftp/tftpd.pid" + tftp_signal () { + [ -f $tftp_pidfile ] && kill -$1 `cat $tftp_pidfile` + } + +%status -u @l_susr@ -o + tftp_usable="unknown" + tftp_active="no" + rcService tftp enable yes && \ + tftp_signal 0 && tftp_active="yes" + echo "tftp_enable=\"$tftp_enable\"" + echo "tftp_usable=\"$tftp_usable\"" + echo "tftp_active=\"$tftp_active\"" + +%start -u @l_susr@ + rcService tftp enable yes || exit 0 + rcService tftp active yes && exit 0 + opts="-l -u @l_nusr@ -m @l_prefix@/etc/tftp/tftpd.remap" + if [ ".$tftp_listen" != . ]; then + opts="$opts -a $tftp_listen" + fi + if [ ".$tftp_flags" != . ]; then + opts="$opts $tftp_flags" + fi + @l_prefix@/sbin/tftpd $opts -s $tftp_rootdir + +%stop -u @l_susr@ + rcService tftp enable yes || exit 0 + rcService tftp active no && exit 0 + tftp_signal TERM + rm -f $tftp_pidfile 2>/dev/null || true + +%restart -u @l_susr@ + rcService tftp enable yes || exit 0 + rcService tftp active no && exit 0 + rc tftp stop + sleep 2 + rc tftp start + +%daily -u @l_susr@ + rcService tftp enable yes || exit 0 + shtool rotate -f \ + -n ${tftp_log_numfiles} -s ${tftp_log_minsize} -d \ + -z ${tftp_log_complevel} -o @l_susr@ -g @l_mgrp@ -m 644 \ + -P "${tftp_log_prolog}" \ + -E "${tftp_log_epilog}; rc tftp restart" \ + @l_prefix@/var/tftp/tftp.log + diff -r 07be25b95aca -r ef076e9bc56b tftp/tftp.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tftp/tftp.patch Mon Aug 25 19:06:31 2014 +0200 @@ -0,0 +1,63 @@ +Index: MCONFIG.in +--- MCONFIG.in.orig 2011-06-23 01:32:56.000000000 +0200 ++++ MCONFIG.in 2011-06-24 20:54:05.000000000 +0200 +@@ -21,6 +21,7 @@ + # Prefixes + prefix = @prefix@ + exec_prefix = @exec_prefix@ ++datarootdir = @datarootdir@ + + # Directory for user binaries + BINDIR = @bindir@ +Index: Makefile +--- Makefile.orig 2011-06-23 01:32:56.000000000 +0200 ++++ Makefile 2011-06-24 20:54:05.000000000 +0200 +@@ -59,9 +59,9 @@ + # Adding "configure" to the dependencies serializes this with running + # autoconf, because there are apparently race conditions between + # autoconf and autoheader. +-aconfig.h.in: configure.in configure aclocal.m4 +- rm -f aconfig.h.in aconfig.h +- autoheader ++#aconfig.h.in: configure.in configure aclocal.m4 ++# rm -f aconfig.h.in aconfig.h ++# autoheader + + configure: configure.in aclocal.m4 + rm -rf MCONFIG configure config.log aconfig.h *.cache +Index: tftpd/tftpd.c +--- tftpd/tftpd.c.orig 2011-06-23 01:32:56.000000000 +0200 ++++ tftpd/tftpd.c 2011-06-24 20:54:05.000000000 +0200 +@@ -33,6 +33,9 @@ + * SUCH DAMAGE. + */ + ++#if defined(__NetBSD__) ++#define _NETBSD_SOURCE ++#endif + #include "config.h" /* Must be included first */ + #include "tftpd.h" + +@@ -767,6 +770,22 @@ + #ifndef __CYGWIN__ + set_socket_nonblock(fd, 1); + #endif ++#ifdef PID_FILE ++ /* Write PID file */ ++ { ++ mode_t old_umask; ++ pid_t pid; ++ FILE *fp; ++ ++ old_umask = umask((mode_t) 0022); ++ pid = getpid(); ++ if ((fp = fopen(PID_FILE, "w")) == NULL) ++ syslog(LOG_ERR, "cannot write PID file '%s'", PID_FILE); ++ fprintf(fp, "%ld\n", (long)pid); ++ fclose(fp); ++ umask(old_umask); ++ } ++#endif + } + + /* Disable path MTU discovery */ diff -r 07be25b95aca -r ef076e9bc56b tftp/tftp.spec --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tftp/tftp.spec Mon Aug 25 19:06:31 2014 +0200 @@ -0,0 +1,155 @@ +## +## tftp.spec -- OpenPKG RPM Package Specification +## Copyright (c) 2000-2014 OpenPKG Foundation e.V. +## +## Permission to use, copy, modify, and distribute this software for +## any purpose with or without fee is hereby granted, provided that +## the above copyright notice and this permission notice appear in all +## copies. +## +## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED +## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR +## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF +## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +## SUCH DAMAGE. +## + +# package information +Name: tftp +Summary: TFTP Client and Server +URL: http://www.kernel.org/pub/software/network/tftp/ +Vendor: H. Peter Anvin +Packager: OpenPKG Foundation e.V. +Distribution: OpenPKG Community +Class: BASE +Group: FTP +License: GPL +Version: 5.2 +Release: 20140301 + +# package options +%option with_fsl yes + +# list of sources +Source0: http://www.kernel.org/pub/software/network/tftp/tftp-hpa/tftp-hpa-%{version}.tar.gz +Source1: tftpd.remap +Source2: rc.tftp +Source3: fsl.tftp +Patch0: tftp.patch + +# build information +BuildPreReq: OpenPKG, openpkg >= 20100101, make, gcc +PreReq: OpenPKG, openpkg >= 20100101 +BuildPreReq: getopt +PreReq: getopt +%if "%{with_fsl}" == "yes" +BuildPreReq: fsl +PreReq: fsl +%endif + +%description + This is a portable client and server for the Trivial File Transfer + Protocol (TFTP). + +%track + prog tftp = { + version = %{version} + url = http://www.kernel.org/pub/software/network/tftp/tftp-hpa/ + regex = tftp-hpa-(__VER__)\.tar\.gz + } + +%prep + %setup -q -n tftp-hpa-%{version} + %patch -p0 + %{l_shtool} subst -e 's;PKTSIZE;TFTP_PKTSIZE;g' */*.[ch] + +%build + export CC="%{l_cc}" + export CFLAGS="%{l_cflags -O} %{l_cppflags} -DPID_FILE='\"%{l_prefix}/var/tftp/tftpd.pid\"'" + export CPPFLAGS="%{l_cppflags}" + export LDFLAGS="%{l_ldflags} %{l_fsl_ldflags}" + export LIBS="%{l_fsl_libs} -lgetopt" + case "%{l_platform -t}" in + *-netbsd* ) + CFLAGS="$CFLAGS -D_NETBSD_SOURCE" + CPPFLAGS="$CPPFLAGS -D_NETBSD_SOURCE" + ;; + esac + ./configure \ + --prefix=%{l_prefix} \ + --mandir=%{l_prefix}/man \ + --with-remap \ + --without-tcpwrappers \ + --without-readline + %{l_shtool} subst -e 's; -W[^ ]*;;g' MCONFIG + %{l_make} %{l_mflags} + +%install + %{l_shtool} mkdir -f -p -m 755 \ + $RPM_BUILD_ROOT%{l_prefix}/var/tftp \ + $RPM_BUILD_ROOT%{l_prefix}/etc/tftp \ + $RPM_BUILD_ROOT%{l_prefix}/var/tftp + %{l_make} %{l_mflags} install \ + INSTALL="%{l_shtool} install -c" \ + INSTALLROOT=$RPM_BUILD_ROOT + %{l_shtool} install -c -m 644 %{l_value -s -a} \ + %{SOURCE tftpd.remap} $RPM_BUILD_ROOT%{l_prefix}/etc/tftp/ + rm -f $RPM_BUILD_ROOT%{l_prefix}/man/man8/tftpd.8 + mv $RPM_BUILD_ROOT%{l_prefix}/man/man8/in.tftpd.8 \ + $RPM_BUILD_ROOT%{l_prefix}/man/man8/tftpd.8 + mv $RPM_BUILD_ROOT%{l_prefix}/sbin/in.tftpd \ + $RPM_BUILD_ROOT%{l_prefix}/sbin/tftpd + strip $RPM_BUILD_ROOT%{l_prefix}/bin/* >/dev/null 2>&1 || true + strip $RPM_BUILD_ROOT%{l_prefix}/sbin/* >/dev/null 2>&1 || true + + # install run-command script + %{l_shtool} mkdir -f -p -m 755 \ + $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d + %{l_shtool} install -c -m 755 %{l_value -s -a} \ + %{SOURCE rc.tftp} $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d/ + + # install OSSP fsl configuration + %{l_shtool} mkdir -f -p -m 755 $RPM_BUILD_ROOT%{l_prefix}/etc/fsl + %{l_shtool} install -c -m 644 %{l_value -s -a} \ + %{SOURCE fsl.tftp} \ + $RPM_BUILD_ROOT%{l_prefix}/etc/fsl/ + + # determine installation files + %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT \ + %{l_files_std} \ + '%config %{l_prefix}/etc/fsl/fsl.tftp' \ + '%config %{l_prefix}/etc/tftp/*' + +%files -f files + +%clean + +%pre + # before upgrade, save status and stop service + [ $1 -eq 2 ] || exit 0 + eval `%{l_rc} tftp status 2>/dev/null | tee %{l_tmpfile}` + %{l_rc} tftp stop 2>/dev/null + exit 0 + +%post + if [ $1 -eq 2 ]; then + # after upgrade, restore status + eval `cat %{l_tmpfile}`; rm -f %{l_tmpfile} + [ ".$tftp_active" = .yes ] && %{l_rc} tftp start + fi + exit 0 + +%preun + # before erase, stop service and remove log files + [ $1 -eq 0 ] || exit 0 + %{l_rc} tftp stop 2>/dev/null + rm -f $RPM_INSTALL_PREFIX/var/tftp/*.log* >/dev/null 2>&1 || true + exit 0 + diff -r 07be25b95aca -r ef076e9bc56b tftp/tftpd.remap --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tftp/tftpd.remap Mon Aug 25 19:06:31 2014 +0200 @@ -0,0 +1,33 @@ +# +# tftpd.remap -- TFTP Daemon Path Remapping +# +# This file has three fields: operation, regex, remapping +# +# The operation is a combination of the following letters: +# +# r - rewrite the matched string with the remapping pattern +# i - case-insensitive matching +# g - repeat until no match (used with "r") +# e - exit (with success) if we match this pattern, do not process +# subsequent rules +# s - start over from the first rule if we match this pattern +# a - abort (refuse the request) if we match this rule +# G - this rule applies to TFTP GET requests only +# P - this rule applies to TFTP PUT requests only +# +# The regex is a regular expression in the style of egrep(1). +# +# The remapping is a pattern, all characters are verbatim except \ +# \0 copies the full string that matched the regex +# \1..\9 copies the 9 first (..) expressions in the regex +# \\ is an escaped \ +# +# "#" begins a comment, unless \-escaped +# +ri ^[a-z]: # Remove drive letters +rg \\ / # Convert backslashes to slashes +rg \# @ # Convert hash marks to @ signs +rg /../ /..no../ # Convert /../ to /..no../ +e ^incoming/ # These are always ok +r ^[^/] /\0 # Convert nonabsolute files +a ^\. # Reject requests for hidden files