# Makefile.in
#
# Copyright © 2012, 2013 Brandon Invergo <brandon@invergo.net>
+# Copyright © 2014, 2015 Christopher Allan Webber <cwebber@dustycloud.org>
#
# Copying and distribution of this file, with or without modification,
# are permitted in any medium without royalty provided the copyright
PATH_SEPARATOR = @PATH_SEPARATOR@
PYTHON = @PYTHON@
VIRTUALENV = @VIRTUALENV@
-SPHINXBUILD = @SPHINXBUILD@
-POSTGRES = @POSTGRES@
SHELL = @SHELL@
MKDIR_P = @MKDIR_P@
INSTALL = @INSTALL@
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)
+USE_PYTHON3 = @USE_PYTHON3@
-all: install
+EXTLIB_INSTALLS = extlib/jquery extlib/video.js extlib/leaflet extlib/tinymce
-.PHONY: all install develop uninstall distclean info install-html html \
-install-pdf pdf install-dvi dvi install-ps ps clean dist check \
-installdirs postgresql update
+# pkgpythondir = @pkgpythondir@
+# pkgpyexecdir = @pkgpyexecdir@
+# pythondir = @pythondir@
+# pyexecdir = @pyexecdir@
+# SPHINXBUILD = @SPHINXBUILD@
+# POSTGRES = @POSTGRES@
-# Since installing to a virtualenv is all the rage these days, support
-# it here. If the VIRTUALENV variable is set to anything other than
-# "no", set up a new virtualenv and install there, otherwise install
-# as usual from setup.py
-install: installdirs
- $(NORMAL_INSTALL)
+
+# Maybe add a virtualenv prefix to a command
ifneq ($(VIRTUALENV),no)
- $(VIRTUALENV) $(VIRTUALENV_FLAGS) --python=$(PYTHON) \
- --system-site-packages $(DESTDIR)$(prefix) || \
- $(VIRTUALENV) $(DESTDIR)$(prefix)
- $(DESTDIR)$(prefix)/bin/python $(srcdir)/setup.py install \
- --prefix=$(DESTDIR)$(prefix)
+# virtualenv specified to be included by config (default)
+# ... we only use virtualenv for local development, we don't
+# auto-deploy to it.
+
+maybe_venved = ./bin/
+maybe_venved_python = ./bin/python
+# Yes, build the virtualenv as a dependency!
+maybe_venv_dep = virtualenv
+# And to clean up!
+maybe_venv_clean = clean-virtualenv
+
else
- $(PYTHON) $(srcdir)/setup.py install --prefix=$(DESTDIR)$(prefix)
+# --without-virtualenv must have been passed in... don't build
+# a local virtualenv or use such commands
+maybe_venved =
+maybe_venved_python = $(PYTHON)
+# No need for commands to build virtualenv as a dependency!
+maybe_venv_dep =
+# Nor to clean up!
+maybe_venv_clean =
endif
- if [[ $(DESTDIR)$(prefix) != $(abs_srcdir) ]]; then \
- $(INSTALL_DATA) $(srcdir)/Makefile $(DESTDIR)$(prefix)/Makefile; \
- $(INSTALL_DATA) $(srcdir)/lazycelery.sh $(DESTDIR)$(prefix)/lazycelery.sh; \
- $(INSTALL_DATA) $(srcdir)/lazyserver.sh $(DESTDIR)$(prefix)/lazyserver.sh; \
- fi
-
-# The same as "install", except use the "develop" setup.py target
-develop: installdirs
- $(NORMAL_INSTALL)
+
+.PHONY: all install uninstall distclean info install-html html \
+install-pdf pdf install-dvi dvi install-ps ps clean dist check \
+installdirs i18n virtualenv docs extlib
+
+# update postgresql
+
+all: develop
+
+docs:
ifneq ($(VIRTUALENV),no)
- $(VIRTUALENV) $(VIRTUALENV_FLAGS) --python=$(PYTHON) \
- --system-site-packages $(DESTDIR)$(prefix) || \
- $(VIRTUALENV) $(DESTDIR)$(prefix)
- $(DESTDIR)$(prefix)/bin/python $(srcdir)/setup.py develop \
- --prefix=$(DESTDIR)$(prefix)
+ source bin/activate && cd docs && make html
else
- $(PYTHON) $(srcdir)/setup.py develop --prefix=$(DESTDIR)$(prefix)
+ cd docs && make html
endif
- if [ "$(DESTDIR)$(prefix)" != "$(abs_srcdir)" ]; then \
- $(INSTALL_DATA) $(srcdir)/Makefile $(DESTDIR)$(prefix)/Makefile; \
- $(INSTALL_DATA) $(srcdir)/lazycelery.sh $(DESTDIR)$(prefix)/lazycelery.sh; \
- $(INSTALL_DATA) $(srcdir)/lazyserver.sh $(DESTDIR)$(prefix)/lazyserver.sh; \
- fi
+# In the future we may provide more options than just npm/bower here
+# eg, we may support guix updating.
+extlib:
+ ./devtools/update_extlib.sh
+
+develop: $(maybe_venv_dep) i18n mediagoblin.ini
+
+# NEVER clobber a user's mediagoblin.ini once they've defined it
+mediagoblin.ini:
+ cp -n mediagoblin.example.ini mediagoblin.ini
+
+# base-configs: paste.ini mediagoblin.example.ini
+
+install: installdirs
+ $(maybe_venved_python) $(srcdir)/setup.py install --prefix=$(DESTDIR)$(prefix)
+
+
+# In the future, maybe we can compile the individual .po files here?
+i18n: $(maybe_venv_dep)
+ ./devtools/compile_translations.sh
+
+
+ifneq ($(VIRTUALENV),no)
+./bin/python:
+ rm -f ./bin/python
+ ${VIRTUALENV} --system-site-packages --python=$(PYTHON) .
+ ./bin/python setup.py develop --upgrade
+
+virtualenv: bin/python extlib
+
+clean-virtualenv:
+ rm -rf ./bin/
+ rm -rf ./lib/
+ rm -rf ./include/
+endif
# setup.py doesn't (yet) support an uninstall command, so until it does, you
# must manually remove everything that was installed here. The following example
# should remove a basic package installed via setup.py, but please double- and
# triple-check it so that you don't remove something you shouldn't!
# Be sure to remove any extra files you install, such as binaries or documentation!
+#
# uninstall:
-# case $(prefix) in
-# /usr|/usr/local )
-# exit 1 ;;
-# /www/*|/srv/* )
-# rm -rvf $(prefix) ;;
-# esac
-
-# Just use the usual setup.py clean command
+# rm -rvf $(pkgpythondir)
+# rm -v $(pythondir)/$(PACKAGE_DISTNAME)-*.egg-info
+#
+
+# We don't know what this does yet.
+# Originally:
+## Just use the usual setup.py clean command
+#clean:
+# $(maybe_venved_python) setup.py clean
clean:
- $(PYTHON) setup.py clean
+ @echo "No rule to clean house, yet."
+ @echo "distclean works but might do more than you want. :)"
+
+# It's not obvious to me whether the virtualenv/bower/npm things should be
+# auto-cleaned as part of distclean. I'm leaning towards "yes" for now but
+# I'm not really happy about that.
# Clean up the output of configure
-distclean:
- rm -v $(srcdir)/config.log
- rm -v $(srcdir)/config.status
+distclean: $(maybe_venv_clean)
+ rm -vf $(srcdir)/config.log
+ rm -vf $(srcdir)/config.status
rm -rvf $(srcdir)/autom4te.cache
- rm -v $(srcdir)/aclocal.m4
- rm -v $(srcdir)/Makefile
-
-# You can either use the setup.py sdist command or you can roll your own here
-dist:
-# $(PYTHON) setup.py sdist
- mkdir $(PACKAGE_DISTNAME)
- cp -r $(DISTFILES) $(PACKAGE_DISTNAME)
- tar -czf $(PACKAGE_DISTNAME).tar.gz $(PACKAGE_DISTNAME)
- rm -rf $(PACKAGE_DISTNAME)
-
-# Use the setup.py check command
+ rm -vf $(srcdir)/aclocal.m4
+ rm -rf $(EXTLIB_INSTALLS)
+ rm -rf node_modules
+ rm -vf $(srcdir)/Makefile
+
check:
- $(PYTHON) setup.py check
+ ./runtests.sh
+
+###########################################################################
+# These things aren't really tested / supported yet.
+###########################################################################
+
+
+## NOTE: We don't use this yet, we use ./devtools/maketarball.sh
+## We can't switch out ./devtools/maketarball.sh in here because
+## it requires a git revision as a first argument, which
+## doesn't always work here
+
+dist: $(maybe_venv_dep)
+ $(maybe_venved_python) setup.py sdist
# setup.py might complain if a directory doesn't exist so just in case, make the directory
# here
installdirs:
$(MKDIR_P) $(DESTDIR)$(prefix)
-# Set up PostgreSQL
-postgresql:
- sudo -u $(POSTGRES) createuser mediagoblin
- sudo -u $(POSTGRES) createdb -E UNICODE -O mediagoblin mediagoblin
-
-update:
-ifneq ($(VIRTUALENV),no)
- $(prefix)/bin/python $(srcdir)/setup.py develop --prefix=$(prefix) --upgrade
-else
- $(PYTHON) $(srcdir)/setup.py develop --prefix=$(prefix) --upgrade
-endif
- $(prefix)/bin/gmg dbupdate
+######################
+# Needs to be updated?
+######################
# The following show how to install documentation. In this example,
# docs are built from a separate Makefile contained in the docs
info: docs/build/texinfo/mediagoblin.info
docs/build/texinfo/mediagoblin.info: $(wildcard docs/source/*)
-ifneq ($(SPHINXBUILD),no)
- $(MAKE) -C docs info SPHINXBUILD=$(SPHINXBUILD)
+ifneq ($(VIRTUALENV),no)
+ source bin/activate && cd docs && make info
+else
+ cd docs && make info
endif
install-html: html installdirs
$(INSTALL_DATA) docs/build/html/* $(DESTDIR)$(htmldir)
-html: docs/build/html/index.html
-
-docs/build/html/index.html: $(wildcard $(srcdir)/docs/source/*)
-ifneq ($(SPHINXBUILD),no)
- $(MAKE) -C docs html SPHINXBUILD=$(SPHINXBUILD)
-endif
-
-
-install-pdf: pdf installdirs
- $(INSTALL_DATA) docs/build/latex/mediagoblin.pdf $(DESTDIR)$(pdfdir)
-
-pdf: docs/build/latex/mediagoblin.pdf
-
-docs/build/latex/mediagoblin.pdf: $(wildcard $(srcdir)/docs/source/*)
-ifneq ($(SPHINXBUILD),no)
- $(MAKE) -C docs latexpdf SPHINXBUILD=$(SPHINXBUILD)
-endif
-
-
-install-dvi:
-
-dvi:
-
-install-ps:
-
-ps:
-
-
+html: docs