- Update to version 2012.05.31 [1]

- Stage support

PR:		ports/186234 [1]
Submitted by:	maintainer
This commit is contained in:
Pawel Pekala 2014-02-07 22:30:46 +00:00
parent 6477e3e896
commit 3278c8198c
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=343302
3 changed files with 5 additions and 202 deletions

View file

@ -2,7 +2,7 @@
# $FreeBSD$
PORTNAME= woof
PORTVERSION= 2009.12.27
PORTVERSION= 2012.05.31
CATEGORIES= www
MASTER_SITES= http://www.home.unix-ag.org/simon/
DISTNAME= ${PORTNAME}-${PORTVERSION:S/./-/g}
@ -18,18 +18,11 @@ USE_PYTHON= yes
NO_BUILD= yes
PLIST_FILES= bin/woof
NO_STAGE= yes
.include <bsd.port.pre.mk>
.if ${PYTHON_REL} >= 270
EXTRA_PATCHES+= ${FILESDIR}/extra-patch-woof-2009-12-27-python27.diff
.endif
do-extract:
@${MKDIR} ${WRKSRC}
@${CP} ${DISTDIR}/${DISTFILES} ${WRKSRC}/${DISTFILES}
do-install:
${INSTALL_SCRIPT} ${WRKSRC}/${DISTFILES} ${PREFIX}/bin/woof
${INSTALL_SCRIPT} ${WRKSRC}/${DISTFILES} ${STAGEDIR}${PREFIX}/bin/woof
.include <bsd.port.post.mk>
.include <bsd.port.mk>

View file

@ -1,2 +1,2 @@
SHA256 (woof-2009-12-27.py) = 21086b67489381b477c9c0567b1d9f8b8f1deec12bd4e414969e3f155c1ff889
SIZE (woof-2009-12-27.py) = 16810
SHA256 (woof-2012-05-31.py) = d84353d07f768321a1921a67193510bf292cf0213295e8c7689176f32e945572
SIZE (woof-2012-05-31.py) = 20284

View file

@ -1,190 +0,0 @@
--- woof-2009-12-27.py.orig 2009-12-27 23:47:43.000000000 +0100
+++ woof-2009-12-27.py 2011-02-08 20:38:51.150000040 +0100
@@ -28,13 +28,13 @@
import sys, os, errno, socket, getopt, commands, tempfile
import cgi, urllib, BaseHTTPServer
+from SocketServer import ThreadingMixIn
import ConfigParser
import shutil, tarfile, zipfile
import struct
maxdownloads = 1
TM = object
-cpid = -1
compressed = 'gz'
upload = False
@@ -137,6 +137,11 @@ class FileServHTTPRequestHandler (BaseHT
self.send_error (501, "Unsupported method (POST)")
return
+ maxdownloads -= 1
+
+ if maxdownloads < 1:
+ httpd.shutdown()
+
# taken from
# http://mail.python.org/pipermail/python-list/2006-September/402441.html
@@ -200,13 +205,11 @@ class FileServHTTPRequestHandler (BaseHT
self.end_headers ()
self.wfile.write (txt)
- maxdownloads -= 1
-
return
def do_GET (self):
- global maxdownloads, cpid, compressed, upload
+ global maxdownloads, compressed, upload
# Form for uploading a file
if upload:
@@ -260,63 +263,62 @@ class FileServHTTPRequestHandler (BaseHT
maxdownloads -= 1
- # let a separate process handle the actual download, so that
- # multiple downloads can happen simultaneously.
+ if maxdownloads < 1:
+ httpd.shutdown()
- cpid = os.fork ()
+ type = None
+
+ if os.path.isfile (self.filename):
+ type = "file"
+ elif os.path.isdir (self.filename):
+ type = "dir"
- if cpid == 0:
- # Child process
- child = None
- type = None
-
- if os.path.isfile (self.filename):
- type = "file"
- elif os.path.isdir (self.filename):
- type = "dir"
+ if not type:
+ print >> sys.stderr, "can only serve files or directories. Aborting."
+ sys.exit (1)
- if not type:
- print >> sys.stderr, "can only serve files or directories. Aborting."
- sys.exit (1)
+ self.send_response (200)
+ self.send_header ("Content-Type", "application/octet-stream")
+ if os.path.isfile (self.filename):
+ self.send_header ("Content-Length",
+ os.path.getsize (self.filename))
+ self.end_headers ()
- self.send_response (200)
- self.send_header ("Content-Type", "application/octet-stream")
- if os.path.isfile (self.filename):
- self.send_header ("Content-Length",
- os.path.getsize (self.filename))
- self.end_headers ()
+ try:
+ if type == "file":
+ datafile = file (self.filename)
+ shutil.copyfileobj (datafile, self.wfile)
+ datafile.close ()
+ elif type == "dir":
+ if compressed == 'zip':
+ ezfile = EvilZipStreamWrapper (self.wfile)
+ zfile = zipfile.ZipFile (ezfile, 'w', zipfile.ZIP_DEFLATED)
+ stripoff = os.path.dirname (self.filename) + os.sep
- try:
- if type == "file":
- datafile = file (self.filename)
- shutil.copyfileobj (datafile, self.wfile)
- datafile.close ()
- elif type == "dir":
- if compressed == 'zip':
- ezfile = EvilZipStreamWrapper (self.wfile)
- zfile = zipfile.ZipFile (ezfile, 'w', zipfile.ZIP_DEFLATED)
- stripoff = os.path.dirname (self.filename) + os.sep
+ for root, dirs, files in os.walk (self.filename):
+ for f in files:
+ filename = os.path.join (root, f)
+ if filename[:len (stripoff)] != stripoff:
+ raise RuntimeException, "invalid filename assumptions, please report!"
+ zfile.write (filename, filename[len (stripoff):])
+ zfile.close ()
+ else:
+ tfile = tarfile.open (mode=('w|' + compressed),
+ fileobj=self.wfile)
+ tfile.add (self.filename,
+ arcname=os.path.basename(self.filename))
+ tfile.close ()
+ except Exception, e:
+ print e
+ print >>sys.stderr, "Connection broke. Aborting"
- for root, dirs, files in os.walk (self.filename):
- for f in files:
- filename = os.path.join (root, f)
- if filename[:len (stripoff)] != stripoff:
- raise RuntimeException, "invalid filename assumptions, please report!"
- zfile.write (filename, filename[len (stripoff):])
- zfile.close ()
- else:
- tfile = tarfile.open (mode=('w|' + compressed),
- fileobj=self.wfile)
- tfile.add (self.filename,
- arcname=os.path.basename(self.filename))
- tfile.close ()
- except Exception, e:
- print e
- print >>sys.stderr, "Connection broke. Aborting"
+
+class ThreadedHTTPServer(ThreadingMixIn, BaseHTTPServer.HTTPServer):
+ """Handle requests in a separate thread"""
def serve_files (filename, maxdown = 1, ip_addr = '', port = 8080):
- global maxdownloads
+ global maxdownloads, httpd
maxdownloads = maxdown
@@ -326,8 +328,7 @@ def serve_files (filename, maxdown = 1,
FileServHTTPRequestHandler.filename = filename
try:
- httpd = BaseHTTPServer.HTTPServer ((ip_addr, port),
- FileServHTTPRequestHandler)
+ httpd = ThreadedHTTPServer ((ip_addr, port), FileServHTTPRequestHandler)
except socket.error:
print >>sys.stderr, "cannot bind to IP address '%s' port %d" % (ip_addr, port)
sys.exit (1)
@@ -337,8 +338,7 @@ def serve_files (filename, maxdown = 1,
if ip_addr:
print "Now serving on http://%s:%s/" % (ip_addr, httpd.server_port)
- while cpid != 0 and maxdownloads > 0:
- httpd.handle_request ()
+ httpd.serve_forever ()
@@ -488,14 +488,6 @@ def main ():
serve_files (filename, maxdown, ip_addr, port)
- # wait for child processes to terminate
- if cpid != 0:
- try:
- while 1:
- os.wait ()
- except OSError:
- pass
-
if __name__=='__main__':