~alpine/aports

4 3

[alpine-aports] [PATCH] main/mdocml: use a cron instead of a trigger to invoke makewhatis(8)

Details
Message ID
<1439237974-14854-1-git-send-email-soeren+git@soeren-tempel.net>
Sender timestamp
1439237974
DKIM signature
missing
Download raw message
Patch: +16 -11
The database created by makewhatis(8) doesn't need to be up to date all
the time, it is not critical at all when the database doesn't contain a
newly added manpage for a few hours. So instead of slowing down package
installation by using a trigger the makewhatis(8) database is now
created and updated using a daily cron. The daily cron is run once after
the first install of mdocml as well.

Many distribution (e.g. Gentoo) also use a cron instead of a trigger to
invoke makewhatis(8), in my opinion it is simply saner to it this way.
---
 main/mdocml/APKBUILD            | 18 +++++++++++-------
 main/mdocml/mdocml.cron         |  4 ++++
 main/mdocml/mdocml.post-install |  1 +
 main/mdocml/mdocml.trigger      |  4 ----
 4 files changed, 16 insertions(+), 11 deletions(-)
 create mode 100644 main/mdocml/mdocml.cron
 create mode 120000 main/mdocml/mdocml.post-install
 delete mode 100644 main/mdocml/mdocml.trigger

diff --git a/main/mdocml/APKBUILD b/main/mdocml/APKBUILD
index 278c71f..e912f10 100644
--- a/main/mdocml/APKBUILD
+++ b/main/mdocml/APKBUILD
@@ -1,21 +1,20 @@
# Maintainer:  Natanael Copa <ncopa@alpinelinux.org>
pkgname=mdocml
pkgver=1.13.3
pkgrel=4
pkgrel=5
pkgdesc="mdoc/man compiler"
url="http://mdocml.bsd.lv/"
arch="all"
license="BSD"
depends=
makedepends="sqlite-dev"
install="$pkgname.post-deinstall"
triggers="$pkgname.trigger=/usr/share/man/*"
install="$pkgname.post-install $pkgname.post-deinstall"
subpackages="$pkgname-doc $pkgname-dev man"
source="http://mdocml.bsd.lv/snapshots/mdocml-$pkgver.tar.gz
	shared-libmandoc.patch
	mdocml.post-deinstall
	default-pager.patch
	mdocml.trigger
	mdocml.cron
	man.conf
	"

@@ -23,11 +22,14 @@ _builddir="$srcdir"/$pkgname-$pkgver

prepare() {
	cd "$_builddir"

	local i=
	for i in $source; do
		case $i in
		*.patch) msg $i; patch -p1 -i "$srcdir"/$i || return 1;;
		esac
	done

	cat >configure.local<<EOF
PREFIX=/usr
MANDIR=/usr/share/man
@@ -46,6 +48,8 @@ package() {
	cd "$_builddir"
	make -j1 DESTDIR="$pkgdir" base-install db-install || return 1
	install -Dm644 "$srcdir"/man.conf "$pkgdir"/etc/man.conf || return 1
	install -Dm755 "$srcdir"/${pkgname}.cron \
		"$pkgdir"/etc/periodic/daily/makewhatis || return 1
}

man() {
@@ -59,17 +63,17 @@ md5sums="7be80e1116a11abe2aabd6b2f04434ef  mdocml-1.13.3.tar.gz
8d130a332fbd3268550819ade96c9afd  shared-libmandoc.patch
f369b00f82b5cb03477cbea363dc3c65  mdocml.post-deinstall
aa3421f2d2da345a7514be51707d6829  default-pager.patch
f8cf8d023cded16f33eedc2cee7261fe  mdocml.trigger
f8cf8d023cded16f33eedc2cee7261fe  mdocml.cron
6e893bef0cf680eec807b230e6619d27  man.conf"
sha256sums="23ccab4800d50bf4c327979af5d4aa1a6a2dc490789cb67c4c3ac1bd40b8cad8  mdocml-1.13.3.tar.gz
676dd35caedc759cc83ae1dbf7fde5709d6fe4ed14c652af4cbebc5ccdbdc71b  shared-libmandoc.patch
c57b5009009fdb4e8585166b2df404ed41e4caf3cbcbc0bf1d8bf2669637f68c  mdocml.post-deinstall
f0a393ff3a630cd0e9e412241890b2356153ffb4ef0d419a7979edc4ed5e57e3  default-pager.patch
30895170f89dfcf3ffa10ba5ec3140639ce0a64f06bf4c89050f8f80fea60bd8  mdocml.trigger
30895170f89dfcf3ffa10ba5ec3140639ce0a64f06bf4c89050f8f80fea60bd8  mdocml.cron
3381c6ceb99e7db1404fdb44419040c3b441a251d594292e53545b5e4e378e2b  man.conf"
sha512sums="a3b7304e313b905b3575d79eb7ac861723e0ef3f700199c136abe4d4c698929e99ee0789bfc6e591224fb0006c709afe0e4c1bb578605a767c371ec7dee26024  mdocml-1.13.3.tar.gz
bdbe471bcc5d5009ee8a9c4fb2f7903a5114afd8da1d6807c462fefdbe4b508711386b0fe7febb92977f97751c1d4fd486f1e1ecae0b7c1ba4dc28c0a7dda0b6  shared-libmandoc.patch
c677c1b3d3705dfa130d69056a2a4c694802f51d881d0b48d8b280d87a882e0a5b906273840510af439b0c7f08da5d8d99b3f2cba396cf1781633dcb044bf4d9  mdocml.post-deinstall
c8a4a11a5aa166670d8f8d4e0dba803068d3f1b6aee483daaf889da661a9281387fcd2f00d2dad7ef5c66e3419df205e2c75bb58fb9b055db284b4ac2f23eb7e  default-pager.patch
e553cf83dde0a7926326acf306f7b363d0218009e328af82abb5256292c8693d341b85d3490c1ac33fbf3ac37f58f059926b1a9e790e24e7e0a85ca44f1fa126  mdocml.trigger
e553cf83dde0a7926326acf306f7b363d0218009e328af82abb5256292c8693d341b85d3490c1ac33fbf3ac37f58f059926b1a9e790e24e7e0a85ca44f1fa126  mdocml.cron
0723c32ab70e5b1c77768ca78d7437b26bed19b90b27876b10cc463359c41332befc0105fc1e23ceae48de5a892f1aa7ac60ef7eb0b6b8f1616726c4300632fe  man.conf"
diff --git a/main/mdocml/mdocml.cron b/main/mdocml/mdocml.cron
new file mode 100644
index 0000000..b1060c4
--- /dev/null
+++ b/main/mdocml/mdocml.cron
@@ -0,0 +1,4 @@
#!/bin/sh

exec /usr/sbin/makewhatis \
	-a -T utf8 /usr/share/man
diff --git a/main/mdocml/mdocml.post-install b/main/mdocml/mdocml.post-install
new file mode 120000
index 0000000..76d799b
--- /dev/null
+++ b/main/mdocml/mdocml.post-install
@@ -0,0 +1 @@
mdocml.cron
\ No newline at end of file
diff --git a/main/mdocml/mdocml.trigger b/main/mdocml/mdocml.trigger
deleted file mode 100644
index b1060c4..0000000
--- a/main/mdocml/mdocml.trigger
@@ -1,4 +0,0 @@
#!/bin/sh

exec /usr/sbin/makewhatis \
	-a -T utf8 /usr/share/man
-- 
2.5.0



---
Unsubscribe:  alpine-aports+unsubscribe@lists.alpinelinux.org
Help:         alpine-aports+help@lists.alpinelinux.org
---
Natanael Copa <ncopa@alpinelinux.org>
Details
Message ID
<20150812110154.226f96fc@ncopa-desktop.alpinelinux.org>
In-Reply-To
<1439237974-14854-1-git-send-email-soeren+git@soeren-tempel.net> (view parent)
Sender timestamp
1439370114
DKIM signature
missing
Download raw message
On Mon, 10 Aug 2015 22:19:34 +0200
Sören Tempel <soeren+git@soeren-tempel.net> wrote:

> The database created by makewhatis(8) doesn't need to be up to date all
> the time, it is not critical at all when the database doesn't contain a
> newly added manpage for a few hours. So instead of slowing down package
> installation by using a trigger the makewhatis(8) database is now
> created and updated using a daily cron. The daily cron is run once after
> the first install of mdocml as well.
> 
> Many distribution (e.g. Gentoo) also use a cron instead of a trigger to
> invoke makewhatis(8), in my opinion it is simply saner to it this way.

I am not sure I like this. How much does it slow things down? are we
talking about 1-2 seconds or 2 minutes?

The way i think, the index is only needed to be created once, not every
night.

If you can wait til tomorrow for using it, then you will most likely
not need it at all.

so i wonder if we should simply move makewhatis and db and all to a
subpackage and have the trigger there.

That way you could have man pages without the whatis index.

> ---
>  main/mdocml/APKBUILD            | 18 +++++++++++-------
>  main/mdocml/mdocml.cron         |  4 ++++
>  main/mdocml/mdocml.post-install |  1 +
>  main/mdocml/mdocml.trigger      |  4 ----
>  4 files changed, 16 insertions(+), 11 deletions(-)
>  create mode 100644 main/mdocml/mdocml.cron
>  create mode 120000 main/mdocml/mdocml.post-install
>  delete mode 100644 main/mdocml/mdocml.trigger
> 
> diff --git a/main/mdocml/APKBUILD b/main/mdocml/APKBUILD
> index 278c71f..e912f10 100644
> --- a/main/mdocml/APKBUILD
> +++ b/main/mdocml/APKBUILD
> @@ -1,21 +1,20 @@
>  # Maintainer:  Natanael Copa <ncopa@alpinelinux.org>
>  pkgname=mdocml
>  pkgver=1.13.3
> -pkgrel=4
> +pkgrel=5
>  pkgdesc="mdoc/man compiler"
>  url="http://mdocml.bsd.lv/"
>  arch="all"
>  license="BSD"
>  depends=
>  makedepends="sqlite-dev"
> -install="$pkgname.post-deinstall"
> -triggers="$pkgname.trigger=/usr/share/man/*"
> +install="$pkgname.post-install $pkgname.post-deinstall"
>  subpackages="$pkgname-doc $pkgname-dev man"
>  source="http://mdocml.bsd.lv/snapshots/mdocml-$pkgver.tar.gz
>  	shared-libmandoc.patch
>  	mdocml.post-deinstall
>  	default-pager.patch
> -	mdocml.trigger
> +	mdocml.cron
>  	man.conf
>  	"
>  
> @@ -23,11 +22,14 @@ _builddir="$srcdir"/$pkgname-$pkgver
>  
>  prepare() {
>  	cd "$_builddir"
> +
> +	local i=
>  	for i in $source; do
>  		case $i in
>  		*.patch) msg $i; patch -p1 -i "$srcdir"/$i || return 1;;
>  		esac
>  	done
> +
>  	cat >configure.local<<EOF
>  PREFIX=/usr
>  MANDIR=/usr/share/man
> @@ -46,6 +48,8 @@ package() {
>  	cd "$_builddir"
>  	make -j1 DESTDIR="$pkgdir" base-install db-install || return 1
>  	install -Dm644 "$srcdir"/man.conf "$pkgdir"/etc/man.conf || return 1
> +	install -Dm755 "$srcdir"/${pkgname}.cron \
> +		"$pkgdir"/etc/periodic/daily/makewhatis || return 1
>  }
>  
>  man() {
> @@ -59,17 +63,17 @@ md5sums="7be80e1116a11abe2aabd6b2f04434ef  mdocml-1.13.3.tar.gz
>  8d130a332fbd3268550819ade96c9afd  shared-libmandoc.patch
>  f369b00f82b5cb03477cbea363dc3c65  mdocml.post-deinstall
>  aa3421f2d2da345a7514be51707d6829  default-pager.patch
> -f8cf8d023cded16f33eedc2cee7261fe  mdocml.trigger
> +f8cf8d023cded16f33eedc2cee7261fe  mdocml.cron
>  6e893bef0cf680eec807b230e6619d27  man.conf"
>  sha256sums="23ccab4800d50bf4c327979af5d4aa1a6a2dc490789cb67c4c3ac1bd40b8cad8  mdocml-1.13.3.tar.gz
>  676dd35caedc759cc83ae1dbf7fde5709d6fe4ed14c652af4cbebc5ccdbdc71b  shared-libmandoc.patch
>  c57b5009009fdb4e8585166b2df404ed41e4caf3cbcbc0bf1d8bf2669637f68c  mdocml.post-deinstall
>  f0a393ff3a630cd0e9e412241890b2356153ffb4ef0d419a7979edc4ed5e57e3  default-pager.patch
> -30895170f89dfcf3ffa10ba5ec3140639ce0a64f06bf4c89050f8f80fea60bd8  mdocml.trigger
> +30895170f89dfcf3ffa10ba5ec3140639ce0a64f06bf4c89050f8f80fea60bd8  mdocml.cron
>  3381c6ceb99e7db1404fdb44419040c3b441a251d594292e53545b5e4e378e2b  man.conf"
>  sha512sums="a3b7304e313b905b3575d79eb7ac861723e0ef3f700199c136abe4d4c698929e99ee0789bfc6e591224fb0006c709afe0e4c1bb578605a767c371ec7dee26024  mdocml-1.13.3.tar.gz
>  bdbe471bcc5d5009ee8a9c4fb2f7903a5114afd8da1d6807c462fefdbe4b508711386b0fe7febb92977f97751c1d4fd486f1e1ecae0b7c1ba4dc28c0a7dda0b6  shared-libmandoc.patch
>  c677c1b3d3705dfa130d69056a2a4c694802f51d881d0b48d8b280d87a882e0a5b906273840510af439b0c7f08da5d8d99b3f2cba396cf1781633dcb044bf4d9  mdocml.post-deinstall
>  c8a4a11a5aa166670d8f8d4e0dba803068d3f1b6aee483daaf889da661a9281387fcd2f00d2dad7ef5c66e3419df205e2c75bb58fb9b055db284b4ac2f23eb7e  default-pager.patch
> -e553cf83dde0a7926326acf306f7b363d0218009e328af82abb5256292c8693d341b85d3490c1ac33fbf3ac37f58f059926b1a9e790e24e7e0a85ca44f1fa126  mdocml.trigger
> +e553cf83dde0a7926326acf306f7b363d0218009e328af82abb5256292c8693d341b85d3490c1ac33fbf3ac37f58f059926b1a9e790e24e7e0a85ca44f1fa126  mdocml.cron
>  0723c32ab70e5b1c77768ca78d7437b26bed19b90b27876b10cc463359c41332befc0105fc1e23ceae48de5a892f1aa7ac60ef7eb0b6b8f1616726c4300632fe  man.conf"
> diff --git a/main/mdocml/mdocml.cron b/main/mdocml/mdocml.cron
> new file mode 100644
> index 0000000..b1060c4
> --- /dev/null
> +++ b/main/mdocml/mdocml.cron
> @@ -0,0 +1,4 @@
> +#!/bin/sh
> +
> +exec /usr/sbin/makewhatis \
> +	-a -T utf8 /usr/share/man
> diff --git a/main/mdocml/mdocml.post-install b/main/mdocml/mdocml.post-install
> new file mode 120000
> index 0000000..76d799b
> --- /dev/null
> +++ b/main/mdocml/mdocml.post-install
> @@ -0,0 +1 @@
> +mdocml.cron
> \ No newline at end of file
> diff --git a/main/mdocml/mdocml.trigger b/main/mdocml/mdocml.trigger
> deleted file mode 100644
> index b1060c4..0000000
> --- a/main/mdocml/mdocml.trigger
> +++ /dev/null
> @@ -1,4 +0,0 @@
> -#!/bin/sh
> -
> -exec /usr/sbin/makewhatis \
> -	-a -T utf8 /usr/share/man



---
Unsubscribe:  alpine-aports+unsubscribe@lists.alpinelinux.org
Help:         alpine-aports+help@lists.alpinelinux.org
---
Details
Message ID
<20150812123153.GA889@francium.lan>
In-Reply-To
<20150812110154.226f96fc@ncopa-desktop.alpinelinux.org> (view parent)
Sender timestamp
1439382716
DKIM signature
missing
Download raw message
On 12.08.15, Natanael Copa wrote:
> I am not sure I like this. How much does it slow things down? are we
> talking about 1-2 seconds or 2 minutes?

I have 10488 man pages installed:

	$ find /usr/share/man -type f | wc -l

This is the output of 'time apk add mdocml-doc' with this patch:

(1/1) Installing mdocml-doc (1.13.3-r5)
OK: 819 MiB in 314 packages
    0m0.44s real     0m0.00s user     0m0.00s system

This is the output of 'time apk add mdocml-doc' without this patch:

(1/1) Installing mdocml-doc (1.13.3-r5)
Executing mdocml-1.13.3-r4.trigger
OK: 818 MiB in 314 packages
    0m37.73s real     0m0.00s user     0m0.00s system

> The way i think, the index is only needed to be created once, not every
> night.

If a new man page gets added to /usr/share/man the index needs to be
rebuild so it is a good idea to invoke makewhatis(8) automatically in a
certain interval. I think invoking it every night is a good interval.

> If you can wait til tomorrow for using it, then you will most likely
> not need it at all.

That's not true at all. The index is created on install already, it's
only updated at night.

> so i wonder if we should simply move makewhatis and db and all to a
> subpackage and have the trigger there.

I kind of dislike that idea since it doesn't solve the problem that it
takes ages to install packages containing manpages than.

Sören.


---
Unsubscribe:  alpine-aports+unsubscribe@lists.alpinelinux.org
Help:         alpine-aports+help@lists.alpinelinux.org
---
Natanael Copa <ncopa@alpinelinux.org>
Details
Message ID
<20150812150543.1599f6d2@ncopa-desktop.alpinelinux.org>
In-Reply-To
<20150812123153.GA889@francium.lan> (view parent)
Sender timestamp
1439384743
DKIM signature
missing
Download raw message
On Wed, 12 Aug 2015 14:31:56 +0200
Sören Tempel <soeren@soeren-tempel.net> wrote:

> On 12.08.15, Natanael Copa wrote:
> > I am not sure I like this. How much does it slow things down? are we
> > talking about 1-2 seconds or 2 minutes?
> 
> I have 10488 man pages installed:
...
>     0m37.73s real     0m0.00s user     0m0.00s system

ok, 38 sec is not acceptable.

> > The way i think, the index is only needed to be created once, not every
> > night.
> 
> If a new man page gets added to /usr/share/man the index needs to be
> rebuild so it is a good idea to invoke makewhatis(8) automatically in a
> certain interval. I think invoking it every night is a good interval.

But you only add things to /usr/share/man when you apk add?

> > If you can wait til tomorrow for using it, then you will most likely
> > not need it at all.
> 
> That's not true at all. The index is created on install already, it's
> only updated at night.

How is it created on install if there are no trigger?

> > so i wonder if we should simply move makewhatis and db and all to a
> > subpackage and have the trigger there.
> 
> I kind of dislike that idea since it doesn't solve the problem that it
> takes ages to install packages containing manpages than.

You can use man pages without mandoc.db since mdocml-1.13.3.

From http://mdocml.bsd.lv/NEWS:
> Changes in version 1.13.3, released on March 13, 2015
...
> * Use this to always provide man(1), even without database support.

Pages are showed perfectly fine, but you do get a warning on exit:

ncdev-edge-x86_64:~/aports/main/mdocml$ sudo apk add man-pages
(1/1) Installing man-pages (4.02-r0)
Executing mdocml-1.13.3-r4.trigger
OK: 435 MiB in 134 packages
ncdev-edge-x86_64:~/aports/main/mdocml$ man 2 read
ncdev-edge-x86_64:~/aports/main/mdocml$ sudo rm /usr/share/man/mandoc.db 
ncdev-edge-x86_64:~/aports/main/mdocml$ man 2 read
/usr/share/man/mandoc.db: No such file or directory
man: outdated mandoc.db lacks read(2) entry,
     consider running  # makewhatis /usr/share/man


Other option would be to run it in background:

    /usr/sbin/makewhatis -a -T utf8 /usr/share/man &

-nc


---
Unsubscribe:  alpine-aports+unsubscribe@lists.alpinelinux.org
Help:         alpine-aports+help@lists.alpinelinux.org
---
Lennart Jablonka <vol@ljabl.com>
Details
Message ID
<Y6t0KYzFw4lQ/mxU@beryllium>
In-Reply-To
<1439237974-14854-1-git-send-email-soeren+git@soeren-tempel.net> (view parent)
DKIM signature
missing
Download raw message
Quoth Sören Tempel, 2015-08-10T22:19:34:
>The database created by makewhatis(8) doesn't need to be up to date 
>all the time, it is not critical at all when the database doesn't 
>contain a newly added manpage for a few hours. So instead of slowing 
>down package installation by using a trigger the makewhatis(8) 
>database is now created and updated using a daily cron. The daily cron 
>is run once after the first install of mdocml as well.

+1
Reply to thread Export thread (mbox)