From 77322d29377903280fc723b1aff17d5bb68abe43 Mon Sep 17 00:00:00 2001 From: Andrea Brancaleoni Date: Fri, 24 Apr 2015 20:43:58 +0200 Subject: [PATCH] New package: rng-tools-5 --- srcpkgs/rng-tools/files/rngd/finish | 2 ++ srcpkgs/rng-tools/files/rngd/run | 14 ++++++++ .../patches/rngd-test-signal-in-loop.patch | 36 +++++++++++++++++++ srcpkgs/rng-tools/template | 16 +++++++++ 4 files changed, 68 insertions(+) create mode 100644 srcpkgs/rng-tools/files/rngd/finish create mode 100644 srcpkgs/rng-tools/files/rngd/run create mode 100644 srcpkgs/rng-tools/patches/rngd-test-signal-in-loop.patch create mode 100644 srcpkgs/rng-tools/template diff --git a/srcpkgs/rng-tools/files/rngd/finish b/srcpkgs/rng-tools/files/rngd/finish new file mode 100644 index 00000000000..f918abab4cf --- /dev/null +++ b/srcpkgs/rng-tools/files/rngd/finish @@ -0,0 +1,2 @@ +#!/bin/sh +killall rngd diff --git a/srcpkgs/rng-tools/files/rngd/run b/srcpkgs/rng-tools/files/rngd/run new file mode 100644 index 00000000000..bec0ad63418 --- /dev/null +++ b/srcpkgs/rng-tools/files/rngd/run @@ -0,0 +1,14 @@ +#!/bin/sh +RNGD_OPTS="" +[ -r conf ] && . ./conf + +a=0 +n=$(nproc) + +while [ $a -lt $n ] +do + rngd $RNGD_OPTS + a=`expr $a + 1` +done + +exec chpst -b rng-tools pause diff --git a/srcpkgs/rng-tools/patches/rngd-test-signal-in-loop.patch b/srcpkgs/rng-tools/patches/rngd-test-signal-in-loop.patch new file mode 100644 index 00000000000..109fd833759 --- /dev/null +++ b/srcpkgs/rng-tools/patches/rngd-test-signal-in-loop.patch @@ -0,0 +1,36 @@ +From: Leonardo Chiquitto +Subject: Check for signals in update_kernel_random() + +When running as a daemon, a signal handler is installed to catch +SIGINT/SIGTERM. This handler sets a flag that's tested in the main +loop. However, rngd loops in update_kernel_random() as well, where +the flag was not tested. + +This patch adds the check to update_kernel_random() so that the +daemon exits properly after receiving a SIGINT/SIGTERM signal. + +Index: rngd.c +=================================================================== +--- rngd.c ++++ rngd.c +@@ -218,6 +218,8 @@ static int update_kernel_random(int rand + + for (p = buf; p + random_step <= &buf[FIPS_RNG_BUFFER_SIZE]; + p += random_step) { ++ if (!server_running) ++ return 0; + random_add_entropy(p, random_step); + random_sleep(); + } +@@ -239,10 +241,10 @@ static void do_loop(int random_step) + { + int rc; + ++ retry_same: + if (!server_running) + return; + +- retry_same: + if (iter->disabled) + continue; /* failed, no work */ + diff --git a/srcpkgs/rng-tools/template b/srcpkgs/rng-tools/template new file mode 100644 index 00000000000..fd9a2098cf0 --- /dev/null +++ b/srcpkgs/rng-tools/template @@ -0,0 +1,16 @@ +# Template file for 'rng-tools' +pkgname=rng-tools +version=5 +revision=1 +build_style=gnu-configure +makedepends="libgcrypt-devel" +short_desc="Random number generator related utilities" +maintainer="Andrea Brancaleoni " +license="GPL-3" +homepage="http://sourceforge.net/projects/gkernel" +distfiles="${SOURCEFORGE_SITE}/gkernel/${pkgname}-${version}.tar.gz" +checksum=60a102b6603bbcce2da341470cad42eeaa9564a16b4490e7867026ca11a3078e + +post_install() { + vsv rngd +}