2020-07-20 16:17:42 +00:00
# $NetBSD: Makefile $
DISTNAME = icingaweb2-2.6.2
PKGREVISION = 12
GITHUB_TAG = v${ PKGVERSION_NOREV }
MASTER_SITES = ${ MASTER_SITE_GITHUB : =icinga/ }
CATEGORIES = net sysutils www
MAINTAINER = ef@math.uni-bonn.de
HOMEPAGE = https://www.icinga.com/products/user-experience-2/
COMMENT = PHP-based Web UI for Icinga
LICENSE = gnu-gpl-v2
DEPENDS += ${ PHP_PKG_PREFIX } -curl-[ 0-9] *:../../www/php-curl
DEPENDS += ${ PHP_PKG_PREFIX } -gd-[ 0-9] *:../../graphics/php-gd
DEPENDS += ${ PHP_PKG_PREFIX } -gettext-[ 0-9] *:../../devel/php-gettext
DEPENDS += ${ PHP_PKG_PREFIX } -imagick-[ 0-9] *:../../graphics/php-imagick
DEPENDS += ${ PHP_PKG_PREFIX } -intl-[ 0-9] *:../../textproc/php-intl
DEPENDS += ${ PHP_PKG_PREFIX } -json-[ 0-9] *:../../textproc/php-json
DEPENDS += ${ PHP_PKG_PREFIX } -mbstring-[ 0-9] *:../../converters/php-mbstring
# For php-*sql see options.mk
USE_TOOLS += pax
USE_LANGUAGES = # empty
NO_BUILD = YES
# Can't set NO_CONFIGURE=YES since REPLACE_INTERPRETER needs a configure phase
do-configure :
2020-08-19 22:10:37 +00:00
PKG_SYSCONFSUBDIR = icingaweb2
EGDIR = ${ PREFIX } /share/examples/icingaweb2
SHAREDIR = ${ PREFIX } /share/icingaweb2
INCDIR = ${ PREFIX } /lib/php
INSTALLATION_DIRS += ${ PREFIX } /bin ${ EGDIR } ${ SHAREDIR }
STORAGEDIR = ${ VARBASE } /db/icingaweb2
LOGDIR = ${ VARBASE } /log/icingaweb2
OWN_DIRS += ${ STORAGEDIR } ${ LOGDIR }
RUNDIR_PARENT = ${ VARBASE } /run
EDITOR = vi
PKG_SYSCONFDIR.icinga2 ?= ${ PKG_SYSCONFBASE } /icinga2
BUILD_DEFS += VARBASE PKG_SYSCONFBASE
2020-07-20 16:17:42 +00:00
. i n c l u d e "../../mk/bsd.prefs.mk"
. i n c l u d e "options.mk"
# The upstream distribution is not exactly packaging-friendly. It's kind of a blob, no Makefile, no configuration, everything-is-Linux mindset. Hard-coded paths everywhere, #!/usr/bin/env etc.
# Debian (upstream's main target) splits it into a bunch of packages, namely icingaweb2, icingaweb2-common, icingaweb2-module-doc, icingaweb2-module-monitoring (no -module-translation, that's in -common), icingacli (no "web" or "2") and php-icinga (also no "web" or "2").
# Most files go to /usr/share/icingaweb2, but to make it even more interesting, files in the php-icinga package are relocated from the library/Icinga subdiretory of the distribution to /usr/share/php/Icinga (but other files in that package go to /usr/share/icingaweb2/library).
# Some files aren't even installed at all.
# There are also no example configuration files.
# Install example configuration files.
# Contents taken from the "Advanced Topics: Icinga Web 2 Manual Setup: Icinga Web 2 Manual Configuration" manual section
2020-08-19 22:10:37 +00:00
CONFS = roles.ini resources.ini config.ini authentication.ini groups.ini roles.ini
CONFDIRS = modules modules/monitoring
CONFS += modules/monitoring/config.ini modules/monitoring/backends.ini modules/monitoring/commandtransports.ini
CONFDIRS += enabledModules
2020-07-20 16:17:42 +00:00
# symlinks in enabledModules?
# for extraction, see post-extract below
SUBST_CLASSES += sampleconfig-db
SUBST_STAGE.sampleconfig-db = pre-configure
SUBST_MESSAGE.sampleconfig-db = Fixing DB in config examples.
SUBST_FILES.sampleconfig-db = etc/examples/resources.ini
# If compiled with MySQL support, use MySQL example, else PgSQL.
.if !empty(PKG_OPTIONS : Mmysql )
SUBST_SED.sampleconfig-db = -e 's,@DB_TYPE@,mysql,g'
SUBST_SED.sampleconfig-db += -e 's,@DB_PORT@,3306,g'
. e l s e
SUBST_SED.sampleconfig-db = -e 's,@DB_TYPE@,pgsql,g'
SUBST_SED.sampleconfig-db += -e 's,@DB_PORT@,5432,g'
. e n d i f
2020-08-19 22:10:37 +00:00
SUBST_CLASSES += sampleconfig-path
SUBST_STAGE.sampleconfig-path = pre-configure
SUBST_MESSAGE.sampleconfig-path = Fixing paths in config examples.
SUBST_FILES.sampleconfig-path = etc/examples/config.ini
SUBST_VARS.sampleconfig-path = SHAREDIR LOGDIR
2020-07-20 16:17:42 +00:00
# for installation of the example configuration files, see do-install below
. f o r d i n $ { C O N F D I R S }
OWN_DIRS += ${ PKG_SYSCONFDIR } /${ d }
. e n d f o r
. f o r f i n $ { C O N F S }
CONF_FILES += ${ EGDIR } /${ f } ${ PKG_SYSCONFDIR } /${ f }
. e n d f o r
# Remove unneeded files in directories that are installed
2020-08-19 22:10:37 +00:00
RMFILES = application/fonts/fontello-ifont/config.json application/fonts/fontello-ifont/demo.html
RMFILES += application/fonts/fontello-ifont/font/ifont.eot application/fonts/fontello-ifont/font/ifont.svg application/fonts/fontello-ifont/font/ifont.ttf application/fonts/fontello-ifont/font/ifont.woff application/fonts/fontello-ifont/font/ifont.woff2
RMFILES += application/fonts/fontello-ifont/LICENSE.txt application/fonts/fontello-ifont/README.txt
RMFILES += application/fonts/icingaweb.md
RMFILES += application/VERSION
RMFILES += library/vendor/dompdf/lib/php-font-lib/LICENSE
RMFILES += library/vendor/dompdf/LICENSE library/vendor/dompdf/SOURCE
RMFILES += library/vendor/HTMLPurifier/LICENSE library/vendor/HTMLPurifier/SOURCE
RMFILES += library/vendor/JShrink/LICENSE library/vendor/JShrink/SOURCE
RMFILES += library/vendor/lessphp/LICENSE library/vendor/lessphp/SOURCE
RMFILES += library/vendor/Parsedown/LICENSE library/vendor/Parsedown/SOURCE
RMFILES += library/vendor/Zend/LICENSE.txt library/vendor/Zend/README.md library/vendor/Zend/VERSION
RMFILES += public/js/vendor/SOURCE.jquery.tipsy
2020-07-20 16:17:42 +00:00
# for actual removal, see post-extract below
# Some file have the executable bit set, but shouldn't
2020-08-19 22:10:37 +00:00
NONEXECFILES = application/fonts/fontello-ifont/css/*
NONEXECFILES += public/font/*
NONEXECFILES += library/vendor/HTMLPurifier/DefinitionCache/Serializer/README
2020-07-20 16:17:42 +00:00
# for actual chmod, see post-extract below
REPLACE_INTERPRETER += php
REPLACE.php.old = /usr/bin/php
REPLACE.php.new = ${ PREFIX } /bin/php
REPLACE_FILES.php = packages/files/bin/icingacli
# We need a lot of SUBSTs. The list of hard-coded paths was gathered along the lines of "grep -rF '/etc/' . | sed -n -e 's:^.*/etc/\([^/]*\)/.*$:\1:p' | sort | uniq" etc., plus manual inspection.
# See below for a descrption what is NOT substituted.
SUBST_CLASSES += schema
SUBST_STAGE.schema = pre-configure
SUBST_MESSAGE.schema = Fixing schema paths.
SUBST_FILES.schema = doc/20-Advanced-Topics.md
SUBST_FILES.schema += doc/80-Upgrading.md
SUBST_SED.schema = -e 's,/usr/share/doc/icingaweb2,${SHAREDIR}/etc,g'
SUBST_CLASSES += sharedir
SUBST_STAGE.sharedir = pre-configure
SUBST_MESSAGE.sharedir = Fixing SHAREDIR paths.
SUBST_FILES.sharedir = doc/03-Configuration.md
SUBST_FILES.sharedir += doc/20-Advanced-Topics.md
SUBST_FILES.sharedir += modules/setup/application/clicommands/ConfigCommand.php
SUBST_FILES.sharedir += public/error_unavailable.html
SUBST_FILES.sharedir += packages/files/bin/icingacli
SUBST_SED.sharedir = -e 's,/usr/share/icingaweb2,${SHAREDIR},g'
SUBST_CLASSES += storagedir
SUBST_STAGE.storagedir = pre-configure
SUBST_MESSAGE.storagedir = Fixing STORAGEDIR paths.
SUBST_FILES.storagedir = library/Icinga/Application/ApplicationBootstrap.php
SUBST_SED.storagedir = -e 's,/var/lib/icingaweb2,${STORAGEDIR},g'
. i f ${LOGDIR} != "/var/log/icingaweb2"
SUBST_CLASSES += logdir
SUBST_STAGE.logdir = pre-configure
SUBST_MESSAGE.logdir = Fixing LOGDIR paths.
SUBST_FILES.logdir = application/forms/Config/General/LoggingConfigForm.php
SUBST_SED.logdir = -e 's,/var/log/icingaweb2,${LOGDIR},g'
. e n d i f
. i f ${RUNDIR_PARENT} != "/var/run"
SUBST_CLASSES += rundir
SUBST_STAGE.rundir = pre-configure
SUBST_MESSAGE.rundir = Fixing RUNDIR paths.
SUBST_FILES.rundir = doc/04-Resources.md
SUBST_FILES.rundir += modules/monitoring/application/forms/Config/Transport/LocalTransportForm.php
SUBST_FILES.rundir += modules/monitoring/application/forms/Config/Transport/RemoteTransportForm.php
SUBST_FILES.rundir += modules/monitoring/doc/05-Command-Transports.md
SUBST_FILES.rundir += modules/setup/application/clicommands/ConfigCommand.php
SUBST_SED.rundir = -e 's,/var/run,${RUNDIR_PARENT},g'
. e n d i f
# This is kind of gross, but occurs only in documentation and the setup tool
SUBST_CLASSES += apache2
SUBST_STAGE.apache2 = pre-configure
SUBST_MESSAGE.apache2 = Fixing Apache2 config paths.
SUBST_FILES.apache2 = doc/02-Installation.md
SUBST_FILES.apache2 += doc/20-Advanced-Topics.md
SUBST_FILES.apache2 += modules/setup/application/clicommands/ConfigCommand.php
SUBST_SED.apache2 = -e 's,/etc/apache2,${PREFIX}/etc/httpd,g'
SUBST_SED.apache2 += -e 's,/etc/httpd,${PREFIX}/etc/httpd,g'
SUBST_CLASSES += icinga2
SUBST_STAGE.icinga2 = pre-configure
SUBST_MESSAGE.icinga2 = Fixing Icinga2 config paths.
SUBST_FILES.icinga2 = modules/monitoring/doc/05-Command-Transports.md
SUBST_SED.icinga2 = -e 's,/etc/icinga2,${PKG_SYSCONFDIR.icinga2},g'
SUBST_CLASSES += confdir
SUBST_STAGE.confdir = pre-configure
SUBST_MESSAGE.confdir = Fixing config paths.
SUBST_FILES.confdir = doc/03-Configuration.md
SUBST_FILES.confdir += doc/04-Resources.md
SUBST_FILES.confdir += doc/05-Authentication.md
SUBST_FILES.confdir += doc/06-Security.md
SUBST_FILES.confdir += doc/07-Preferences.md
SUBST_FILES.confdir += doc/20-Advanced-Topics.md
SUBST_FILES.confdir += doc/90-SELinux.md
SUBST_FILES.confdir += library/Icinga/Application/ApplicationBootstrap.php
SUBST_FILES.confdir += modules/monitoring/doc/03-Configuration.md
SUBST_FILES.confdir += modules/monitoring/doc/05-Command-Transports.md
SUBST_FILES.confdir += modules/setup/application/clicommands/ConfigCommand.php
SUBST_FILES.confdir += modules/setup/application/clicommands/TokenCommand.php
#SUBST_FILES.confdir+= modules/setup/application/locale/de_DE/LC_MESSAGES/setup.mo
SUBST_FILES.confdir += modules/setup/application/locale/de_DE/LC_MESSAGES/setup.po
#SUBST_FILES.confdir+= modules/setup/application/locale/it_IT/LC_MESSAGES/setup.mo
SUBST_FILES.confdir += modules/setup/application/locale/it_IT/LC_MESSAGES/setup.po
SUBST_FILES.confdir += modules/setup/application/views/scripts/form/setup-welcome.phtml
SUBST_FILES.confdir += modules/setup/library/Setup/WebWizard.php
SUBST_SED.confdir = -e 's,/etc/icingaweb2,${PKG_SYSCONFDIR},g'
SUBST_CLASSES += php-inc
SUBST_STAGE.php-inc = pre-configure
SUBST_MESSAGE.php-inc = Fixing PHP include paths.
SUBST_FILES.php-inc = packages/files/bin/icingacli
SUBST_FILES.php-inc += packages/files/public/index.php
SUBST_SED.php-inc = -e 's,/usr/share/php,${INCDIR},g'
# This is also kind of gross, but occurs only in documentation
SUBST_CLASSES += php-config
SUBST_STAGE.php-config = pre-configure
SUBST_MESSAGE.php-config = Fixing PHP config paths.
SUBST_FILES.php-config = doc/02-Installation.md
SUBST_SED.php-config = -e 's,/etc/php\.ini,${PREFIX}/etc/php.ini,g'
SUBST_SED.php-config += -e 's,/etc/php\.d,${PREFIX}/etc/php.d,g'
# These could be based on a "translation" option. It's used for msgformat, msgmerge and xgettext
SUBST_CLASSES += env-gettext
SUBST_STAGE.env-gettext = pre-configure
SUBST_MESSAGE.env-gettext = Fixing env usage.
SUBST_FILES.env-gettext = modules/translation/library/Translation/Util/GettextTranslationHelper.php
SUBST_SED.env-gettext = -e 's,/usr/bin/env ,${PREFIX}/bin/,g'
# While there, we can fix references to vim, too
SUBST_CLASSES += vim
SUBST_STAGE.vim = pre-configure
SUBST_MESSAGE.vim = Fixing vim references.
SUBST_FILES.vim = doc/05-Authentication.md
SUBST_FILES.vim += doc/06-Security.md
SUBST_FILES.vim += doc/20-Advanced-Topics.md
SUBST_FILES.vim += modules/monitoring/doc/03-Configuration.md
SUBST_FILES.vim += modules/monitoring/doc/05-Command-Transports.md
SUBST_SED.vim = -e 's,vim /,${EDITOR} /,g'
# There is also a bunch of hard-coded paths that are NOT substituted:
# -- comments at the head of .po files
# -- paths in files that are not actually installed: /usr/bin/msgfmt, /usr/bin/msgmerge, /usr/bin/xgettext, /usr/share/php, /var/lib/pgsql
# -- paths that are Linux-specific enyway: /usr/sbin/semodule, /usr/lib/os-release, /usr/share/selinux, /etc/apk, /etc/apt, /etc/audit, /etc/opt, /etc/selinux
# -- paths where the usage seems OK: /usr/share/{file,misc,mime}/magic{,.mime,.mgc}, /tmp, /proc/self
# -- example path in comment: /var/spool/whatwever
# post-extract jobs
post-extract :
${ MKDIR } ${ WRKSRC } /etc/examples
. f o r d i n $ { C O N F D I R S }
${ MKDIR } ${ WRKSRC } /etc/examples/${ d }
. e n d f o r
. f o r f i n $ { C O N F S }
${ CP } ${ FILESDIR } /${ f } ${ WRKSRC } /etc/examples/${ f }
. e n d f o r
. f o r f i n $ { R M F I L E S }
${ RM } ${ WRKSRC } /${ f }
. e n d f o r
. f o r f i n $ { N O N E X E C F I L E S }
${ CHMOD } -x ${ WRKSRC } /${ f }
. e n d f o r
# Remove .orig file so it doesn't get installed
post-patch :
${ RM } ${ WRKSRC } /library/Icinga/Application/webrouter.php.orig
# Install the files
do-install :
cd ${ WRKSRC } && ${ PAX } -rw -pmp application doc etc/schema library/vendor modules/doc modules/migrate modules/monitoring modules/setup modules/translation modules/test public test ${ DESTDIR } ${ SHAREDIR }
${ INSTALL_SCRIPT } ${ WRKSRC } /packages/files/public/index.php ${ DESTDIR } ${ SHAREDIR } /public/index.php
cd ${ WRKSRC } /library && ${ PAX } -rw -pmp Icinga ${ DESTDIR } ${ INCDIR }
cd ${ WRKSRC } /etc/examples && ${ PAX } -rw -pmp . ${ DESTDIR } ${ EGDIR }
${ INSTALL_SCRIPT } ${ WRKSRC } /packages/files/bin/icingacli ${ DESTDIR } ${ PREFIX } /bin/icingacli
PLIST_SUBST += SHAREDIR = " ${ SHAREDIR : S . ${ PREFIX } /.. } "
PLIST_SUBST += INCDIR = " ${ INCDIR : S . ${ PREFIX } /.. } "
PLIST_SUBST += EGDIR = " ${ EGDIR : S . ${ PREFIX } /.. } "
2020-08-19 22:10:37 +00:00
GENERATE_PLIST += printf " ${ EGDIR : S . ${ PREFIX } /.. } /%s\n " ${ CONFS } ;
2020-07-20 16:17:42 +00:00
. i n c l u d e "../../mk/bsd.pkg.mk"
. i n c l u d e "../../lang/php/phpversion.mk"