Fix: (un)install targets of Python agent
[lttng-ust.git] / python-lttngust / Makefile.am
index cc289895e42f1b6cd4474b8c2ac9e2c02d4e0c95..6c0d20d5150b1104976a3d17488d859fb9aec719 100644 (file)
@@ -1,7 +1,6 @@
 # Use setup.py for the installation instead of Autoconf.
 # This ease the installation process and assure a *pythonic*
 # installation.
-agent_path=lttngust
 all-local:
        $(PYTHON) setup.py build --verbose
 
@@ -13,13 +12,36 @@ install-exec-local:
        $(PYTHON) setup.py install $$opts;
 
 clean-local:
-       rm -rf build
+       rm -rf $(builddir)/build
 
-uninstall-local:
-       rm -rf $(DESTDIR)$(pkgpythondir)
-
-EXTRA_DIST=$(agent_path)
+# Distutils' setup.py does not include an uninstall target, we thus need to do
+# it manually. We fake an install in a temporary folder and use the generated
+# tree structure to infere the actual location within the install prefix.
+# 1. Create temporary file and folder
+# 2. Set the root install folder for a temporary folder
+# 3. Install in that temporary folder and record all the files installed
+# 4. If DESTDIR is set, prepend it to the paths of the install files
+# 5. Remove the installed files and the Python package folder
+# 6. Remove the files created by this target
 
-# Remove automake generated file before dist
-dist-hook:
-       rm -rf $(distdir)/$(agent_path)/__init__.py
+uninstall-local:
+       $(eval TMP_INSTALLED_FILES:=$(shell mktemp $(builddir)/tmp-installed-files-XXXXXX))
+       $(eval TMP_INSTALL_DIR:=$(shell mktemp -d $(builddir)/tmp-install-dir-XXXXXX))
+       $(eval TMP_BUILD_DIR:=$(shell mktemp -d $(builddir)/tmp-build-dir-XXXXXX))
+       @opts="--root=$(TMP_INSTALL_DIR) --prefix=$(prefix) --record $(TMP_INSTALLED_FILES) --no-compile $(DISTSETUPOPTS)"; \
+       if [ "$(DESTDIR)" != "" ]; then \
+               opts="$$opts --root=$(DESTDIR)"; \
+       else \
+               opts="$$opts --root=$(TMP_INSTALL_DIR)"; \
+       fi; \
+       $(PYTHON) setup.py build --build-base $(TMP_BUILD_DIR) install $$opts > /dev/null || true
+       
+       if [ "$(DESTDIR)" != "" ]; then \
+               $(SED) -i "s|^|$(DESTDIR)/|g" $(TMP_INSTALLED_FILES); \
+       fi
+       
+       cat $(TMP_INSTALLED_FILES) | xargs rm -rf || true
+       $(GREP) "__init__.py" $(TMP_INSTALLED_FILES) | xargs dirname | xargs rm -rf || true
+       rm -f $(TMP_INSTALLED_FILES)
+       rm -rf $(TMP_INSTALL_DIR)
+       rm -rf $(TMP_BUILD_DIR)
This page took 0.025017 seconds and 4 git commands to generate.