Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 26 Sep 2013 16:51:06 GMT
From:      pkg-fallout@FreeBSD.org
To:        lx@FreeBSD.org
Cc:        pkg-fallout@FreeBSD.org
Subject:   [REL - head-i386-default][security/medusa] Failed for medusa-2.1_1 in build
Message-ID:  <201309261651.r8QGp6jo037520@beefy1.isc.freebsd.org>

next in thread | raw e-mail | index | archive | help
You are receiving this mail as a port that you maintain
is failing to build on the FreeBSD package build server.
Please investigate the failure and submit a PR to fix
build.

Maintainer:     lx@FreeBSD.org
Last committer: bapt@FreeBSD.org
Ident:          $FreeBSD: head/security/medusa/Makefile 327769 2013-09-20 22:55:24Z bapt $
Log URL:        http://beefy1.isc.freebsd.org/bulk/head-i386-default/2013-09-26_06h12m52s/logs/medusa-2.1_1.log
Build URL:      http://beefy1.isc.freebsd.org/bulk/head-i386-default/2013-09-26_06h12m52s
Log:

====>> Building security/medusa
build started at Thu Sep 26 16:50:53 UTC 2013
port directory: /usr/ports/security/medusa
building for: FreeBSD head-i386-default-job-22 10.0-CURRENT FreeBSD 10.0-CURRENT i386
maintained by: lx@FreeBSD.org
Makefile ident:      $FreeBSD: head/security/medusa/Makefile 327769 2013-09-20 22:55:24Z bapt $
Poudriere version: 3.1-pre

---Begin Environment---
UNAME_m=i386
UNAME_p=i386
OSVERSION=1000055
UNAME_v=FreeBSD 10.0-CURRENT
UNAME_r=10.0-CURRENT
BLOCKSIZE=K
MAIL=/var/mail/root
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/root/bin
STATUS=1
MASTERMNT=/usr/local/poudriere/data/build/head-i386-default/ref
PKG_EXT=txz
tpid=21964
POUDRIERE_BUILD_TYPE=bulk
NBPARALLEL=24
PKGNG=1
PKGNAME=medusa-2.1_1
PKG_DELETE=/usr/local/sbin/pkg-static delete -y -f
PKG_ADD=/usr/local/sbin/pkg-static add
PWD=/root
MASTERNAME=head-i386-default
USER=root
HOME=/root
POUDRIERE_VERSION=3.1-pre
LOCALBASE=/usr/local
PACKAGE_BUILDING=yes
PKG_VERSION=/poudriere/pkg-static version
---End Environment---

---Begin OPTIONS List---
===> The following configuration options are available for medusa-2.1_1:
     DOCS=on: Build and/or install documentation
     PGSQL=off: PostgreSQL database support
     SVN=off: Subversion support
===> Use 'make config' to modify these settings
---End OPTIONS List---

--CONFIGURE_ARGS--
--enable-module-ncp=no --enable-module-afp=no --enable-module-svn=no --enable-module-postgres=no --prefix=/usr/local ${_LATE_CONFIGURE_ARGS}
--End CONFIGURE_ARGS--

--CONFIGURE_ENV--
TMPDIR="/tmp" TMPDIR="/tmp" SHELL=/bin/sh CONFIG_SHELL=/bin/sh CONFIG_SITE=/usr/ports/Templates/config.site lt_cv_sys_max_cmd_len=262144
--End CONFIGURE_ENV--

--MAKE_ENV--
TMPDIR="/tmp" TMPDIR="/tmp" SHELL=/bin/sh NO_LINT=YES PREFIX=/usr/local  LOCALBASE=/usr/local  LIBDIR="/usr/lib"  CC="cc" CFLAGS="-O2 -pipe -fno-strict-aliasing"  CPP="cpp" CPPFLAGS=""  LDFLAGS=""  CXX="c++" CXXFLAGS="-O2 -pipe -fno-strict-aliasing"  MANPREFIX="/usr/local" BSD_INSTALL_PROGRAM="install  -s -o root -g wheel -m 555"  BSD_INSTALL_LIB="install  -s -o root -g wheel -m 444"  BSD_INSTALL_SCRIPT="install  -o root -g wheel -m 555"  BSD_INSTALL_DATA="install  -o root -g wheel -m 444"  BSD_INSTALL_MAN="install  -o root -g wheel -m 444"
--End MAKE_ENV--

--SUB_LIST--
PREFIX=/usr/local
LOCALBASE=/usr/local
DATADIR=/usr/local/share/medusa
DOCSDIR=/usr/local/share/doc/medusa
EXAMPLESDIR=/usr/local/share/examples/medusa
WWWDIR=/usr/local/www/medusa
ETCDIR=/usr/local/etc/medusa
--End SUB_LIST--

---Begin make.conf---
ARCH=i386
MACHINE=i386
MACHINE_ARCH=i386
USE_PACKAGE_DEPENDS=yes
BATCH=yes
WRKDIRPREFIX=/wrkdirs
PACKAGES=/packages
DISTDIR=/distfiles
#### /usr/local/etc/poudriere.d/make.conf ####
WITH_PKGNG=yes
NO_RESTRICTED=yes
DISABLE_MAKE_JOBS=yes
---End make.conf---
===>  Cleaning for medusa-2.1_1
=======================<phase: check-config   >============================
===========================================================================
=======================<phase: pkg-depends    >============================
===>   medusa-2.1_1 depends on file: /usr/local/sbin/pkg - not found
===>    Verifying install for /usr/local/sbin/pkg in /usr/ports/ports-mgmt/pkg
===>   Installing existing package /packages/All/pkg-1.1.4_5.txz
Installing pkg-1.1.4_5... done
If you are upgrading from the old package format, first run:

  # pkg2ng
===>   Returning to build of medusa-2.1_1
===========================================================================
=======================<phase: fetch-depends  >============================
===========================================================================
=======================<phase: fetch          >============================
===> Fetching all distfiles required by medusa-2.1_1 for building
===========================================================================
=======================<phase: checksum       >============================
===> Fetching all distfiles required by medusa-2.1_1 for building
=> SHA256 Checksum OK for medusa-2.1.tar.gz.
===========================================================================
=======================<phase: extract-depends>============================
===========================================================================
=======================<phase: extract        >============================
===> Fetching all distfiles required by medusa-2.1_1 for building
===>  Extracting for medusa-2.1_1
=> SHA256 Checksum OK for medusa-2.1.tar.gz.
===========================================================================
=======================<phase: patch-depends  >============================
===========================================================================
=======================<phase: patch          >============================
===>  Patching for medusa-2.1_1
===========================================================================
=======================<phase: build-depends  >============================
===========================================================================
=======================<phase: lib-depends    >============================
===>   medusa-2.1_1 depends on shared library: ssh2 - not found
===>    Verifying install for ssh2 in /usr/ports/security/libssh2
===>   Installing existing package /packages/All/libssh2-1.4.3_1,2.txz
Installing libssh2-1.4.3_1,2... done
===>   Returning to build of medusa-2.1_1
===>   medusa-2.1_1 depends on shared library: pcre - not found
===>    Verifying install for pcre in /usr/ports/devel/pcre
===>   Installing existing package /packages/All/pcre-8.33.txz
Installing pcre-8.33... done
===>   Returning to build of medusa-2.1_1
===========================================================================
=======================<phase: configure      >============================
===>  Configuring for medusa-2.1_1
===>   FreeBSD 10 autotools fix applied to /wrkdirs/usr/ports/security/medusa/work/medusa-2.1/aclocal.m4
===>   FreeBSD 10 autotools fix applied to /wrkdirs/usr/ports/security/medusa/work/medusa-2.1/configure
configure: loading site script /usr/ports/Templates/config.site
checking build system type... i386-portbld-freebsd10.0
checking host system type... i386-portbld-freebsd10.0
checking target system type... i386-portbld-freebsd10.0
checking for a BSD-compatible install... /usr/bin/install -c -o root -g wheel
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... (cached) /bin/mkdir -p
checking for gawk... (cached) /usr/bin/awk
checking whether make sets $(MAKE)... yes
checking for gcc... cc
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 cc accepts -g... yes
checking for cc option to accept ISO C89... none needed
checking for style of include used by make... GNU
checking dependency style of cc... gcc3
checking how to run the C preprocessor... cpp
checking for grep that handles long lines and -e... (cached) /usr/bin/grep
checking for egrep... (cached) /usr/bin/egrep
checking for ANSI C header files... (cached) yes
checking for sys/types.h... (cached) yes
checking for sys/stat.h... (cached) yes
checking for stdlib.h... (cached) yes
checking for string.h... (cached) yes
checking for memory.h... (cached) yes
checking for strings.h... (cached) yes
checking for inttypes.h... (cached) yes
checking for stdint.h... (cached) yes
checking for unistd.h... (cached) yes
checking size of int... 4
checking size of long... 4
checking size of long long... 8
checking size of short... 2
checking whether to enable debugging... yes
configure: checking for pthread support...
checking for main in -lpthread... yes
configure: checking for dlopen/dlclose...
checking for dlclose in -ldl... no
checking for dlclose in -lc... yes
checking for library containing clock_gettime... none required
checking for clock_gettime... (cached) yes
configure: checking for OpenSSL Library and Header files...
checking for CRYPTO_lock in -lcrypto... yes
checking openssl/ssl.h usability... yes
checking openssl/ssl.h presence... yes
checking for openssl/ssl.h... yes
checking for main in -lssl... yes
configure: *** Checking module dependencies and enabling accordingly ***
configure: checking for AFPFS-NG Library and Header files...
checking afpfs-ng/afp_protocol.h usability... no
checking afpfs-ng/afp_protocol.h presence... no
checking for afpfs-ng/afp_protocol.h... no
configure: WARNING:  *** AFPFS-NG header files required for AFP module. ***

    The AFPFS-NG package must be installed for the AFP module to function. This includes
    both the library and header files. AFPFS-NG is available at the following site:
    http://alexthepuffin.googlepages.com/. The AFP module will NOT be built.

  
checking whether to enable AFP module... no
checking whether to enable CVS module... yes
checking whether to enable FTP module... yes
<snip>
                                  ^
wrapper.c:293:19: warning: passing 'unsigned char *' to parameter of type 'char *' converts between pointers to integer types with different sign [-Wpointer-sign]
          strncpy(_psSessionData->szCmdParamFull + nCmdPartLength, psCredSet->psUser->pUser, strlen(psCredSet->psUser->pUser)); 
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/string.h:101:32: note: passing argument to parameter here
char    *strncpy(char * __restrict, const char * __restrict, size_t);
                                  ^
wrapper.c:294:19: warning: passing 'unsigned char *' to parameter of type 'char *' converts between pointers to integer types with different sign [-Wpointer-sign]
          strncpy(_psSessionData->szCmdParamFull + nCmdPartLength + strlen(psCredSet->psUser->pUser), szTmp + 2, strlen(szTmp) - 2); 
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/string.h:101:32: note: passing argument to parameter here
char    *strncpy(char * __restrict, const char * __restrict, size_t);
                                  ^
wrapper.c:307:71: warning: passing 'unsigned char *' to parameter of type 'const char *' converts between pointers to integer types with different sign [-Wpointer-sign]
        if ((_psSessionData->nType == TYPE_SINGLE) && (szTmp = strstr(_psSessionData->szCmdParamFull, "%P")))
                                                                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/string.h:118:26: note: passing argument to parameter here
char    *strstr(const char *, const char *) __pure;
                            ^
wrapper.c:311:29: warning: passing 'unsigned char *' to parameter of type 'const char *' converts between pointers to integer types with different sign [-Wpointer-sign]
          strncpy(szCmdTmp, _psSessionData->szCmdParamFull, nCmdPartLength); 
                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/string.h:101:57: note: passing argument to parameter here
char    *strncpy(char * __restrict, const char * __restrict, size_t);
                                                           ^
wrapper.c:315:19: warning: passing 'unsigned char *' to parameter of type 'char *' converts between pointers to integer types with different sign [-Wpointer-sign]
          strncpy(_psSessionData->szCmdParamFull, szCmdTmp, nCmdLength + 1);
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/string.h:101:32: note: passing argument to parameter here
char    *strncpy(char * __restrict, const char * __restrict, size_t);
                                  ^
wrapper.c:332:51: warning: passing 'unsigned char *' to parameter of type 'const char *' converts between pointers to integer types with different sign [-Wpointer-sign]
        _psSessionData->szCmdFull = malloc(strlen(_psSessionData->szCmd) + strlen(_psSessionData->szCmdParamFull) + 7);
                                                  ^~~~~~~~~~~~~~~~~~~~~
/usr/include/string.h:95:28: note: passing argument to parameter here
size_t   strlen(const char *) __pure;
                            ^
wrapper.c:332:83: warning: passing 'unsigned char *' to parameter of type 'const char *' converts between pointers to integer types with different sign [-Wpointer-sign]
        _psSessionData->szCmdFull = malloc(strlen(_psSessionData->szCmd) + strlen(_psSessionData->szCmdParamFull) + 7);
                                                                                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/string.h:95:28: note: passing argument to parameter here
size_t   strlen(const char *) __pure;
                            ^
wrapper.c:333:53: warning: passing 'unsigned char *' to parameter of type 'const char *' converts between pointers to integer types with different sign [-Wpointer-sign]
        memset(_psSessionData->szCmdFull, 0, strlen(_psSessionData->szCmd) + strlen(_psSessionData->szCmdParamFull) + 7);
                                                    ^~~~~~~~~~~~~~~~~~~~~
/usr/include/string.h:95:28: note: passing argument to parameter here
size_t   strlen(const char *) __pure;
                            ^
wrapper.c:333:85: warning: passing 'unsigned char *' to parameter of type 'const char *' converts between pointers to integer types with different sign [-Wpointer-sign]
        memset(_psSessionData->szCmdFull, 0, strlen(_psSessionData->szCmd) + strlen(_psSessionData->szCmdParamFull) + 7);
                                                                                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/string.h:95:28: note: passing argument to parameter here
size_t   strlen(const char *) __pure;
                            ^
wrapper.c:334:74: warning: passing 'unsigned char *' to parameter of type 'const char *' converts between pointers to integer types with different sign [-Wpointer-sign]
        strncpy(_psSessionData->szCmdFull, _psSessionData->szCmd, strlen(_psSessionData->szCmd));
                                                                         ^~~~~~~~~~~~~~~~~~~~~
/usr/include/string.h:95:28: note: passing argument to parameter here
size_t   strlen(const char *) __pure;
                            ^
wrapper.c:334:17: warning: passing 'unsigned char *' to parameter of type 'char *' converts between pointers to integer types with different sign [-Wpointer-sign]
        strncpy(_psSessionData->szCmdFull, _psSessionData->szCmd, strlen(_psSessionData->szCmd));
                ^~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/string.h:101:32: note: passing argument to parameter here
char    *strncpy(char * __restrict, const char * __restrict, size_t);
                                  ^
wrapper.c:334:44: warning: passing 'unsigned char *' to parameter of type 'const char *' converts between pointers to integer types with different sign [-Wpointer-sign]
        strncpy(_psSessionData->szCmdFull, _psSessionData->szCmd, strlen(_psSessionData->szCmd));
                                           ^~~~~~~~~~~~~~~~~~~~~
/usr/include/string.h:101:57: note: passing argument to parameter here
char    *strncpy(char * __restrict, const char * __restrict, size_t);
                                                           ^
wrapper.c:335:17: warning: passing 'unsigned char *' to parameter of type 'char *' converts between pointers to integer types with different sign [-Wpointer-sign]
        strncat(_psSessionData->szCmdFull, " ", 1);
                ^~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/string.h:99:32: note: passing argument to parameter here
char    *strncat(char * __restrict, const char * __restrict, size_t);
                                  ^
wrapper.c:336:83: warning: passing 'unsigned char *' to parameter of type 'const char *' converts between pointers to integer types with different sign [-Wpointer-sign]
        strncat(_psSessionData->szCmdFull, _psSessionData->szCmdParamFull, strlen(_psSessionData->szCmdParamFull));
                                                                                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/string.h:95:28: note: passing argument to parameter here
size_t   strlen(const char *) __pure;
                            ^
wrapper.c:336:17: warning: passing 'unsigned char *' to parameter of type 'char *' converts between pointers to integer types with different sign [-Wpointer-sign]
        strncat(_psSessionData->szCmdFull, _psSessionData->szCmdParamFull, strlen(_psSessionData->szCmdParamFull));
                ^~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/string.h:99:32: note: passing argument to parameter here
char    *strncat(char * __restrict, const char * __restrict, size_t);
                                  ^
wrapper.c:336:44: warning: passing 'unsigned char *' to parameter of type 'const char *' converts between pointers to integer types with different sign [-Wpointer-sign]
        strncat(_psSessionData->szCmdFull, _psSessionData->szCmdParamFull, strlen(_psSessionData->szCmdParamFull));
                                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/string.h:99:57: note: passing argument to parameter here
char    *strncat(char * __restrict, const char * __restrict, size_t);
                                                           ^
wrapper.c:337:17: warning: passing 'unsigned char *' to parameter of type 'char *' converts between pointers to integer types with different sign [-Wpointer-sign]
        strncat(_psSessionData->szCmdFull, " 1>&2", 5);
                ^~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/string.h:99:32: note: passing argument to parameter here
char    *strncat(char * __restrict, const char * __restrict, size_t);
                                  ^
wrapper.c:342:16: warning: implicit declaration of function 'initProcess' is invalid in C99 [-Wimplicit-function-declaration]
        iRet = initProcess(_psSessionData);
               ^
wrapper.c:374:16: warning: implicit declaration of function 'closeProcess' is invalid in C99 [-Wimplicit-function-declaration]
        iRet = closeProcess(_psSessionData);
               ^
wrapper.c:451:18: warning: passing 'unsigned char *' to parameter of type 'const char *' converts between pointers to integer types with different sign [-Wpointer-sign]
      if ((fopen(_psSessionData->szCmd, "r")) == NULL)
                 ^~~~~~~~~~~~~~~~~~~~~
/usr/include/stdio.h:242:36: note: passing argument to parameter here
FILE    *fopen(const char * __restrict, const char * __restrict);
                                      ^
wrapper.c:460:20: warning: passing 'unsigned char *' to parameter of type 'const char *' converts between pointers to integer types with different sign [-Wpointer-sign]
        if (system(_psSessionData->szCmdFull) < 0)
                   ^~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/stdlib.h:113:25: note: passing argument to parameter here
int      system(const char *);
                            ^
wrapper.c:491:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
wrapper.c:582:3: warning: implicit declaration of function 'setPassResult' is invalid in C99 [-Wimplicit-function-declaration]
  setPassResult((*psLogin), szPassword);
  ^
35 warnings generated.
mv -f .deps/wrapper.Tpo .deps/wrapper.Po
cc  -O2 -pipe -fno-strict-aliasing  -module -fPIC -L/usr/local/lib -rdynamic -o wrapper.mod wrapper.o medusa-trace.o -lssh2 -shared -lcrypto -lc -lpthread  -lssl -lcrypto -lm
cc -DHAVE_CONFIG_H -I. -I.. -I../src    -g -DDEBUG -fPIC -I/usr/include -I/usr/local/include -I/usr/local/ssl/include -I/usr/include/postgresql -I/usr/include/pgsql -I/usr/include/afpfs-ng  -O2 -pipe -fno-strict-aliasing -MT listModules.o -MD -MP -MF .deps/listModules.Tpo -c -o listModules.o listModules.c
listModules.c:83:5: warning: implicit declaration of function 'writeVerbose' is invalid in C99 [-Wimplicit-function-declaration]
    writeVerbose(VB_NONE, "  Available modules in \"%s\" :", pszTarget);
    ^
1 warning generated.
mv -f .deps/listModules.Tpo .deps/listModules.Po
cc -DHAVE_CONFIG_H -I. -I.. -I../src    -g -DDEBUG -fPIC -I/usr/include -I/usr/local/include -I/usr/local/ssl/include -I/usr/include/postgresql -I/usr/include/pgsql -I/usr/include/afpfs-ng  -O2 -pipe -fno-strict-aliasing -MT medusa.o -MD -MP -MF .deps/medusa.Tpo -c -o medusa.o medusa.c
medusa.c:57:3: warning: implicit declaration of function 'writeVerbose' is invalid in C99 [-Wimplicit-function-declaration]
  writeVerbose(VB_NONE, "");
  ^
medusa.c:140:9: warning: implicit declaration of function 'writeError' is invalid in C99 [-Wimplicit-function-declaration]
        writeError(ERR_ALERT, "Options 'h' and 'H' are mutually exclusive.");
        ^
medusa.c:300:7: warning: implicit declaration of function 'listModules' is invalid in C99 [-Wimplicit-function-declaration]
      listModules(szModulePaths, 1);  // End the program after this executes by passing a 1 as the second param
      ^
medusa.c:337:11: warning: implicit declaration of function 'invokeModule' is invalid in C99 [-Wimplicit-function-declaration]
    ret = invokeModule(_psAudit->pModuleName, NULL, NULL, NULL);
          ^
medusa.c:1441:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
medusa.c:1500:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
medusa.c:1570:5: error: non-void function 'startLoginThreadPool' should return a value [-Wreturn-type]
    return;
    ^
medusa.c:1612:7: error: non-void function 'startLoginThreadPool' should return a value [-Wreturn-type]
      return;
      ^
medusa.c:1648:7: error: non-void function 'startLoginThreadPool' should return a value [-Wreturn-type]
      return;
      ^
medusa.c:1678:3: error: non-void function 'startLoginThreadPool' should return a value [-Wreturn-type]
  return;
  ^
medusa.c:1747:28: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
      else if (szResumeMap = strstr(_psAudit->pOptResume, szTmp1))
               ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
medusa.c:1747:28: note: place parentheses around the assignment to silence this warning
      else if (szResumeMap = strstr(_psAudit->pOptResume, szTmp1))
                           ^
               (                                                 )
medusa.c:1747:28: note: use '==' to turn this assignment into an equality comparison
      else if (szResumeMap = strstr(_psAudit->pOptResume, szTmp1))
                           ^
                           ==
7 warnings and 4 errors generated.
*** Error code 1

Stop.
make[4]: stopped in /wrkdirs/usr/ports/security/medusa/work/medusa-2.1/src
*** Error code 1

Stop.
make[3]: stopped in /wrkdirs/usr/ports/security/medusa/work/medusa-2.1/src
*** Error code 1

Stop.
make[2]: stopped in /wrkdirs/usr/ports/security/medusa/work/medusa-2.1
*** Error code 1

Stop.
make[1]: stopped in /wrkdirs/usr/ports/security/medusa/work/medusa-2.1
*** Error code 1

Stop.
make: stopped in /usr/ports/security/medusa
===>  Cleaning for medusa-2.1_1



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201309261651.r8QGp6jo037520>