From 79f170ff01b1777216062bcd6c4abfce1640d779 Mon Sep 17 00:00:00 2001 From: Disassembler Date: Thu, 13 Sep 2018 14:26:27 +0200 Subject: [PATCH] LXCize Sahana build --- sahana/Dockerfile | 52 -------------- sahana/{docker => lxc}/etc/nginx/nginx.conf | 0 .../etc/services.d/.s6-svscan/finish | 0 .../{docker => lxc}/etc/services.d/nginx/run | 0 .../{docker => lxc}/etc/services.d/uwsgi/run | 0 sahana/{docker => lxc}/etc/uwsgi/uwsgi.conf | 0 .../web2py/applications/eden/languages/cs.py | 0 sahana/{docker => lxc}/srv/web2py/routes.py | 0 .../srv/web2py/run_scheduler.py | 0 sahana/lxcfile | 67 +++++++++++++++++++ sahana/{build.sh => setup.sh} | 0 sahana/{ => setup}/createdb.sql | 0 sahana/{ => setup}/etc/init.d/sahana | 0 .../{ => setup}/srv/sahana/conf/000_config.py | 0 .../srv/sahana/conf/00_settings.py | 0 .../srv/sahana/data/Spotter/DefaultItems.csv | 0 .../data/Spotter/DefaultSkillCompetency.csv | 0 .../sahana/data/Spotter/DefaultSkillList.csv | 0 .../sahana/data/Spotter/DrivingSkillList.csv | 0 .../data/Spotter/DrivingSkillList_EU.csv | 0 .../data/Spotter/LanguageCompetency.csv | 0 .../sahana/data/Spotter/LanguageSkillList.csv | 0 .../srv/sahana/data/Spotter/StandardItems.csv | 0 .../srv/sahana/data/Spotter/__init__.py | 0 .../srv/sahana/data/Spotter/auth_roles.csv | 0 .../srv/sahana/data/Spotter/certificate.csv | 0 .../srv/sahana/data/Spotter/cms_post.csv | 0 .../srv/sahana/data/Spotter/config.py | 0 .../srv/sahana/data/Spotter/css.cfg | 0 .../sahana/data/Spotter/dvr_case_status.csv | 0 .../srv/sahana/data/Spotter/event_type.csv | 0 .../srv/sahana/data/Spotter/gis_config.csv | 0 .../srv/sahana/data/Spotter/gis_hierarchy.csv | 0 .../sahana/data/Spotter/gis_layer_bing.csv | 0 .../data/Spotter/gis_layer_coordinate.csv | 0 .../sahana/data/Spotter/gis_layer_feature.csv | 0 .../sahana/data/Spotter/gis_layer_geojson.csv | 0 .../sahana/data/Spotter/gis_layer_georss.csv | 0 .../sahana/data/Spotter/gis_layer_google.csv | 0 .../sahana/data/Spotter/gis_layer_mgrs.csv | 0 .../data/Spotter/gis_layer_openstreetmap.csv | 0 .../data/Spotter/gis_layer_openweathermap.csv | 0 .../srv/sahana/data/Spotter/gis_layer_tms.csv | 0 .../srv/sahana/data/Spotter/gis_layer_wms.csv | 0 .../srv/sahana/data/Spotter/gis_marker.csv | 0 .../srv/sahana/data/Spotter/incident_type.csv | 0 .../srv/sahana/data/Spotter/layouts.py | 0 .../srv/sahana/data/Spotter/maintenance.py | 0 .../srv/sahana/data/Spotter/masterUsers.csv | 0 .../sahana/data/Spotter/membership_type.csv | 0 .../srv/sahana/data/Spotter/menus.py | 0 .../srv/sahana/data/Spotter/monitor.py | 0 .../srv/sahana/data/Spotter/office_type.csv | 0 .../srv/sahana/data/Spotter/org_sector.csv | 0 .../sahana/data/Spotter/organisation_type.csv | 0 .../srv/sahana/data/Spotter/parser.py | 0 .../data/Spotter/project_activity_type.csv | 0 .../data/Spotter/project_beneficiary_type.csv | 0 .../sahana/data/Spotter/project_hazard.csv | 0 .../sahana/data/Spotter/project_status.csv | 0 .../srv/sahana/data/Spotter/project_theme.csv | 0 .../srv/sahana/data/Spotter/shelter_type.csv | 0 .../srv/sahana/data/Spotter/tasks.cfg | 0 .../srv/sahana/data/Spotter/tests.py | 0 .../srv/sahana/data/Spotter/views/footer.html | 0 .../srv/sahana/data/Spotter/views/layout.html | 0 .../srv/sahana/data/Spotter/work_job_type.csv | 0 {sahana => zz-extra}/sahana-lang-csv.py | 0 68 files changed, 67 insertions(+), 52 deletions(-) delete mode 100644 sahana/Dockerfile rename sahana/{docker => lxc}/etc/nginx/nginx.conf (100%) rename sahana/{docker => lxc}/etc/services.d/.s6-svscan/finish (100%) rename sahana/{docker => lxc}/etc/services.d/nginx/run (100%) rename sahana/{docker => lxc}/etc/services.d/uwsgi/run (100%) rename sahana/{docker => lxc}/etc/uwsgi/uwsgi.conf (100%) rename sahana/{docker => lxc}/srv/web2py/applications/eden/languages/cs.py (100%) rename sahana/{docker => lxc}/srv/web2py/routes.py (100%) rename sahana/{docker => lxc}/srv/web2py/run_scheduler.py (100%) create mode 100644 sahana/lxcfile rename sahana/{build.sh => setup.sh} (100%) rename sahana/{ => setup}/createdb.sql (100%) rename sahana/{ => setup}/etc/init.d/sahana (100%) rename sahana/{ => setup}/srv/sahana/conf/000_config.py (100%) rename sahana/{ => setup}/srv/sahana/conf/00_settings.py (100%) rename sahana/{ => setup}/srv/sahana/data/Spotter/DefaultItems.csv (100%) rename sahana/{ => setup}/srv/sahana/data/Spotter/DefaultSkillCompetency.csv (100%) rename sahana/{ => setup}/srv/sahana/data/Spotter/DefaultSkillList.csv (100%) rename sahana/{ => setup}/srv/sahana/data/Spotter/DrivingSkillList.csv (100%) rename sahana/{ => setup}/srv/sahana/data/Spotter/DrivingSkillList_EU.csv (100%) rename sahana/{ => setup}/srv/sahana/data/Spotter/LanguageCompetency.csv (100%) rename sahana/{ => setup}/srv/sahana/data/Spotter/LanguageSkillList.csv (100%) rename sahana/{ => setup}/srv/sahana/data/Spotter/StandardItems.csv (100%) rename sahana/{ => setup}/srv/sahana/data/Spotter/__init__.py (100%) rename sahana/{ => setup}/srv/sahana/data/Spotter/auth_roles.csv (100%) rename sahana/{ => setup}/srv/sahana/data/Spotter/certificate.csv (100%) rename sahana/{ => setup}/srv/sahana/data/Spotter/cms_post.csv (100%) rename sahana/{ => setup}/srv/sahana/data/Spotter/config.py (100%) rename sahana/{ => setup}/srv/sahana/data/Spotter/css.cfg (100%) rename sahana/{ => setup}/srv/sahana/data/Spotter/dvr_case_status.csv (100%) rename sahana/{ => setup}/srv/sahana/data/Spotter/event_type.csv (100%) rename sahana/{ => setup}/srv/sahana/data/Spotter/gis_config.csv (100%) rename sahana/{ => setup}/srv/sahana/data/Spotter/gis_hierarchy.csv (100%) rename sahana/{ => setup}/srv/sahana/data/Spotter/gis_layer_bing.csv (100%) rename sahana/{ => setup}/srv/sahana/data/Spotter/gis_layer_coordinate.csv (100%) rename sahana/{ => setup}/srv/sahana/data/Spotter/gis_layer_feature.csv (100%) rename sahana/{ => setup}/srv/sahana/data/Spotter/gis_layer_geojson.csv (100%) rename sahana/{ => setup}/srv/sahana/data/Spotter/gis_layer_georss.csv (100%) rename sahana/{ => setup}/srv/sahana/data/Spotter/gis_layer_google.csv (100%) rename sahana/{ => setup}/srv/sahana/data/Spotter/gis_layer_mgrs.csv (100%) rename sahana/{ => setup}/srv/sahana/data/Spotter/gis_layer_openstreetmap.csv (100%) rename sahana/{ => setup}/srv/sahana/data/Spotter/gis_layer_openweathermap.csv (100%) rename sahana/{ => setup}/srv/sahana/data/Spotter/gis_layer_tms.csv (100%) rename sahana/{ => setup}/srv/sahana/data/Spotter/gis_layer_wms.csv (100%) rename sahana/{ => setup}/srv/sahana/data/Spotter/gis_marker.csv (100%) rename sahana/{ => setup}/srv/sahana/data/Spotter/incident_type.csv (100%) rename sahana/{ => setup}/srv/sahana/data/Spotter/layouts.py (100%) rename sahana/{ => setup}/srv/sahana/data/Spotter/maintenance.py (100%) rename sahana/{ => setup}/srv/sahana/data/Spotter/masterUsers.csv (100%) rename sahana/{ => setup}/srv/sahana/data/Spotter/membership_type.csv (100%) rename sahana/{ => setup}/srv/sahana/data/Spotter/menus.py (100%) rename sahana/{ => setup}/srv/sahana/data/Spotter/monitor.py (100%) rename sahana/{ => setup}/srv/sahana/data/Spotter/office_type.csv (100%) rename sahana/{ => setup}/srv/sahana/data/Spotter/org_sector.csv (100%) rename sahana/{ => setup}/srv/sahana/data/Spotter/organisation_type.csv (100%) rename sahana/{ => setup}/srv/sahana/data/Spotter/parser.py (100%) rename sahana/{ => setup}/srv/sahana/data/Spotter/project_activity_type.csv (100%) rename sahana/{ => setup}/srv/sahana/data/Spotter/project_beneficiary_type.csv (100%) rename sahana/{ => setup}/srv/sahana/data/Spotter/project_hazard.csv (100%) rename sahana/{ => setup}/srv/sahana/data/Spotter/project_status.csv (100%) rename sahana/{ => setup}/srv/sahana/data/Spotter/project_theme.csv (100%) rename sahana/{ => setup}/srv/sahana/data/Spotter/shelter_type.csv (100%) rename sahana/{ => setup}/srv/sahana/data/Spotter/tasks.cfg (100%) rename sahana/{ => setup}/srv/sahana/data/Spotter/tests.py (100%) rename sahana/{ => setup}/srv/sahana/data/Spotter/views/footer.html (100%) rename sahana/{ => setup}/srv/sahana/data/Spotter/views/layout.html (100%) rename sahana/{ => setup}/srv/sahana/data/Spotter/work_job_type.csv (100%) rename {sahana => zz-extra}/sahana-lang-csv.py (100%) diff --git a/sahana/Dockerfile b/sahana/Dockerfile deleted file mode 100644 index 5ca12d1..0000000 --- a/sahana/Dockerfile +++ /dev/null @@ -1,52 +0,0 @@ -FROM python2 -LABEL maintainer="Disassembler " - -RUN \ - # Add edge/testing repository - echo '@edge http://dl-cdn.alpinelinux.org/alpine/edge/testing' >>/etc/apk/repositories \ - # Install runtime dependencies - && apk --no-cache add geos@edge nginx py-gdal@edge py2-dateutil py2-lxml py2-numpy py2-pillow py2-psycopg2 py2-requests uwsgi-python - -RUN \ - # Install build dependencies - apk --no-cache add --virtual .deps build-base git freetype-dev libpng-dev py-numpy-dev py2-pip python2-dev ttf-dejavu \ - # Hackfix for python find_library('c') call - && ln -s /lib/ld-musl-x86_64.so.1 /lib/libc.so.1 \ - # Install web2py - && git clone --recursive https://github.com/web2py/web2py.git /srv/web2py \ - && git -C /srv/web2py checkout 7035398 \ - && git -C /srv/web2py submodule update \ - # Fix Web2py urllib import (https://github.com/web2py/pydal/commit/9d2290c) - && sed -i 's/import traceback/import traceback\nimport urllib/' /srv/web2py/gluon/packages/dal/pydal/base.py \ - # Symlink WSGI handler - && ln -s /srv/web2py/handlers/wsgihandler.py /srv/web2py/wsgihandler.py \ - # Install Sahana - && git clone --depth 1 https://github.com/sahana/eden.git /srv/web2py/applications/eden \ - # Install python dependencies, exclude old or unnecessary ones - && sed -i 's/^ansible/#ansible/' /srv/web2py/applications/eden/optional_requirements.txt \ - && sed -i 's/^boto/#boto/' /srv/web2py/applications/eden/optional_requirements.txt \ - && sed -i 's/^PIL/#PIL/' /srv/web2py/applications/eden/optional_requirements.txt \ - && sed -i 's/^PyRTF/#PyRTF/' /srv/web2py/applications/eden/optional_requirements.txt \ - && sed -i 's/^PyYAML/#PyYAML/' /srv/web2py/applications/eden/optional_requirements.txt \ - && pip install -r /srv/web2py/applications/eden/optional_requirements.txt \ - # Copy fonts with Czech glyphs - && cp /usr/share/fonts/ttf-dejavu/DejaVuSerif-Bold.ttf /srv/web2py/applications/eden/static/fonts/DejaVuSerif-Bold.ttf \ - && cp /usr/share/fonts/ttf-dejavu/DejaVuSerif.ttf /srv/web2py/applications/eden/static/fonts/DejaVuSerif.ttf \ - # Create OS user - && addgroup -S -g 8001 sahana \ - && adduser -S -u 8001 -h /srv/web2py -s /bin/sh -g sahana -G sahana sahana \ - && chown -R sahana:sahana /srv/web2py \ - # Cleanup - && apk --no-cache del .deps \ - && find /srv/web2py -name '.git*' -exec rm -rf {} + \ - && rm -r /srv/web2py/applications/admin /srv/web2py/applications/examples /srv/web2py/applications/welcome \ - && rm -r /root/.cache - -COPY docker/etc/ /etc/ - -COPY --chown=8001:8001 docker/srv/ /srv/ - -VOLUME ["/srv/web2py/applications/eden/models", "/srv/web2py/applications/eden/databases", "/srv/web2py/applications/eden/uploads"] -EXPOSE 8080 - -CMD ["s6-svscan", "/etc/services.d"] diff --git a/sahana/docker/etc/nginx/nginx.conf b/sahana/lxc/etc/nginx/nginx.conf similarity index 100% rename from sahana/docker/etc/nginx/nginx.conf rename to sahana/lxc/etc/nginx/nginx.conf diff --git a/sahana/docker/etc/services.d/.s6-svscan/finish b/sahana/lxc/etc/services.d/.s6-svscan/finish similarity index 100% rename from sahana/docker/etc/services.d/.s6-svscan/finish rename to sahana/lxc/etc/services.d/.s6-svscan/finish diff --git a/sahana/docker/etc/services.d/nginx/run b/sahana/lxc/etc/services.d/nginx/run similarity index 100% rename from sahana/docker/etc/services.d/nginx/run rename to sahana/lxc/etc/services.d/nginx/run diff --git a/sahana/docker/etc/services.d/uwsgi/run b/sahana/lxc/etc/services.d/uwsgi/run similarity index 100% rename from sahana/docker/etc/services.d/uwsgi/run rename to sahana/lxc/etc/services.d/uwsgi/run diff --git a/sahana/docker/etc/uwsgi/uwsgi.conf b/sahana/lxc/etc/uwsgi/uwsgi.conf similarity index 100% rename from sahana/docker/etc/uwsgi/uwsgi.conf rename to sahana/lxc/etc/uwsgi/uwsgi.conf diff --git a/sahana/docker/srv/web2py/applications/eden/languages/cs.py b/sahana/lxc/srv/web2py/applications/eden/languages/cs.py similarity index 100% rename from sahana/docker/srv/web2py/applications/eden/languages/cs.py rename to sahana/lxc/srv/web2py/applications/eden/languages/cs.py diff --git a/sahana/docker/srv/web2py/routes.py b/sahana/lxc/srv/web2py/routes.py similarity index 100% rename from sahana/docker/srv/web2py/routes.py rename to sahana/lxc/srv/web2py/routes.py diff --git a/sahana/docker/srv/web2py/run_scheduler.py b/sahana/lxc/srv/web2py/run_scheduler.py similarity index 100% rename from sahana/docker/srv/web2py/run_scheduler.py rename to sahana/lxc/srv/web2py/run_scheduler.py diff --git a/sahana/lxcfile b/sahana/lxcfile new file mode 100644 index 0000000..5aac0e6 --- /dev/null +++ b/sahana/lxcfile @@ -0,0 +1,67 @@ +IMAGE sahana +LAYER shared/alpine +LAYER shared/libxml +LAYER shared/python2 +LAYER sahana/sahana + +RUN EOF + # Add edge/testing repository + echo '@edge http://dl-cdn.alpinelinux.org/alpine/edge/testing' >>/etc/apk/repositories + + # Install runtime dependencies + apk --no-cache add geos@edge nginx py-gdal@edge py2-dateutil py2-lxml py2-numpy py2-pillow py2-psycopg2 py2-requests uwsgi-python + + # Install build dependencies + apk --no-cache add --virtual .deps build-base git freetype-dev libpng-dev py-numpy-dev py2-pip python2-dev ttf-dejavu + + # Hackfix for python find_library('c') call + ln -s /lib/ld-musl-x86_64.so.1 /lib/libc.so.1 + + # Install web2py + git clone --recursive https://github.com/web2py/web2py.git /srv/web2py + git -C /srv/web2py checkout 7035398 + git -C /srv/web2py submodule update + + # Fix Web2py urllib import (https://github.com/web2py/pydal/commit/9d2290c) + sed -i 's/import traceback/import traceback\nimport urllib/' /srv/web2py/gluon/packages/dal/pydal/base.py + + # Symlink WSGI handler + ln -s /srv/web2py/handlers/wsgihandler.py /srv/web2py/wsgihandler.py + + # Install Sahana + git clone --depth 1 https://github.com/sahana/eden.git /srv/web2py/applications/eden + + # Install python dependencies, exclude old or unnecessary ones + sed -i 's/^ansible/#ansible/' /srv/web2py/applications/eden/optional_requirements.txt + sed -i 's/^boto/#boto/' /srv/web2py/applications/eden/optional_requirements.txt + sed -i 's/^PIL/#PIL/' /srv/web2py/applications/eden/optional_requirements.txt + sed -i 's/^PyRTF/#PyRTF/' /srv/web2py/applications/eden/optional_requirements.txt + sed -i 's/^PyYAML/#PyYAML/' /srv/web2py/applications/eden/optional_requirements.txt + pip install -r /srv/web2py/applications/eden/optional_requirements.txt + + # Copy fonts with Czech glyphs + cp /usr/share/fonts/ttf-dejavu/DejaVuSerif-Bold.ttf /srv/web2py/applications/eden/static/fonts/DejaVuSerif-Bold.ttf + cp /usr/share/fonts/ttf-dejavu/DejaVuSerif.ttf /srv/web2py/applications/eden/static/fonts/DejaVuSerif.ttf +EOF + +COPY lxc + +RUN EOF + # Create OS user + addgroup -S -g 8001 sahana + adduser -S -u 8001 -h /srv/web2py -s /bin/sh -g sahana -G sahana sahana + chown -R sahana:sahana /srv/web2py + + # Cleanup + apk --no-cache del .deps + find /srv/web2py -name '.git*' -exec rm -rf {} + + rm -r /srv/web2py/applications/admin /srv/web2py/applications/examples /srv/web2py/applications/welcome + rm -r /root/.cache +EOF + +MOUNT /srv/sahana/conf srv/web2py/applications/eden/models +MOUNT /srv/sahana/data/Spotter srv/web2py/applications/eden/modules/templates/Spotter +MOUNT /srv/sahana/data/databases srv/web2py/applications/eden/databases +MOUNT /srv/sahana/data/uploads srv/web2py/applications/eden/uploads + +CMD /bin/s6-svscan /etc/services.d diff --git a/sahana/build.sh b/sahana/setup.sh similarity index 100% rename from sahana/build.sh rename to sahana/setup.sh diff --git a/sahana/createdb.sql b/sahana/setup/createdb.sql similarity index 100% rename from sahana/createdb.sql rename to sahana/setup/createdb.sql diff --git a/sahana/etc/init.d/sahana b/sahana/setup/etc/init.d/sahana similarity index 100% rename from sahana/etc/init.d/sahana rename to sahana/setup/etc/init.d/sahana diff --git a/sahana/srv/sahana/conf/000_config.py b/sahana/setup/srv/sahana/conf/000_config.py similarity index 100% rename from sahana/srv/sahana/conf/000_config.py rename to sahana/setup/srv/sahana/conf/000_config.py diff --git a/sahana/srv/sahana/conf/00_settings.py b/sahana/setup/srv/sahana/conf/00_settings.py similarity index 100% rename from sahana/srv/sahana/conf/00_settings.py rename to sahana/setup/srv/sahana/conf/00_settings.py diff --git a/sahana/srv/sahana/data/Spotter/DefaultItems.csv b/sahana/setup/srv/sahana/data/Spotter/DefaultItems.csv similarity index 100% rename from sahana/srv/sahana/data/Spotter/DefaultItems.csv rename to sahana/setup/srv/sahana/data/Spotter/DefaultItems.csv diff --git a/sahana/srv/sahana/data/Spotter/DefaultSkillCompetency.csv b/sahana/setup/srv/sahana/data/Spotter/DefaultSkillCompetency.csv similarity index 100% rename from sahana/srv/sahana/data/Spotter/DefaultSkillCompetency.csv rename to sahana/setup/srv/sahana/data/Spotter/DefaultSkillCompetency.csv diff --git a/sahana/srv/sahana/data/Spotter/DefaultSkillList.csv b/sahana/setup/srv/sahana/data/Spotter/DefaultSkillList.csv similarity index 100% rename from sahana/srv/sahana/data/Spotter/DefaultSkillList.csv rename to sahana/setup/srv/sahana/data/Spotter/DefaultSkillList.csv diff --git a/sahana/srv/sahana/data/Spotter/DrivingSkillList.csv b/sahana/setup/srv/sahana/data/Spotter/DrivingSkillList.csv similarity index 100% rename from sahana/srv/sahana/data/Spotter/DrivingSkillList.csv rename to sahana/setup/srv/sahana/data/Spotter/DrivingSkillList.csv diff --git a/sahana/srv/sahana/data/Spotter/DrivingSkillList_EU.csv b/sahana/setup/srv/sahana/data/Spotter/DrivingSkillList_EU.csv similarity index 100% rename from sahana/srv/sahana/data/Spotter/DrivingSkillList_EU.csv rename to sahana/setup/srv/sahana/data/Spotter/DrivingSkillList_EU.csv diff --git a/sahana/srv/sahana/data/Spotter/LanguageCompetency.csv b/sahana/setup/srv/sahana/data/Spotter/LanguageCompetency.csv similarity index 100% rename from sahana/srv/sahana/data/Spotter/LanguageCompetency.csv rename to sahana/setup/srv/sahana/data/Spotter/LanguageCompetency.csv diff --git a/sahana/srv/sahana/data/Spotter/LanguageSkillList.csv b/sahana/setup/srv/sahana/data/Spotter/LanguageSkillList.csv similarity index 100% rename from sahana/srv/sahana/data/Spotter/LanguageSkillList.csv rename to sahana/setup/srv/sahana/data/Spotter/LanguageSkillList.csv diff --git a/sahana/srv/sahana/data/Spotter/StandardItems.csv b/sahana/setup/srv/sahana/data/Spotter/StandardItems.csv similarity index 100% rename from sahana/srv/sahana/data/Spotter/StandardItems.csv rename to sahana/setup/srv/sahana/data/Spotter/StandardItems.csv diff --git a/sahana/srv/sahana/data/Spotter/__init__.py b/sahana/setup/srv/sahana/data/Spotter/__init__.py similarity index 100% rename from sahana/srv/sahana/data/Spotter/__init__.py rename to sahana/setup/srv/sahana/data/Spotter/__init__.py diff --git a/sahana/srv/sahana/data/Spotter/auth_roles.csv b/sahana/setup/srv/sahana/data/Spotter/auth_roles.csv similarity index 100% rename from sahana/srv/sahana/data/Spotter/auth_roles.csv rename to sahana/setup/srv/sahana/data/Spotter/auth_roles.csv diff --git a/sahana/srv/sahana/data/Spotter/certificate.csv b/sahana/setup/srv/sahana/data/Spotter/certificate.csv similarity index 100% rename from sahana/srv/sahana/data/Spotter/certificate.csv rename to sahana/setup/srv/sahana/data/Spotter/certificate.csv diff --git a/sahana/srv/sahana/data/Spotter/cms_post.csv b/sahana/setup/srv/sahana/data/Spotter/cms_post.csv similarity index 100% rename from sahana/srv/sahana/data/Spotter/cms_post.csv rename to sahana/setup/srv/sahana/data/Spotter/cms_post.csv diff --git a/sahana/srv/sahana/data/Spotter/config.py b/sahana/setup/srv/sahana/data/Spotter/config.py similarity index 100% rename from sahana/srv/sahana/data/Spotter/config.py rename to sahana/setup/srv/sahana/data/Spotter/config.py diff --git a/sahana/srv/sahana/data/Spotter/css.cfg b/sahana/setup/srv/sahana/data/Spotter/css.cfg similarity index 100% rename from sahana/srv/sahana/data/Spotter/css.cfg rename to sahana/setup/srv/sahana/data/Spotter/css.cfg diff --git a/sahana/srv/sahana/data/Spotter/dvr_case_status.csv b/sahana/setup/srv/sahana/data/Spotter/dvr_case_status.csv similarity index 100% rename from sahana/srv/sahana/data/Spotter/dvr_case_status.csv rename to sahana/setup/srv/sahana/data/Spotter/dvr_case_status.csv diff --git a/sahana/srv/sahana/data/Spotter/event_type.csv b/sahana/setup/srv/sahana/data/Spotter/event_type.csv similarity index 100% rename from sahana/srv/sahana/data/Spotter/event_type.csv rename to sahana/setup/srv/sahana/data/Spotter/event_type.csv diff --git a/sahana/srv/sahana/data/Spotter/gis_config.csv b/sahana/setup/srv/sahana/data/Spotter/gis_config.csv similarity index 100% rename from sahana/srv/sahana/data/Spotter/gis_config.csv rename to sahana/setup/srv/sahana/data/Spotter/gis_config.csv diff --git a/sahana/srv/sahana/data/Spotter/gis_hierarchy.csv b/sahana/setup/srv/sahana/data/Spotter/gis_hierarchy.csv similarity index 100% rename from sahana/srv/sahana/data/Spotter/gis_hierarchy.csv rename to sahana/setup/srv/sahana/data/Spotter/gis_hierarchy.csv diff --git a/sahana/srv/sahana/data/Spotter/gis_layer_bing.csv b/sahana/setup/srv/sahana/data/Spotter/gis_layer_bing.csv similarity index 100% rename from sahana/srv/sahana/data/Spotter/gis_layer_bing.csv rename to sahana/setup/srv/sahana/data/Spotter/gis_layer_bing.csv diff --git a/sahana/srv/sahana/data/Spotter/gis_layer_coordinate.csv b/sahana/setup/srv/sahana/data/Spotter/gis_layer_coordinate.csv similarity index 100% rename from sahana/srv/sahana/data/Spotter/gis_layer_coordinate.csv rename to sahana/setup/srv/sahana/data/Spotter/gis_layer_coordinate.csv diff --git a/sahana/srv/sahana/data/Spotter/gis_layer_feature.csv b/sahana/setup/srv/sahana/data/Spotter/gis_layer_feature.csv similarity index 100% rename from sahana/srv/sahana/data/Spotter/gis_layer_feature.csv rename to sahana/setup/srv/sahana/data/Spotter/gis_layer_feature.csv diff --git a/sahana/srv/sahana/data/Spotter/gis_layer_geojson.csv b/sahana/setup/srv/sahana/data/Spotter/gis_layer_geojson.csv similarity index 100% rename from sahana/srv/sahana/data/Spotter/gis_layer_geojson.csv rename to sahana/setup/srv/sahana/data/Spotter/gis_layer_geojson.csv diff --git a/sahana/srv/sahana/data/Spotter/gis_layer_georss.csv b/sahana/setup/srv/sahana/data/Spotter/gis_layer_georss.csv similarity index 100% rename from sahana/srv/sahana/data/Spotter/gis_layer_georss.csv rename to sahana/setup/srv/sahana/data/Spotter/gis_layer_georss.csv diff --git a/sahana/srv/sahana/data/Spotter/gis_layer_google.csv b/sahana/setup/srv/sahana/data/Spotter/gis_layer_google.csv similarity index 100% rename from sahana/srv/sahana/data/Spotter/gis_layer_google.csv rename to sahana/setup/srv/sahana/data/Spotter/gis_layer_google.csv diff --git a/sahana/srv/sahana/data/Spotter/gis_layer_mgrs.csv b/sahana/setup/srv/sahana/data/Spotter/gis_layer_mgrs.csv similarity index 100% rename from sahana/srv/sahana/data/Spotter/gis_layer_mgrs.csv rename to sahana/setup/srv/sahana/data/Spotter/gis_layer_mgrs.csv diff --git a/sahana/srv/sahana/data/Spotter/gis_layer_openstreetmap.csv b/sahana/setup/srv/sahana/data/Spotter/gis_layer_openstreetmap.csv similarity index 100% rename from sahana/srv/sahana/data/Spotter/gis_layer_openstreetmap.csv rename to sahana/setup/srv/sahana/data/Spotter/gis_layer_openstreetmap.csv diff --git a/sahana/srv/sahana/data/Spotter/gis_layer_openweathermap.csv b/sahana/setup/srv/sahana/data/Spotter/gis_layer_openweathermap.csv similarity index 100% rename from sahana/srv/sahana/data/Spotter/gis_layer_openweathermap.csv rename to sahana/setup/srv/sahana/data/Spotter/gis_layer_openweathermap.csv diff --git a/sahana/srv/sahana/data/Spotter/gis_layer_tms.csv b/sahana/setup/srv/sahana/data/Spotter/gis_layer_tms.csv similarity index 100% rename from sahana/srv/sahana/data/Spotter/gis_layer_tms.csv rename to sahana/setup/srv/sahana/data/Spotter/gis_layer_tms.csv diff --git a/sahana/srv/sahana/data/Spotter/gis_layer_wms.csv b/sahana/setup/srv/sahana/data/Spotter/gis_layer_wms.csv similarity index 100% rename from sahana/srv/sahana/data/Spotter/gis_layer_wms.csv rename to sahana/setup/srv/sahana/data/Spotter/gis_layer_wms.csv diff --git a/sahana/srv/sahana/data/Spotter/gis_marker.csv b/sahana/setup/srv/sahana/data/Spotter/gis_marker.csv similarity index 100% rename from sahana/srv/sahana/data/Spotter/gis_marker.csv rename to sahana/setup/srv/sahana/data/Spotter/gis_marker.csv diff --git a/sahana/srv/sahana/data/Spotter/incident_type.csv b/sahana/setup/srv/sahana/data/Spotter/incident_type.csv similarity index 100% rename from sahana/srv/sahana/data/Spotter/incident_type.csv rename to sahana/setup/srv/sahana/data/Spotter/incident_type.csv diff --git a/sahana/srv/sahana/data/Spotter/layouts.py b/sahana/setup/srv/sahana/data/Spotter/layouts.py similarity index 100% rename from sahana/srv/sahana/data/Spotter/layouts.py rename to sahana/setup/srv/sahana/data/Spotter/layouts.py diff --git a/sahana/srv/sahana/data/Spotter/maintenance.py b/sahana/setup/srv/sahana/data/Spotter/maintenance.py similarity index 100% rename from sahana/srv/sahana/data/Spotter/maintenance.py rename to sahana/setup/srv/sahana/data/Spotter/maintenance.py diff --git a/sahana/srv/sahana/data/Spotter/masterUsers.csv b/sahana/setup/srv/sahana/data/Spotter/masterUsers.csv similarity index 100% rename from sahana/srv/sahana/data/Spotter/masterUsers.csv rename to sahana/setup/srv/sahana/data/Spotter/masterUsers.csv diff --git a/sahana/srv/sahana/data/Spotter/membership_type.csv b/sahana/setup/srv/sahana/data/Spotter/membership_type.csv similarity index 100% rename from sahana/srv/sahana/data/Spotter/membership_type.csv rename to sahana/setup/srv/sahana/data/Spotter/membership_type.csv diff --git a/sahana/srv/sahana/data/Spotter/menus.py b/sahana/setup/srv/sahana/data/Spotter/menus.py similarity index 100% rename from sahana/srv/sahana/data/Spotter/menus.py rename to sahana/setup/srv/sahana/data/Spotter/menus.py diff --git a/sahana/srv/sahana/data/Spotter/monitor.py b/sahana/setup/srv/sahana/data/Spotter/monitor.py similarity index 100% rename from sahana/srv/sahana/data/Spotter/monitor.py rename to sahana/setup/srv/sahana/data/Spotter/monitor.py diff --git a/sahana/srv/sahana/data/Spotter/office_type.csv b/sahana/setup/srv/sahana/data/Spotter/office_type.csv similarity index 100% rename from sahana/srv/sahana/data/Spotter/office_type.csv rename to sahana/setup/srv/sahana/data/Spotter/office_type.csv diff --git a/sahana/srv/sahana/data/Spotter/org_sector.csv b/sahana/setup/srv/sahana/data/Spotter/org_sector.csv similarity index 100% rename from sahana/srv/sahana/data/Spotter/org_sector.csv rename to sahana/setup/srv/sahana/data/Spotter/org_sector.csv diff --git a/sahana/srv/sahana/data/Spotter/organisation_type.csv b/sahana/setup/srv/sahana/data/Spotter/organisation_type.csv similarity index 100% rename from sahana/srv/sahana/data/Spotter/organisation_type.csv rename to sahana/setup/srv/sahana/data/Spotter/organisation_type.csv diff --git a/sahana/srv/sahana/data/Spotter/parser.py b/sahana/setup/srv/sahana/data/Spotter/parser.py similarity index 100% rename from sahana/srv/sahana/data/Spotter/parser.py rename to sahana/setup/srv/sahana/data/Spotter/parser.py diff --git a/sahana/srv/sahana/data/Spotter/project_activity_type.csv b/sahana/setup/srv/sahana/data/Spotter/project_activity_type.csv similarity index 100% rename from sahana/srv/sahana/data/Spotter/project_activity_type.csv rename to sahana/setup/srv/sahana/data/Spotter/project_activity_type.csv diff --git a/sahana/srv/sahana/data/Spotter/project_beneficiary_type.csv b/sahana/setup/srv/sahana/data/Spotter/project_beneficiary_type.csv similarity index 100% rename from sahana/srv/sahana/data/Spotter/project_beneficiary_type.csv rename to sahana/setup/srv/sahana/data/Spotter/project_beneficiary_type.csv diff --git a/sahana/srv/sahana/data/Spotter/project_hazard.csv b/sahana/setup/srv/sahana/data/Spotter/project_hazard.csv similarity index 100% rename from sahana/srv/sahana/data/Spotter/project_hazard.csv rename to sahana/setup/srv/sahana/data/Spotter/project_hazard.csv diff --git a/sahana/srv/sahana/data/Spotter/project_status.csv b/sahana/setup/srv/sahana/data/Spotter/project_status.csv similarity index 100% rename from sahana/srv/sahana/data/Spotter/project_status.csv rename to sahana/setup/srv/sahana/data/Spotter/project_status.csv diff --git a/sahana/srv/sahana/data/Spotter/project_theme.csv b/sahana/setup/srv/sahana/data/Spotter/project_theme.csv similarity index 100% rename from sahana/srv/sahana/data/Spotter/project_theme.csv rename to sahana/setup/srv/sahana/data/Spotter/project_theme.csv diff --git a/sahana/srv/sahana/data/Spotter/shelter_type.csv b/sahana/setup/srv/sahana/data/Spotter/shelter_type.csv similarity index 100% rename from sahana/srv/sahana/data/Spotter/shelter_type.csv rename to sahana/setup/srv/sahana/data/Spotter/shelter_type.csv diff --git a/sahana/srv/sahana/data/Spotter/tasks.cfg b/sahana/setup/srv/sahana/data/Spotter/tasks.cfg similarity index 100% rename from sahana/srv/sahana/data/Spotter/tasks.cfg rename to sahana/setup/srv/sahana/data/Spotter/tasks.cfg diff --git a/sahana/srv/sahana/data/Spotter/tests.py b/sahana/setup/srv/sahana/data/Spotter/tests.py similarity index 100% rename from sahana/srv/sahana/data/Spotter/tests.py rename to sahana/setup/srv/sahana/data/Spotter/tests.py diff --git a/sahana/srv/sahana/data/Spotter/views/footer.html b/sahana/setup/srv/sahana/data/Spotter/views/footer.html similarity index 100% rename from sahana/srv/sahana/data/Spotter/views/footer.html rename to sahana/setup/srv/sahana/data/Spotter/views/footer.html diff --git a/sahana/srv/sahana/data/Spotter/views/layout.html b/sahana/setup/srv/sahana/data/Spotter/views/layout.html similarity index 100% rename from sahana/srv/sahana/data/Spotter/views/layout.html rename to sahana/setup/srv/sahana/data/Spotter/views/layout.html diff --git a/sahana/srv/sahana/data/Spotter/work_job_type.csv b/sahana/setup/srv/sahana/data/Spotter/work_job_type.csv similarity index 100% rename from sahana/srv/sahana/data/Spotter/work_job_type.csv rename to sahana/setup/srv/sahana/data/Spotter/work_job_type.csv diff --git a/sahana/sahana-lang-csv.py b/zz-extra/sahana-lang-csv.py similarity index 100% rename from sahana/sahana-lang-csv.py rename to zz-extra/sahana-lang-csv.py