From 97f0d18a976f63155e49686779c9eb75d539fa8a Mon Sep 17 00:00:00 2001 From: Tony Vroon Date: Thu, 28 Feb 2019 12:03:28 +0000 Subject: net-proxy/http-replicator: Revert 3.0 branch removal This reverts commit 3b8b8f6ec45e0220e5b841c96f89f52c6c5e02a5. The 4.0 branch does not implement --alias which means it is not a drop-in replacement to 3.0 in all cases. Please speak to me or file me a bug if you have any change requirements for the 3.x branch ebuilds. I will action them. Requested-By: Matthew Ogilvie Signed-Off-By: Tony Vroon Closes: https://bugs.gentoo.org/676758 --- net-proxy/http-replicator/Manifest | 1 + .../http-replicator-3-missing-directory.patch | 51 ++++++++++++ .../http-replicator-3-unique-cache-name.patch | 31 ++++++++ .../files/http-replicator-3.0-sighup.patch | 20 +++++ .../http-replicator/files/http-replicator-3.0.conf | 46 +++++++++++ .../http-replicator/files/http-replicator-3.0.init | 20 +++++ .../http-replicator/http-replicator-3.0-r7.ebuild | 93 ++++++++++++++++++++++ 7 files changed, 262 insertions(+) create mode 100644 net-proxy/http-replicator/files/http-replicator-3-missing-directory.patch create mode 100644 net-proxy/http-replicator/files/http-replicator-3-unique-cache-name.patch create mode 100644 net-proxy/http-replicator/files/http-replicator-3.0-sighup.patch create mode 100644 net-proxy/http-replicator/files/http-replicator-3.0.conf create mode 100644 net-proxy/http-replicator/files/http-replicator-3.0.init create mode 100644 net-proxy/http-replicator/http-replicator-3.0-r7.ebuild (limited to 'net-proxy') diff --git a/net-proxy/http-replicator/Manifest b/net-proxy/http-replicator/Manifest index 8c075058ba40..460a0f3b65b8 100644 --- a/net-proxy/http-replicator/Manifest +++ b/net-proxy/http-replicator/Manifest @@ -1 +1,2 @@ +DIST http-replicator_3.0.tar.gz 39291 BLAKE2B a97d8b6b32f5d4ca4feefa9abaa7da7cb6570f76566c79d7371134c0edd74b2333a02480deff02fa1bf5b6cd6f2bfbfe4aaa649633d70bd2efbdd22701422651 SHA512 d98a608c38201db6f2d8ba809a4777ab5588f5ed395882bdf542c2788df1770c61a2de160604c09297d847f2c73463ba0530d7f2c2e482467f8e8f35be068d57 DIST http-replicator_4.0alpha2.tgz 27575 BLAKE2B 48138bc8fa9695ddb31ce89c4638adda4a1d1b58c904cd98d0ee1dbab006f79ef7d19495db8eb4de0113f8e45da425950524c48ec9e3e864d8595ccdef9f7cfa SHA512 437e0cc881af0cb8f84bfd1366bb6edeee4f76112c4b2ac2af4bcb8809462852b96e9c99e04c8f370492c9e1eb33ddc68a85c4f09b073694242cd6c05b4d3a6c diff --git a/net-proxy/http-replicator/files/http-replicator-3-missing-directory.patch b/net-proxy/http-replicator/files/http-replicator-3-missing-directory.patch new file mode 100644 index 000000000000..37c2ce2361f3 --- /dev/null +++ b/net-proxy/http-replicator/files/http-replicator-3-missing-directory.patch @@ -0,0 +1,51 @@ +Author: Matthew Ogilvie +Date: Sat Jan 17 09:24:34 2015 -0700 + + add some suggestions to the missing-directory error message + + Also wait until directory confirmed before forking. + + See gentoo bug 502574 and bug 442874 + +diff --git a/http-replicator b/http-replicator +index bbc163c..81e254d 100755 +--- a/http-replicator ++++ b/http-replicator +@@ -636,13 +636,6 @@ def main (): + parser.error('user %r does not exist' % options.user) + except OSError: + parser.error('no permission for changing to user %r' % options.user) +- pid = os.fork() # fork process +- if pid: # parent process +- pidfile.write(str(pid)) # store child's pid +- pidfile.close() +- return +- else: +- signal.signal(signal.SIGHUP, signal.SIG_IGN) + else: + handler = logging.StreamHandler(sys.stdout) # log to stdout + handler.setFormatter(logging.Formatter('%(levelname)s: %(name)s %(message)s')) +@@ -651,10 +644,22 @@ def main (): + try: + os.chdir(options.dir) # change to cache directory + except OSError: +- parser.error('invalid directory %r' % options.dir) ++ parser.error('invalid directory %r\n' \ ++ 'Try running repcacheman, and/or see\n' \ ++ 'http://forums.gentoo.org/viewtopic-t-173226.html' \ ++ % options.dir) + if not os.access(os.curdir, os.R_OK | os.W_OK): # check permissions for cache directory + parser.error('no read/write permission for directory %r' % options.dir) + ++ if options.daemon: ++ pid = os.fork() # fork process ++ if pid: # parent process ++ pidfile.write(str(pid)) # store child's pid ++ pidfile.close() ++ return ++ else: ++ signal.signal(signal.SIGHUP, signal.SIG_IGN) ++ + sys.stdout = sys.stderr = open('/dev/null', 'w') # redirect all output to bit bucket + logging.root.name = 'HttpReplicator' + try: diff --git a/net-proxy/http-replicator/files/http-replicator-3-unique-cache-name.patch b/net-proxy/http-replicator/files/http-replicator-3-unique-cache-name.patch new file mode 100644 index 000000000000..3ad0529ed16a --- /dev/null +++ b/net-proxy/http-replicator/files/http-replicator-3-unique-cache-name.patch @@ -0,0 +1,31 @@ +Author: Matthew Ogilvie +Date: Sun Dec 28 20:14:15 2014 -0700 + + honor x-unique-cache-name header in flat mode, if present + + This allows things like different versions of the adobe-flash + downloader that are given different names in a flat download + directory (like in gentoo) to work in an http-replicator cache + as well. As long as the fetcher passes the custom name through + the experimental header... + + See gentoo bug # 442874 + +diff --git a/http-replicator b/http-replicator +index 19ae427..befe9f2 100755 +--- a/http-replicator ++++ b/http-replicator +@@ -311,7 +311,12 @@ class HttpClient (Http): + self.log.info('requested range: bytes %s to %s' % self.range) # log request + + head = '' +- for tail in self.path.split('/'): # iterate over items in path ++ adjUrlPath = self.path ++ if not self.direct and self.flat: ++ uniqueCacheName = body.get('x-unique-cache-name') ++ if uniqueCacheName: ++ adjUrlPath = uniqueCacheName ++ for tail in adjUrlPath.split('/'): # iterate over items in path + head = os.path.join(head, tail) # build target path + if head in self.alias: # path up till now hos an alias + head = self.alias[head] # replace by alias diff --git a/net-proxy/http-replicator/files/http-replicator-3.0-sighup.patch b/net-proxy/http-replicator/files/http-replicator-3.0-sighup.patch new file mode 100644 index 000000000000..969bbc91f9da --- /dev/null +++ b/net-proxy/http-replicator/files/http-replicator-3.0-sighup.patch @@ -0,0 +1,20 @@ +--- a/http-replicator 2007-07-09 20:09:44.000000000 +0200 ++++ b/http-replicator 2007-07-09 20:11:48.433913445 +0200 +@@ -5,7 +5,7 @@ + # Because of this the server runs as a single process, multiplexing I/O with its various client and server connections within a single process/thread. + # According to the readme this means it is capable of smoother and higher performance than most other servers, while placing a dramatically reduced load on the server machine. + +-import asyncore, socket, os, time, calendar, sys, re, optparse, logging ++import asyncore, socket, os, time, calendar, sys, re, optparse, logging, signal + + # LISTENER + # +@@ -636,6 +636,8 @@ + pidfile.write(str(pid)) # store child's pid + pidfile.close() + return ++ else: ++ signal.signal(signal.SIGHUP, signal.SIG_IGN) + else: + handler = logging.StreamHandler(sys.stdout) # log to stdout + handler.setFormatter(logging.Formatter('%(levelname)s: %(name)s %(message)s')) diff --git a/net-proxy/http-replicator/files/http-replicator-3.0.conf b/net-proxy/http-replicator/files/http-replicator-3.0.conf new file mode 100644 index 000000000000..35671fd262c0 --- /dev/null +++ b/net-proxy/http-replicator/files/http-replicator-3.0.conf @@ -0,0 +1,46 @@ +## Config file for http-replicator +## sourced by init scripts automatically +## GENERAL_OPTS used by repcacheman +## DAEMON_OPTS used by http-replicator + + +## Set the cache dir +GENERAL_OPTS="--dir /var/cache/http-replicator" + +## Change UID/GID to user after opening the log and pid file. +## 'user' must have read/write access to cache dir: +GENERAL_OPTS="$GENERAL_OPTS --user portage" + +## Don't change or comment this out: +DAEMON_OPTS="$GENERAL_OPTS" + +## Do you need a proxy to reach the internet? +## This will forward requests to an external proxy server: +## Use one of the following, not both: +#DAEMON_OPTS="$DAEMON_OPTS --external somehost:1234" +#DAEMON_OPTS="$DAEMON_OPTS --external username:password@host:port" + +## Local dir to serve clients. Great for serving binary packages +## See PKDIR and PORTAGE_BINHOST settings in 'man make.conf' +## --alias /path/to/serve:location will make /path/to/serve +## browsable at http://http-replicator.com:port/location +DAEMON_OPTS="$DAEMON_OPTS --alias /usr/portage/packages:packages" + +## Dir to hold the log file: +DAEMON_OPTS="$DAEMON_OPTS --log /var/log/http-replicator.log" + +## Make the log messages less and less verbose. +## Up to four times to make it extremely quiet. +#DAEMON_OPTS="$DAEMON_OPTS --quiet" +#DAEMON_OPTS="$DAEMON_OPTS --quiet" + +## Make the log messages extra verbose for debugging. +#DAEMON_OPTS="$DAEMON_OPTS --debug" + +## The ip addresses from which access is allowed. Can be used as many times +## as necessary. Access from localhost is allowed by default. +DAEMON_OPTS="$DAEMON_OPTS --ip 192.168.*.*" +DAEMON_OPTS="$DAEMON_OPTS --ip 10.*.*.*" + +## The proxy port on which the server listens for http requests: +DAEMON_OPTS="$DAEMON_OPTS --port 8080" diff --git a/net-proxy/http-replicator/files/http-replicator-3.0.init b/net-proxy/http-replicator/files/http-replicator-3.0.init new file mode 100644 index 000000000000..7fc3d5e108da --- /dev/null +++ b/net-proxy/http-replicator/files/http-replicator-3.0.init @@ -0,0 +1,20 @@ +#!/sbin/openrc-run +# Copyright 1999-2016 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +depend() { + need net +} + +start() { + ebegin "Starting Http-Replicator" + start-stop-daemon --start --pidfile /var/run/http-replicator.pid --name http-replicator \ + --exec /usr/bin/http-replicator -- -s -f --pid /var/run/http-replicator.pid --daemon $DAEMON_OPTS + eend $? "Failed to start Http-Replicator" +} + +stop() { + ebegin "Stopping Http-Replicator" + start-stop-daemon --stop --pidfile /var/run/http-replicator.pid --name http-replicator --signal 2 + eend $? "Failed to stop Http-Replicator" +} diff --git a/net-proxy/http-replicator/http-replicator-3.0-r7.ebuild b/net-proxy/http-replicator/http-replicator-3.0-r7.ebuild new file mode 100644 index 000000000000..68405a1f8c1b --- /dev/null +++ b/net-proxy/http-replicator/http-replicator-3.0-r7.ebuild @@ -0,0 +1,93 @@ +# Copyright 1999-2017 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +PYTHON_COMPAT=( python2_7 ) # not 2.6 bug #33907, not 3.0 bug #411083 + +inherit eutils python-single-r1 systemd + +MY_P="${PN}_${PV}" + +DESCRIPTION="Proxy cache for Gentoo packages" +HOMEPAGE="https://sourceforge.net/projects/http-replicator" +SRC_URI="mirror://sourceforge/http-replicator/${MY_P}.tar.gz" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~alpha amd64 hppa ppc ~sparc x86" +REQUIRED_USE="${PYTHON_REQUIRED_USE}" + +RDEPEND="${PYTHON_DEPS}" +DEPEND="${RDEPEND}" + +S="${WORKDIR}/${MY_P}" + +PATCHES=( + "${FILESDIR}/http-replicator-3.0-sighup.patch" + "${FILESDIR}/http-replicator-3-unique-cache-name.patch" + "${FILESDIR}/http-replicator-3-missing-directory.patch" +) + +pkg_setup() { + python-single-r1_pkg_setup +} + +src_install() { + # Daemon and repcacheman into /usr/bin + python_scriptinto /usr/bin + python_doscript http-replicator + python_newscript "${FILESDIR}/http-replicator-3.0-repcacheman-0.44-r2" repcacheman.py + + exeinto /usr/bin + newexe "${FILESDIR}/http-replicator-3.0-callrepcacheman-0.1" repcacheman + + # init.d scripts + newinitd "${FILESDIR}/http-replicator-3.0.init" http-replicator + newconfd "${FILESDIR}/http-replicator-3.0.conf" http-replicator + + systemd_dounit "${FILESDIR}"/http-replicator.service + systemd_install_serviced "${FILESDIR}"/http-replicator.service.conf + + # Docs + dodoc README debian/changelog + + # Man Page - Not Gentooified yet + doman http-replicator.1 + + insinto /etc/logrotate.d + newins debian/logrotate http-replicator +} + +pkg_postinst() { + elog + ewarn "Before starting http-replicator, please follow the next few steps:" + elog "- Modify /etc/conf.d/http-replicator if required." + ewarn "- Run /usr/bin/repcacheman to set up the cache." + elog "- Add http_proxy=\"http://serveraddress:8080\" to make.conf on" + elog " the server as well as on the client machines." + elog "- Make sure FETCHCOMMAND adds the X-unique-cache-name header to" + elog " HTTP requests in make.conf (or maybe portage will add it to" + elog " the default make.globals someday). Example:" + elog ' FETCHCOMMAND="wget -t 3 -T 60 --passive-ftp -O \"\${DISTDIR}/\${FILE}\" --header=\"X-unique-cache-name: \${FILE}\" \"\${URI}\""' + elog ' RESUMECOMMAND="wget -c -t 3 -T 60 --passive-ftp -O \"\${DISTDIR}/\${FILE}\" --header=\"X-unique-cache-name: \${FILE}\" \"\${URI}\""' + elog "- Arrange to periodically run repcacheman on this server," + elog " to clean up the local /usr/portage/distfiles directory." + elog "- Arrange to periodically run something like the following" + elog " on this server. 'eclean' is in app-portage/gentoolkit." + elog " ( export DISTDIR=/var/cache/http-replicator/" + elog " eclean -i distfiles )" + elog "- Even with FETCHCOMMAND fixing most cases, occasionally" + elog " an older invalid version of a file may end up in the cache," + elog " causing checksum failures when portage tries to fetch" + elog " it. To recover, either use eclean (above), manually delete" + elog " the relevant file from the cache, or temporarily comment" + elog " out the http_proxy setting. Commenting only requires" + elog " access to client config, not server cache." + elog "- Make sure GENTOO_MIRRORS in /etc/portage/make.conf starts" + elog " with several good http mirrors." + elog + elog "For more information please refer to the following forum thread:" + elog " http://forums.gentoo.org/viewtopic-t-173226.html" + elog +} -- cgit v1.2.3