[ckan-changes] commit/ckan: thejimmyg: [packaging] Changes for release: updated requirements, new ckan_deb directory, bumped version
Bitbucket
commits-noreply at bitbucket.org
Fri Sep 30 09:58:54 UTC 2011
1 new changeset in ckan:
http://bitbucket.org/okfn/ckan/changeset/43d03f65da08/
changeset: 43d03f65da08
branch: release-v1.4.3.1
user: thejimmyg
date: 2011-09-30 11:58:40
summary: [packaging] Changes for release: updated requirements, new ckan_deb directory, bumped version
affected #: 9 files (-1 bytes)
--- a/ckan/__init__.py Fri Sep 16 10:02:40 2011 +0100
+++ b/ckan/__init__.py Fri Sep 30 10:58:40 2011 +0100
@@ -1,4 +1,4 @@
-__version__ = '1.4.3.1b'
+__version__ = '1.4.3.1'
__description__ = 'Comprehensive Knowledge Archive Network (CKAN) Software'
__long_description__ = \
'''The CKAN software is used to run the Comprehensive Knowledge Archive
@@ -16,11 +16,4 @@
__license__ = 'AGPL'
# The packaging system replies on this import, please do not remove it
-try:
- # Ths automatically modifies sys.path so that the CKAN versions of
- # key dependencies are used instead of the ones already installed.
- import ckan_deps
-except ImportError:
- # This installation of CKAN probably isn't using the ckan_deps
- pass
-
+import sys; sys.path.insert(0, __path__[0])
--- a/ckan/wsgi.py Fri Sep 16 10:02:40 2011 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-#!/usr/bin/env python
-
-# The packaging system requires this script at ckan/wsgi.py, please do not
-# move it.
-
-usage = """
-WSGI Script for CKAN
-====================
-
-Set Apache to run this WSGI Script via a symlink that is adjacent to your CKAN
-config file in the file system.
-
-Example:
- Find this script's installed path::
- $ python -c 'import ckan; print ckan.__path__'
- ['/usr/lib/pymodules/python2.6/ckan/']
-
- Create symlink::
- $ ln -s /usr/lib/pymodules/python2.6/ckan/wsgi.py /etc/ckan/dgu.py
-
- Apache config line::
- WSGIScriptAlias / /etc/ckan/dgu.py
-
- dgu.py will load the Pylons config: dgu.ini (looking in the same directory.)
-"""
-
-import os
-import sys
-from apachemiddleware import MaintenanceResponse
-
-symlink_filepath = __file__
-if os.path.basename(symlink_filepath) == 'wsgi.py':
- print usage
- sys.exit(1)
-config_filepath = symlink_filepath.replace('.py', '.ini')
-assert os.path.exists(config_filepath), 'Cannot find file %r (from symlink %r)' % (config_filepath, __file__)
-
-# enable logging
-from paste.script.util.logging_config import fileConfig
-fileConfig(config_filepath)
-
-from paste.deploy import loadapp
-application = loadapp('config:%s' % config_filepath)
-application = MaintenanceResponse(application)
-
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ckan_deb/DEBIAN/control.template Fri Sep 30 10:58:40 2011 +0100
@@ -0,0 +1,11 @@
+# This get's set by the build script
+# Version: XXX
+Package: ckan
+Architecture: all
+Maintainer: James Gardner <james.gardner at okfn.org>
+Section: main/web
+Priority: extra
+Depends: python-ckan, postgresql-8.4, apache2, libapache2-mod-wsgi, python-apachemiddleware, python-virtualenv, python-pip
+Homepage: http://ckan.org
+Description: ckan
+ Common files useful for managing CKAN installations
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ckan_deb/usr/bin/ckan-create-instance Fri Sep 30 10:58:40 2011 +0100
@@ -0,0 +1,131 @@
+#!/bin/bash
+. /usr/lib/ckan/common.sh
+
+INSTANCE=$1
+
+# Check we are root
+if [[ $EUID -ne 0 ]]; then
+ echo "This script must be run as root"
+ exit 1
+fi
+
+# Create an install settings file if it doesn't exist
+if ! [ -f /etc/ckan/${INSTANCE}/install_settings.sh ] ; then
+ mkdir -p /etc/ckan/${INSTANCE}/
+ cat <<EOF > /etc/ckan/${INSTANCE}/install_settings.sh
+#!/bin/bash
+EOF
+ chmod +x /etc/ckan/${INSTANCE}/install_settings.sh
+fi
+
+# Parse the settings
+. /etc/ckan/${INSTANCE}/install_settings.sh
+
+# See which settings are set, and create any we need that aren't
+if [ "X${CKAN_DB_PASSWORD}" = "X" ] ; then
+ # Create a password
+ CKAN_DB_PASSWORD=`< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c10`
+ cat <<EOF >> /etc/ckan/${INSTANCE}/install_settings.sh
+CKAN_DB_PASSWORD=${CKAN_DB_PASSWORD}
+EOF
+fi
+
+error() {
+ echo -e "${@}" 1>&2
+ exit 1
+}
+
+echo "Installing or upgrading CKAN ${INSTANCE} ..."
+
+echo "Making sure PostgreSQL is running ..."
+/etc/init.d/postgresql-8.4 start
+
+echo "Ensuring users and groups are set up correctly ..."
+ckan_ensure_users_and_groups ${INSTANCE}
+
+echo "Ensuring directories exist for ${INSTANCE} CKAN INSTANCE ..."
+ckan_make_ckan_directories ${INSTANCE}
+
+# Disable any existing crontabs during the upgrade, we don't want
+# scripts running when things are still changing
+echo "Disabling the crontab for the ckan${INSTANCE} user ..."
+PACKAGED_CRONJOB="/tmp/${INSTANCE}-cronjob"
+cat <<EOF > ${PACKAGED_CRONJOB}
+# m h dom mon dow command
+EOF
+crontab -u ckan${INSTANCE} ${PACKAGED_CRONJOB}
+
+# Try to put CKAN into maintenance mode, if it is installed
+if [ -f /etc/apache2/sites-available/${INSTANCE}.maint ] ; then
+ # We have a maintence mode available
+ echo "Putting CKAN into maintenance mode ..."
+ ckan_maintenance_on ${INSTANCE}
+fi
+
+echo "Setting log file permissions so that both Apache and cron jobs can log to the same place ..."
+ckan_set_log_file_permissions ${INSTANCE}
+
+echo "Ensuring who.ini file exists ..."
+ckan_create_who_ini ${INSTANCE}
+
+echo "Ensuring wsgi.py file exists ..."
+ckan_create_wsgi_handler ${INSTANCE}
+
+# Replace any existing user with a new one with this password
+echo "Setting the password of the ${INSTANCE} user in PostgreSQL"
+ckan_add_or_replace_database_user ${INSTANCE} ${CKAN_DB_PASSWORD}
+
+# Create the config file
+echo "Creating/overwriting the config for CKAN ... "
+# We use the actual password in PostgreSQL in case any non-sense has gone on
+ckan_create_config_file ${INSTANCE} ${CKAN_DB_PASSWORD}
+# Now that the file exists, make some customisations
+sed \
+ -e "s,^\(ckan.dump_dir\)[ =].*,\1 = /var/lib/ckan/${INSTANCE}/static/dump," \
+ -i /etc/ckan/${INSTANCE}/${INSTANCE}.ini
+
+echo "Ensuring the ${INSTANCE} database exists ..."
+ckan_ensure_db_exists ${INSTANCE}
+
+#echo "Ensuring the latest plugins are configured ..."
+#sed -e "s/^\(ckan.plugins\)[ =].*/\1 = ${INSTANCE}/" \
+# -i /etc/ckan/${INSTANCE}/${INSTANCE}.ini
+
+# Overwrite the existing Apache config
+if [ -f /etc/apache2/sites-enabled/000-default ] ; then
+ echo "Disabling the default Apache site ..."
+ a2dissite 000-default
+fi
+
+echo "Overwriting the existing Apache config ..."
+ckan_overwrite_apache_config ${INSTANCE} ${INSTANCE}.ckan.localhost
+
+# Make sure mod_rewrite is enabled
+if ! [ -f /etc/apache2/mods-enabled/rewrite.load ] ; then
+ echo "Enabling Apache mod_rewite ..."
+ a2enmod rewrite
+fi
+
+# Standard paster db upgrade
+echo "Performing any database upgrades ..."
+paster --plugin=ckan db upgrade --config=/etc/ckan/${INSTANCE}/${INSTANCE}.ini
+
+# Make sure our INSTANCE is enabled
+echo "Bringing the ${INSTANCE} INSTANCE out of maintenance mode ..."
+ckan_maintenance_off ${INSTANCE}
+
+# Restart Apache so it is aware of any changes
+echo "Restarting apache ..."
+/etc/init.d/apache2 restart
+
+# Install the new crontab
+echo "Enabling crontab for the ckan${INSTANCE} user ..."
+PACKAGED_CRONJOB="/tmp/${INSTANCE}-cronjob"
+cat <<EOF > ${PACKAGED_CRONJOB}
+# WARNING: Do not edit these cron tabs, they will be overwritten any time
+# the ckan INSTANCE package is upgraded
+# QUESTION: Should email reports be sent to root?
+EOF
+crontab -u ckan${INSTANCE} ${PACKAGED_CRONJOB}
+
+exit 0
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ckan_deb/usr/bin/ckan-instance-maintenance Fri Sep 30 10:58:40 2011 +0100
@@ -0,0 +1,48 @@
+#!/bin/bash
+. /usr/lib/ckan/common.sh
+
+set -e
+
+# Un-comment for debugging
+
+# Check we are root
+if [[ $EUID -ne 0 ]]; then
+ echo "This script must be run as root"
+ exit 1
+fi
+
+error() {
+ echo -e "${@}" 1>&2
+ exit 1
+}
+
+usage() {
+ error "ERROR: call this script with instance name and \"on\" or \"off\", e.g.\n $0 dgu on"
+}
+
+[ "X$1" = "X" ] || [ "X$2" = "X" ] && usage
+instance=$1
+command=$2
+
+for conf in /etc/apache2/sites-available/${instance}{,.maint} ; do
+ [ -f ${conf} ] || error "ERROR: ${conf} not found"
+done
+
+case $command in
+ on)
+ echo "Putting CKAN site \"${instance}\" into maintenance mode ..."
+ maintenance_on $instance
+ echo "done."
+ ;;
+
+ off)
+ echo "Disabling maintenance mode for CKAN site \"${instance}\" ..."
+ maintenance_off $instance
+ echo "done."
+ ;;
+ *)
+ usage
+ ;;
+esac
+
+exit 0
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ckan_deb/usr/lib/ckan/common.sh Fri Sep 30 10:58:40 2011 +0100
@@ -0,0 +1,269 @@
+#!/bin/bash
+
+ckan_log () {
+ echo "ckan: " $1
+}
+
+#_echo="echo"
+ckan_maintenance_on () {
+ local INSTANCE
+ INSTANCE=$1
+ $_echo a2dissite ${INSTANCE}
+ $_echo a2ensite ${INSTANCE}.maint
+ $_echo service apache2 reload
+}
+
+ckan_maintenance_off () {
+ local INSTANCE
+ INSTANCE=$1
+ $_echo a2dissite ${INSTANCE}.maint
+ $_echo a2ensite ${INSTANCE}
+ $_echo service apache2 reload
+}
+
+ckan_set_log_file_permissions () {
+ local INSTANCE
+ INSTANCE=$1
+ sudo chown www-data:ckan${INSTANCE} /var/log/ckan/${INSTANCE}
+ sudo chmod g+w /var/log/ckan/${INSTANCE}
+ sudo touch /var/log/ckan/${INSTANCE}/${INSTANCE}.log
+ sudo touch /var/log/ckan/${INSTANCE}/${INSTANCE}1.log
+ sudo touch /var/log/ckan/${INSTANCE}/${INSTANCE}2.log
+ sudo touch /var/log/ckan/${INSTANCE}/${INSTANCE}3.log
+ sudo touch /var/log/ckan/${INSTANCE}/${INSTANCE}4.log
+ sudo touch /var/log/ckan/${INSTANCE}/${INSTANCE}5.log
+ sudo touch /var/log/ckan/${INSTANCE}/${INSTANCE}6.log
+ sudo touch /var/log/ckan/${INSTANCE}/${INSTANCE}7.log
+ sudo touch /var/log/ckan/${INSTANCE}/${INSTANCE}8.log
+ sudo touch /var/log/ckan/${INSTANCE}/${INSTANCE}9.log
+ sudo chmod g+w /var/log/ckan/${INSTANCE}/${INSTANCE}*.log
+ sudo chown www-data:ckan${INSTANCE} /var/log/ckan/${INSTANCE}/${INSTANCE}*.log
+}
+
+ckan_ensure_users_and_groups () {
+ local INSTANCE
+ INSTANCE=$1
+ COMMAND_OUTPUT=`cat /etc/group | grep "ckan${INSTANCE}:"`
+ if ! [[ "$COMMAND_OUTPUT" =~ "ckan${INSTANCE}:" ]] ; then
+ echo "Crating the 'ckan${INSTANCE}' group ..."
+ sudo groupadd --system "ckan${INSTANCE}"
+ fi
+ COMMAND_OUTPUT=`cat /etc/passwd | grep "ckan${INSTANCE}:"`
+ if ! [[ "$COMMAND_OUTPUT" =~ "ckan${INSTANCE}:" ]] ; then
+ echo "Crating the 'ckan${INSTANCE}' user ..."
+ sudo useradd --system --gid "ckan${INSTANCE}" --home /var/lib/ckan/${INSTANCE} -M --shell /usr/sbin/nologin ckan${INSTANCE}
+ fi
+}
+
+ckan_make_ckan_directories () {
+ local INSTANCE
+ if [ "X$1" = "X" ] ; then
+ echo "ERROR: call the function make_ckan_directories with an INSTANCE name, e.g."
+ echo " dgu"
+ exit 1
+ else
+ INSTANCE=$1
+ mkdir -p -m 0755 /etc/ckan/${INSTANCE}
+ mkdir -p -m 0750 /var/lib/ckan/${INSTANCE}{,/static}
+ mkdir -p -m 0770 /var/{backup,log}/ckan/${INSTANCE} /var/lib/ckan/${INSTANCE}/{data,sstore,static/dump}
+ sudo chown ckan${INSTANCE}:ckan${INSTANCE} /etc/ckan/${INSTANCE}
+ sudo chown www-data:ckan${INSTANCE} /var/{backup,log}/ckan/${INSTANCE} /var/lib/ckan/${INSTANCE} /var/lib/ckan/${INSTANCE}/{data,sstore,static/dump}
+ sudo chmod g+w /var/log/ckan/${INSTANCE} /var/lib/ckan/${INSTANCE}/{data,sstore,static/dump}
+ fi
+}
+
+ckan_create_who_ini () {
+ local INSTANCE
+ if [ "X$1" = "X" ] ; then
+ echo "ERROR: call the function create_who_ini function with an INSTANCE name, e.g."
+ echo " dgu"
+ exit 1
+ else
+ INSTANCE=$1
+ if ! [ -f /etc/ckan/$0/who.ini ] ; then
+ cp -n /usr/share/pyshared/ckan/config/who.ini /etc/ckan/${INSTANCE}/who.ini
+ sed -e "s,%(here)s,/var/lib/ckan/${INSTANCE}," \
+ -i /etc/ckan/${INSTANCE}/who.ini
+ fi
+ fi
+}
+
+ckan_create_config_file () {
+ local INSTANCE password
+ if [ "X$1" = "X" ] || [ "X$2" = "X" ] ; then
+ echo "ERROR: call the function create_config_file function with an INSTANCE name, and a password for postgresql e.g."
+ echo " dgu 1U923hjkh8"
+ exit 1
+ else
+ INSTANCE=$1
+ password=$2
+ # Create an install settings file if it doesn't exist
+ if [ -f /etc/ckan/${INSTANCE}/${INSTANCE}.ini ] ; then
+ mv /etc/ckan/${INSTANCE}/${INSTANCE}.ini "/etc/ckan/${INSTANCE}/${INSTANCE}.ini.`date +%F_%T`.bak"
+ fi
+ paster make-config ckan /etc/ckan/${INSTANCE}/${INSTANCE}.ini
+ sed -e "s,^\(email_to\)[ =].*,\1 = root," \
+ -e "s,^\(error_email_from\)[ =].*,\1 = ckan-${INSTANCE}@`hostname`," \
+ -e "s,^\(cache_dir\)[ =].*,\1 = /var/lib/ckan/${INSTANCE}/data," \
+ -e "s,^\(who\.config_file\)[ =].*,\1 = /etc/ckan/${INSTANCE}/who.ini," \
+ -e "s,^\(sqlalchemy.url\)[ =].*,\1 = postgresql://${INSTANCE}:${password}@localhost/${INSTANCE}," \
+ -e "s,ckan\.site_logo,\#ckan.site_logo," \
+ -e "s,ckan\.log,/var/log/ckan/${INSTANCE}/${INSTANCE}.log," \
+ -i /etc/ckan/${INSTANCE}/${INSTANCE}.ini
+ fi
+}
+
+ckan_add_or_replace_database_user () {
+ local INSTANCE password
+ if [ "X$1" = "X" ] || [ "X$2" = "X" ] ; then
+ echo "ERROR: call the function ckan_add_or_replace_database_user function with an INSTANCE name, and a password for postgresql e.g."
+ echo " dgu 1U923hjkh8"
+ echo " You can generate a password like this: "
+ echo " < /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c10"
+ exit 1
+ else
+ INSTANCE=$1
+ password=$2
+ COMMAND_OUTPUT=`sudo -u postgres psql -c "SELECT 'True' FROM pg_user WHERE usename='${INSTANCE}'"`
+ if ! [[ "$COMMAND_OUTPUT" =~ True ]] ; then
+ echo "Creating the ${INSTANCE} user ..."
+ sudo -u postgres psql -c "CREATE USER \"${INSTANCE}\" WITH PASSWORD '${password}'"
+ else
+ echo "Setting the ${INSTANCE} user password ..."
+ sudo -u postgres psql -c "ALTER USER \"${INSTANCE}\" WITH PASSWORD '${password}'"
+ fi
+ fi
+}
+
+ckan_ensure_db_exists () {
+ local INSTANCE
+ if [ "X$1" = "X" ] ; then
+ echo "ERROR: call the function ensure_db_exists function with an INSTANCE name, e.g."
+ echo " dgu"
+ exit 1
+ else
+ INSTANCE=$1
+ COMMAND_OUTPUT=`sudo -u postgres psql -l`
+ if ! [[ "$COMMAND_OUTPUT" =~ ${INSTANCE} ]] ; then
+ echo "Creating the database ..."
+ sudo -u postgres createdb -O ${INSTANCE} ${INSTANCE}
+ fi
+ fi
+}
+
+ckan_create_wsgi_handler () {
+ local INSTANCE
+ if [ "X$1" = "X" ] ; then
+ echo "ERROR: call the function create_wsgi_handler function with an INSTANCE name, e.g."
+ echo " dgu"
+ exit 1
+ else
+ INSTANCE=$1
+ if [ ! -f "/var/lib/ckan/${INSTANCE}/wsgi.py" ]
+ then
+ sudo virtualenv --setuptools /var/lib/ckan/${INSTANCE}/pyenv
+ cat <<- EOF > /var/lib/ckan/${INSTANCE}/wsgi.py
+ import os
+ instance_dir = '/var/lib/ckan/${INSTANCE}'
+ config_dir = '/etc/ckan/${INSTANCE}'
+ config_file = '${INSTANCE}.ini'
+ pyenv_bin_dir = os.path.join(instance_dir, 'pyenv', 'bin')
+ activate_this = os.path.join(pyenv_bin_dir, 'activate_this.py')
+ execfile(activate_this, dict(__file__=activate_this))
+ # this is werid but without importing ckanext first import of paste.deploy will fail
+ #import ckanext
+ config_filepath = os.path.join(config_dir, config_file)
+ if not os.path.exists(config_filepath):
+ raise Exception('No such file %r'%config_filepath)
+ from paste.deploy import loadapp
+ from paste.script.util.logging_config import fileConfig
+ fileConfig(config_filepath)
+ application = loadapp('config:%s' % config_filepath)
+ from apachemiddleware import MaintenanceResponse
+ application = MaintenanceResponse(application)
+ EOF
+ sudo chmod +x /var/lib/ckan/${INSTANCE}/wsgi.py
+ fi
+ fi
+}
+
+ckan_overwrite_apache_config () {
+ local INSTANCE ServerName
+ if [ "X$1" = "X" ] ; then
+ echo "ERROR: call the function overwrite_apache_config function with an INSTANCE name, the server name and a server aliase e.g."
+ echo " dgu catalogue.data.gov.uk dgu-live.okfn.org"
+ exit 1
+ else
+ INSTANCE=$1
+ ServerName=$2
+ #rm /etc/apache2/sites-available/${INSTANCE}.common
+ cat <<EOF > /etc/apache2/sites-available/${INSTANCE}.common
+
+ # WARNING: Do not manually edit this file, it is desgined to be
+ # overwritten at any time by the postinst script of
+ # dependent packages
+
+ # These are common settings used for both the normal and maintence modes
+
+ DocumentRoot /var/lib/ckan/${INSTANCE}/static
+ ServerName ${ServerName}
+
+ <Directory />
+ # XXX Should this be deny? We get a "Client denied by server configuration" without it
+ allow from all
+ </Directory>
+
+ <Directory /etc/ckan/${INSTANCE}/>
+ allow from all
+ </Directory>
+
+ <Directory /var/lib/ckan/${INSTANCE}/static>
+ allow from all
+ </Directory>
+
+ Alias /dump /var/lib/ckan/${INSTANCE}/static/dump
+
+ # Disable the mod_python handler for static files
+ <Location /dump>
+ SetHandler None
+ Options +Indexes
+ </Location>
+
+ # this is our app
+ WSGIScriptAlias / /var/lib/ckan/${INSTANCE}/wsgi.py
+
+ # pass authorization info on (needed for rest api)
+ WSGIPassAuthorization On
+
+ ErrorLog /var/log/apache2/${INSTANCE}.error.log
+ CustomLog /var/log/apache2/${INSTANCE}.custom.log combined
+EOF
+ #rm /etc/apache2/sites-available/${INSTANCE}
+ cat <<EOF > /etc/apache2/sites-available/${INSTANCE}
+<VirtualHost *:80>
+ # WARNING: Do not manually edit this file, it is desgined to be
+ # overwritten at any time by the postinst script of
+ # dependent packages
+ Include /etc/apache2/sites-available/${INSTANCE}.common
+</VirtualHost>
+EOF
+ #rm /etc/apache2/sites-available/${INSTANCE}.maint
+ cat <<EOF > /etc/apache2/sites-available/${INSTANCE}.maint
+<VirtualHost *:80>
+ # WARNING: Do not manually edit this file, it is desgined to be
+ # overwritten at any time by the postinst script of
+ # dependent packages
+ Include /etc/apache2/sites-available/${INSTANCE}.common
+
+ # Maintenance mode
+ RewriteEngine On
+ RewriteRule ^(.*)/new /return_503 [PT,L]
+ RewriteRule ^(.*)/create /return_503 [PT,L]
+ RewriteRule ^(.*)/authz /return_503 [PT,L]
+ RewriteRule ^(.*)/edit /return_503 [PT,L]
+ RewriteCond %{REQUEST_METHOD} !^GET$ [NC]
+ RewriteRule (.*) /return_503 [PT,L]
+</VirtualHost>
+EOF
+ fi
+}
--- a/requires/lucid_conflict.txt Fri Sep 16 10:02:40 2011 +0100
+++ b/requires/lucid_conflict.txt Fri Sep 30 10:58:40 2011 +0100
@@ -4,7 +4,7 @@
# a single location which CKAN imports from in preference to the Lucid
# equivalent.
-Genshi>=0.6,<0.6.99
+Genshi==0.6
sqlalchemy-migrate==0.6
sqlalchemy==0.6.6
webhelpers==1.2
--- a/requires/lucid_missing.txt Fri Sep 16 10:02:40 2011 +0100
+++ b/requires/lucid_missing.txt Fri Sep 30 10:58:40 2011 +0100
@@ -8,15 +8,16 @@
# vdm>=0.9,<0.9.99
-e hg+https://bitbucket.org/okfn/vdm@vdm-0.9#egg=vdm
# markupsafe==0.9.2 required by webhelpers==1.2 required by formalchemy with SQLAlchemy 0.6
--e git+https://github.com/mitsuhiko/markupsafe.git@0.9.2#egg=markupsafe
+markupsafe==0.9.2
# autoneg>=0.5
-e git+https://github.com/wwaites/autoneg.git@b4c727b164f411cc9d60#egg=autoneg
# flup>=0.5
-e hg+http://hg.saddi.com/flup@301a58656bfb#egg=flup
# All the conflicting dependencies from the lucid_conflict.txt file
--e hg+https://bitbucket.org/okfn/ckan-deps@6287665a1965#egg=ckan-deps
+#-e hg+https://bitbucket.org/okfn/ckan-deps@6287665a1965#egg=ckan-deps
# FormAlchemy
--e git+https://github.com/FormAlchemy/formalchemy.git@1.3.9#egg=formalchemy
+formalchemy==1.3.9
+-e hg+https://hg.3aims.com/public/ApacheMiddleware@tip#egg=apachemiddleware
# NOTE: Developers, our build script for the Debian packages relies on the
# requirements above being specified as editable resources with their
--- a/requires/lucid_present.txt Fri Sep 16 10:02:40 2011 +0100
+++ b/requires/lucid_present.txt Fri Sep 30 10:58:40 2011 +0100
@@ -14,11 +14,11 @@
# with pylons 0.9.7 (change to imports of Multidict)
webob==1.0.8
Pylons==0.9.7
-repoze.who==1.0.18
+repoze.who==1.0.19
tempita==0.4
zope.interface==3.5.3
# These are both combined into the python-repoze.who-plugins package
-repoze.who.plugins.openid
+repoze.who.plugins.openid==0.5.4
# Actually from python-repoze.who-plugins but the openid plugin in the same
# package is too old
repoze.who-friendlyform==1.0.8
Repository URL: https://bitbucket.org/okfn/ckan/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
More information about the ckan-changes
mailing list