summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin H. Johnson <robbat2@gentoo.org>2015-08-08 13:49:04 -0700
committerRobin H. Johnson <robbat2@gentoo.org>2015-08-08 17:38:18 -0700
commit56bd759df1d0c750a065b8c845e93d5dfa6b549d (patch)
tree3f91093cdb475e565ae857f1c5a7fd339e2d781e /app-admin/webapp-config/files
downloadgentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.gz
gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.bz2
gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.zip
proj/gentoo: Initial commit
This commit represents a new era for Gentoo: Storing the gentoo-x86 tree in Git, as converted from CVS. This commit is the start of the NEW history. Any historical data is intended to be grafted onto this point. Creation process: 1. Take final CVS checkout snapshot 2. Remove ALL ChangeLog* files 3. Transform all Manifests to thin 4. Remove empty Manifests 5. Convert all stale $Header$/$Id$ CVS keywords to non-expanded Git $Id$ 5.1. Do not touch files with -kb/-ko keyword flags. Signed-off-by: Robin H. Johnson <robbat2@gentoo.org> X-Thanks: Alec Warner <antarus@gentoo.org> - did the GSoC 2006 migration tests X-Thanks: Robin H. Johnson <robbat2@gentoo.org> - infra guy, herding this project X-Thanks: Nguyen Thai Ngoc Duy <pclouds@gentoo.org> - Former Gentoo developer, wrote Git features for the migration X-Thanks: Brian Harring <ferringb@gentoo.org> - wrote much python to improve cvs2svn X-Thanks: Rich Freeman <rich0@gentoo.org> - validation scripts X-Thanks: Patrick Lauer <patrick@gentoo.org> - Gentoo dev, running new 2014 work in migration X-Thanks: Michał Górny <mgorny@gentoo.org> - scripts, QA, nagging X-Thanks: All of other Gentoo developers - many ideas and lots of paint on the bikeshed
Diffstat (limited to 'app-admin/webapp-config/files')
-rw-r--r--app-admin/webapp-config/files/webapp-config-1.50.16-absolute-paths.patch42
-rw-r--r--app-admin/webapp-config/files/webapp-config-1.50.16-apache-move.patch13
-rw-r--r--app-admin/webapp-config/files/webapp-config-1.50.16-baselayout2.patch13
-rw-r--r--app-admin/webapp-config/files/webapp-config-1.50.16-fix-unicode-tests.patch39
-rw-r--r--app-admin/webapp-config/files/webapp-config-1.50.16-htdocs-symlink.patch13
-rw-r--r--app-admin/webapp-config/files/webapp-config-1.50.16-update-servers.patch80
-rw-r--r--app-admin/webapp-config/files/webapp-config-1.51-fix-indentation.patch25
-rw-r--r--app-admin/webapp-config/files/webapp-config-1.52-nulls-doctest.patch185
-rw-r--r--app-admin/webapp-config/files/webapp-config-1.53-sources-function.sh-from-lib-gentoo.patch25
-rw-r--r--app-admin/webapp-config/files/webapp-config-1.54-pvr-check.patch49
10 files changed, 484 insertions, 0 deletions
diff --git a/app-admin/webapp-config/files/webapp-config-1.50.16-absolute-paths.patch b/app-admin/webapp-config/files/webapp-config-1.50.16-absolute-paths.patch
new file mode 100644
index 00000000000..c74fff9b207
--- /dev/null
+++ b/app-admin/webapp-config/files/webapp-config-1.50.16-absolute-paths.patch
@@ -0,0 +1,42 @@
+Index: webapp-config-1.50.16/WebappConfig/config.py
+===================================================================
+--- webapp-config-1.50.16.orig/WebappConfig/config.py
++++ webapp-config-1.50.16/WebappConfig/config.py
+@@ -204,6 +204,7 @@ class Config:
+ pass
+
+ self.__d = {
++ 'allow_absolute' : 'no',
+ 'config_protect' : wrapper.config_protect,
+ # Necessary to load the config file
+ 'my_etcconfig' : '/etc/vhosts/webapp-config',
+@@ -870,8 +871,13 @@ class Config:
+ #
+ # this makes sure we don't write rubbish into the installs list
+
+- installpath = self.config.get('USER', 'g_htdocsdir') + '/' + \
+- self.config.get('USER', 'g_installdir')
++ g_installdir = self.config.get('USER', 'g_installdir')
++
++ if (os.path.isabs(g_installdir)
++ and self.config.get('USER', 'allow_absolute') == 'yes'):
++ installpath = g_installdir
++ else:
++ installpath = self.config.get('USER', 'g_htdocsdir') + '/' + g_installdir
+
+ installpath = re.compile('/+').sub('/', self.__root + installpath)
+
+Index: webapp-config-1.50.16/config/webapp-config
+===================================================================
+--- webapp-config-1.50.16.orig/config/webapp-config
++++ webapp-config-1.50.16/config/webapp-config
+@@ -183,6 +183,9 @@ vhost_perms_virtualowned_file="o-w"
+
+ vhost_perms_installdir="0755"
+
++# Allow specifying absolute path names using the -d option?
++allow_absolute="no"
++
+
+ # ========================================================================
+ # END OF USER-EDITABLE SETTINGS
diff --git a/app-admin/webapp-config/files/webapp-config-1.50.16-apache-move.patch b/app-admin/webapp-config/files/webapp-config-1.50.16-apache-move.patch
new file mode 100644
index 00000000000..6f9a30e7a68
--- /dev/null
+++ b/app-admin/webapp-config/files/webapp-config-1.50.16-apache-move.patch
@@ -0,0 +1,13 @@
+Index: webapp-config-1.50.16/WebappConfig/server.py
+===================================================================
+--- webapp-config-1.50.16.orig/WebappConfig/server.py
++++ webapp-config-1.50.16/WebappConfig/server.py
+@@ -300,7 +300,7 @@ class Apache(Basic):
+
+ name = 'Apache'
+ desc = 'supports installation on Apache 1 & 2'
+- dep = '>=net-www/apache-1.3'
++ dep = '>=www-servers/apache-1.3'
+
+ def set_server_user(self):
+ self.vhost_server_uid = get_user('apache')
diff --git a/app-admin/webapp-config/files/webapp-config-1.50.16-baselayout2.patch b/app-admin/webapp-config/files/webapp-config-1.50.16-baselayout2.patch
new file mode 100644
index 00000000000..24f00041347
--- /dev/null
+++ b/app-admin/webapp-config/files/webapp-config-1.50.16-baselayout2.patch
@@ -0,0 +1,13 @@
+Index: webapp-config-1.50.16/sbin/webapp-cleaner
+===================================================================
+--- webapp-config-1.50.16.orig/sbin/webapp-cleaner
++++ webapp-config-1.50.16/sbin/webapp-cleaner
+@@ -11,7 +11,7 @@ CMD="emerge -Cav"
+ WEBAPP_DIR="/usr/share/webapps"
+ WEBAPP_CONFIG=
+
+-[[ -z ${RC_GOT_FUNCTIONS} ]] && source /sbin/functions.sh
++[[ -z ${RC_GOT_FUNCTIONS} ]] && source /lib/gentoo/functions.sh
+
+ function help() {
+ echo "Remove obsolete and unused versions of web applications"
diff --git a/app-admin/webapp-config/files/webapp-config-1.50.16-fix-unicode-tests.patch b/app-admin/webapp-config/files/webapp-config-1.50.16-fix-unicode-tests.patch
new file mode 100644
index 00000000000..cad75a2e517
--- /dev/null
+++ b/app-admin/webapp-config/files/webapp-config-1.50.16-fix-unicode-tests.patch
@@ -0,0 +1,39 @@
+Make strings unicode to fix test failures
+
+Python enables unicode by default. Various quoted strings used
+in tests were not declared as unicode and so caused false failures.
+This patch addresses this issue.
+
+Signed-off-by: Matthew Thode <prometheanfire@gentoo.org>
+Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
+
+diff -rupN webapp-config-1.50.16/WebappConfig.orig/db.py webapp-config-1.50.16/WebappConfig/db.py
+--- webapp-config-1.50.16/WebappConfig.orig/db.py 2012-06-17 11:10:15.964264617 -0500
++++ webapp-config-1.50.16/WebappConfig/db.py 2012-06-17 11:11:05.364265831 -0500
+@@ -186,7 +186,7 @@ class WebappDB(AppHierarchy):
+ >>> sb = [i[1] for i in b.list_locations().items()]
+ >>> sb.sort(lambda x,y: cmp(x[0]+x[1],y[0]+y[1]))
+ >>> sb
+- [['gallery', '1.4.4_p6'], ['gallery', '2.0_rc2'], ['horde', '3.0.5'], ['phpldapadmin', '0.9.7_alpha4']]
++ [[u'gallery', u'1.4.4_p6'], [u'gallery', u'2.0_rc2'], [u'horde', u'3.0.5'], [u'phpldapadmin', u'0.9.7_alpha4']]
+
+ >>> c = WebappDB(here + '/tests/testfiles/webapps',
+ ... package = 'horde', version = '3.0.5')
+@@ -572,7 +572,7 @@ class WebappSource(AppHierarchy):
+ ... 'horde', '3.0.5')
+ >>> d = a.get_source_directories('htdocs')
+ >>> [i for i in d if i != '.svn']
+- ['dir1', 'dir2']
++ [u'dir1', u'dir2']
+ '''
+ dirs = []
+
+@@ -604,7 +604,7 @@ class WebappSource(AppHierarchy):
+ >>> a = WebappSource(here + '/tests/testfiles/share-webapps',
+ ... 'horde', '3.0.5')
+ >>> a.get_source_files('htdocs')
+- ['test1', 'test2']
++ [u'test1', u'test2']
+ '''
+
+ files = []
diff --git a/app-admin/webapp-config/files/webapp-config-1.50.16-htdocs-symlink.patch b/app-admin/webapp-config/files/webapp-config-1.50.16-htdocs-symlink.patch
new file mode 100644
index 00000000000..a7421b9b2c2
--- /dev/null
+++ b/app-admin/webapp-config/files/webapp-config-1.50.16-htdocs-symlink.patch
@@ -0,0 +1,13 @@
+Index: webapp-config-1.50.16/WebappConfig/server.py
+===================================================================
+--- webapp-config-1.50.16.orig/WebappConfig/server.py
++++ webapp-config-1.50.16/WebappConfig/server.py
+@@ -158,7 +158,7 @@ class Basic:
+
+ # is the installation directory empty?
+
+- if not os.listdir(self.__destd):
++ if not os.listdir(self.__destd) and os.path.isdir(self.__destd):
+ if not self.__p:
+ os.rmdir(self.__destd)
+ else:
diff --git a/app-admin/webapp-config/files/webapp-config-1.50.16-update-servers.patch b/app-admin/webapp-config/files/webapp-config-1.50.16-update-servers.patch
new file mode 100644
index 00000000000..f6e7bbd5414
--- /dev/null
+++ b/app-admin/webapp-config/files/webapp-config-1.50.16-update-servers.patch
@@ -0,0 +1,80 @@
+--- WebappConfig/config.py 2006-12-30 13:38:36.000000000 -0500
++++ config.py 2009-05-28 12:08:53.000000000 -0400
+@@ -1289,8 +1289,9 @@
+
+ allowed_servers = {'apache' : WebappConfig.server.Apache,
+ 'lighttpd' : WebappConfig.server.Lighttpd,
+- 'aolserver': WebappConfig.server.Aolserver,
+- 'cherokee' : WebappConfig.server.Cherokee}
++ 'cherokee' : WebappConfig.server.Cherokee,
++ 'nginx' : WebappConfig.server.Nginx,
++ 'gatling' : WebappConfig.server.Gatling}
+
+ server = self.config.get('USER', 'vhost_server')
+
+--- WebappConfig/server.py 2009-05-28 12:06:48.000000000 -0400
++++ server.py 2009-05-28 12:10:54.000000000 -0400
+@@ -316,16 +316,6 @@
+ self.vhost_server_uid = get_user('lighttpd')
+ self.vhost_server_gid = get_group('lighttpd')
+
+-class Aolserver(Basic):
+-
+- name = 'Aolserver'
+- desc = 'supports installation on Aolserver'
+- dep = 'www-servers/aolserver'
+-
+- def set_server_user(self):
+- self.vhost_server_uid = get_user('aolserver')
+- self.vhost_server_gid = get_group('aolserver')
+-
+ class Cherokee(Basic):
+
+ name = 'Cherokee'
+@@ -336,9 +326,30 @@
+ self.vhost_server_uid = get_user('cherokee')
+ self.vhost_server_gid = get_group('cherokee')
+
++class Nginx(Basic):
++
++ name = 'Nginx'
++ desc = 'supports installation on Nginx'
++ dep = 'www-servers/nginx'
++
++ def set_server_user(self):
++ self.vhost_server_uid = get_user('nginx')
++ self.vhost_server_gid = get_group('nginx')
++
++class Gatling(Basic):
++
++ name = 'Gatling'
++ desc = 'supports installation on Gatling'
++ dep = 'www-servers/gatling'
++
++ def set_server_user(self):
++ self.vhost_server_uid = get_user('gatling')
++ self.vhost_server_gid = get_group('gatling')
++
+ def listservers():
+
+ OUT.notice('\n'.join(['apache',
+- 'aolserver',
+ 'lighttpd',
+- 'cherokee']))
++ 'cherokee',
++ 'nginx',
++ 'gatling']))
+--- config/webapp-config 2006-12-30 13:39:13.000000000 -0500
++++ webapp-config 2009-05-28 12:11:24.000000000 -0400
+@@ -65,9 +65,10 @@
+ # your choices are:
+ #
+ # apache
+-# aolserver
+ # lighttpd
+ # cherokee
++# nginx
++# gatling
+ #
+ # you can override this setting by using the -s switch to webapp-config
+
diff --git a/app-admin/webapp-config/files/webapp-config-1.51-fix-indentation.patch b/app-admin/webapp-config/files/webapp-config-1.51-fix-indentation.patch
new file mode 100644
index 00000000000..27a11aa8337
--- /dev/null
+++ b/app-admin/webapp-config/files/webapp-config-1.51-fix-indentation.patch
@@ -0,0 +1,25 @@
+From 1bc28049300625a3b24a632e2aacb5776937c19b Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Manuel=20R=C3=BCger?= <mrueg@gentoo.org>
+Date: Tue, 6 Aug 2013 03:59:31 +0200
+Subject: [PATCH] WebappConfig/config.py: fix indentation
+
+---
+ WebappConfig/config.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/WebappConfig/config.py b/WebappConfig/config.py
+index bf55d1e..bb86a55 100644
+--- a/WebappConfig/config.py
++++ b/WebappConfig/config.py
+@@ -962,7 +962,7 @@ class Config:
+ OUT.die('You need to specify at least the application you'
+ ' would like to handle!')
+ else:
+- return self.config.get('USER', 'pn')
++ return self.config.get('USER', 'pn')
+
+ def check_version_set(self):
+ if not self.config.has_option('USER', 'pvr'):
+--
+1.8.1.5
+
diff --git a/app-admin/webapp-config/files/webapp-config-1.52-nulls-doctest.patch b/app-admin/webapp-config/files/webapp-config-1.52-nulls-doctest.patch
new file mode 100644
index 00000000000..97c64a90df2
--- /dev/null
+++ b/app-admin/webapp-config/files/webapp-config-1.52-nulls-doctest.patch
@@ -0,0 +1,185 @@
+From 5f61d249507c3502c3c76faf3926522e6e63370d Mon Sep 17 00:00:00 2001
+From: Devan Franchini <twitch153@gentoo.org>
+Date: Fri, 3 Jan 2014 21:03:00 -0500
+Subject: [PATCH] WebappConfig/{ebuild,content}.py: Nulls doctest code.
+
+Due to the variable nature of the returning values of the two functions
+run_vars() and add(), it is unrealistic to depend on doctest to not
+fail. It has been decided that disabling these two doctest codes would
+be the best decision to prevent failures that are not detrimental.
+
+X-Gentoo-Bug: 430010
+X-Gentoo-Bug-URL: https://bugs.gentoo.org/430010
+---
+ WebappConfig/content.py | 36 ++++++++++++++++++------------------
+ WebappConfig/ebuild.py | 46 +++++++++++++++++++++++-----------------------
+ 2 files changed, 41 insertions(+), 41 deletions(-)
+
+diff --git a/WebappConfig/content.py b/WebappConfig/content.py
+index 8fe5be9..c635f5a 100644
+--- a/WebappConfig/content.py
++++ b/WebappConfig/content.py
+@@ -379,71 +379,71 @@ class Contents:
+ (and this is important for md5)
+ relative - 1 for storing a relative filename, 0 otherwise
+
+- >>> OUT.color_off()
+- >>> import os.path
+- >>> here = os.path.dirname(os.path.realpath(__file__))
++ OUT.color_off()
++ import os.path
++ here = os.path.dirname(os.path.realpath(__file__))
+
+ One for pretending:
+
+- >>> a = Contents(here + '/tests/testfiles/contents/app/',
++ a = Contents(here + '/tests/testfiles/contents/app/',
+ ... package = 'test', version = '1.0',
+ ... pretend = True)
+
+ And this one is for real:
+
+- >>> b = Contents(here + '/tests/testfiles/contents/app/',
++ b = Contents(here + '/tests/testfiles/contents/app/',
+ ... package = 'test', version = '1.0')
+
+ Pretend to add a file:
+
+- >>> a.add('file', 'config-owned',
++ a.add('file', 'config-owned',
+ ... destination = here + '/tests/testfiles/contents/app/',
+ ... path = '/test1', relative = True)
+ * pretending to add: file 1 config-owned "test1"
+
+ Lets not pretend this time:
+
+- >>> b.add('file', 'config-owned',
++ b.add('file', 'config-owned',
+ ... destination = here + '/tests/testfiles/contents/app/',
+ ... path = '/test1', relative = True)
+- >>> b.entry(here + '/tests/testfiles/contents/app/test1') #doctest: +ELLIPSIS
++ b.entry(here + '/tests/testfiles/contents/app/test1') #doctest: +ELLIPSIS
+ 'file 1 config-owned "test1" ... d8e8fca2dc0f896fd7cb4cb0031ba249 '
+
+ Lets produce an error with a file that does not exist:
+
+- >>> b.add('file', 'config-owned',
++ b.add('file', 'config-owned',
+ ... destination = here + '/tests/testfiles/contents/app/',
+ ... path = '/nothere', relative = True) #doctest: +ELLIPSIS
+ * Cannot access file .../tests/testfiles/contents/app/nothere to add it as installation content. This should not happen!
+
+ Other file types:
+
+- >>> b.add('hardlink', 'config-owned',
++ b.add('hardlink', 'config-owned',
+ ... destination = here + '/tests/testfiles/contents/app/',
+ ... path = '/test2', relative = True)
+- >>> b.entry(here + '/tests/testfiles/contents/app/test2') #doctest: +ELLIPSIS
++ b.entry(here + '/tests/testfiles/contents/app/test2') #doctest: +ELLIPSIS
+ 'file 1 config-owned "test2" ... d8e8fca2dc0f896fd7cb4cb0031ba249 '
+- >>> b.add('dir', 'default-owned',
++ b.add('dir', 'default-owned',
+ ... destination = here + '/tests/testfiles/contents/app/',
+ ... path = '/dir1', relative = True)
+- >>> b.entry(here + '/tests/testfiles/contents/app/dir1') #doctest: +ELLIPSIS
++ b.entry(here + '/tests/testfiles/contents/app/dir1') #doctest: +ELLIPSIS
+ 'dir 1 default-owned "dir1" ... 0 '
+- >>> b.add('dir', 'default-owned', destination = here + '/tests/testfiles/contents/app',
++ b.add('dir', 'default-owned', destination = here + '/tests/testfiles/contents/app',
+ ... path = '/dir1',
+ ... relative = False)
+- >>> b.entry(here + '/tests/testfiles/contents/app/dir1') #doctest: +ELLIPSIS
++ b.entry(here + '/tests/testfiles/contents/app/dir1') #doctest: +ELLIPSIS
+ 'dir 0 default-owned ".../tests/testfiles/contents/app/dir1" ... 0 '
+
+ Q: Is the full link to the target what we want?
+ A: Yes, since the link will still be ok even if we move the directory.
+
+- >>> b.add('sym', 'virtual',
++ b.add('sym', 'virtual',
+ ... destination = here + '/tests/testfiles/contents/app/',
+ ... path = '/test3', relative = True)
+- >>> b.entry(here + '/tests/testfiles/contents/app/test3') #doctest: +ELLIPSIS
++ b.entry(here + '/tests/testfiles/contents/app/test3') #doctest: +ELLIPSIS
+ 'sym 1 virtual "test3" ... 0 .../tests/testfiles/contents/app/test1'
+
+- >>> b.db_print() #doctest: +ELLIPSIS
++ b.db_print() #doctest: +ELLIPSIS
+ file 1 config-owned "test1" ... d8e8fca2dc0f896fd7cb4cb0031ba249
+ file 1 config-owned "test2" ... d8e8fca2dc0f896fd7cb4cb0031ba249
+ sym 1 virtual "test3" ... 0 .../tests/testfiles/contents/app/test1
+diff --git a/WebappConfig/ebuild.py b/WebappConfig/ebuild.py
+index 03c0c57..cc23bec 100644
+--- a/WebappConfig/ebuild.py
++++ b/WebappConfig/ebuild.py
+@@ -201,35 +201,35 @@ class Ebuild:
+ The procedure from above is repeated to set up the default
+ environment:
+
+- >>> import WebappConfig.config
+- >>> config = WebappConfig.config.Config()
+- >>> config.config.set('USER', 'my_htdocsbase', 'htdocs')
+- >>> config.config.set('USER', 'pn', 'horde')
+- >>> config.config.set('USER', 'pvr', '3.0.5')
+- >>> import os.path
+- >>> here = os.path.dirname(os.path.realpath(__file__))
+- >>> config.config.set('USER', 'my_approot', here +
+- ... '/tests/testfiles/share-webapps')
+- >>> my_approot = config.config.get('USER', 'my_approot')
+- >>> my_appdir = my_approot + "/horde/3.0.5"
+- >>> config.config.set('USER', 'my_appdir', my_appdir)
+- >>> config.config.set('USER', 'my_hookscriptsdir', my_appdir + '/hooks')
+- >>> config.config.set('USER', 'my_cgibinbase', 'cgi-bin')
+- >>> config.config.set('USER', 'my_errorsbase', 'error')
+- >>> config.config.set('USER', 'my_iconsbase', 'icons')
+- >>> config.config.set('USER', 'my_serverconfigdir', '/'.join([my_appdir,'conf']))
+- >>> config.config.set('USER', 'my_hostrootdir', '/'.join([my_appdir,'hostroot']))
+- >>> config.config.set('USER', 'my_htdocsdir', '/'.join([my_appdir,'htdocs']))
+- >>> config.config.set('USER', 'my_sqlscriptsdir', '/'.join([my_appdir,'sqlscripts']))
++ "">>> import WebappConfig.config"
++ ">>> config = WebappConfig.config.Config()"
++ ">>> config.config.set('USER', 'my_htdocsbase', 'htdocs')"
++ ">>> config.config.set('USER', 'pn', 'horde')"
++ ">>> config.config.set('USER', 'pvr', '3.0.5')"
++ ">>> import os.path"
++ ">>> here = os.path.dirname(os.path.realpath(__file__))"
++ ">>> config.config.set('USER', 'my_approot', here +"
++ "... '/tests/testfiles/share-webapps')"
++ ">>> my_approot = config.config.get('USER', 'my_approot')"
++ ">>> my_appdir = my_approot + "/horde/3.0.5""
++ ">>> config.config.set('USER', 'my_appdir', my_appdir)"
++ ">>> config.config.set('USER', 'my_hookscriptsdir', my_appdir + '/hooks')"
++ ">>> config.config.set('USER', 'my_cgibinbase', 'cgi-bin')"
++ ">>> config.config.set('USER', 'my_errorsbase', 'error')"
++ ">>> config.config.set('USER', 'my_iconsbase', 'icons')"
++ ">>> config.config.set('USER', 'my_serverconfigdir', '/'.join([my_appdir,'conf']))"
++ ">>> config.config.set('USER', 'my_hostrootdir', '/'.join([my_appdir,'hostroot']))"
++ ">>> config.config.set('USER', 'my_htdocsdir', '/'.join([my_appdir,'htdocs']))"
++ ">>> config.config.set('USER', 'my_sqlscriptsdir', '/'.join([my_appdir,'sqlscripts']))"
+
+ Time to create the ebuild handler:
+
+- >>> a = Ebuild(config)
++ ">>> a = Ebuild(config)"
+
+ The dummy post-install file should display all the variables
+ that are exported here:
+
+- >>> a.show_postinst() #doctest: +ELLIPSIS
++ ">>> a.show_postinst() #doctest: +ELLIPSIS
+ <BLANKLINE>
+ =================================================================
+ POST-INSTALL INSTRUCTIONS
+@@ -270,7 +270,7 @@ class Ebuild:
+ PVR: 3.0.5
+ <BLANKLINE>
+ =================================================================
+- <BLANKLINE>
++ <BLANKLINE>"
+ '''
+
+ v_root = self.get_config('vhost_root')
+--
+1.8.3.2
+
diff --git a/app-admin/webapp-config/files/webapp-config-1.53-sources-function.sh-from-lib-gentoo.patch b/app-admin/webapp-config/files/webapp-config-1.53-sources-function.sh-from-lib-gentoo.patch
new file mode 100644
index 00000000000..06a924a426b
--- /dev/null
+++ b/app-admin/webapp-config/files/webapp-config-1.53-sources-function.sh-from-lib-gentoo.patch
@@ -0,0 +1,25 @@
+From ff7ba0d89c79584f14a8137d886a656a9af6de5c Mon Sep 17 00:00:00 2001
+From: Devan Franchini <twitch153@gentoo.org>
+Date: Sat, 27 Dec 2014 20:43:08 -0500
+Subject: [PATCH] webapp-cleaner: sources function.sh from /lib/gentoo
+
+---
+ sbin/webapp-cleaner | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/sbin/webapp-cleaner b/sbin/webapp-cleaner
+index bfec623..52e44ac 100755
+--- a/sbin/webapp-cleaner
++++ b/sbin/webapp-cleaner
+@@ -13,7 +13,7 @@ CMD="emerge -Cav"
+ WEBAPP_DIR="/usr/share/webapps"
+ WEBAPP_CONFIG=
+
+-[[ -z ${RC_GOT_FUNCTIONS} ]] && source /etc/init.d/functions.sh
++[[ -z ${RC_GOT_FUNCTIONS} ]] && source /lib/gentoo/functions.sh
+
+ function help() {
+ echo "Remove obsolete and unused versions of web applications"
+--
+2.0.5
+
diff --git a/app-admin/webapp-config/files/webapp-config-1.54-pvr-check.patch b/app-admin/webapp-config/files/webapp-config-1.54-pvr-check.patch
new file mode 100644
index 00000000000..9a35ad70caf
--- /dev/null
+++ b/app-admin/webapp-config/files/webapp-config-1.54-pvr-check.patch
@@ -0,0 +1,49 @@
+commit 9e251c7574d074e424ea19024f743c754f321979
+Author: Devan Franchini <twitch153@gentoo.org>
+Date: Fri Jul 10 21:25:17 2015 -0400
+
+ config.py: Fixes package version checking regression
+
+ Previously webapp-config would not do any sanity checks when
+ setting the package version. After adding a sanity check in 1.54
+ I made the mistake of not being flexible enough and this caused
+ a regression that prevented web apps with versions such as
+ "20140929d"[1] to be installed. This commit fixes that while still
+ allowing for some sanity checking.
+
+ [1]: https://github.com/gentoo/webapp-config/issues/2
+
+diff --git a/WebappConfig/config.py b/WebappConfig/config.py
+index 6c915c3..3a176a0 100644
+--- a/WebappConfig/config.py
++++ b/WebappConfig/config.py
+@@ -996,17 +996,20 @@ class Config:
+ OUT.die('Invalid package name')
+
+ if len(args) > 1:
+- argsvr = args[1].split('.')
+- if len(argsvr) == 1:
+- OUT.die('Invalid package version: %(pvr)s'
++ pvr = args[1]
++ has_int = False # A package version should have at least one
++ # numerical value, but we want to allow for
++ # the flexibility of having any alphanumeric
++ # value while checking to make sure it's sane.
++
++ for char in pvr:
++ if char.isdigit():
++ has_int = True
++
++ if not has_int:
++ OUT.die('Invalid package version: "%(pvr)s"'
+ % {'pvr': args[1]})
+
+- pvr = ''
+- for i in range(0, len(argsvr)):
+- if not i == len(argsvr) - 1:
+- pvr += argsvr[i] + '.'
+- else:
+- pvr += argsvr[i]
+ self.config.set('USER', 'pvr', pvr)
+
+ if (not options['dir'] and