#!/usr/bin/make -f
# -*- makefile -*-

# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1

# Don't use Debian-provided flags for now; they slow down the build
CFLAGS :=
CXXFLAGS :=
LDFLAGS :=

%:
	dh $@ 

override_dh_auto_configure:
	mkdir build
	# Get libTAU (for cnmultifit) and put in search path
	cd build && wget https://integrativemodeling.org/libTAU/libTAU-1.0.1.zip
	cd build && echo "d2530291628081ee404b30da5c47ec6dc4302479  libTAU-1.0.1.zip" | sha1sum -c --quiet
	cd build && unzip libTAU-1.0.1.zip && mv libTAU-1.0.1/include libTAU
	cd build/libTAU-1.0.1/lib && ln -sf Fedora23.x86_64 debian
	cd build/libTAU-1.0.1/lib/debian && ln -sf libTAU.so.1 libTAU.so
	# Allow mpiexec to work inside a docker/podman container (as root)
	perl -pi -e 's#\{MPIEXEC_PREFLAGS\}#\{MPIEXEC_PREFLAGS\};--allow-run-as-root#' modules/mpi/dependency/MPI.cmake
	cd build && py3_ver=`python3 -c "import sys; print('%d.%d' % sys.version_info[:2])"` \
	         && cmake .. -DCMAKE_BUILD_TYPE=Release \
		-DCGAL_DIR=/usr/lib/x86_64-linux-gnu/cmake/CGAL/ \
	        -DCMAKE_INSTALL_PYTHONDIR=/usr/lib/python$${py3_ver}/dist-packages \
	        -DCMAKE_INCLUDE_PATH=`pwd` \
	        -DCMAKE_LIBRARY_PATH=`pwd`/libTAU-1.0.1/lib/debian \
                -DCMAKE_INSTALL_PREFIX=/usr \
                -DIMP_TIMEOUT_FACTOR=4 \
                -DCMAKE_INSTALL_DOCDIR=/usr/share/doc/imp \
                -DIMP_DISABLED_MODULES=scratch -DUSE_PYTHON2=off

override_dh_auto_build:
	mkdir build/logs
	cd build && python3 ../tools/nightly-tests/build_all.py --run-tests=fast --outdir=logs --summary=logs/summary.pck "make -k -j4"

override_dh_install:
	$(MAKE) -C build DESTDIR=$(CURDIR)/debian/tmp install
	# Install Python 2 extension modules
	cd build \
	   && py2_ver=`python2 -c "import sys; print('%d.%d' % sys.version_info[:2])"` \
	   && unamem=`uname -m` \
	   && py2_lib=`echo /usr/lib/$${unamem}-*/libpython2*.so` \
	   && py2_inc=/usr/include/python$${py2_ver} \
	   && cmake .. \
	    -DCMAKE_INSTALL_PYTHONDIR=/usr/lib/python2.7/dist-packages \
	    -DSWIG_PYTHON_LIBRARIES=$${py2_lib} \
	    -DPYTHON_INCLUDE_DIRS=$${py2_inc} \
	    -DPYTHON_INCLUDE_PATH=$${py2_inc} -DPYTHON_LIBRARIES=$${py2_lib} \
	    -DUSE_PYTHON2=on \
	   && $(MAKE) -j4 DESTDIR=$(CURDIR)/debian/tmp install
	# Bundle libTAU so users don't have to get it separately
	cp build/libTAU-1.0.1/lib/debian/libTAU.so.1 debian/tmp/usr/lib/*linux*/
	(cd debian/tmp/usr/lib/*linux*/ && ln -sf libTAU.so.1 libTAU.so)
	# Don't package MPI for Python2 or -dev
	rm -rf debian/tmp/usr/lib/python2*/dist-packages/IMP/mpi
	rm -rf debian/tmp/usr/lib/python2*/dist-packages/IMP/spb
	rm -f debian/tmp/usr/lib/python2*/dist-packages/_IMP_mpi*
	rm -f debian/tmp/usr/lib/python2*/dist-packages/_IMP_spb*
	rm -f debian/tmp/usr/lib/*/libimp_mpi*.so
	rm -f debian/tmp/usr/lib/*/libimp_spb*.so
	# Replace Python 2 .py files with symlinks to Python 3 files
	# (since they are the same) but not the SWIG-generated __init__.py
	# files (since these contain config information which might be
	# different; e.g. in Ubuntu 22.04 the Python 3 wrappers include numpy
	# support but the Python 2 wrappers do not)
	(cd debian/tmp/usr/lib/python2* \
         && py3_ver=`python3 -c "import sys; print('%d.%d' % sys.version_info[:2])"` \
	 && find dist-packages -name '*.py' -a ! -name __init__.py \
	      -exec ln -sf $(CURDIR)/debian/tmp/usr/lib/python$${py3_ver}/\{\} \{\} \; \
	 && symlinks -rc .)
	# Make sure all Python applications use the system Python in /usr/bin
	perl -pi -e 's@^#!.*python.*$$@#!/usr/bin/python3@' debian/tmp/usr/bin/*
	# Don't distribute example application or dependency
	rm -rf debian/tmp/usr/bin/imp_example_app \
	       debian/tmp/usr/lib/*/libexample* \
	       debian/tmp/usr/include/example*
	dh_install --fail-missing

override_dh_compress:
	# Don't compress example files, since then they won't work!
	dh_compress -Xexamples
