From 96f9c530ea38585aced7bf1a6abe50d3d3911c37 Mon Sep 17 00:00:00 2001 From: Christopher Allan Webber Date: Wed, 8 Oct 2014 12:55:44 -0500 Subject: [PATCH] Most of the way to having a desirable `./configure && make` setup Tries to simplify a lot of the configure code. This is mostly because I found what I expected the previous configure setup to do wasn't quite what it was doing. Also supports a --with-python3 option. --- Makefile.in | 24 +++++++---- configure.ac | 75 +++++++++++++++++++++++------------ paste.py2.ini | 81 ++++++++++++++++++++++++++++++++++++++ paste.ini => paste.py3.ini | 0 4 files changed, 147 insertions(+), 33 deletions(-) create mode 100644 paste.py2.ini rename paste.ini => paste.py3.ini (100%) diff --git a/Makefile.in b/Makefile.in index d874674a..5eb08da4 100644 --- a/Makefile.in +++ b/Makefile.in @@ -24,8 +24,6 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ VIRTUALENV = @VIRTUALENV@ -SPHINXBUILD = @SPHINXBUILD@ -POSTGRES = @POSTGRES@ SHELL = @SHELL@ MKDIR_P = @MKDIR_P@ INSTALL = @INSTALL@ @@ -43,14 +41,18 @@ srcdir = @srcdir@ abs_srcdir = @abs_srcdir@ datadir = @datadir@ datarootdir = @datarootdir@ -pythondir = @pythondir@ -pyexecdir = @pyexecdir@ pkgdatadir = $(datadir)/@PACKAGE_NAME@ pkgincludedir = $(includedir)/@PACKAGE_NAME@ -pkgpythondir = @pkgpythondir@ -pkgpyexecdir = @pkgpyexecdir@ PYTHONPATH = $(pythondir)$(PATH_SEPARATOR)$(DESTDIR)$(pythondir) +# pkgpythondir = @pkgpythondir@ +# pkgpyexecdir = @pkgpyexecdir@ +# pythondir = @pythondir@ +# pyexecdir = @pyexecdir@ +# SPHINXBUILD = @SPHINXBUILD@ +# POSTGRES = @POSTGRES@ + + # Maybe add a virtualenv prefix to a command ifneq ($(VIRTUALENV),no) # virtualenv specified to be included by config (default) @@ -80,9 +82,11 @@ installdirs i18n virtualenv all: develop -develop: +develop: $(maybe_venv_dep) i18n echo "nothin yet" +# base-configs: paste.ini mediagoblin.example.ini + install: installdirs $(maybe_venved_python) $(srcdir)/setup.py install --prefix=$(DESTDIR)$(prefix) @@ -98,6 +102,10 @@ ifneq ($(VIRTUALENV),no) ./bin/python setup.py develop --upgrade virtualenv: bin/python + +clean-virtualenv: + rm -rf ./bin/ + rm -rf ./lib/ endif # setup.py doesn't (yet) support an uninstall command, so until it does, you @@ -123,6 +131,8 @@ distclean: rm -rvf $(srcdir)/autom4te.cache rm -v $(srcdir)/aclocal.m4 rm -v $(srcdir)/Makefile + rm -v $(srcdir)/env + # You can either use the setup.py sdist command or you can roll your own here dist: diff --git a/configure.ac b/configure.ac index 40d045f0..77b1eedd 100644 --- a/configure.ac +++ b/configure.ac @@ -46,7 +46,7 @@ dnl 2) package version (i.e. 1.2) dnl 3) bug/info/project email address (i.e. bug-foo@gnu.org) dnl---- dnl -AC_INIT([mediagoblin], [0.4.0.dev], [cwebber@gnu.org]) +AC_INIT([mediagoblin], [0.7.1.dev], [cwebber@gnu.org]) dnl---- @@ -69,6 +69,27 @@ dnl dnl In this section, we check for the presence of important commands dnl and programs. +AC_ARG_WITH([python3], + [AS_HELP_STRING([--with-python3], [Set up to use Python 3 by default.])], + [], + [with_python3=no]) +AS_IF([test "x$with_python3" != xno], + AC_CHECK_PROGS([PYTHON], [python3.3], [none]) + AS_IF([test "x$PYTHON" = xnone], + [AC_MSG_FAILURE( + [--with-python3 given but no acceptable python3 (3.3) could be found])]), + AC_CHECK_PROGS([PYTHON], [python2.7 python2.6], [none]) + AS_IF([test "x$PYTHON" = xnone], + [AC_MSG_FAILURE( + [No acceptable pythons (2.7, 2.6) could be found])])) + + + +dnl--A bit simpler python init---------------------------------------- +dnl Expect python2.7 or python2.6 unless --with-python3 is given. +dnl---- + + dnl--PC_INIT---------------------------------------------------------- dnl This is the only required macro. Its primary function is to find dnl a Python interpreter that is compatible with the package and set @@ -85,8 +106,7 @@ dnl series and the max is in the 3.0 series, non-existent dnl releases (2.8 & 2.9) will be correctly skipped. dnl---- dnl -dnl PC_INIT([2.7], [3.3.1]) - +dnl PC_INIT([3.3], [3.4]) dnl--PC_PROG_PYTHON--------------------------------------------------- dnl This macro provides a means of finding a Python interpreter. @@ -113,10 +133,10 @@ dnl you require a specific version, you can do something like the dnl following example. dnl---- dnl -PC_PYTHON_PROG_PYTHON_CONFIG([python2-config]) -if [[ "x$PYTHON_CONFIG" == "x" ]]; then - PC_PYTHON_PROG_PYTHON_CONFIG([$PYTHON-config]) -fi +dnl PC_PYTHON_PROG_PYTHON_CONFIG([python2-config]) +dnl if [[ "x$PYTHON_CONFIG" == "x" ]]; then +dnl PC_PYTHON_PROG_PYTHON_CONFIG([$PYTHON-config]) +dnl fi dnl---- dnl With the following set of macros, we implement an option @@ -151,10 +171,10 @@ dnl print a warning. If the program uses some other documentation dnl system, you can do something similar with it. dnl---- dnl -# Check for sphinx-build -AC_CHECK_PROGS([SPHINXBUILD], [sphinx-build sphinx-build3 sphinx-build2], [no]) -AS_IF([test "x$SPHINXBUILD" = xno], - AC_MSG_WARN(sphinx-build is required to build documentation)) +dnl # Check for sphinx-build +dnl AC_CHECK_PROGS([SPHINXBUILD], [sphinx-build sphinx-build3 sphinx-build2], [no]) +dnl AS_IF([test "x$SPHINXBUILD" = xno], +dnl AC_MSG_WARN(sphinx-build is required to build documentation)) dnl---- @@ -165,11 +185,14 @@ dnl AC_PROG_MKDIR_P AC_PROG_INSTALL -# Check for a supported database program -AC_PATH_PROG([SQLITE], [sqlite3]) -AC_PATH_PROG([POSTGRES], [psql]) -AS_IF([test "x$SQLITE" = x -a "x$POSTGRES" = "x"], - [AC_MSG_ERROR([SQLite or PostgreSQL is required])]) +dnl######################################## +dnl Database stuff... maybe restore this? # +dnl######################################## +dnl # Check for a supported database program +dnl AC_PATH_PROG([SQLITE], [sqlite3]) +dnl AC_PATH_PROG([POSTGRES], [psql]) +dnl AS_IF([test "x$SQLITE" = x -a "x$POSTGRES" = "x"], +dnl [AC_MSG_ERROR([SQLite or PostgreSQL is required])]) dnl################################# @@ -239,7 +262,7 @@ dnl provide compatibility with GNU Makefile specifications, allowing dnl the user to change the prefix from the commandline. dnl---- dnl -PC_PYTHON_SITE_PACKAGE_DIR +dnl PC_PYTHON_SITE_PACKAGE_DIR dnl--PC_PYTHON_CHECK_EXEC_DIR------------------------------------------ @@ -254,7 +277,7 @@ dnl Same as PC_PYTHON_SITE_PACKAGE_DIR but for $exec-prefix. Stored in dnl pkgpyexecdir dnl---- dnl -PC_PYTHON_EXEC_PACKAGE_DIR +dnl PC_PYTHON_EXEC_PACKAGE_DIR dnl############################### @@ -270,13 +293,13 @@ dnl dnl PC_PYTHON_CHECK_MODULE([foo]) -# Check for python-lxml module -PC_PYTHON_CHECK_MODULE([lxml], [], - [AC_MSG_ERROR([python-lxml is required])]) - -# Check for the Python Imaging Library -PC_PYTHON_CHECK_MODULE([Image], [], - [AC_MSG_ERROR([Python Imaging Library is required])]) +dnl # Check for python-lxml module +dnl PC_PYTHON_CHECK_MODULE([lxml], [], +dnl [AC_MSG_ERROR([python-lxml is required])]) +dnl +dnl # Check for the Python Imaging Library +dnl PC_PYTHON_CHECK_MODULE([Image], [], +dnl [AC_MSG_ERROR([Python Imaging Library is required])]) dnl--PC_PYTHON_CHECK_FUNC([PYTHON-MODULE], [FUNCTION], [ARGS], @@ -402,7 +425,7 @@ dnl dnl PC_PYTHON_CHECK_ABI_FLAGS -dnl--MediaGoblin specific variables ---------------------------------- +dnl--MediaGoblin specific commands/variables ------------------------ dnl######### diff --git a/paste.py2.ini b/paste.py2.ini new file mode 100644 index 00000000..92cb4a1c --- /dev/null +++ b/paste.py2.ini @@ -0,0 +1,81 @@ +# If you want to make changes to this file, first copy it to +# paste_local.ini, then make the changes there. + +[DEFAULT] +# Set to true to enable web-based debugging messages and etc. +debug = false + +[pipeline:main] +# pipeline = errors mediagoblin +pipeline = mediagoblin + +[app:mediagoblin] +use = egg:mediagoblin#app +config = %(here)s/mediagoblin_local.ini %(here)s/mediagoblin.ini +# static paths +/mgoblin_media = %(here)s/user_dev/media/public +/mgoblin_static = %(here)s/mediagoblin/static +/theme_static = %(here)s/user_dev/theme_static +/plugin_static = %(here)s/user_dev/plugin_static + +[loggers] +keys = root + +[handlers] +keys = console + +[formatters] +keys = generic + +[logger_root] +level = INFO +handlers = console + +[handler_console] +class = StreamHandler +args = (sys.stderr,) +level = NOTSET +formatter = generic + +[formatter_generic] +format = %(asctime)s %(levelname)-7.7s [%(name)s] %(message)s + +[filter:errors] +use = egg:mediagoblin#errors +debug = false + + +############################## +# Server configuration options +############################## + +# The server that is run by default. +# By default, should only be accessable locally +[server:main] +use = egg:Paste#http +host = 127.0.0.1 +port = 6543 + +####################### +# Helper server configs +# --------------------- +# If you are configuring the paste config manually, you can remove +# these. + +# Use this if you want to run on port 6543 and have MediaGoblin be +# viewable externally +[server:broadcast] +use = egg:Paste#http +host = 0.0.0.0 +port = 6543 + +# Use this if you want to connect via fastcgi +[server:fcgi] +use = egg:flup#fcgi_fork +host = %(fcgi_host)s +port = %(fcgi_port)s + +[server:http] +use = egg:Paste#http +host = %(http_host)s +port = %(http_port)s diff --git a/paste.ini b/paste.py3.ini similarity index 100% rename from paste.ini rename to paste.py3.ini -- 2.25.1