git: b7e53e7513e2 - main - textproc/mergestat: Update to 0.5.0

From: Lewis Cook <lcook_at_FreeBSD.org>
Date: Mon, 03 Jan 2022 21:16:14 UTC
The branch main has been updated by lcook:

URL: https://cgit.FreeBSD.org/ports/commit/?id=b7e53e7513e2c066c1f2e38215a04128cdc578ba

commit b7e53e7513e2c066c1f2e38215a04128cdc578ba
Author:     Lewis Cook <lcook@FreeBSD.org>
AuthorDate: 2022-01-03 21:04:10 +0000
Commit:     Lewis Cook <lcook@FreeBSD.org>
CommitDate: 2022-01-03 21:16:02 +0000

    textproc/mergestat: Update to 0.5.0
    
    Changes:        https://github.com/mergestat/mergestat/compare/v0.4.6...v0.5.0
---
 textproc/mergestat/Makefile       |  69 ++---------------
 textproc/mergestat/distinfo       | 124 ++-----------------------------
 textproc/mergestat/files/bridge.c | 137 ++++++++++++++++++++++++++++++++++
 textproc/mergestat/files/bridge.h | 152 ++++++++++++++++++++++++++++++++++++++
 textproc/mergestat/pkg-descr      |   2 +-
 5 files changed, 302 insertions(+), 182 deletions(-)

diff --git a/textproc/mergestat/Makefile b/textproc/mergestat/Makefile
index e43a4c5ac877..df77585523f0 100644
--- a/textproc/mergestat/Makefile
+++ b/textproc/mergestat/Makefile
@@ -1,7 +1,6 @@
 PORTNAME=	mergestat
 DISTVERSIONPREFIX=	v
-DISTVERSION=	0.4.6
-PORTREVISION=	1
+DISTVERSION=	0.5.0
 CATEGORIES=	textproc
 
 MAINTAINER=	lcook@FreeBSD.org
@@ -10,69 +9,11 @@ COMMENT=	Query git repositories with SQL
 LICENSE=	MIT
 LICENSE_FILE=	${WRKSRC}/LICENSE
 
-LIB_DEPENDS=	libgit2.so:devel/libgit2
 BUILD_DEPENDS=	sqlite3>=3.0.0:databases/sqlite3
+LIB_DEPENDS=	libgit2.so:devel/libgit2
 
 USES=		go:modules pkgconfig
-USE_GITHUB=	yes
-GH_TUPLE=	BurntSushi:toml:v0.4.1:burntsushi_toml/vendor/github.com/BurntSushi/toml \
-		DATA-DOG:go-sqlmock:v1.5.0:data_dog_go_sqlmock/vendor/github.com/DATA-DOG/go-sqlmock \
-		Microsoft:go-winio:v0.5.0:microsoft_go_winio/vendor/github.com/Microsoft/go-winio \
-		ProtonMail:go-crypto:52430bf6b52c:protonmail_go_crypto/vendor/github.com/ProtonMail/go-crypto \
-		acomagu:bufpipe:v1.0.3:acomagu_bufpipe/vendor/github.com/acomagu/bufpipe \
-		asaskevich:govalidator:f21760c49a8d:asaskevich_govalidator/vendor/github.com/asaskevich/govalidator \
-		augmentable-dev:vtab:5c7659b723dd:augmentable_dev_vtab/vendor/github.com/augmentable-dev/vtab \
-		clbanning:mxj:v2.5.5:clbanning_mxj_v2/vendor/github.com/clbanning/mxj/v2 \
-		dnaeon:go-vcr:v2.0.1:dnaeon_go_vcr_v2/vendor/github.com/dnaeon/go-vcr \
-		emirpasic:gods:v1.12.0:emirpasic_gods/vendor/github.com/emirpasic/gods \
-		ghodss:yaml:v1.0.0:ghodss_yaml/vendor/github.com/ghodss/yaml \
-		go-enry:go-enry:v2.7.1:go_enry_go_enry_v2/vendor/github.com/go-enry/go-enry/v2 \
-		go-enry:go-oniguruma:v1.2.1:go_enry_go_oniguruma/vendor/github.com/go-enry/go-oniguruma \
-		go-git:gcfg:v1.5.0:go_git_gcfg/vendor/github.com/go-git/gcfg \
-		go-git:go-billy:v5.3.1:go_git_go_billy_v5/vendor/github.com/go-git/go-billy/v5 \
-		go-git:go-git:v5.4.2:go_git_go_git_v5/vendor/github.com/go-git/go-git/v5 \
-		go-openapi:errors:v0.20.0:go_openapi_errors/vendor/github.com/go-openapi/errors \
-		go-openapi:strfmt:v0.20.1:go_openapi_strfmt/vendor/github.com/go-openapi/strfmt \
-		go-stack:stack:v1.8.1:go_stack_stack/vendor/github.com/go-stack/stack \
-		go-warnings:warnings:v0.1.2:go_warnings_warnings/vendor/gopkg.in/warnings.v0 \
-		go-yaml:yaml:v2.4.0:go_yaml_yaml/vendor/gopkg.in/yaml.v2 \
-		golang:appengine:v1.6.7:golang_appengine/vendor/google.golang.org/appengine \
-		golang:crypto:32db794688a5:golang_crypto/vendor/golang.org/x/crypto \
-		golang:mod:v0.5.0:golang_mod/vendor/golang.org/x/mod \
-		golang:net:60bc85c4be6d:golang_net/vendor/golang.org/x/net \
-		golang:oauth2:2bc19b11175f:golang_oauth2/vendor/golang.org/x/oauth2 \
-		golang:protobuf:v1.5.2:golang_protobuf/vendor/github.com/golang/protobuf \
-		golang:sys:41cdb8703e55:golang_sys/vendor/golang.org/x/sys \
-		golang:term:6886f2dfbf5b:golang_term/vendor/golang.org/x/term \
-		golang:time:1f47c861a9ac:golang_time/vendor/golang.org/x/time \
-		golang:xerrors:5ec99f83aff1:golang_xerrors/vendor/golang.org/x/xerrors \
-		imdario:mergo:v0.3.12:imdario_mergo/vendor/github.com/imdario/mergo \
-		inconshreveable:mousetrap:v1.0.0:inconshreveable_mousetrap/vendor/github.com/inconshreveable/mousetrap \
-		jbenet:go-context:d14ea06fba99:jbenet_go_context/vendor/github.com/jbenet/go-context \
-		jedib0t:go-pretty:v4.3.0:jedib0t_go_pretty/vendor/github.com/jedib0t/go-pretty \
-		kevinburke:ssh_config:v1.1.0:kevinburke_ssh_config/vendor/github.com/kevinburke/ssh_config \
-		lib:pq:v1.10.2:lib_pq/vendor/github.com/lib/pq \
-		libgit2:git2go:v31.4.14:libgit2_git2go_v31/vendor/github.com/libgit2/git2go/v31 \
-		mattn:go-pointer:v0.0.1:mattn_go_pointer/vendor/github.com/mattn/go-pointer \
-		mattn:go-runewidth:v0.0.13:mattn_go_runewidth/vendor/github.com/mattn/go-runewidth \
-		mattn:go-sqlite3:v1.14.8:mattn_go_sqlite3/vendor/github.com/mattn/go-sqlite3 \
-		mitchellh:go-homedir:v1.1.0:mitchellh_go_homedir/vendor/github.com/mitchellh/go-homedir \
-		mitchellh:mapstructure:v1.4.1:mitchellh_mapstructure/vendor/github.com/mitchellh/mapstructure \
-		mongodb:mongo-go-driver:v1.7.1:mongodb_mongo_go_driver/vendor/go.mongodb.org/mongo-driver \
-		oklog:ulid:v1.3.1:oklog_ulid/vendor/github.com/oklog/ulid \
-		pkg:errors:v0.9.1:pkg_errors/vendor/github.com/pkg/errors \
-		protocolbuffers:protobuf-go:v1.27.1:protocolbuffers_protobuf_go/vendor/google.golang.org/protobuf \
-		rivo:uniseg:v0.2.0:rivo_uniseg/vendor/github.com/rivo/uniseg \
-		riyaz-ali:sqlite:b3ba44e2587a:riyaz_ali_sqlite/vendor/go.riyazali.net/sqlite \
-		sergi:go-diff:v1.2.0:sergi_go_diff/vendor/github.com/sergi/go-diff \
-		shurcooL:githubv4:83ba7b4c9228:shurcool_githubv4/vendor/github.com/shurcooL/githubv4 \
-		shurcooL:graphql:18c5c3165e3a:shurcool_graphql/vendor/github.com/shurcooL/graphql \
-		spf13:cobra:v1.2.1:spf13_cobra/vendor/github.com/spf13/cobra \
-		spf13:pflag:v1.0.5:spf13_pflag/vendor/github.com/spf13/pflag \
-		uber-go:atomic:v1.7.0:uber_go_atomic/vendor/go.uber.org/atomic \
-		uber-go:multierr:v1.6.0:uber_go_multierr/vendor/go.uber.org/multierr \
-		uber-go:zap:v1.17.0:uber_go_zap/vendor/go.uber.org/zap \
-		xanzy:ssh-agent:v0.3.1:xanzy_ssh_agent/vendor/github.com/xanzy/ssh-agent
+GO_MODULE=	github.com/${PORTNAME}/${PORTNAME}
 
 GO_BUILDFLAGS=	-tags sqlite_vtable,sqlite_json1,system_libgit2
 GO_TESTFLAGS=	${GO_BUILDFLAGS}
@@ -85,6 +26,10 @@ PORTDOCS=	README.md
 
 OPTIONS_DEFINE=	DOCS
 
+pre-patch:
+	@${MKDIR} ${WRKSRC}/vendor/go.riyazali.net/sqlite/bridge
+	@${CP} ${FILESDIR}/bridge.h ${FILESDIR}/bridge.c ${WRKSRC}/vendor/go.riyazali.net/sqlite/bridge
+
 post-install-DOCS-on:
 	@${MKDIR} ${STAGEDIR}${DOCSDIR}
 	${INSTALL_DATA} ${WRKSRC}/${PORTDOCS} \
diff --git a/textproc/mergestat/distinfo b/textproc/mergestat/distinfo
index 5aa3514a741e..dbc8c6473eda 100644
--- a/textproc/mergestat/distinfo
+++ b/textproc/mergestat/distinfo
@@ -1,119 +1,5 @@
-TIMESTAMP = 1641242433
-SHA256 (mergestat-mergestat-v0.4.6_GH0.tar.gz) = 2ea9db9704e7366c10d5ce9186326aa68a34b5cd01807c52c1ffcacfe09e79c4
-SIZE (mergestat-mergestat-v0.4.6_GH0.tar.gz) = 2723068
-SHA256 (BurntSushi-toml-v0.4.1_GH0.tar.gz) = 280ad65e56f4a23dec30da7ccfd696d9d939a449af8b8be349c8fc487a117a85
-SIZE (BurntSushi-toml-v0.4.1_GH0.tar.gz) = 80986
-SHA256 (DATA-DOG-go-sqlmock-v1.5.0_GH0.tar.gz) = b78616fddfcc76892aecb5344968d7f3843128b70eba6c4752f092dc992c3b98
-SIZE (DATA-DOG-go-sqlmock-v1.5.0_GH0.tar.gz) = 35521
-SHA256 (Microsoft-go-winio-v0.5.0_GH0.tar.gz) = 82c90c7289b8885d4ecf8f8739399200f69bf7ff0d6ac9715d9f5b0f29a8f49d
-SIZE (Microsoft-go-winio-v0.5.0_GH0.tar.gz) = 88506
-SHA256 (ProtonMail-go-crypto-52430bf6b52c_GH0.tar.gz) = fdbf47974a03b3adcf3302bab2d5d325b16e31c550e960523a08f2462219cffd
-SIZE (ProtonMail-go-crypto-52430bf6b52c_GH0.tar.gz) = 308452
-SHA256 (acomagu-bufpipe-v1.0.3_GH0.tar.gz) = 9d34d4a015aa069649b951c36d4dc50fdbf6a2075717812ba68b9260d5c79986
-SIZE (acomagu-bufpipe-v1.0.3_GH0.tar.gz) = 3020
-SHA256 (asaskevich-govalidator-f21760c49a8d_GH0.tar.gz) = 8d22a0b8a8870f814314637343ba97d598aed64c026ab1dab045ee43eb34d416
-SIZE (asaskevich-govalidator-f21760c49a8d_GH0.tar.gz) = 62652
-SHA256 (augmentable-dev-vtab-5c7659b723dd_GH0.tar.gz) = 75d8ae31c8f3532b387228e16f5b198848e6649556cf4e8cb910e3976a8867ec
-SIZE (augmentable-dev-vtab-5c7659b723dd_GH0.tar.gz) = 7122
-SHA256 (clbanning-mxj-v2.5.5_GH0.tar.gz) = e37517fcad5249d7b1918a8207c04f40b2ab9f41267bea2af3a73a1f934a0a10
-SIZE (clbanning-mxj-v2.5.5_GH0.tar.gz) = 1095535
-SHA256 (dnaeon-go-vcr-v2.0.1_GH0.tar.gz) = 2465831e9001e4133a4ef7b5ea82769a7725c10eea96a444ba5c633d8bc4afca
-SIZE (dnaeon-go-vcr-v2.0.1_GH0.tar.gz) = 97657
-SHA256 (emirpasic-gods-v1.12.0_GH0.tar.gz) = 889d06b5f88db9e2dae19a799a35324c4f59305aa5e966dcdb4b637e70607ff9
-SIZE (emirpasic-gods-v1.12.0_GH0.tar.gz) = 76825
-SHA256 (ghodss-yaml-v1.0.0_GH0.tar.gz) = 8a76b47cd171944612aae1cfa08bbb971b63fec16794c839252808392097de44
-SIZE (ghodss-yaml-v1.0.0_GH0.tar.gz) = 11772
-SHA256 (go-enry-go-enry-v2.7.1_GH0.tar.gz) = 5b964e7597da0a7dbb0fdb1645f86ec025c19033b7dd6c7776f40e167246eb94
-SIZE (go-enry-go-enry-v2.7.1_GH0.tar.gz) = 3352302
-SHA256 (go-enry-go-oniguruma-v1.2.1_GH0.tar.gz) = e3c2389e61b5c1c7ee137560d645e2d82e5a119349930de35d81b91b92da81ed
-SIZE (go-enry-go-oniguruma-v1.2.1_GH0.tar.gz) = 13799
-SHA256 (go-git-gcfg-v1.5.0_GH0.tar.gz) = 662e46a93aba5ffe383e55597ce5749447e5c8e9409b1452f5790bfd6e1f8a11
-SIZE (go-git-gcfg-v1.5.0_GH0.tar.gz) = 28522
-SHA256 (go-git-go-billy-v5.3.1_GH0.tar.gz) = 7d715d7cf11f731dc0466bf93903ba7fe6ac70d086bb862fc24e718d9ddc209e
-SIZE (go-git-go-billy-v5.3.1_GH0.tar.gz) = 29365
-SHA256 (go-git-go-git-v5.4.2_GH0.tar.gz) = bbdb5f61f027fb949f4091160e26af07c62ca80089b6efbb4d524c69158bbdcf
-SIZE (go-git-go-git-v5.4.2_GH0.tar.gz) = 461782
-SHA256 (go-openapi-errors-v0.20.0_GH0.tar.gz) = a60f376f419e20b05858e49b766251c6ab27799ebedb4643f53988e2848bac3b
-SIZE (go-openapi-errors-v0.20.0_GH0.tar.gz) = 18839
-SHA256 (go-openapi-strfmt-v0.20.1_GH0.tar.gz) = cef0c25b71554edb56e1707dc0c0d2c463877861917e6b9a05f8a03dbda6efd8
-SIZE (go-openapi-strfmt-v0.20.1_GH0.tar.gz) = 44436
-SHA256 (go-stack-stack-v1.8.1_GH0.tar.gz) = 765ee8c9cb61af9171c368f2023e42214dc1be23e0aff0af6d1a1069be8b3603
-SIZE (go-stack-stack-v1.8.1_GH0.tar.gz) = 8477
-SHA256 (go-warnings-warnings-v0.1.2_GH0.tar.gz) = 4712c4ceae321433d8c1d9ebc6afd154d7932c849129ded48b1c4a51c21275e8
-SIZE (go-warnings-warnings-v0.1.2_GH0.tar.gz) = 3769
-SHA256 (go-yaml-yaml-v2.4.0_GH0.tar.gz) = d8e94679e5fff6bd1a35e10241543929a5f3da44f701755babf99b3daf0faac0
-SIZE (go-yaml-yaml-v2.4.0_GH0.tar.gz) = 73209
-SHA256 (golang-appengine-v1.6.7_GH0.tar.gz) = c623d81235f7c9699e299b328191d813337dd57dcc800d7afdb5130e8c321a8f
-SIZE (golang-appengine-v1.6.7_GH0.tar.gz) = 333007
-SHA256 (golang-crypto-32db794688a5_GH0.tar.gz) = c971927593630ecfa6531da54a579bf04186c354e365975cd86ea0e4c2c82fb7
-SIZE (golang-crypto-32db794688a5_GH0.tar.gz) = 1732714
-SHA256 (golang-mod-v0.5.0_GH0.tar.gz) = 9176aaaa49f9441047cc8768025e30af94048656f8261fe683ca11729dbdf7c7
-SIZE (golang-mod-v0.5.0_GH0.tar.gz) = 111977
-SHA256 (golang-net-60bc85c4be6d_GH0.tar.gz) = 5a32e5f6bd1baeddef7d84165d704c13b99cddf29d44c4025dfa213d82e3b846
-SIZE (golang-net-60bc85c4be6d_GH0.tar.gz) = 1252997
-SHA256 (golang-oauth2-2bc19b11175f_GH0.tar.gz) = 0c48c35f7a2770bfa38cac8cd2f851599c4de73811389c3a01f1db1e1eb93d33
-SIZE (golang-oauth2-2bc19b11175f_GH0.tar.gz) = 85667
-SHA256 (golang-protobuf-v1.5.2_GH0.tar.gz) = 088cc0f3ba18fb8f9d00319568ff0af5a06d8925a6e6cb983bb837b4efb703b3
-SIZE (golang-protobuf-v1.5.2_GH0.tar.gz) = 171702
-SHA256 (golang-sys-41cdb8703e55_GH0.tar.gz) = cbffedc998e4c4e407c7275940c6875fda413e3c9c14a81f3b27f543c7b57936
-SIZE (golang-sys-41cdb8703e55_GH0.tar.gz) = 1210475
-SHA256 (golang-term-6886f2dfbf5b_GH0.tar.gz) = e2e151fcf388487e6d70ce589408f9848a78843a790e3bae5409c86b10493bf9
-SIZE (golang-term-6886f2dfbf5b_GH0.tar.gz) = 14933
-SHA256 (golang-time-1f47c861a9ac_GH0.tar.gz) = 2548d6d6813621c77fa36a5783e36939d3f4427d962ba58415645f89fcb70925
-SIZE (golang-time-1f47c861a9ac_GH0.tar.gz) = 9533
-SHA256 (golang-xerrors-5ec99f83aff1_GH0.tar.gz) = 71975d658357e170fd6a41f92539cde8b39c9cd8bfe5931b6311bc5f5c0da0d7
-SIZE (golang-xerrors-5ec99f83aff1_GH0.tar.gz) = 13664
-SHA256 (imdario-mergo-v0.3.12_GH0.tar.gz) = f0ad95fe47f1a9c15545fe3e8abf4364b8163a0f872ce25d6f6ae85e7c885302
-SIZE (imdario-mergo-v0.3.12_GH0.tar.gz) = 22319
-SHA256 (inconshreveable-mousetrap-v1.0.0_GH0.tar.gz) = 5edc7731c819c305623568e317aa253d342be3447def97f1fa9e10eb5ad819f6
-SIZE (inconshreveable-mousetrap-v1.0.0_GH0.tar.gz) = 2290
-SHA256 (jbenet-go-context-d14ea06fba99_GH0.tar.gz) = b5a5c4fe8d73dea7dc838f1c428c5fff0db9b50a2c014208a2761de4e94fa5ba
-SIZE (jbenet-go-context-d14ea06fba99_GH0.tar.gz) = 5945
-SHA256 (jedib0t-go-pretty-v4.3.0_GH0.tar.gz) = 563c07ce1dc3bfaf88d3dad0e965c09e449993f775f30396b2e399953ffd7294
-SIZE (jedib0t-go-pretty-v4.3.0_GH0.tar.gz) = 550932
-SHA256 (kevinburke-ssh_config-v1.1.0_GH0.tar.gz) = a88b03ef5077abe2ad25e7c2cd34800099575712444d71612e0553dd317ac118
-SIZE (kevinburke-ssh_config-v1.1.0_GH0.tar.gz) = 19004
-SHA256 (lib-pq-v1.10.2_GH0.tar.gz) = 28d0029ba6905f5a7591a573d13ffcc12bce1d00aef23b0d9fe1e049605ba3ee
-SIZE (lib-pq-v1.10.2_GH0.tar.gz) = 103819
-SHA256 (libgit2-git2go-v31.4.14_GH0.tar.gz) = 826dc67405c94f76d69b85b942c537c56893ecee99fbcb89f8481d5301e407ab
-SIZE (libgit2-git2go-v31.4.14_GH0.tar.gz) = 115951
-SHA256 (mattn-go-pointer-v0.0.1_GH0.tar.gz) = 5630a863fa1c2516ea3d2eeab94274768463018778486dddebfcb0fa32ea50fb
-SIZE (mattn-go-pointer-v0.0.1_GH0.tar.gz) = 2035
-SHA256 (mattn-go-runewidth-v0.0.13_GH0.tar.gz) = 9b2aeafa5d95a40b32067ba22accdf42cc83414ec5b433ea7de330791beaa196
-SIZE (mattn-go-runewidth-v0.0.13_GH0.tar.gz) = 17353
-SHA256 (mattn-go-sqlite3-v1.14.8_GH0.tar.gz) = 522a8f673690f99144f4e460eddc0fd5284c2e39676ac0687b5f575f19812cf6
-SIZE (mattn-go-sqlite3-v1.14.8_GH0.tar.gz) = 2404082
-SHA256 (mitchellh-go-homedir-v1.1.0_GH0.tar.gz) = 646671c73a84a8dfb4a5a76b80c7b63549ffefa906524d45077301bc7da76600
-SIZE (mitchellh-go-homedir-v1.1.0_GH0.tar.gz) = 3362
-SHA256 (mitchellh-mapstructure-v1.4.1_GH0.tar.gz) = d936baa5006f7dda1346aff863745a110981f7583a1184e93b9077fa52cd4048
-SIZE (mitchellh-mapstructure-v1.4.1_GH0.tar.gz) = 27826
-SHA256 (mongodb-mongo-go-driver-v1.7.1_GH0.tar.gz) = d0db9b9fc1dee6aaf4cdffeb6e1f9f4fc1d1c5392fb5d8b3d2d0eb4b6a88fc4f
-SIZE (mongodb-mongo-go-driver-v1.7.1_GH0.tar.gz) = 6068550
-SHA256 (oklog-ulid-v1.3.1_GH0.tar.gz) = 499a6ee77ca473a44ad9f11425a8f87f6c02ff1221b11f24d13bee13ce632640
-SIZE (oklog-ulid-v1.3.1_GH0.tar.gz) = 55582
-SHA256 (pkg-errors-v0.9.1_GH0.tar.gz) = 56bfd893023daa498508bfe161de1be83299fcf15376035e7df79cbd7d6fa608
-SIZE (pkg-errors-v0.9.1_GH0.tar.gz) = 13415
-SHA256 (protocolbuffers-protobuf-go-v1.27.1_GH0.tar.gz) = 3ec41a8324431e72f85e0dc0c2c098cc14c3cb1ee8820996c8f46afca2d65609
-SIZE (protocolbuffers-protobuf-go-v1.27.1_GH0.tar.gz) = 1278521
-SHA256 (rivo-uniseg-v0.2.0_GH0.tar.gz) = 3ad738b5c9162ede110d75b23564b6e40e52dd9150ebbced402f4f70be106197
-SIZE (rivo-uniseg-v0.2.0_GH0.tar.gz) = 44036
-SHA256 (riyaz-ali-sqlite-b3ba44e2587a_GH0.tar.gz) = a80dc0aaced391f476e42d34c57948879b59bbffb8be0611474ff60bd6cd01b2
-SIZE (riyaz-ali-sqlite-b3ba44e2587a_GH0.tar.gz) = 2514518
-SHA256 (sergi-go-diff-v1.2.0_GH0.tar.gz) = 39590cae996778b7ffdd8eb9e8fc791117f16562dbef37f9c41b2f3ebb8f518b
-SIZE (sergi-go-diff-v1.2.0_GH0.tar.gz) = 1333585
-SHA256 (shurcooL-githubv4-83ba7b4c9228_GH0.tar.gz) = 39f83a1595e88b05d9fd2c67a8416ea9584c7fbc97a31f206f39fb44ae68198c
-SIZE (shurcooL-githubv4-83ba7b4c9228_GH0.tar.gz) = 48997
-SHA256 (shurcooL-graphql-18c5c3165e3a_GH0.tar.gz) = 179b68b8f86bd36ed023bdf0180d539f53c395f7bb232076339845e911837fa5
-SIZE (shurcooL-graphql-18c5c3165e3a_GH0.tar.gz) = 17464
-SHA256 (spf13-cobra-v1.2.1_GH0.tar.gz) = 382d414ff7b8f421ae07d32d5a17161718b45bdd00de86dc107a34e639857794
-SIZE (spf13-cobra-v1.2.1_GH0.tar.gz) = 161312
-SHA256 (spf13-pflag-v1.0.5_GH0.tar.gz) = 9a2cae1f8e8ab0d2cc8ebe468e871af28d9ac0962cf0520999e3ba85f0c7b808
-SIZE (spf13-pflag-v1.0.5_GH0.tar.gz) = 50796
-SHA256 (uber-go-atomic-v1.7.0_GH0.tar.gz) = 4d655e90a23d023b36607e2ce94c3b7bf650d41c81c0faff32432581d9099ad1
-SIZE (uber-go-atomic-v1.7.0_GH0.tar.gz) = 18566
-SHA256 (uber-go-multierr-v1.6.0_GH0.tar.gz) = f8a139a06fd70bbda0f089274bd723a00c33c5b269a696de4d6a8ab455a22717
-SIZE (uber-go-multierr-v1.6.0_GH0.tar.gz) = 12369
-SHA256 (uber-go-zap-v1.17.0_GH0.tar.gz) = 9608554d14e846718c5ebe44ab172ce6b748356679c17e144226af94ff232d9a
-SIZE (uber-go-zap-v1.17.0_GH0.tar.gz) = 142719
-SHA256 (xanzy-ssh-agent-v0.3.1_GH0.tar.gz) = 6c2fb46ae13198250d56d4b26cc8fedd46834bfb2a2e653116b012fdbb1c0227
-SIZE (xanzy-ssh-agent-v0.3.1_GH0.tar.gz) = 8622
+TIMESTAMP = 1641243182
+SHA256 (go/textproc_mergestat/mergestat-v0.5.0/v0.5.0.mod) = 083dafa4b2c789929938c93433264db4096e9fb4dbb1cfbc40bb7f222bc1a1e7
+SIZE (go/textproc_mergestat/mergestat-v0.5.0/v0.5.0.mod) = 1891
+SHA256 (go/textproc_mergestat/mergestat-v0.5.0/v0.5.0.zip) = 34579b5d905895e1271c6878263842c923e3f6e0d765b850df63a63b19e7c526
+SIZE (go/textproc_mergestat/mergestat-v0.5.0/v0.5.0.zip) = 2858833
diff --git a/textproc/mergestat/files/bridge.c b/textproc/mergestat/files/bridge.c
new file mode 100644
index 000000000000..34f615041031
--- /dev/null
+++ b/textproc/mergestat/files/bridge.c
@@ -0,0 +1,137 @@
+#include "bridge.h"
+
+SQLITE_EXTENSION_INIT3
+
+//- routine that work with sqlite3_context; see: https://sqlite.org/c3ref/context.html
+//-----------------------------
+
+void* _sqlite3_aggregate_context(sqlite3_context *ctx, int n){ return sqlite3_aggregate_context(ctx, n); }
+sqlite3* _sqlite3_context_db_handle(sqlite3_context *ctx){ return sqlite3_context_db_handle(ctx); }
+void* _sqlite3_user_data(sqlite3_context *ctx){ return sqlite3_user_data(ctx); }
+void* _sqlite3_get_auxdata(sqlite3_context *ctx, int n){ return sqlite3_get_auxdata(ctx, n); }
+void  _sqlite3_set_auxdata(sqlite3_context *ctx, int n, void *val, void (*destructor)(void *)){ return sqlite3_set_auxdata(ctx, n, val, destructor); }
+
+void _sqlite3_result_blob0(sqlite3_context *ctx, const void *val, int n, void (*destructor)(void *)){ sqlite3_result_blob(ctx, val, n, destructor); }
+void _sqlite3_result_blob64(sqlite3_context *ctx, const void *val, sqlite3_uint64 n, void (*destructor)(void *)){ sqlite3_result_blob64(ctx, val, n, destructor); }
+void _sqlite3_result_double(sqlite3_context *ctx, double val){ sqlite3_result_double(ctx, val); }
+void _sqlite3_result_error(sqlite3_context *ctx, const char *msg, int n){ sqlite3_result_error(ctx, msg, n); }
+void _sqlite3_result_error_code(sqlite3_context *ctx, int code){ sqlite3_result_error_code(ctx, code); }
+void _sqlite3_result_error_nomem(sqlite3_context *ctx){ sqlite3_result_error_nomem(ctx); }
+void _sqlite3_result_error_toobig(sqlite3_context *ctx){ sqlite3_result_error_toobig(ctx); }
+void _sqlite3_result_int(sqlite3_context *ctx, int val){ sqlite3_result_int(ctx, val); }
+void _sqlite3_result_int64(sqlite3_context *ctx, sqlite_int64 val){ sqlite3_result_int(ctx, val); }
+void _sqlite3_result_null(sqlite3_context *ctx){ sqlite3_result_null(ctx); }
+void _sqlite3_result_text0(sqlite3_context *ctx, const char *val, int n, void (*destructor)(void *)){ sqlite3_result_text(ctx, val, n, destructor); }
+void _sqlite3_result_value(sqlite3_context *ctx, sqlite3_value *val){ sqlite3_result_value(ctx, val); }
+void _sqlite3_result_pointer(sqlite3_context *ctx, void *val, const char *name, void (*destructor)(void *)){ sqlite3_result_pointer(ctx, val, name, destructor); }
+void _sqlite3_result_zeroblob(sqlite3_context *ctx, int sz){ return sqlite3_result_zeroblob(ctx, sz); }
+int  _sqlite3_result_zeroblob64(sqlite3_context *ctx, sqlite3_uint64 sz){ return sqlite3_result_zeroblob64(ctx, sz); }
+void _sqlite3_result_subtype(sqlite3_context *ctx, unsigned int v){return sqlite3_result_subtype(ctx, v);}
+
+// routines that work with sqlite_stmt; see: https://sqlite.org/c3ref/stmt.html
+//-----------------------------
+
+// constructor + destructor
+int _sqlite3_prepare_v2(sqlite3 *db, const char *sql, int n, sqlite3_stmt **stmt, const char **tail){ return sqlite3_prepare_v2(db, sql, n, stmt, tail); }
+int _sqlite3_finalize(sqlite3_stmt* stmt){ return sqlite3_finalize(stmt); }
+
+// stepping / executing a prepared statement
+int _sqlite3_step(sqlite3_stmt *stmt){ return sqlite3_step(stmt); }
+int _sqlite3_reset(sqlite3_stmt *stmt){ return sqlite3_reset(stmt); }
+int _sqlite3_clear_bindings(sqlite3_stmt *stmt){ return sqlite3_clear_bindings(stmt); }
+int _sqlite3_data_count(sqlite3_stmt *stmt){ return sqlite3_data_count(stmt); }
+int _sqlite3_column_count(sqlite3_stmt *stmt){ return sqlite3_column_count(stmt); }
+sqlite3* _sqlite3_db_handle(sqlite3_stmt* stmt){ return sqlite3_db_handle(stmt); }
+
+// binding values to prepared statement
+int _sqlite3_bind_blob(sqlite3_stmt *stmt, int i, const void *val, int n, void (*destructor)(void *)){ return sqlite3_bind_blob(stmt, i, val, n, destructor); }
+int _sqlite3_bind_double(sqlite3_stmt *stmt, int i, double val){ return sqlite3_bind_double(stmt, i, val); }
+int _sqlite3_bind_int(sqlite3_stmt *stmt, int i, int val){ return sqlite3_bind_int(stmt, i, val); }
+int _sqlite3_bind_int64(sqlite3_stmt *stmt, int i, sqlite_int64 val){ return sqlite3_bind_int64(stmt, i, val); }
+int _sqlite3_bind_null(sqlite3_stmt *stmt, int i){ return sqlite3_bind_null(stmt, i); }
+int _sqlite3_bind_text(sqlite3_stmt *stmt, int i, const char *val, int n, void (*destructor)(void *)){ return sqlite3_bind_text(stmt, i, val, n, destructor); }
+int _sqlite3_bind_pointer(sqlite3_stmt *stmt, int i, void *val, const char *type, void (*destructor)(void *)){ return sqlite3_bind_pointer(stmt, i, val, type, destructor); }
+int _sqlite3_bind_value(sqlite3_stmt *stmt, int i, const sqlite3_value *val){ return sqlite3_bind_value(stmt, i, val); }
+int _sqlite3_bind_zeroblob(sqlite3_stmt *stmt, int i, int sz){ return sqlite3_bind_zeroblob(stmt, i, sz); }
+int _sqlite3_bind_zeroblob64(sqlite3_stmt *stmt, int i, sqlite3_uint64 sz){ return sqlite3_bind_zeroblob64(stmt, i, sz); }
+
+int _sqlite3_bind_parameter_count(sqlite3_stmt *stmt){ return sqlite3_bind_parameter_count(stmt); }
+int _sqlite3_bind_parameter_index(sqlite3_stmt *stmt, const char *name){ return sqlite3_bind_parameter_index(stmt, name); }
+const char* _sqlite3_bind_parameter_name(sqlite3_stmt *stmt, int n){ return sqlite3_bind_parameter_name(stmt, n); }
+
+// reading result values from an sqlite3_stmt
+const void* _sqlite3_column_blob(sqlite3_stmt* stmt, int i){ return sqlite3_column_blob(stmt, i); }
+double _sqlite3_column_double(sqlite3_stmt* stmt, int i){ return sqlite3_column_double(stmt, i); }
+int _sqlite3_column_int(sqlite3_stmt* stmt, int i){ return sqlite3_column_int(stmt, i); }
+sqlite3_int64 _sqlite3_column_int64(sqlite3_stmt* stmt, int i){ return sqlite3_column_int64(stmt, i); }
+const unsigned char* _sqlite3_column_text(sqlite3_stmt* stmt, int i){ return sqlite3_column_text(stmt, i); }
+sqlite3_value* _sqlite3_column_value(sqlite3_stmt* stmt, int i){ return sqlite3_column_value(stmt, i); }
+int _sqlite3_column_bytes(sqlite3_stmt* stmt, int i){ return sqlite3_column_bytes(stmt, i); }
+
+// query sqlite3_stmt column information
+const char* _sqlite3_column_name(sqlite3_stmt* stmt, int i){ return sqlite3_column_name(stmt, i); }
+int _sqlite3_column_type(sqlite3_stmt* stmt, int i){ return sqlite3_column_type(stmt, i); }
+const char* _sqlite3_column_database_name(sqlite3_stmt *stmt, int i){ return sqlite3_column_database_name(stmt, i); }
+const char* _sqlite3_column_table_name(sqlite3_stmt *stmt, int i){ return sqlite3_column_table_name(stmt, i); }
+const char* _sqlite3_column_origin_name(sqlite3_stmt *stmt, int i){ return sqlite3_column_origin_name(stmt, i); }
+
+// meta-information about the statement itself
+int _sqlite3_stmt_readonly(sqlite3_stmt* pStmt) { return sqlite3_stmt_readonly(pStmt); }
+
+// routines to extract value from sqlite3_value type; see: https://sqlite.org/c3ref/value.html
+//-----------------------------
+
+const void* _sqlite3_value_blob(sqlite3_value *val){ return sqlite3_value_blob(val); }
+double _sqlite3_value_double(sqlite3_value *val){ return sqlite3_value_double(val); }
+int _sqlite3_value_int(sqlite3_value *val){ return sqlite3_value_int(val); }
+sqlite_int64 _sqlite3_value_int64(sqlite3_value *val){ return sqlite3_value_int64(val); }
+const unsigned char* _sqlite3_value_text(sqlite3_value *val){ return sqlite3_value_text(val); }
+int _sqlite3_value_bytes(sqlite3_value *val){ return sqlite3_value_bytes(val); }
+int _sqlite3_value_type(sqlite3_value *val){ return sqlite3_value_type(val); }
+unsigned int _sqlite3_value_subtype(sqlite3_value *val){ return sqlite3_value_subtype(val); }
+int _sqlite3_value_numeric_type(sqlite3_value *val){ return sqlite3_value_numeric_type(val); }
+void* _sqlite3_value_pointer(sqlite3_value *val, const char *name){ return sqlite3_value_pointer(val, name); }
+int _sqlite3_value_nochange(sqlite3_value *val){ return sqlite3_value_nochange(val); }
+
+// routines to register application-defined sql functions
+//-----------------------------
+
+int _sqlite3_create_collation_v2(sqlite3 *db, const char *zName, int eTextRep, void *pUserData, int (*xCompare)(void *, int, const void *, int, const void *), void (*xDestroy)(void *)){ return sqlite3_create_collation_v2(db, zName, eTextRep, pUserData, xCompare, xDestroy); }
+int _sqlite3_create_function_v2(sqlite3 *db, const char *zName, int nArgs, int eTextRep, void *pApp, void (*xFunc)(sqlite3_context *, int, sqlite3_value **), void (*xStep)(sqlite3_context *, int, sqlite3_value **), void (*xFinal)(sqlite3_context *), void (*xDestroy)(void *)){ return sqlite3_create_function_v2(db, zName, nArgs, eTextRep, pApp, xFunc, xStep, xFinal, xDestroy); }
+int _sqlite3_create_window_function(sqlite3 *db, const char *zName, int nArgs, int eTextRep, void *pApp, void (*xStep)(sqlite3_context *, int, sqlite3_value **), void (*xFinal)(sqlite3_context *), void (*xValue)(sqlite3_context *), void (*xInverse)(sqlite3_context *, int, sqlite3_value **), void (*xDestroy)(void *)) { return sqlite3_create_window_function(db, zName, nArgs, eTextRep, pApp, xStep, xFinal, xValue, xInverse, xDestroy); }
+
+// memory related operations
+void* _sqlite3_malloc(int sz){ return sqlite3_malloc(sz); }
+void* _sqlite3_realloc(void *p, int sz){ return sqlite3_realloc(p, sz); }
+void  _sqlite3_free(void *p){ sqlite3_free(p); }
+
+// error details handler
+int _sqlite3_errcode(sqlite3 *db){ return sqlite3_errcode(db); }
+const char *_sqlite3_errmsg(sqlite3 *db){ return sqlite3_errmsg(db); }
+
+// auth+tracing
+int _sqlite3_set_authorizer(sqlite3 *db, int (*xAuth)(void *, int, const char *, const char *, const char *, const char *), void *pUserData){ return sqlite3_set_authorizer(db, xAuth, pUserData); }
+int _sqlite3_trace_v2(sqlite3 *db, unsigned int uMask, int (*xCallback)(unsigned int, void *, void *, void *), void *pUserData){ return sqlite3_trace_v2(db, uMask, xCallback, pUserData); };
+
+// hooks
+void* _sqlite3_commit_hook(sqlite3 *db, int (*xCallback)(void *), void *pUserData){ return sqlite3_commit_hook(db, xCallback, pUserData); }
+void* _sqlite3_rollback_hook(sqlite3 *db, void (*xCallback)(void *), void *pUserData){ return sqlite3_rollback_hook(db, xCallback, pUserData); }
+void* _sqlite3_update_hook(sqlite3 *db, void (*xCallback)(void *, int, const char *, const char *, sqlite_int64), void *pUserData){ return sqlite3_update_hook(db, xCallback, pUserData); }
+
+// version number information
+sqlite_int64 _sqlite3_last_insert_rowid(sqlite3 *db){ return sqlite3_last_insert_rowid(db); }
+const char* _sqlite3_libversion(void){ return sqlite3_libversion(); }
+int _sqlite3_libversion_number(void) { return sqlite3_libversion_number(); }
+
+// Virtual table routines
+int _sqlite3_create_module_v2(sqlite3 *db, const char *name, const sqlite3_module *module, void *pApp, void (*destructor)(void *)){ return sqlite3_create_module_v2(db, name, module, pApp, destructor); }
+int _sqlite3_declare_vtab(sqlite3 *db, const char *sql) { return sqlite3_declare_vtab(db, sql); }
+
+// miscellaneous routines
+int _sqlite3_get_autocommit(sqlite3 *db){ return sqlite3_get_autocommit(db); }
+int _sqlite3_enable_shared_cache(int enable){ return sqlite3_enable_shared_cache(enable); }
+void _sqlite3_interrupt(sqlite3 *db){ sqlite3_interrupt(db); }
+int _sqlite3_release_memory(int i){ return sqlite3_release_memory(i); }
+int _sqlite3_threadsafe(void){ return sqlite3_threadsafe(); }
+int _sqlite3_limit(sqlite3* db, int id, int val){ return sqlite3_limit(db, id, val); }
+
diff --git a/textproc/mergestat/files/bridge.h b/textproc/mergestat/files/bridge.h
new file mode 100644
index 000000000000..0a19d97703e0
--- /dev/null
+++ b/textproc/mergestat/files/bridge.h
@@ -0,0 +1,152 @@
+#ifndef _BRIDGE_H
+#define _BRIDGE_H
+
+// This file defines a bridge between Golang and sqlite's c extension api.
+// Most of sqlite api function defined in <sqlite3ext.h> are macros that redirect calls
+// to an instance of sqlite3_api_routines, called as sqlite3_api.
+
+// As neither macros nor c function pointers work directly in cgo, we need to define a bridge
+// to redirect calls from golang to sqlite.
+
+// Most of the methods follow the convention of prefixing the sqlite api function with an underscore.
+// The bridge isn't extensive and doesn't cover the whole sqlite api.
+
+#include "../sqlite3.h"
+
+//- routine that work with sqlite3_context; see: https://sqlite.org/c3ref/context.html
+//-----------------------------
+
+void* _sqlite3_aggregate_context(sqlite3_context *, int);
+sqlite3* _sqlite3_context_db_handle(sqlite3_context*);
+void* _sqlite3_user_data(sqlite3_context *);
+void* _sqlite3_get_auxdata(sqlite3_context *, int);
+void  _sqlite3_set_auxdata(sqlite3_context *, int, void *, void (*)(void *));
+
+void _sqlite3_result_blob0(sqlite3_context *, const void *, int, void (*)(void *));
+void _sqlite3_result_blob64(sqlite3_context *, const void *, sqlite3_uint64, void (*)(void *));
+void _sqlite3_result_double(sqlite3_context *, double);
+void _sqlite3_result_error(sqlite3_context *, const char *, int);
+void _sqlite3_result_error_code(sqlite3_context *, int);
+void _sqlite3_result_error_nomem(sqlite3_context *);
+void _sqlite3_result_error_toobig(sqlite3_context *);
+void _sqlite3_result_int(sqlite3_context *, int);
+void _sqlite3_result_int64(sqlite3_context *, sqlite_int64);
+void _sqlite3_result_null(sqlite3_context *);
+void _sqlite3_result_text0(sqlite3_context *, const char *, int, void (*)(void *));
+void _sqlite3_result_value(sqlite3_context *, sqlite3_value *);
+void _sqlite3_result_pointer(sqlite3_context *, void *, const char *, void (*)(void *));
+void _sqlite3_result_zeroblob(sqlite3_context *, int);
+int _sqlite3_result_zeroblob64(sqlite3_context *, sqlite3_uint64);
+void _sqlite3_result_subtype(sqlite3_context *ctx, unsigned int v);
+
+// routines that work with sqlite_stmt; see: https://sqlite.org/c3ref/stmt.html
+//-----------------------------
+
+// constructor + destructor
+int _sqlite3_prepare_v2(sqlite3 *, const char *, int, sqlite3_stmt **, const char **);
+int _sqlite3_finalize(sqlite3_stmt*);
+
+// stepping / executing a prepared statement
+int _sqlite3_step(sqlite3_stmt *);
+int _sqlite3_reset(sqlite3_stmt *);
+int _sqlite3_clear_bindings(sqlite3_stmt *);
+int _sqlite3_data_count(sqlite3_stmt *);
+int _sqlite3_column_count(sqlite3_stmt *);
+sqlite3* _sqlite3_db_handle(sqlite3_stmt*);
+
+// binding values to prepared statement
+int _sqlite3_bind_blob(sqlite3_stmt *, int, const void *, int, void (*)(void *));
+int _sqlite3_bind_double(sqlite3_stmt *, int, double);
+int _sqlite3_bind_int(sqlite3_stmt *, int, int);
+int _sqlite3_bind_int64(sqlite3_stmt *, int, sqlite_int64);
+int _sqlite3_bind_null(sqlite3_stmt *, int);
+int _sqlite3_bind_text(sqlite3_stmt *, int, const char *, int, void (*)(void *));
+int _sqlite3_bind_value(sqlite3_stmt *, int, const sqlite3_value *);
+int _sqlite3_bind_zeroblob(sqlite3_stmt *, int, int);
+int _sqlite3_bind_zeroblob64(sqlite3_stmt *, int, sqlite3_uint64);
+int _sqlite3_bind_pointer(sqlite3_stmt *, int, void *, const char *, void (*)(void *));
+
+int _sqlite3_bind_parameter_count(sqlite3_stmt *);
+int _sqlite3_bind_parameter_index(sqlite3_stmt *, const char *);
+const char* _sqlite3_bind_parameter_name(sqlite3_stmt *, int);
+
+// reading result values from an sqlite3_stmt
+const void* _sqlite3_column_blob(sqlite3_stmt*, int);
+double _sqlite3_column_double(sqlite3_stmt*, int);
+int _sqlite3_column_int(sqlite3_stmt*, int);
+sqlite3_int64 _sqlite3_column_int64(sqlite3_stmt*, int);
+const unsigned char* _sqlite3_column_text(sqlite3_stmt*, int);
+const void* _sqlite3_column_text16(sqlite3_stmt*, int);
+sqlite3_value* _sqlite3_column_value(sqlite3_stmt*, int);
+int _sqlite3_column_bytes(sqlite3_stmt*, int);
+int _sqlite3_column_bytes16(sqlite3_stmt*, int);
+
+// query sqlite3_stmt column information
+const char* _sqlite3_column_name(sqlite3_stmt*, int);
+int _sqlite3_column_type(sqlite3_stmt*, int);
+const char *_sqlite3_column_database_name(sqlite3_stmt *, int);
+const char *_sqlite3_column_table_name(sqlite3_stmt *, int);
+const char *_sqlite3_column_origin_name(sqlite3_stmt *, int);
+
+// meta-information about the statement itself
+int _sqlite3_stmt_readonly(sqlite3_stmt*);
+
+// routines to extract value from sqlite3_value type; see: https://sqlite.org/c3ref/value.html
+//-----------------------------
+
+const void *_sqlite3_value_blob(sqlite3_value *);
+double _sqlite3_value_double(sqlite3_value *);
+int _sqlite3_value_int(sqlite3_value *);
+sqlite_int64 _sqlite3_value_int64(sqlite3_value *);
+const unsigned char* _sqlite3_value_text(sqlite3_value *);
+int _sqlite3_value_bytes(sqlite3_value *);
+int _sqlite3_value_type(sqlite3_value *);
+unsigned int _sqlite3_value_subtype(sqlite3_value *val);
+int _sqlite3_value_numeric_type(sqlite3_value *);
+void* _sqlite3_value_pointer(sqlite3_value *, const char *);
+int _sqlite3_value_nochange(sqlite3_value*);
+
+// routines to register application-defined sql functions
+//-----------------------------
+
+int _sqlite3_create_collation_v2(sqlite3 *, const char *, int, void *, int (*)(void *, int, const void *, int, const void *), void (*)(void *));
+int _sqlite3_create_function_v2(sqlite3 *, const char *, int, int, void *, void (*)(sqlite3_context *, int, sqlite3_value **), void (*)(sqlite3_context *, int, sqlite3_value **), void (*)(sqlite3_context *), void (*)(void *));
+int _sqlite3_create_window_function(sqlite3 *, const char *, int, int, void *, void (*)(sqlite3_context *, int, sqlite3_value **), void (*)(sqlite3_context *), void (*)(sqlite3_context *), void (*)(sqlite3_context *, int, sqlite3_value **), void (*)(void *));
+
+// memory related operations
+void  _sqlite3_free(void *);
+void* _sqlite3_malloc(int);
+void* _sqlite3_realloc(void *, int);
+
+// error details handler
+int _sqlite3_errcode(sqlite3 *);
+const char *_sqlite3_errmsg(sqlite3 *);
+
+// auth+tracing
+int _sqlite3_set_authorizer(sqlite3 *, int (*)(void *, int, const char *, const char *, const char *, const char *), void *);
+int _sqlite3_trace_v2(sqlite3 *, unsigned int, int (*)(unsigned int, void *, void *, void *), void *);
+
+// hooks
+void* _sqlite3_commit_hook(sqlite3 *, int (*)(void *), void *);
+void* _sqlite3_rollback_hook(sqlite3 *, void (*)(void *), void *);
+void* _sqlite3_update_hook(sqlite3 *, void (*)(void *, int, const char *, const char *, sqlite_int64), void *);
+
+// version number information
+sqlite_int64 _sqlite3_last_insert_rowid(sqlite3 *);
+const char* _sqlite3_libversion(void);
+int _sqlite3_libversion_number(void);
+
+// Virtual table routines
+int _sqlite3_create_module_v2(sqlite3 *, const char *, const sqlite3_module *, void *, void (*)(void *));
+int _sqlite3_declare_vtab(sqlite3 *, const char *);
+
+// miscellaneous routines
+int _sqlite3_get_autocommit(sqlite3 *);
+int _sqlite3_enable_shared_cache(int);
+void _sqlite3_interrupt(sqlite3 *);
+int _sqlite3_release_memory(int);
+int _sqlite3_threadsafe(void);
+int _sqlite3_limit(sqlite3*, int, int);
+
+#endif // _BRIDGE_H
+
diff --git a/textproc/mergestat/pkg-descr b/textproc/mergestat/pkg-descr
index ff8ad996ce65..9c503af2d6eb 100644
--- a/textproc/mergestat/pkg-descr
+++ b/textproc/mergestat/pkg-descr
@@ -7,4 +7,4 @@ shell commands.
 There is also preliminary support for executing queries
 against the GitHub API.
 
-WWW: https://askgit.com
+WWW: https://www.mergestat.com/