TL_YEAR?=2024
PREFIX?=/usr/local/texlive/${TL_YEAR}/bin/custom
BINREPO=https://www.ekdosis.org/texlive
TMPDIR!=mktemp -d
OPENBSD_VERSION!=sysctl -n kern.version | awk '{ print $$2 }' | sed 's/\.//' | awk NF
TLBINPATH!!=which latex 2>/dev/null | sed 's/\/latex$$//'
TMPSOURCE?=""
UPDATING!=curl -s ${BINREPO}/status.txt | grep updating= | sed 's/.*=//'

DONT_TOUCH_DIRS:=${HOME}/bin /bin /sbin /usr/bin /usr/sbin /usr/X11R6/bin /usr/local/bin /usr/local/sbin


.MAIN: update

fetch:
.if "${UPDATING}" == "yes"
	@echo "The binaries are being updated.  Please re-run this command later."
.else
	curl ${BINREPO}/amd64-openbsd${OPENBSD_VERSION}.tar.xz \
		-o ${TMPDIR}/amd64-openbsd${OPENBSD_VERSION}.tar.xz
	curl ${BINREPO}/amd64-openbsd${OPENBSD_VERSION}.tar.xz.asc \
		-o ${TMPDIR}/amd64-openbsd${OPENBSD_VERSION}.tar.xz.asc
	gpg --verify ${TMPDIR}/amd64-openbsd${OPENBSD_VERSION}.tar.xz.asc
	unxz ${TMPDIR}/amd64-openbsd${OPENBSD_VERSION}.tar.xz
	mkdir ${TMPDIR}/bin \
		&& tar xf ${TMPDIR}/amd64-openbsd${OPENBSD_VERSION}.tar \
		-C ${TMPDIR}/bin
	@echo ""
	@echo "Looks good."
	@echo "Now do this to install TeX Live with custom binaries:"
	@echo "  cd /path/to/install-tl"
	@echo "  ./install-tl --custom-bin=${TMPDIR}/bin"
.endif

update:
.if "${TLBINPATH}" == ""
	@echo "There is nothing to update.  Aborting."
	exit 1
.endif
.if "${UPDATING}" == "yes"
	@echo "The binaries are being updated.  Please re-run this command later."
.else
	curl ${BINREPO}/amd64-openbsd${OPENBSD_VERSION}.tar.xz \
		-o ${TMPDIR}/amd64-openbsd${OPENBSD_VERSION}.tar.xz
	curl ${BINREPO}/amd64-openbsd${OPENBSD_VERSION}.tar.xz.asc \
		-o ${TMPDIR}/amd64-openbsd${OPENBSD_VERSION}.tar.xz.asc
	gpg --verify ${TMPDIR}/amd64-openbsd${OPENBSD_VERSION}.tar.xz.asc
.for DIR in ${DONT_TOUCH_DIRS}
.if "${DIR}" == ${TLBINPATH}
	@echo ""
	@echo "This program will never affect a system directory such as ${TLBINPATH}"
	@echo "To complete the update, you must replace by hand your binaries"
	@echo "with those in ${TMPDIR}/amd64-openbsd${OPENBSD_VERSION}.tar.xz"
	@echo "Exiting now."
	exit 1
.endif
.endfor
.if "${PREFIX}" == ${TLBINPATH}
	@echo ""
	@echo "Looks good."
	@echo "Now do this to update the binaries:"
	@echo "1. Remove the binaries that are currently installed:"
	@echo "   doas rm ${PREFIX}/*"
	@echo "2. Run this command:"
	@echo "   make TMPSOURCE=${TMPDIR} install"
.else
	@echo ""
	@echo "Looks like your TL binaries are in ${TLBINPATH}"
	@echo "instead of the expected ${PREFIX}."
	@echo "To complete the update, you must remove by hand your binaries."
	@echo "******************************************************************************"
	@echo "* CAUTION: You must first ensure that ${TLBINPATH} contains nothing"
	@echo "* but the TeX Live binaries, otherwise you may damage your system permanently."
	@echo "******************************************************************************"
	@echo "Then do:"
	@echo "1.  doas rm ${TLBINPATH}/*"
	@echo "2.  make TMPSOURCE=${TMPDIR} PREFIX=${TLBINPATH} install"
.endif
.endif

install:
	unxz ${TMPSOURCE}/amd64-openbsd${OPENBSD_VERSION}.tar.xz
	doas tar xf ${TMPSOURCE}/amd64-openbsd${OPENBSD_VERSION}.tar -C ${PREFIX}/

.PHONY: fetch update install