Hi!

I just built a new LFS 8.3 system and everything seemed to work well at a first glance. But when trying to install DHCP-4.4.1 according to BLFS 8.3 stable (/http://www.linuxfromscratch.org/blfs/view/stable/basicnet/dhcp.html/) the build aborts due to errors (please see the output below).

First warnings appear during the build of the bind libraries ("/In file included from entropy.c:61: ../entropy.c: In function 'entropypool_adddata': ../entropy.c:327:7: warning: this statement may fall through [-Wimplicit-fallthrough=]    len--;/" and finally the build breaks.

I also recognized that during startup of the machine I get multiple errors like:
/[   5.580768] random: udevd: uninitialized urandom read (16 bytes read)/
/[   7.752273] random: sshd: uninitialized urandom read (32 bytes read)
/and finally:/
[   44.233105] random: crng init done
/
Might it be, that the broken DHCP build is due to some failure of the random generator as the first warning seems be related to entropy? But I am not not sure, if the random generator is broken at all. How could I figure out the core of the build issue?

At least the random and urandom devices exist:
/# ls -la /dev/*rand*//
//crw-rw-rw- 1 root root 1, 8 Dec 18 19:09 /dev/random//
//crw-rw-rw- 1 root root 1, 9 Dec 18 19:09 /dev/urandom/

I tried with kernels 4.18.14 and 4.18.5.
I also tried DHCP-4.3.5 but it fails in a similar manner.
Building other packages (e.g. zip, unzip, openssh) works flawlessly.
I also tried to build DHCP-4.4.1 on an older BLFS 6.8 and it built flawlessly. My system is running on VMware and I build several other LFS/BLFS systems before and there never was an issue with random or DHCP.

By the way: The BLFS book suggests for DHCP to use the "/missing_ipv6/" patch if the kernel has no IPv6 support. As I could not find this patch in /http://www.linuxfromscratch.org/patches/blfs/8.3//, I had to compile IPv6 into the kernel. Is there no such patch anymore available for BLFS 8.3?

Any help would be highly appreciated.

Regards
Alexander




--- start dhcp.4.4.1 build output ---

/# CFLAGS="-D_PATH_DHCLIENT_SCRIPT='\"/sbin/dhclient-script\"' \//
//> -D_PATH_DHCPD_CONF='\"/etc/dhcp/dhcpd.conf\"'               \//
//> -D_PATH_DHCLIENT_CONF='\"/etc/dhcp/dhclient.conf\"'" &&//
//>//
//> ./configure --prefix=/usr                                           \//
//> --sysconfdir=/etc/dhcp                                  \//
//> --localstatedir=/var                                    \//
//> --with-srv-lease-file=/var/lib/dhcpd/dhcpd.leases       \//
//> --with-srv6-lease-file=/var/lib/dhcpd/dhcpd6.leases     \//
//> --with-cli-lease-file=/var/lib/dhclient/dhclient.leases \//
//> --with-cli6-lease-file=/var/lib/dhclient/dhclient6.leases &&//
//> make -j1//
//checking for a BSD-compatible install... /usr/bin/install -c//
//checking whether build environment is sane... yes//
//checking for a thread-safe mkdir -p... /bin/mkdir -p//
//checking for gawk... gawk//
//checking whether make sets $(MAKE)... yes//
//checking whether make supports nested variables... yes//
//checking whether to enable maintainer-specific portions of Makefiles... no//
//checking build system type... x86_64-unknown-linux-gnu//
//checking host system type... x86_64-unknown-linux-gnu//
//checking for gcc... gcc//
//checking whether the C compiler works... yes//
//checking for C compiler default output file name... a.out//
//checking for suffix of executables...//
//checking whether we are cross compiling... no//
//checking for suffix of object files... o//
//checking whether we are using the GNU C compiler... yes//
//checking whether gcc accepts -g... yes//
//checking for gcc option to accept ISO C89... none needed//
//checking whether gcc understands -c and -o together... yes//
//checking for style of include used by make... GNU//
//checking dependency style of gcc... gcc3//
//checking how to run the C preprocessor... gcc -E//
//checking for grep that handles long lines and -e... /bin/grep//
//checking for egrep... /bin/grep -E//
//checking for ANSI C header files... yes//
//checking for sys/types.h... yes//
//checking for sys/stat.h... yes//
//checking for stdlib.h... yes//
//checking for string.h... yes//
//checking for memory.h... yes//
//checking for strings.h... yes//
//checking for inttypes.h... yes//
//checking for stdint.h... yes//
//checking for unistd.h... yes//
//checking minix/config.h usability... no//
//checking minix/config.h presence... no//
//checking for minix/config.h... no//
//checking whether it is safe to define __EXTENSIONS__... yes//
//checking for ranlib... ranlib//
//checking for ar... /usr/bin/ar//
//checking whether byte ordering is bigendian... no//
//checking for dhcpd.leases location... /var/lib/dhcpd/dhcpd.leases//
//checking for dhcpd6.leases location... /var/lib/dhcpd/dhcpd6.leases//
//checking for dhclient.leases location... /var/lib/dhclient/dhclient.leases// //checking for dhclient6.leases location... /var/lib/dhclient/dhclient6.leases//
//checking for int8_t... yes//
//checking for int16_t... yes//
//checking for int32_t... yes//
//checking for int64_t... yes//
//checking for u_int8_t... yes//
//checking for u_int16_t... yes//
//checking for u_int32_t... yes//
//checking for u_int64_t... yes//
//checking ifaddrs.h usability... yes//
//checking ifaddrs.h presence... yes//
//checking for ifaddrs.h... yes//
//checking linux/types.h usability... yes//
//checking linux/types.h presence... yes//
//checking for linux/types.h... yes//
//checking for linux/filter.h... yes//
//checking for struct lifnum... no//
//checking for struct if_laddrconf... no//
//checking for struct if_laddrreq... no//
//checking for GCC noreturn attribute... yes//
//checking sys/socket.h usability... yes//
//checking sys/socket.h presence... yes//
//checking for sys/socket.h... yes//
//checking net/if_dl.h usability... no//
//checking net/if_dl.h presence... no//
//checking for net/if_dl.h... no//
//checking net/if6.h usability... no//
//checking net/if6.h presence... no//
//checking for net/if6.h... no//
//checking regex.h usability... yes//
//checking regex.h presence... yes//
//checking for regex.h... yes//
//checking for library containing socket... none required//
//checking for library containing inet_ntoa... none required//
//checking for library containing inet_aton... none required//
//checking for library containing regcomp... none required//
//checking for strlcat... no//
//checking for library containing if_nametoindex... none required//
//checking for nanosleep... yes//
//checking for random device... /dev/random//
//checking for /dev/random... yes//
//checking for struct sockaddr.sa_len... no//
//checking size of struct iaddr *... 8//
//checking for struct msghdr.msg_control... yes//
//checking for struct tpacket_auxdata.tp_vlan_tci... yes//
//checking for flexible array members... yes//
//checking that generated files are newer than configure... done//
//configure: creating ./config.status//
//config.status: creating ./bind/Makefile//
//config.status: creating Makefile//
//config.status: creating client/Makefile//
//config.status: creating client/tests/Makefile//
//config.status: creating common/Makefile.am//
//config.status: creating common/Makefile//
//config.status: creating common/tests/Makefile//
//config.status: creating dhcpctl/Makefile.am//
//config.status: creating dhcpctl/Makefile//
//config.status: creating includes/Makefile//
//config.status: creating omapip/Makefile.am//
//config.status: creating omapip/Makefile//
//config.status: creating relay/Makefile//
//config.status: creating server/Makefile//
//config.status: creating tests/Makefile.am//
//config.status: creating tests/Makefile//
//config.status: creating tests/unittest.sh//
//config.status: creating server/tests/Makefile//
//config.status: creating doc/devel/doxyfile//
//config.status: creating includes/config.h//
//config.status: includes/config.h is unchanged//
//config.status: executing depfiles commands//
//
//     ISC DHCP source configure results://
//    -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-//
//
//Package://
//  Name:          DHCP//
//  Version:       4.4.1//
//
//C Compiler:      gcc//
//
//Flags://
//  DEFS:          -DHAVE_CONFIG_H//
//  CFLAGS:        -g -O2  -Wall -Werror -fno-strict-aliasing -I$(top_srcdir)/includes -I/j/development/dhcp-4.4.1/bind/include//
//
//DHCP versions:   DHCPv4 and DHCPv6//
//
//Features://
//  debug:         no//
//  failover:      yes//
//  execute:       yes//
//  binary-leases: no//
//  dhcpv6:        yes//
//  delayed-ack:   yes//
//  dhcpv4o6:      no//
//  relay-port:    no//
//
//Developer://
//  ATF unittests : no//
//
//
//Now you can type make to build ISC DHCP//
//
//Making all in ./bind//
//make[1]: Entering directory '/j/development/dhcp-4.4.1/bind'//
//Configuring BIND libraries for DHCP.//
//Building BIND libraries - this takes some time.//
//Building isc library in /j/development/dhcp-4.4.1/bind/bind-9.11.2-P1/lib/isc//
//In file included from entropy.c:61://
//../entropy.c: In function 'entropypool_adddata'://
//../entropy.c:327:7: warning: this statement may fall through [-Wimplicit-fallthrough=]//
//    len--;//
//    ~~~^~//
//../entropy.c:328:3: note: here//
//   case 2://
//   ^~~~//
//../entropy.c:330:7: warning: this statement may fall through [-Wimplicit-fallthrough=]//
//    len--;//
//    ~~~^~//
//../entropy.c:331:3: note: here//
//   case 1://
//   ^~~~//
//../entropy.c:350:8: warning: this statement may fall through [-Wimplicit-fallthrough=]//
//    val = *buf++;//
//    ~~~~^~~~~~~~//
//../entropy.c:351:3: note: here//
//   case 2://
//   ^~~~//
//../entropy.c:352:8: warning: this statement may fall through [-Wimplicit-fallthrough=]//
//    val = val << 8 | *buf++;//
//    ~~~~^~~~~~~~~~~~~~~~~~~//
//../entropy.c:353:3: note: here//
//   case 1://
//   ^~~~//
//file.c: In function 'isc_file_sanitize'://
//file.c:734:36: warning: '%s' directive output may be truncated writing up to 1 bytes into a region of size between 0 and 4096 [-Wformat-truncation=]//
//  snprintf(buf, sizeof(buf), "%s%s%s%s%s",//
//                                    ^~//
//file.c:734:2: note: 'snprintf' output 1 or more bytes (assuming 4098) into a destination of size 4096//
//  snprintf(buf, sizeof(buf), "%s%s%s%s%s",//
//  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
//   dir != NULL ? dir : "", dir != NULL ? "/" : "",//
//   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
//   hash, ext != NULL ? "." : "", ext != NULL ? ext : "");//
//   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
//file.c:744:36: warning: '%s' directive output may be truncated writing up to 1 bytes into a region of size between 0 and 4096 [-Wformat-truncation=]//
//  snprintf(buf, sizeof(buf), "%s%s%s%s%s",//
//                                    ^~//
//file.c:744:2: note: 'snprintf' output 1 or more bytes (assuming 4098) into a destination of size 4096//
//  snprintf(buf, sizeof(buf), "%s%s%s%s%s",//
//  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
//   dir != NULL ? dir : "", dir != NULL ? "/" : "",//
//   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
//   hash, ext != NULL ? "." : "", ext != NULL ? ext : "");//
//   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
//socket.c: In function 'socket_send'://
//socket.c:5194:6: warning: this statement may fall through [-Wimplicit-fallthrough=]//
//   if ((flags & ISC_SOCKFLAG_NORETRY) == 0) {//
//      ^//
//socket.c:5223:2: note: here//
//  case DOIO_HARD://
//  ^~~~//
//Building dns library in /j/development/dhcp-4.4.1/bind/bind-9.11.2-P1/lib/dns//
//dnssec.c: In function 'dns_dnssec_findzonekeys3'://
//dnssec.c:820:21: warning: '%s' directive output may be truncated writing up to 1023 bytes into a region of size 242 [-Wformat-truncation=]//
//       "key file for %s/%s/%d",//
//                     ^~//
//       namebuf, algbuf, dst_key_id(pubkey));//
//       ~~~~~~~//
//dnssec.c:820:7: note: directive argument in the range [0, 65535]//
//       "key file for %s/%s/%d",//
//       ^~~~~~~~~~~~~~~~~~~~~~~//
//dnssec.c:819:5: note: 'snprintf' output between 17 and 1063 bytes into a destination of size 255//
//     snprintf(filename, sizeof(filename) - 1,//
//     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
//       "key file for %s/%s/%d",//
//       ~~~~~~~~~~~~~~~~~~~~~~~~//
//       namebuf, algbuf, dst_key_id(pubkey));//
//       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
//dnssec.c: In function 'dns_dnssec_keylistfromrdataset'://
//dnssec.c:1750:21: warning: '%s' directive output may be truncated writing up to 1023 bytes into a region of size 242 [-Wformat-truncation=]//
//       "key file for %s/%s/%d",//
//                     ^~//
//       namebuf, algbuf, dst_key_id(pubkey));//
//       ~~~~~~~//
//dnssec.c:1750:7: note: directive argument in the range [0, 65535]//
//       "key file for %s/%s/%d",//
//       ^~~~~~~~~~~~~~~~~~~~~~~//
//dnssec.c:1749:5: note: 'snprintf' output between 17 and 1063 bytes into a destination of size 255//
//     snprintf(filename, sizeof(filename) - 1,//
//     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
//       "key file for %s/%s/%d",//
//       ~~~~~~~~~~~~~~~~~~~~~~~~//
//       namebuf, algbuf, dst_key_id(pubkey));//
//       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
//In file included from code.h:56,//
//                 from rdata.c:582://
//rdata/generic/loc_29.c: In function 'totext_loc.isra.323'://
//rdata/generic/loc_29.c:545:71: warning: 'sprintf' may write a terminating nul past the end of the destination [-Wformat-overflow=]// //  sprintf(buf, "%d %d %d.%03d %s %d %d %d.%03d %s %s%ld.%02ldm %s %s %s",//
//^//
//rdata/generic/loc_29.c:545:2: note: 'sprintf' output between 33 and 75 bytes into a destination of size 74// //  sprintf(buf, "%d %d %d.%03d %s %d %d %d.%03d %s %s%ld.%02ldm %s %s %s",//
//^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
//   d1, m1, s1, fs1, north ? "N" : "S",//
//   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
//   d2, m2, s2, fs2, east ? "E" : "W",//
//   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
//   below ? "-" : "", altitude/100, altitude % 100,//
//   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
//   sbuf, hbuf, vbuf);//
//   ~~~~~~~~~~~~~~~~~//
//resolver.c: In function 'resquery_response'://
//resolver.c:7862:6: warning: this statement may fall through [-Wimplicit-fallthrough=]//
//   if (message->counts[DNS_SECTION_QUESTION] == 0)//
//      ^//
//resolver.c:7864:2: note: here//
//  case dns_rcode_nxrrset: /* Not expected. *///
//  ^~~~//
//time.c: In function 'dns_time64_totext'://
//time.c:82:38: warning: '%02d' directive output may be truncated writing between 2 and 10 bytes into a region of size between 2 and 9 [-Wformat-truncation=]//
//  snprintf(buf, sizeof(buf), "%04d%02d%02d%02d%02d%02d",//
//                                      ^~~~//
//time.c:82:29: note: directive argument in the range [1, 2147483647]//
//  snprintf(buf, sizeof(buf), "%04d%02d%02d%02d%02d%02d",//
//                             ^~~~~~~~~~~~~~~~~~~~~~~~~~//
//time.c:82:29: note: directive argument in the range [0, 2147483647]//
//time.c:82:29: note: directive argument in the range [0, 2147483647]//
//time.c:82:29: note: directive argument in the range [0, 59]//
//time.c:82:2: note: 'snprintf' output between 15 and 46 bytes into a destination of size 15//
//  snprintf(buf, sizeof(buf), "%04d%02d%02d%02d%02d%02d",//
//  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
//    tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday,//
//    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
//    tm.tm_hour, tm.tm_min, tm.tm_sec);//
//    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
//xfrin.c: In function 'xfr_rr'://
//xfrin.c:56:6: warning: this statement may fall through [-Wimplicit-fallthrough=]//
//   if (result != ISC_R_SUCCESS) goto failure; \//
//      ^//
//xfrin.c:616:3: note: in expansion of macro 'FAIL'//
//   FAIL(DNS_R_EXTRADATA);//
//   ^~~~//
//xfrin.c:618:2: note: here//
//  default://
//  ^~~~~~~//
//zone.c: In function 'zone_maintenance'://
//zone.c:9598:6: warning: this statement may fall through [-Wimplicit-fallthrough=]//
//   if (zone->masters == NULL)//
//      ^//
//zone.c:9600:2: note: here//
//  case dns_zone_slave://
//  ^~~~//
//zone.c:9619:6: warning: this statement may fall through [-Wimplicit-fallthrough=]//
//   if (zone->masters == NULL)//
//      ^//
//zone.c:9621:2: note: here//
//  case dns_zone_slave://
//  ^~~~//
//Building isccfg library in /j/development/dhcp-4.4.1/bind/bind-9.11.2-P1/lib/isccfg// //Building irs library in /j/development/dhcp-4.4.1/bind/bind-9.11.2-P1/lib/irs//
//Installing BIND libraries to /j/development/dhcp-4.4.1/bind.//
//mkdir /j/development/dhcp-4.4.1/bind/include//
//mkdir /j/development/dhcp-4.4.1/bind/include/isc//
//mkdir /j/development/dhcp-4.4.1/bind/include/pk11//
//mkdir /j/development/dhcp-4.4.1/bind/include/pkcs11//
//mkdir /j/development/dhcp-4.4.1/bind/lib//
//mkdir /j/development/dhcp-4.4.1/bind/include/dns//
//mkdir /j/development/dhcp-4.4.1/bind/include/dst//
//mkdir /j/development/dhcp-4.4.1/bind/include/isccfg//
//mkdir /j/development/dhcp-4.4.1/bind/include/irs//
//make[1]: Leaving directory '/j/development/dhcp-4.4.1/bind'//
//Making all in includes//
//make[1]: Entering directory '/j/development/dhcp-4.4.1/includes'//
//make  all-am//
//make[2]: Entering directory '/j/development/dhcp-4.4.1/includes'//
//make[2]: Leaving directory '/j/development/dhcp-4.4.1/includes'//
//make[1]: Leaving directory '/j/development/dhcp-4.4.1/includes'//
//Making all in tests//
//make[1]: Entering directory '/j/development/dhcp-4.4.1/tests'//
//make[1]: Nothing to be done for 'all'.//
//make[1]: Leaving directory '/j/development/dhcp-4.4.1/tests'//
//Making all in common//
//make[1]: Entering directory '/j/development/dhcp-4.4.1/common'//
//Making all in .//
//make[2]: Entering directory '/j/development/dhcp-4.4.1/common'//
//gcc -DHAVE_CONFIG_H -I. -I../includes  -I.. -DLOCALSTATEDIR='"/var"'   -g -O2  -Wall -Werror -fno-strict-aliasing -I../includes -I/j/development/dhcp-4.4.1/bind/include -MT alloc.o -MD -MP -MF .deps/alloc.Tpo -c -o alloc.o alloc.c//
//mv -f .deps/alloc.Tpo .deps/alloc.Po//
//gcc -DHAVE_CONFIG_H -I. -I../includes  -I.. -DLOCALSTATEDIR='"/var"'   -g -O2  -Wall -Werror -fno-strict-aliasing -I../includes -I/j/development/dhcp-4.4.1/bind/include -MT bpf.o -MD -MP -MF .deps/bpf.Tpo -c -o bpf.o bpf.c//
//mv -f .deps/bpf.Tpo .deps/bpf.Po//
//gcc -DHAVE_CONFIG_H -I. -I../includes  -I.. -DLOCALSTATEDIR='"/var"'   -g -O2  -Wall -Werror -fno-strict-aliasing -I../includes -I/j/development/dhcp-4.4.1/bind/include -MT comapi.o -MD -MP -MF .deps/comapi.Tpo -c -o comapi.o comapi.c//
//mv -f .deps/comapi.Tpo .deps/comapi.Po//
//gcc -DHAVE_CONFIG_H -I. -I../includes  -I.. -DLOCALSTATEDIR='"/var"'   -g -O2  -Wall -Werror -fno-strict-aliasing -I../includes -I/j/development/dhcp-4.4.1/bind/include -MT conflex.o -MD -MP -MF .deps/conflex.Tpo -c -o conflex.o conflex.c//
//mv -f .deps/conflex.Tpo .deps/conflex.Po//
//gcc -DHAVE_CONFIG_H -I. -I../includes  -I.. -DLOCALSTATEDIR='"/var"'   -g -O2  -Wall -Werror -fno-strict-aliasing -I../includes -I/j/development/dhcp-4.4.1/bind/include -MT ctrace.o -MD -MP -MF .deps/ctrace.Tpo -c -o ctrace.o ctrace.c//
//mv -f .deps/ctrace.Tpo .deps/ctrace.Po//
//gcc -DHAVE_CONFIG_H -I. -I../includes  -I.. -DLOCALSTATEDIR='"/var"'   -g -O2  -Wall -Werror -fno-strict-aliasing -I../includes -I/j/development/dhcp-4.4.1/bind/include -MT dhcp4o6.o -MD -MP -MF .deps/dhcp4o6.Tpo -c -o dhcp4o6.o dhcp4o6.c//
//mv -f .deps/dhcp4o6.Tpo .deps/dhcp4o6.Po//
//gcc -DHAVE_CONFIG_H -I. -I../includes  -I.. -DLOCALSTATEDIR='"/var"'   -g -O2  -Wall -Werror -fno-strict-aliasing -I../includes -I/j/development/dhcp-4.4.1/bind/include -MT discover.o -MD -MP -MF .deps/discover.Tpo -c -o discover.o discover.c//
//discover.c: In function 'discover_interfaces'://
//discover.c:646:4: error: 'strncpy' output may be truncated copying 15 bytes from a string of length 15 [-Werror=stringop-truncation]//
//    strncpy(tmp->name, info.name, sizeof(tmp->name) - 1);//
//    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
//cc1: all warnings being treated as errors//
//make[2]: *** [Makefile:500: discover.o] Error 1//
//make[2]: Leaving directory '/j/development/dhcp-4.4.1/common'//
//make[1]: *** [Makefile:563: all-recursive] Error 1//
//make[1]: Leaving directory '/j/development/dhcp-4.4.1/common'//
//make: *** [Makefile:462: all-recursive] Error 1//
/
--- end dhcp.4.4.1 build output ---

-- 
http://lists.linuxfromscratch.org/listinfo/blfs-support
FAQ: http://www.linuxfromscratch.org/blfs/faq.html
Unsubscribe: See the above information page

Reply via email to