# $NetBSD: Makefile,v 1.83 2023/08/14 05:24:20 wiz Exp $

DISTNAME=	xemacs-packages
PKGNAME=	xemacs-packages-1.19
PKGREVISION=	1

CATEGORIES=	editors
MASTER_SITES=	${MASTER_SITE_XEMACS:=${XEMACSPKG_PATH}/}
XEMACSPKG_PATH=	beta/experimental/packages
DISTFILES=	\
		Sun-1.19-pkg.tar.gz \
		ada-1.16-pkg.tar.gz \
		apel-1.36-pkg.tar.gz \
		auctex-1.58-pkg.tar.gz \
		bbdb-1.35-pkg.tar.gz \
		build-1.18-pkg.tar.gz \
		c-support-1.24-pkg.tar.gz \
		calc-1.28-pkg.tar.gz \
		calendar-1.42-pkg.tar.gz \
		cc-mode-1.99-pkg.tar.gz \
		cedet-common-1.03-pkg.tar.gz \
		clearcase-1.12-pkg.tar.gz \
		cogre-1.04-pkg.tar.gz \
		cookie-1.17-pkg.tar.gz \
		crisp-1.17-pkg.tar.gz \
		debug-1.21-pkg.tar.gz \
		dictionary-1.18-pkg.tar.gz \
		dired-1.22-pkg.tar.gz \
		docbookide-0.10-pkg.tar.gz \
		easypg-1.05-pkg.tar.gz \
		ecb-1.26-pkg.tar.gz \
		ecrypto-0.23-pkg.tar.gz \
		ede-1.07-pkg.tar.gz \
		edebug-1.24-pkg.tar.gz \
		edict-1.19-pkg.tar.gz \
		ediff-1.84-pkg.tar.gz \
		edit-utils-2.59-pkg.tar.gz \
		edt-1.16-pkg.tar.gz \
		efs-1.37-pkg.tar.gz \
		egg-its-1.29-pkg.tar.gz \
		eieio-1.10-pkg.tar.gz \
		elib-1.15-pkg.tar.gz \
		emerge-1.13-pkg.tar.gz \
		erc-0.26-pkg.tar.gz \
		escreen-1.03-pkg.tar.gz \
		eshell-1.21-pkg.tar.gz \
		ess-1.18-pkg.tar.gz \
		eterm-1.20-pkg.tar.gz \
		eudc-1.44-pkg.tar.gz \
		footnote-1.18-pkg.tar.gz \
		forms-1.17-pkg.tar.gz \
		fortran-modes-1.07-pkg.tar.gz \
		frame-icon-1.13-pkg.tar.gz \
		fsf-compat-1.24-pkg.tar.gz \
		games-1.23-pkg.tar.gz \
		general-docs-1.11-pkg.tar.gz \
		gnats-1.19-pkg.tar.gz \
		gnus-2.05-pkg.tar.gz \
		gnus-2.06-pkg.tar.gz \
		guided-tour-0.54-pkg.tar.gz \
		haskell-mode-1.14-pkg.tar.gz \
		hm--html-menus-1.27-pkg.tar.gz \
		hyperbole-1.22-pkg.tar.gz \
		ibuffer-1.12-pkg.tar.gz \
		idlwave-1.34-pkg.tar.gz \
		igrep-1.18-pkg.tar.gz \
		ilisp-1.38-pkg.tar.gz \
		ispell-1.37-pkg.tar.gz \
		jde-1.54-pkg.tar.gz \
		latin-euro-standards-1.11-pkg.tar.gz \
		latin-unity-1.23-pkg.tar.gz \
		leim-1.39-pkg.tar.gz \
		locale-1.30-pkg.tar.gz \
		lookup-1.17-pkg.tar.gz \
		mail-lib-1.85-pkg.tar.gz \
		mailcrypt-2.16-pkg.tar.gz \
		mew-1.22-pkg.tar.gz \
		mh-e-1.35-pkg.tar.gz \
		mine-1.18-pkg.tar.gz \
		misc-games-1.25-pkg.tar.gz \
		mmm-mode-1.09-pkg.tar.gz \
		mule-base-1.60-pkg.tar.gz \
		mule-ucs-1.21-pkg.tar.gz \
		net-utils-1.61-pkg.tar.gz \
		ocaml-0.10-pkg.tar.gz \
		oo-browser-1.07-pkg.tar.gz \
		os-utils-1.44-pkg.tar.gz \
		pc-1.30-pkg.tar.gz \
		pcl-cvs-1.73-pkg.tar.gz \
		pcomplete-1.08-pkg.tar.gz \
		perl-modes-1.16-pkg.tar.gz \
		pgg-1.10-pkg.tar.gz \
		prog-modes-2.34-pkg.tar.gz \
		ps-print-1.14-pkg.tar.gz \
		psgml-1.50-pkg.tar.gz \
		psgml-dtds-1.05-pkg.tar.gz \
		python-modes-1.16-pkg.tar.gz \
		re-builder-1.07-pkg.tar.gz \
		reftex-1.36-pkg.tar.gz \
		riece-1.26-pkg.tar.gz \
		rmail-1.16-pkg.tar.gz \
		ruby-modes-1.07-pkg.tar.gz \
		sasl-1.18-pkg.tar.gz \
		scheme-1.22-pkg.tar.gz \
		semantic-1.23-pkg.tar.gz \
		sgml-1.13-pkg.tar.gz \
		sh-script-1.26-pkg.tar.gz \
		sieve-1.20-pkg.tar.gz \
		skk-1.27-pkg.tar.gz \
		slider-1.18-pkg.tar.gz \
		sml-mode-0.14-pkg.tar.gz \
		sounds-au-1.14-pkg.tar.gz \
		sounds-wav-1.14-pkg.tar.gz \
		speedbar-1.32-pkg.tar.gz \
		strokes-1.12-pkg.tar.gz \
		supercite-1.23-pkg.tar.gz \
		texinfo-1.32-pkg.tar.gz \
		text-modes-2.06-pkg.tar.gz \
		textools-1.17-pkg.tar.gz \
		time-1.18-pkg.tar.gz \
		tm-1.42-pkg.tar.gz \
		tooltalk-1.17-pkg.tar.gz \
		tpu-1.16-pkg.tar.gz \
		tramp-1.57-pkg.tar.gz \
		tramp-1.58-pkg.tar.gz \
		vc-1.50-pkg.tar.gz \
		vc-cc-1.24-pkg.tar.gz \
		vhdl-1.24-pkg.tar.gz \
		view-process-1.15-pkg.tar.gz \
		viper-1.69-pkg.tar.gz \
		vm-8.11-pkg.tar.gz \
		w3-1.42-pkg.tar.gz \
		x-symbol-1.16-pkg.tar.gz \
		xemacs-base-2.47-pkg.tar.gz \
		xemacs-devel-1.84-pkg.tar.gz \
		xetla-1.04-pkg.tar.gz \
		xlib-1.16-pkg.tar.gz \
		xslide-1.11-pkg.tar.gz \
		xslt-process-1.14-pkg.tar.gz \
		xwem-1.27-pkg.tar.gz \
		zenirc-1.18-pkg.tar.gz
### DISTFILES

# leim/hebrew.el causes build problems, we use stable package instead
#		leim-1.38-pkg.tar.gz \
#
#DISTFILES+=	leim-1.31-pkg.tar.gz
#SITES.leim-1.31-pkg.tar.gz= ${MASTER_SITE_XEMACS:=packages/}

MAINTAINER=	hauke@NetBSD.org
HOMEPAGE=	https://www.xemacs.org/
COMMENT=	Common elisp packages for xemacs 21

DEPENDS+=	xemacs{,-nox11}>=21.1.14:../../editors/xemacs

DIST_SUBDIR=	${PKGBASE}
EXTRACT_DIR=	${WRKDIR}/${PKGBASE}

# cedet-common-1.03-pkg.tar.gz hard-links two files to themselves,
# which the default nbtar does not take well
EXTRACT_USING=	gtar

NO_BUILD=	yes

USE_TOOLS+=	printf pax find diff gawk gzip gtar
USE_TOOLS+=	perl:run

XEPKGDIR=	lib/xemacs/xemacs-packages

INSTALLATION_DIRS+=	${XEPKGDIR}

PKG_OPTIONS_VAR=	PKG_OPTIONS.xemacs-packages
PKG_SUPPORTED_OPTIONS+=	x11
PKG_SUGGESTED_OPTIONS+=	x11

.include "../../mk/bsd.options.mk"

# Only attempt to register fonts if we have X11 support (mkfontdir)
.if !empty(PKG_OPTIONS:Mx11)
FONTS_DIRS.x11+=	${PREFIX}/${XEPKGDIR}/etc/x-symbol/fonts
FONTS_DIRS.x11+=	${PREFIX}/${XEPKGDIR}/etc/x-symbol/origfonts
FONTS_DIRS.x11+=	${PREFIX}/${XEPKGDIR}/etc/x-symbol/pcf
.endif

REPLACE_PERL=		etc/bbdb/bbdb-areacode-split.pl
REPLACE_PERL+=		etc/bbdb/bbdb-cid.pl
REPLACE_PERL+=		etc/bbdb/bbdb-srv.pl
REPLACE_PERL+=		etc/bbdb/bbdb-unlazy-lock.pl
REPLACE_PERL+=		etc/erc/servers.pl
REPLACE_PERL+=		etc/idlwave/idlwave_catalog
REPLACE_PERL+=		etc/x-symbol/fonts/makesub
REPLACE_PERL+=		lisp/hyperbole/file-newer

# Do not depend on Python just for one file
CHECK_INTERPRETER_SKIP=	${XEPKGDIR}/etc/python-modes/pydoc_lisp.py

PRINT_PLIST_AWK+=	{ sub("\\.el$$", ".el$${ELSUFX}") }

.if defined(MANZ)
PLIST_SUBST+=	ELSUFX=.gz
.else
PLIST_SUBST+=	ELSUFX=
.endif

# Package maintainance
#
# `make PKG_DEVELOPER=1 xemacs-update-package' will generate a
# Makefile.work based on Makefile.  If any packages have been updated,
# bump this package version, and commit.

.include "../../mk/bsd.prefs.mk"
.if defined(PKG_DEVELOPER) && ${OPSYS} == "NetBSD"
ED=		/bin/ed
FTP=		${TOOLS_PATH.ftp:Q}

# One of mk/fetch/sites.mk:MASTER_SITE_XEMACS
XEMACSPKG_SITE=	ftp://ftp.xemacs.org/pub/xemacs

# Make a list of packages from a directory list output
.PHONY: xemacs-make-package-list
xemacs-fetch-package-list:
	@${ECHO} ls | ${FTP} ${XEMACSPKG_SITE}/${XEMACSPKG_PATH}/ | \
	${AWK} '/-pkg\.tar\.gz/ { print $$9; }' \
		>${PKGDIR}/packages.list

# Merge package list data into Makefile
.PHONY: xemacs-merge-package-list
xemacs-merge-package-list:
	{ \
		${SED} '/^DISTFILES/q' ${PKGDIR}/Makefile; \
		${SED} 's|^|		|' ${PKGDIR}/packages.list; \
		${SED} -n '/^### DISTFILES/,$$p' ${PKGDIR}/Makefile; \
	} >${PKGDIR}/Makefile.work
	{ \
		${PRINTF} '/^DISTFILES\n+1\nka\n/^### DISTFILES\n-2\nkb\n'; \
		${PRINTF} "'a,'b"'s/$$/ \\\\/\nw\nq\n'; \
	} | ${ED} - ${PKGDIR}/Makefile.work >/dev/null
	${DIFF} -u Makefile Makefile.work | \
		awk '/\+/ { print $$2 }' > packages.changelist

.PHONY: xemacs-update-package
xemacs-update-package: xemacs-fetch-package-list xemacs-merge-package-list
.endif	# defined(PKG_DEVELOPER) && ${OPSYS} == "NetBSD"

pre-configure:
	@${ECHO_MSG} "Fixing file permissions ... "
	${CHMOD} -R u+w,go-w ${WRKSRC}
	${CHMOD} g+r,o+r ${WRKSRC}/lisp/auctex/ChangeLog
	${CHMOD} ugo-x ${WRKSRC}/lisp/erc/ChangeLog.2005.upstream
	${FIND} ${WRKSRC} -type f -and -perm -100 \
		-and \( -name "*.el" -or -name "*.gif" -or -name "*.jar" \) \
		-exec ${CHMOD} ugo-x \{\} \+
	@${ECHO_MSG} "done"
.if empty(PKG_OPTIONS:Mx11)
	${RM} ${WRKSRC}/etc/x-symbol/pcf/fonts.dir
.endif
	@${ECHO_MSG} "Re-compiling patched elisp files ... "
	for ff in `cat ${PATCHDIR}/*.el | awk '/^\\+\\+\\+/ { print $$2 }'` ; do \
		${RM} -f ${WRKSRC}/$${ff}.orig ; \
		cd ${WRKSRC} && xemacs --vanilla --batch \
		--eval "(load-file \"${PKGDIR}/files/compile-el-file.el\")" \
		--eval "(compile-el-file \"${WRKSRC}/lisp\" \
			\"${WRKSRC}/$${ff}\")" ; \
	done
	@${ECHO_MSG} "done"
.if defined(MANZ)
	@${ECHO_MSG} "Compressing \".el\" source files ... "
	cd ${WRKSRC} && \
		${GREP} '\$${ELSUFX}$$' ${PLIST_SRC} | \
		${SED} -e "s#${XEPKGDIR}/##g" -e 's#\$${ELSUFX}$$##' | \
		${XARGS} ${GZIP_CMD}
	@${ECHO_MSG} "done"
.endif

do-install:
	cd ${WRKSRC} && pax -rw -l -pp . ${DESTDIR}${PREFIX}/${XEPKGDIR}

.include "../../mk/bsd.pkg.mk"
