summaryrefslogtreecommitdiff
path: root/chat
diff options
context:
space:
mode:
authornia <nia@pkgsrc.org>2019-05-03 17:14:27 +0000
committernia <nia@pkgsrc.org>2019-05-03 17:14:27 +0000
commit1ac8644721753f4a0261e3fcce4111b34ce50539 (patch)
tree972c35a1ee8c107d68d99d4a0a1ef54e3c7ce452 /chat
parenta81dc6bce959262e37e571e083f3ae42fe3a44ae (diff)
downloadpkgsrc-1ac8644721753f4a0261e3fcce4111b34ce50539.tar.gz
chat/inspircd3: Add version 3.0.0.
This release contains many major new enhancements, some of which include: * Full support for all currently ratified IRCv3 extensions. * Support for WebSocket connections. * Support for the bcrypt and PBKDF2 password hashing algorithms. * Support for the WHOX extension. * Support for UNIX socket connections. * Support for the HAProxy PROXY protocol. * Many performance improvements. To upgrade from v2 (chat/inspircd) please consult the list of config changes: https://docs.inspircd.org/3/configuration-changes/
Diffstat (limited to 'chat')
-rw-r--r--chat/Makefile3
-rw-r--r--chat/inspircd3/DESCR8
-rw-r--r--chat/inspircd3/Makefile109
-rw-r--r--chat/inspircd3/PLIST221
-rw-r--r--chat/inspircd3/distinfo10
-rw-r--r--chat/inspircd3/files/inspircd.sh31
-rw-r--r--chat/inspircd3/options.mk80
-rw-r--r--chat/inspircd3/patches/patch-docs_conf_inspircd.conf.example66
-rw-r--r--chat/inspircd3/patches/patch-docs_conf_modules.conf.example33
-rw-r--r--chat/inspircd3/patches/patch-make_template_main.mk14
-rw-r--r--chat/inspircd3/patches/patch-src_socketengines_socketengine__kqueue.cpp56
11 files changed, 630 insertions, 1 deletions
diff --git a/chat/Makefile b/chat/Makefile
index 1d913f4d7d6..4363ce9340e 100644
--- a/chat/Makefile
+++ b/chat/Makefile
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.217 2019/05/02 07:46:36 wiz Exp $
+# $NetBSD: Makefile,v 1.218 2019/05/03 17:14:27 nia Exp $
#
COMMENT= Communication programs
@@ -47,6 +47,7 @@ SUBDIR+= icbirc
SUBDIR+= icqlib
SUBDIR+= ii
SUBDIR+= inspircd
+SUBDIR+= inspircd3
SUBDIR+= ircII
SUBDIR+= ircd-hybrid
SUBDIR+= irchat-pj
diff --git a/chat/inspircd3/DESCR b/chat/inspircd3/DESCR
new file mode 100644
index 00000000000..c5f492c0d77
--- /dev/null
+++ b/chat/inspircd3/DESCR
@@ -0,0 +1,8 @@
+InspIRCd is a modular Internet Relay Chat (IRC) server. It was
+created from scratch to be stable, modern and lightweight.
+
+It provides a tunable number of features through the use of an
+advanced but well documented module system. By keeping core
+functionality to a minimum we hope to increase the stability,
+security and speed of InspIRCd while also making it customisable
+to the needs of many different users.
diff --git a/chat/inspircd3/Makefile b/chat/inspircd3/Makefile
new file mode 100644
index 00000000000..0317b3e70bb
--- /dev/null
+++ b/chat/inspircd3/Makefile
@@ -0,0 +1,109 @@
+# $NetBSD: Makefile,v 1.1 2019/05/03 17:14:27 nia Exp $
+
+DISTNAME= inspircd-3.0.0
+CATEGORIES= chat
+MASTER_SITES= ${MASTER_SITE_GITHUB:=inspircd/}
+GITHUB_TAG= v${PKGVERSION_NOREV}
+
+MAINTAINER= nia@NetBSD.org
+HOMEPAGE= https://www.inspircd.org/
+COMMENT= Modular Internet Relay Chat (IRC) server
+LICENSE= gnu-gpl-v2
+
+EXTRACT_USING= bsdtar
+USE_TOOLS+= gmake perl pkg-config
+USE_LANGUAGES= c c++11
+HAS_CONFIGURE= yes
+MAKE_FILE= GNUmakefile
+
+BUILD_DEFS+= PKG_SYSCONFDIR
+
+CONFIGURE_ARGS+= --prefix=${PREFIX}
+CONFIGURE_ARGS+= --manual-dir=${PREFIX}/${PKGMANDIR}/man1
+CONFIGURE_ARGS+= --module-dir=${PREFIX}/lib/inspircd/modules
+CONFIGURE_ARGS+= --config-dir=${PKG_SYSCONFDIR}/inspircd
+CONFIGURE_ARGS+= --data-dir=${PREFIX}/inspircd/data
+CONFIGURE_ARGS+= --log-dir=${PREFIX}/inspircd/logs
+CONFIG_SHELL= ${PERL5}
+
+REPLACE_PERL+= tools/genssl
+
+.include "../../mk/bsd.prefs.mk"
+
+CONF_FILES+= ${EGDIR}/motd.txt.example ${PKG_SYSCONFDIR}/inspircd/motd.txt
+CONF_FILES+= ${EGDIR}/inspircd.conf.example ${PKG_SYSCONFDIR}/inspircd/inspircd.conf
+CONF_FILES+= ${EGDIR}/links.conf.example ${PKG_SYSCONFDIR}/inspircd/links.conf
+CONF_FILES+= ${EGDIR}/modules.conf.example ${PKG_SYSCONFDIR}/inspircd/modules.conf
+CONF_FILES+= ${EGDIR}/opers.conf.example ${PKG_SYSCONFDIR}/inspircd/opers.conf
+CONF_FILES+= ${EGDIR}/motd.txt.example ${PKG_SYSCONFDIR}/inspircd/motd.txt
+
+CONF_FILES+= ${EGDIR}/filter.conf.example ${PKG_SYSCONFDIR}/inspircd/filter.conf
+CONF_FILES+= ${EGDIR}/helpop.conf.example ${PKG_SYSCONFDIR}/inspircd/helpop.conf
+CONF_FILES+= ${EGDIR}/inspircd.conf.example ${PKG_SYSCONFDIR}/inspircd/inspircd.conf
+CONF_FILES+= ${EGDIR}/links.conf.example ${PKG_SYSCONFDIR}/inspircd/links.conf
+CONF_FILES+= ${EGDIR}/modules.conf.example ${PKG_SYSCONFDIR}/inspircd/modules.conf
+CONF_FILES+= ${EGDIR}/motd.txt.example ${PKG_SYSCONFDIR}/inspircd/motd.txt
+CONF_FILES+= ${EGDIR}/opermotd.txt.example ${PKG_SYSCONFDIR}/inspircd/opermotd.txt
+CONF_FILES+= ${EGDIR}/opers.conf.example ${PKG_SYSCONFDIR}/inspircd/opers.conf
+CONF_FILES+= ${EGDIR}/quotes.txt.example ${PKG_SYSCONFDIR}/inspircd/quotes.txt
+CONF_FILES+= ${EGDIR}/services/anope.conf.example ${PKG_SYSCONFDIR}/inspircd/services/anope.conf
+CONF_FILES+= ${EGDIR}/services/atheme.conf.example ${PKG_SYSCONFDIR}/inspircd/services/atheme.conf
+CONF_FILES+= ${EGDIR}/services/generic.conf.example ${PKG_SYSCONFDIR}/inspircd/services/generic.conf
+
+INSPIRCD_USER?= inspircd
+INSPIRCD_GROUP?= inspircd
+PKG_GROUPS= ${INSPIRCD_GROUP}
+PKG_USERS= ${INSPIRCD_USER}:${INSPIRCD_GROUP}
+PKG_GROUPS_VARS= INSPIRCD_USER
+PKG_USERS_VARS= INSPIRCD_GROUP
+
+FILES_SUBST+= INSPIRCD_GROUP=${INSPIRCD_GROUP:Q}
+FILES_SUBST+= INSPIRCD_USER=${INSPIRCD_USER:Q}
+
+OWN_DIRS_PERMS+= ${PREFIX}/inspircd ${INSPIRCD_USER} ${INSPIRCD_GROUP} 0755
+OWN_DIRS_PERMS+= ${PREFIX}/inspircd/data ${INSPIRCD_USER} ${INSPIRCD_GROUP} 0755
+OWN_DIRS_PERMS+= ${PREFIX}/inspircd/logs ${INSPIRCD_USER} ${INSPIRCD_GROUP} 0755
+
+RCD_SCRIPTS= inspircd
+
+EGDIR= ${PREFIX}/share/examples/inspircd
+
+SUBST_CLASSES+= conf
+SUBST_STAGE.conf= pre-configure
+SUBST_MESSAGE.conf= Set variables in configuration file.
+SUBST_FILES.conf+= docs/conf/inspircd.conf.example
+SUBST_VARS.conf+= PREFIX
+
+INSTALLATION_DIRS+= ${EGDIR}
+INSTALLATION_DIRS+= ${EGDIR}/sql
+INSTALLATION_DIRS+= ${EGDIR}/services
+INSTALLATION_DIRS+= ${PKG_SYSCONFDIR}/inspircd/services
+
+INSPIRCD_EXTRAS_OFF+= m_regex_re2.cpp
+INSPIRCD_EXTRAS_OFF+= m_regex_tre.cpp
+
+CONFIGURE_ARGS+= --distribution-label=pkgsrc
+
+# https://github.com/inspircd/inspircd/commit/044fa999680888267e07dc7b69028b18efbac818
+# this has no side-effects other than allowing the build to proceed with
+# distribution-label set
+CONFIGURE_ARGS+= --development
+
+.include "options.mk"
+
+post-configure:
+ cd ${WRKSRC} && ${CONFIGURE_ENV} ${PERL5} ./configure \
+ --enable-extras=${INSPIRCD_EXTRAS_ON:C/\.cpp[ ]* m_/.cpp,m_/gW} \
+ --disable-extras=${INSPIRCD_EXTRAS_OFF:C/\.cpp[ ]* m_/.cpp,m_/gW}
+
+post-install:
+ ${MV} ${DESTDIR}${PREFIX}/etc/inspircd/examples/* \
+ ${DESTDIR}${PREFIX}/share/examples/inspircd
+ ${RM} -rf ${DESTDIR}${PREFIX}/etc/inspircd/examples
+ ${RM} -f ${DESTDIR}${PREFIX}/.gdbargs
+ ${CHMOD} ${BINMODE} ${DESTDIR}${PREFIX}/bin/inspircd
+ ${CHMOD} ${BINMODE} ${DESTDIR}${PREFIX}/bin/inspircd-genssl
+ ${CHMOD} ${BINMODE} ${DESTDIR}${PREFIX}/lib/inspircd/modules/*.so
+
+.include "../../mk/pthread.buildlink3.mk"
+.include "../../mk/bsd.pkg.mk"
diff --git a/chat/inspircd3/PLIST b/chat/inspircd3/PLIST
new file mode 100644
index 00000000000..49ee061bb6b
--- /dev/null
+++ b/chat/inspircd3/PLIST
@@ -0,0 +1,221 @@
+@comment $NetBSD: PLIST,v 1.1 2019/05/03 17:14:27 nia Exp $
+bin/inspircd
+bin/inspircd-genssl
+lib/inspircd/modules/core_channel.so
+lib/inspircd/modules/core_dns.so
+lib/inspircd/modules/core_hostname_lookup.so
+lib/inspircd/modules/core_info.so
+lib/inspircd/modules/core_list.so
+lib/inspircd/modules/core_loadmodule.so
+lib/inspircd/modules/core_lusers.so
+lib/inspircd/modules/core_message.so
+lib/inspircd/modules/core_mode.so
+lib/inspircd/modules/core_oper.so
+lib/inspircd/modules/core_reloadmodule.so
+lib/inspircd/modules/core_serialize_rfc.so
+lib/inspircd/modules/core_stats.so
+lib/inspircd/modules/core_stub.so
+lib/inspircd/modules/core_user.so
+lib/inspircd/modules/core_wallops.so
+lib/inspircd/modules/core_who.so
+lib/inspircd/modules/core_whois.so
+lib/inspircd/modules/core_whowas.so
+lib/inspircd/modules/core_xline.so
+lib/inspircd/modules/m_abbreviation.so
+lib/inspircd/modules/m_alias.so
+lib/inspircd/modules/m_allowinvite.so
+lib/inspircd/modules/m_alltime.so
+lib/inspircd/modules/m_anticaps.so
+lib/inspircd/modules/m_auditorium.so
+lib/inspircd/modules/m_autoop.so
+lib/inspircd/modules/m_banexception.so
+lib/inspircd/modules/m_banredirect.so
+lib/inspircd/modules/m_bcrypt.so
+lib/inspircd/modules/m_blockamsg.so
+lib/inspircd/modules/m_blockcaps.so
+lib/inspircd/modules/m_blockcolor.so
+lib/inspircd/modules/m_botmode.so
+lib/inspircd/modules/m_callerid.so
+lib/inspircd/modules/m_cap.so
+lib/inspircd/modules/m_cban.so
+lib/inspircd/modules/m_censor.so
+lib/inspircd/modules/m_cgiirc.so
+lib/inspircd/modules/m_chancreate.so
+lib/inspircd/modules/m_chanfilter.so
+lib/inspircd/modules/m_chanhistory.so
+lib/inspircd/modules/m_chanlog.so
+lib/inspircd/modules/m_channames.so
+lib/inspircd/modules/m_channelban.so
+lib/inspircd/modules/m_check.so
+lib/inspircd/modules/m_chghost.so
+lib/inspircd/modules/m_chgident.so
+lib/inspircd/modules/m_chgname.so
+lib/inspircd/modules/m_classban.so
+lib/inspircd/modules/m_clearchan.so
+lib/inspircd/modules/m_cloaking.so
+lib/inspircd/modules/m_clones.so
+lib/inspircd/modules/m_commonchans.so
+lib/inspircd/modules/m_conn_join.so
+lib/inspircd/modules/m_conn_umodes.so
+lib/inspircd/modules/m_conn_waitpong.so
+lib/inspircd/modules/m_connectban.so
+lib/inspircd/modules/m_connflood.so
+lib/inspircd/modules/m_customprefix.so
+lib/inspircd/modules/m_customtitle.so
+lib/inspircd/modules/m_cycle.so
+lib/inspircd/modules/m_dccallow.so
+lib/inspircd/modules/m_deaf.so
+lib/inspircd/modules/m_delayjoin.so
+lib/inspircd/modules/m_delaymsg.so
+lib/inspircd/modules/m_denychans.so
+lib/inspircd/modules/m_disable.so
+lib/inspircd/modules/m_dnsbl.so
+lib/inspircd/modules/m_exemptchanops.so
+lib/inspircd/modules/m_filter.so
+lib/inspircd/modules/m_flashpolicyd.so
+lib/inspircd/modules/m_gecosban.so
+${PLIST.geoip}lib/inspircd/modules/m_geo_maxmind.so
+lib/inspircd/modules/m_geoban.so
+lib/inspircd/modules/m_geoclass.so
+lib/inspircd/modules/m_globalload.so
+lib/inspircd/modules/m_globops.so
+lib/inspircd/modules/m_haproxy.so
+lib/inspircd/modules/m_helpop.so
+lib/inspircd/modules/m_hidechans.so
+lib/inspircd/modules/m_hidelist.so
+lib/inspircd/modules/m_hidemode.so
+lib/inspircd/modules/m_hideoper.so
+lib/inspircd/modules/m_hostchange.so
+lib/inspircd/modules/m_hostcycle.so
+lib/inspircd/modules/m_httpd.so
+lib/inspircd/modules/m_httpd_acl.so
+lib/inspircd/modules/m_httpd_config.so
+lib/inspircd/modules/m_httpd_stats.so
+lib/inspircd/modules/m_ident.so
+lib/inspircd/modules/m_inviteexception.so
+lib/inspircd/modules/m_ircv3.so
+lib/inspircd/modules/m_ircv3_accounttag.so
+lib/inspircd/modules/m_ircv3_batch.so
+lib/inspircd/modules/m_ircv3_capnotify.so
+lib/inspircd/modules/m_ircv3_chghost.so
+lib/inspircd/modules/m_ircv3_ctctags.so
+lib/inspircd/modules/m_ircv3_echomessage.so
+lib/inspircd/modules/m_ircv3_invitenotify.so
+lib/inspircd/modules/m_ircv3_servertime.so
+lib/inspircd/modules/m_ircv3_sts.so
+lib/inspircd/modules/m_joinflood.so
+lib/inspircd/modules/m_kicknorejoin.so
+lib/inspircd/modules/m_knock.so
+lib/inspircd/modules/m_ldapauth.so
+lib/inspircd/modules/m_ldapoper.so
+lib/inspircd/modules/m_lockserv.so
+lib/inspircd/modules/m_maphide.so
+lib/inspircd/modules/m_md5.so
+lib/inspircd/modules/m_messageflood.so
+lib/inspircd/modules/m_mlock.so
+lib/inspircd/modules/m_modenotice.so
+lib/inspircd/modules/m_monitor.so
+lib/inspircd/modules/m_muteban.so
+${PLIST.mysql}lib/inspircd/modules/m_mysql.so
+lib/inspircd/modules/m_namedmodes.so
+lib/inspircd/modules/m_namesx.so
+lib/inspircd/modules/m_nationalchars.so
+lib/inspircd/modules/m_nickflood.so
+lib/inspircd/modules/m_nicklock.so
+lib/inspircd/modules/m_noctcp.so
+lib/inspircd/modules/m_nokicks.so
+lib/inspircd/modules/m_nonicks.so
+lib/inspircd/modules/m_nonotice.so
+lib/inspircd/modules/m_nopartmsg.so
+lib/inspircd/modules/m_ojoin.so
+lib/inspircd/modules/m_operchans.so
+lib/inspircd/modules/m_operjoin.so
+lib/inspircd/modules/m_operlevels.so
+lib/inspircd/modules/m_operlog.so
+lib/inspircd/modules/m_opermodes.so
+lib/inspircd/modules/m_opermotd.so
+lib/inspircd/modules/m_operprefix.so
+lib/inspircd/modules/m_override.so
+lib/inspircd/modules/m_passforward.so
+lib/inspircd/modules/m_password_hash.so
+lib/inspircd/modules/m_pbkdf2.so
+lib/inspircd/modules/m_permchannels.so
+${PLIST.pgsql}lib/inspircd/modules/m_pgsql.so
+lib/inspircd/modules/m_randquote.so
+lib/inspircd/modules/m_redirect.so
+lib/inspircd/modules/m_regex_glob.so
+${PLIST.pcre}lib/inspircd/modules/m_regex_pcre.so
+lib/inspircd/modules/m_regex_posix.so
+lib/inspircd/modules/m_remove.so
+lib/inspircd/modules/m_repeat.so
+lib/inspircd/modules/m_restrictchans.so
+lib/inspircd/modules/m_restrictmsg.so
+lib/inspircd/modules/m_rline.so
+lib/inspircd/modules/m_rmode.so
+lib/inspircd/modules/m_sajoin.so
+lib/inspircd/modules/m_sakick.so
+lib/inspircd/modules/m_samode.so
+lib/inspircd/modules/m_sanick.so
+lib/inspircd/modules/m_sapart.so
+lib/inspircd/modules/m_saquit.so
+lib/inspircd/modules/m_sasl.so
+lib/inspircd/modules/m_satopic.so
+lib/inspircd/modules/m_securelist.so
+lib/inspircd/modules/m_seenicks.so
+lib/inspircd/modules/m_serverban.so
+lib/inspircd/modules/m_services_account.so
+lib/inspircd/modules/m_servprotect.so
+lib/inspircd/modules/m_sethost.so
+lib/inspircd/modules/m_setident.so
+lib/inspircd/modules/m_setidle.so
+lib/inspircd/modules/m_setname.so
+lib/inspircd/modules/m_sha1.so
+lib/inspircd/modules/m_sha256.so
+lib/inspircd/modules/m_showfile.so
+lib/inspircd/modules/m_showwhois.so
+lib/inspircd/modules/m_shun.so
+lib/inspircd/modules/m_silence.so
+lib/inspircd/modules/m_spanningtree.so
+lib/inspircd/modules/m_sqlauth.so
+${PLIST.sqlite3}lib/inspircd/modules/m_sqlite3.so
+lib/inspircd/modules/m_sqloper.so
+${PLIST.gnutls}lib/inspircd/modules/m_ssl_gnutls.so
+${PLIST.mbedtls}lib/inspircd/modules/m_ssl_mbedtls.so
+${PLIST.openssl}lib/inspircd/modules/m_ssl_openssl.so
+lib/inspircd/modules/m_sslinfo.so
+lib/inspircd/modules/m_sslmodes.so
+lib/inspircd/modules/m_sslrehashsignal.so
+lib/inspircd/modules/m_starttls.so
+lib/inspircd/modules/m_stripcolor.so
+lib/inspircd/modules/m_svshold.so
+lib/inspircd/modules/m_swhois.so
+lib/inspircd/modules/m_timedbans.so
+lib/inspircd/modules/m_tline.so
+lib/inspircd/modules/m_topiclock.so
+lib/inspircd/modules/m_uhnames.so
+lib/inspircd/modules/m_uninvite.so
+lib/inspircd/modules/m_userip.so
+lib/inspircd/modules/m_vhost.so
+lib/inspircd/modules/m_watch.so
+lib/inspircd/modules/m_websocket.so
+lib/inspircd/modules/m_xline_db.so
+man/man1/inspircd-genssl.1
+man/man1/inspircd.1
+share/examples/inspircd/filter.conf.example
+share/examples/inspircd/helpop.conf.example
+share/examples/inspircd/inspircd.conf.example
+share/examples/inspircd/links.conf.example
+share/examples/inspircd/modules.conf.example
+share/examples/inspircd/motd.txt.example
+share/examples/inspircd/opermotd.txt.example
+share/examples/inspircd/opers.conf.example
+share/examples/inspircd/quotes.txt.example
+share/examples/inspircd/services/anope.conf.example
+share/examples/inspircd/services/atheme.conf.example
+share/examples/inspircd/services/generic.conf.example
+share/examples/inspircd/sql/sqloper.mysql.sql
+share/examples/inspircd/sql/sqloper.pgsql.sql
+share/examples/inspircd/sql/sqloper.sqlite3.sql
+@pkgdir inspircd/logs
+@pkgdir inspircd/data
+@pkgdir etc/inspircd/services
diff --git a/chat/inspircd3/distinfo b/chat/inspircd3/distinfo
new file mode 100644
index 00000000000..5e310c60b03
--- /dev/null
+++ b/chat/inspircd3/distinfo
@@ -0,0 +1,10 @@
+$NetBSD: distinfo,v 1.1 2019/05/03 17:14:27 nia Exp $
+
+SHA1 (inspircd-3.0.0.tar.gz) = 8b2ba94966bea4918782aaef8923581d66ec8aec
+RMD160 (inspircd-3.0.0.tar.gz) = 660bbed10afa988102f1453f4613e409550c2717
+SHA512 (inspircd-3.0.0.tar.gz) = 3510a92cfdbc3500e39687a8fbf56616994e41be918e7f9a7081552faf06363db179aae24a8cecf75bc2b7ec53b84424e4033642438eb3e595deef04d208ea72
+Size (inspircd-3.0.0.tar.gz) = 793937 bytes
+SHA1 (patch-docs_conf_inspircd.conf.example) = c6e9da54f81a2a5d34e933281d997b5ec687da52
+SHA1 (patch-docs_conf_modules.conf.example) = 4a4ef063ae1c908268a34f0407a00c1df70a6a18
+SHA1 (patch-make_template_main.mk) = 51f4de27d7d946c2dffc7060628eb0f6f4f19db7
+SHA1 (patch-src_socketengines_socketengine__kqueue.cpp) = fb1e02ec8dad42dab981980c6b56f3ed11495328
diff --git a/chat/inspircd3/files/inspircd.sh b/chat/inspircd3/files/inspircd.sh
new file mode 100644
index 00000000000..ffc0dc9d27f
--- /dev/null
+++ b/chat/inspircd3/files/inspircd.sh
@@ -0,0 +1,31 @@
+#!@RCD_SCRIPTS_SHELL@
+#
+# $NetBSD: inspircd.sh,v 1.1 2019/05/03 17:14:27 nia Exp $
+#
+# PROVIDE: inspircd
+# REQUIRE: DAEMON
+
+. /etc/rc.subr
+
+name="inspircd"
+rcvar=${name}
+command="@PREFIX@/bin/inspircd"
+required_files="@PKG_SYSCONFDIR@/inspircd/inspircd.conf"
+pidfile="@PREFIX@/inspircd/${name}.pid"
+extra_commands="rehash sslrehash"
+rehash_cmd="inspircd_rehash"
+sslrehash_cmd="inspircd_sslrehash"
+
+inspircd_user="@INSPIRCD_USER@"
+inspircd_group="@INSPIRCD_GROUP@"
+
+inspircd_rehash() {
+ kill -1 $(@CAT@ ${pidfile})
+}
+
+inspircd_sslrehash() {
+ kill -USR1 $(@CAT@ ${pidfile})
+}
+
+load_rc_config $name
+run_rc_command "$1"
diff --git a/chat/inspircd3/options.mk b/chat/inspircd3/options.mk
new file mode 100644
index 00000000000..cf2ac0d2b48
--- /dev/null
+++ b/chat/inspircd3/options.mk
@@ -0,0 +1,80 @@
+# $NetBSD: options.mk,v 1.1 2019/05/03 17:14:27 nia Exp $
+
+PKG_OPTIONS_VAR= PKG_OPTIONS.inspircd
+PKG_SUPPORTED_OPTIONS= gnutls geoip openssl mysql mbedtls ldap pcre pgsql sqlite3
+PKG_SUGGESTED_OPTIONS= gnutls
+PLIST_VARS+= gnutls geoip openssl mysql mbedtls ldap pcre pgsql sqlite3
+
+.include "../../mk/bsd.options.mk"
+
+.if !empty(PKG_OPTIONS:Mgeoip)
+PLIST.geoip= yes
+INSPIRCD_EXTRAS_ON+= m_geo_maxmind.cpp
+.include "../../geography/libmaxminddb/buildlink3.mk"
+.else
+INSPIRCD_EXTRAS_OFF+= m_geo_maxmind.cpp
+.endif
+
+.if !empty(PKG_OPTIONS:Mgnutls)
+PLIST.gnutls= yes
+INSPIRCD_EXTRAS_ON+= m_ssl_gnutls.cpp
+.include "../../security/gnutls/buildlink3.mk"
+.else
+INSPIRCD_EXTRAS_OFF+= m_ssl_gnutls.cpp
+.endif
+
+.if !empty(PKG_OPTIONS:Mopenssl)
+PLIST.openssl= yes
+INSPIRCD_EXTRAS_ON+= m_ssl_openssl.cpp
+.include "../../security/openssl/buildlink3.mk"
+.else
+INSPIRCD_EXTRAS_OFF+= m_ssl_openssl.cpp
+.endif
+
+.if !empty(PKG_OPTIONS:Mmbedtls)
+PLIST.mbedtls= yes
+INSPIRCD_EXTRAS_ON+= m_ssl_mbedtls.cpp
+.include "../../security/mbedtls/buildlink3.mk"
+.else
+INSPIRCD_EXTRAS_OFF+= m_ssl_mbedtls.cpp
+.endif
+
+.if !empty(PKG_OPTIONS:Mmysql)
+PLIST.mysql= yes
+INSPIRCD_EXTRAS_ON+= m_mysql.cpp
+.include "../../mk/mysql.buildlink3.mk"
+.else
+INSPIRCD_EXTRAS_OFF+= m_mysql.cpp
+.endif
+
+.if !empty(PKG_OPTIONS:Mldap)
+PLIST.ldap= yes
+INSPIRCD_EXTRAS_ON+= m_mysql.cpp
+.include "../../databases/openldap-client/buildlink3.mk"
+.else
+INSPIRCD_EXTRAS_OFF+= m_mysql.cpp
+.endif
+
+.if !empty(PKG_OPTIONS:Mpcre)
+PLIST.pcre= yes
+INSPIRCD_EXTRAS_ON+= m_regex_pcre.cpp
+.include "../../devel/pcre/buildlink3.mk"
+.else
+INSPIRCD_EXTRAS_OFF+= m_regex_pcre.cpp
+.endif
+
+.if !empty(PKG_OPTIONS:Mpgsql)
+PLIST.pgsql= yes
+INSPIRCD_EXTRAS_ON+= m_pgsql.cpp
+.include "../../mk/pgsql.buildlink3.mk"
+.else
+INSPIRCD_EXTRAS_OFF+= m_pgsql.cpp
+.endif
+
+.if !empty(PKG_OPTIONS:Msqlite3)
+PLIST.sqlite3= yes
+INSPIRCD_EXTRAS_ON+= m_sqlite3.cpp
+.include "../../databases/sqlite3/buildlink3.mk"
+.else
+INSPIRCD_EXTRAS_OFF+= m_sqlite3.cpp
+.endif
diff --git a/chat/inspircd3/patches/patch-docs_conf_inspircd.conf.example b/chat/inspircd3/patches/patch-docs_conf_inspircd.conf.example
new file mode 100644
index 00000000000..e55c4b8abf9
--- /dev/null
+++ b/chat/inspircd3/patches/patch-docs_conf_inspircd.conf.example
@@ -0,0 +1,66 @@
+$NetBSD: patch-docs_conf_inspircd.conf.example,v 1.1 2019/05/03 17:14:28 nia Exp $
+
+Don't use /etc/inspircd/examples.
+
+Set pidfile.
+
+--- docs/conf/inspircd.conf.example.orig 2019-05-03 13:07:32.000000000 +0000
++++ docs/conf/inspircd.conf.example
+@@ -457,11 +457,11 @@
+
+ # This file has all the information about oper classes, types and o:lines.
+ # You *MUST* edit it.
+-<include file="examples/opers.conf.example">
++<include file="opers.conf">
+
+ # This file has all the information about server links and ulined servers.
+ # You *MUST* edit it if you intend to link servers.
+-<include file="examples/links.conf.example">
++<include file="links.conf">
+
+ #-#-#-#-#-#-#-#-#-#- MISCELLANEOUS CONFIGURATION -#-#-#-#-#-#-#-#-#-#
+ # #
+@@ -470,7 +470,7 @@
+ #
+ # motd - displayed on connect and when a user executes /MOTD
+ # Modules can also define their own files
+-<files motd="examples/motd.txt.example">
++<files motd="motd.txt">
+
+ # Example of an executable file include. Note this will be read on rehash,
+ # not when the command is run.
+@@ -506,7 +506,7 @@
+ # the default of 'inspircd.pid' is used. #
+ # #
+
+-#<pid file="/path/to/inspircd.pid">
++<pid file="@PREFIX@/inspircd/inspircd.pid">
+
+ #-#-#-#-#-#-#-#-#-#-#-#-#- LIST MODE LIMITS #-#-#-#-#-#-#-#-#-#-#-#-#-#
+ # #
+@@ -1002,7 +1002,7 @@
+ # provide almost all the features of InspIRCd. :) #
+ # #
+ # The default does nothing -- we include it for simplicity for you. #
+-<include file="examples/modules.conf.example">
++<include file="modules.conf">
+
+ #-#-#-#-#-#-#-#-#-#-#-# SERVICES CONFIGURATION #-#-#-#-#-#-#-#-#-#-#-#
+ # #
+@@ -1011,13 +1011,13 @@
+ # exemptions for services pseudoclients: #
+ #
+ # Anope users should uncomment this:
+-#<include file="examples/services/anope.conf.example">
++#<include file="services/anope.conf">
+ #
+ # Atheme users should uncomment this:
+-#<include file="examples/services/atheme.conf.example">
++#<include file="services/atheme.conf">
+ #
+ # Users of other services should uncomment this:
+-#<include file="examples/services/generic.conf.example">
++#<include file="services/generic.conf">
+
+ #########################################################################
+ # #
diff --git a/chat/inspircd3/patches/patch-docs_conf_modules.conf.example b/chat/inspircd3/patches/patch-docs_conf_modules.conf.example
new file mode 100644
index 00000000000..93f39bc4e2e
--- /dev/null
+++ b/chat/inspircd3/patches/patch-docs_conf_modules.conf.example
@@ -0,0 +1,33 @@
+$NetBSD: patch-docs_conf_modules.conf.example,v 1.1 2019/05/03 17:14:28 nia Exp $
+
+Don't use /etc/inspircd/examples.
+
+--- docs/conf/modules.conf.example.orig 2019-05-03 13:07:32.000000000 +0000
++++ docs/conf/modules.conf.example
+@@ -870,7 +870,7 @@
+ # specify below the path to the filter.conf file, or define some #
+ # <keyword> tags. #
+ # #
+-#<include file="examples/filter.conf.example">
++#<include file="filter.conf">
+
+ #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
+ # Flash Policy Daemon module: Allows Flash IRC clients (e.g. LightIRC)#
+@@ -960,7 +960,7 @@
+ # If you specify to use the helpop module, then specify below the #
+ # path to the helpop.conf file. #
+ # #
+-#<include file="examples/helpop.conf.example">
++#<include file="helpop.conf">
+
+ #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
+ # Hide chans module: Allows users to hide their channels list from non-
+@@ -1525,7 +1525,7 @@
+ # onoper - If on, the message is sent on /OPER, otherwise it's #
+ # only sent when /OPERMOTD is used. #
+ # #
+-#<opermotd file="examples/opermotd.txt.example" onoper="yes">
++#<opermotd file="opermotd.txt" onoper="yes">
+
+ #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
+ # Override module: Adds support for oper override.
diff --git a/chat/inspircd3/patches/patch-make_template_main.mk b/chat/inspircd3/patches/patch-make_template_main.mk
new file mode 100644
index 00000000000..1e4ec8ff078
--- /dev/null
+++ b/chat/inspircd3/patches/patch-make_template_main.mk
@@ -0,0 +1,14 @@
+$NetBSD: patch-make_template_main.mk,v 1.1 2019/05/03 17:14:28 nia Exp $
+
+bmake: exec(ginstall) failed (No such file or directory)
+
+--- make/template/main.mk.orig 2019-05-03 13:07:32.000000000 +0000
++++ make/template/main.mk
+@@ -73,7 +73,6 @@ ifeq ($(SYSTEM), gnu)
+ endif
+ ifeq ($(SYSTEM), solaris)
+ LDLIBS += -lsocket -lnsl -lrt -lresolv
+- INSTALL = ginstall
+ endif
+ ifeq ($(SYSTEM), darwin)
+ LDLIBS += -ldl
diff --git a/chat/inspircd3/patches/patch-src_socketengines_socketengine__kqueue.cpp b/chat/inspircd3/patches/patch-src_socketengines_socketengine__kqueue.cpp
new file mode 100644
index 00000000000..d1fbc1b39c8
--- /dev/null
+++ b/chat/inspircd3/patches/patch-src_socketengines_socketengine__kqueue.cpp
@@ -0,0 +1,56 @@
+$NetBSD: patch-src_socketengines_socketengine__kqueue.cpp,v 1.1 2019/05/03 17:14:28 nia Exp $
+
+udata is intptr_t in NetBSD.
+
+https://github.com/inspircd/inspircd/commit/0c992c5a3d6b30a6b14adf3181bf0b1e1fdeab48
+
+--- src/socketengines/socketengine_kqueue.cpp.orig 2019-05-03 13:07:32.000000000 +0000
++++ src/socketengines/socketengine_kqueue.cpp
+@@ -87,7 +87,11 @@ bool SocketEngine::AddFd(EventHandler* e
+
+ // We always want to read from the socket...
+ struct kevent* ke = GetChangeKE();
++#ifdef __NetBSD__
++ EV_SET(ke, fd, EVFILT_READ, EV_ADD, 0, 0, reinterpret_cast<intptr_t>(eh));
++#else
+ EV_SET(ke, fd, EVFILT_READ, EV_ADD, 0, 0, static_cast<void*>(eh));
++#endif
+
+ ServerInstance->Logs->Log("SOCKET", LOG_DEBUG, "New file descriptor: %d", fd);
+
+@@ -128,7 +132,11 @@ void SocketEngine::OnSetEvent(EventHandl
+ {
+ // new poll-style write
+ struct kevent* ke = GetChangeKE();
++#ifdef __NetBSD__
++ EV_SET(ke, eh->GetFd(), EVFILT_WRITE, EV_ADD, 0, 0, reinterpret_cast<intptr_t>(eh));
++#else
+ EV_SET(ke, eh->GetFd(), EVFILT_WRITE, EV_ADD, 0, 0, static_cast<void*>(eh));
++#endif
+ }
+ else if ((old_mask & FD_WANT_POLL_WRITE) && !(new_mask & FD_WANT_POLL_WRITE))
+ {
+@@ -139,7 +147,11 @@ void SocketEngine::OnSetEvent(EventHandl
+ if ((new_mask & (FD_WANT_FAST_WRITE | FD_WANT_SINGLE_WRITE)) && !(old_mask & (FD_WANT_FAST_WRITE | FD_WANT_SINGLE_WRITE)))
+ {
+ struct kevent* ke = GetChangeKE();
++#ifdef __NetBSD__
++ EV_SET(ke, eh->GetFd(), EVFILT_WRITE, EV_ADD | EV_ONESHOT, 0, 0, reinterpret_cast<intptr_t>(eh));
++#else
+ EV_SET(ke, eh->GetFd(), EVFILT_WRITE, EV_ADD | EV_ONESHOT, 0, 0, static_cast<void*>(eh));
++#endif
+ }
+ }
+
+@@ -161,7 +173,11 @@ int SocketEngine::DispatchEvents()
+ for (int j = 0; j < i; j++)
+ {
+ struct kevent& kev = ke_list[j];
++#ifdef __NetBSD__
++ EventHandler* eh = reinterpret_cast<EventHandler*>(kev.udata);
++#else
+ EventHandler* eh = static_cast<EventHandler*>(kev.udata);
++#endif
+ if (!eh)
+ continue;
+