mirror of
				https://github.com/arsenetar/dupeguru.git
				synced 2025-09-11 17:58:17 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			124 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
			
		
		
	
	
			124 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
PYTHON ?= python3
 | 
						|
PYTHON_VERSION_MINOR := $(shell ${PYTHON} -c "import sys; print(sys.version_info.minor)")
 | 
						|
PYRCC5 ?= pyrcc5
 | 
						|
REQ_MINOR_VERSION = 7
 | 
						|
PREFIX ?= /usr/local
 | 
						|
 | 
						|
# Window compatability via Msys2 
 | 
						|
# - venv creates Scripts instead of bin
 | 
						|
# - compile generates .pyd instead of .so
 | 
						|
# - venv with --sytem-site-packages has issues on windows as well...
 | 
						|
 | 
						|
ifeq ($(shell ${PYTHON} -c "import platform; print(platform.system())"), Windows)
 | 
						|
	BIN = Scripts
 | 
						|
	SO = *.pyd
 | 
						|
	VENV_OPTIONS = 
 | 
						|
else
 | 
						|
	BIN = bin
 | 
						|
	SO = *.so
 | 
						|
	VENV_OPTIONS = --system-site-packages
 | 
						|
endif
 | 
						|
 | 
						|
# Set this variable if all dependencies are already met on the system. We will then avoid the
 | 
						|
# whole vitualenv creation and pip install dance.
 | 
						|
NO_VENV ?=
 | 
						|
 | 
						|
ifdef NO_VENV
 | 
						|
	VENV_PYTHON = $(PYTHON)
 | 
						|
else
 | 
						|
	VENV_PYTHON = ./env/$(BIN)/python
 | 
						|
endif
 | 
						|
 | 
						|
# If you're installing into a path that is not going to be the final path prefix (such as a
 | 
						|
# sandbox), set DESTDIR to that path.
 | 
						|
 | 
						|
# Our build scripts are not very "make like" yet and perform their task in a bundle. For now, we
 | 
						|
# use one of each file to act as a representative, a target, of these groups.
 | 
						|
 | 
						|
packages = hscommon core qt
 | 
						|
localedirs = $(wildcard locale/*/LC_MESSAGES)
 | 
						|
pofiles = $(wildcard locale/*/LC_MESSAGES/*.po)
 | 
						|
mofiles = $(patsubst %.po,%.mo,$(pofiles))
 | 
						|
 | 
						|
vpath %.po $(localedirs)
 | 
						|
vpath %.mo $(localedirs)
 | 
						|
 | 
						|
all: | env i18n modules qt/dg_rc.py 
 | 
						|
	@echo "Build complete! You can run dupeGuru with 'make run'"
 | 
						|
 | 
						|
run:
 | 
						|
	$(VENV_PYTHON) run.py
 | 
						|
 | 
						|
pyc: | env
 | 
						|
	${VENV_PYTHON} -m compileall ${packages}
 | 
						|
 | 
						|
reqs:
 | 
						|
ifneq ($(shell test $(PYTHON_VERSION_MINOR) -ge $(REQ_MINOR_VERSION); echo $$?),0)
 | 
						|
	$(error "Python 3.${REQ_MINOR_VERSION}+ required. Aborting.")
 | 
						|
endif
 | 
						|
ifndef NO_VENV
 | 
						|
	@${PYTHON} -m venv -h > /dev/null || \
 | 
						|
		echo "Creation of our virtualenv failed. If you're on Ubuntu, you probably need python3-venv."
 | 
						|
endif
 | 
						|
	@${PYTHON} -c 'import PyQt6' >/dev/null 2>&1 || \
 | 
						|
		{ echo "PyQt 6.3+ required. Install it and try again. Aborting"; exit 1; }
 | 
						|
 | 
						|
env: | reqs
 | 
						|
ifndef NO_VENV
 | 
						|
	@echo "Creating our virtualenv"
 | 
						|
	${PYTHON} -m venv env
 | 
						|
	$(VENV_PYTHON) -m pip install -r requirements.txt
 | 
						|
# We can't use the "--system-site-packages" flag on creation because otherwise we end up with
 | 
						|
# the system's pip and that messes up things in some cases (notably in Gentoo).
 | 
						|
	${PYTHON} -m venv --upgrade ${VENV_OPTIONS} env
 | 
						|
endif
 | 
						|
 | 
						|
build/help: | env
 | 
						|
	$(VENV_PYTHON) build.py --doc
 | 
						|
 | 
						|
qt/dg_rc.py: qt/dg.qrc
 | 
						|
	$(PYRCC5) qt/dg.qrc > qt/dg_rc.py
 | 
						|
 | 
						|
i18n: $(mofiles)
 | 
						|
 | 
						|
%.mo: %.po
 | 
						|
	msgfmt -o $@ $<	
 | 
						|
 | 
						|
modules: | env
 | 
						|
	$(VENV_PYTHON) build.py --modules
 | 
						|
 | 
						|
mergepot: | env
 | 
						|
	$(VENV_PYTHON) build.py --mergepot
 | 
						|
 | 
						|
normpo: | env
 | 
						|
	$(VENV_PYTHON) build.py --normpo
 | 
						|
 | 
						|
install: all pyc
 | 
						|
	mkdir -p ${DESTDIR}${PREFIX}/share/dupeguru
 | 
						|
	cp -rf ${packages} locale ${DESTDIR}${PREFIX}/share/dupeguru
 | 
						|
	cp -f run.py ${DESTDIR}${PREFIX}/share/dupeguru/run.py
 | 
						|
	chmod 755 ${DESTDIR}${PREFIX}/share/dupeguru/run.py
 | 
						|
	mkdir -p ${DESTDIR}${PREFIX}/bin
 | 
						|
	ln -sf ${PREFIX}/share/dupeguru/run.py ${DESTDIR}${PREFIX}/bin/dupeguru
 | 
						|
	mkdir -p ${DESTDIR}${PREFIX}/share/applications
 | 
						|
	cp -f pkg/dupeguru.desktop ${DESTDIR}${PREFIX}/share/applications
 | 
						|
	mkdir -p ${DESTDIR}${PREFIX}/share/pixmaps
 | 
						|
	cp -f images/dgse_logo_128.png ${DESTDIR}${PREFIX}/share/pixmaps/dupeguru.png
 | 
						|
 | 
						|
installdocs: build/help
 | 
						|
	mkdir -p ${DESTDIR}${PREFIX}/share/dupeguru
 | 
						|
	cp -rf build/help ${DESTDIR}${PREFIX}/share/dupeguru
 | 
						|
 | 
						|
uninstall:
 | 
						|
	rm -rf "${DESTDIR}${PREFIX}/share/dupeguru"
 | 
						|
	rm -f "${DESTDIR}${PREFIX}/bin/dupeguru"
 | 
						|
	rm -f "${DESTDIR}${PREFIX}/share/applications/dupeguru.desktop"
 | 
						|
	rm -f "${DESTDIR}${PREFIX}/share/pixmaps/dupeguru.png"
 | 
						|
 | 
						|
clean:
 | 
						|
	-rm -rf build
 | 
						|
	-rm locale/*/LC_MESSAGES/*.mo
 | 
						|
	-rm core/pe/*.$(SO) qt/pe/*.$(SO)
 | 
						|
 | 
						|
.PHONY: clean normpo mergepot modules i18n reqs run pyc install uninstall all
 |