NetBSD Problem Report #49525

From apb@cequrux.com  Fri Jan  2 11:02:34 2015
Return-Path: <apb@cequrux.com>
Received: from mail.netbsd.org (mail.netbsd.org [149.20.53.66])
	(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
	(Client CN "mail.netbsd.org", Issuer "Postmaster NetBSD.org" (verified OK))
	by mollari.NetBSD.org (Postfix) with ESMTPS id 5505CA5864
	for <gnats-bugs@gnats.NetBSD.org>; Fri,  2 Jan 2015 11:02:34 +0000 (UTC)
Message-Id: <20150102110226.E4AF22A5AE8E@apb-laptoy.apb.alt.za>
Date: Fri,  2 Jan 2015 13:02:26 +0200 (SAST)
From: apb@cequrux.com
To: gnats-bugs@NetBSD.org
Subject: fuse-encfs is old and does not build
X-Send-Pr-Version: 3.95

>Number:         49525
>Category:       pkg
>Synopsis:       fuse-encfs is old and does not build
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    pkg-manager
>State:          open
>Class:          change-request
>Submitter-Id:   net
>Arrival-Date:   Fri Jan 02 11:05:00 +0000 2015
>Last-Modified:  Sun Jan 18 05:45:01 +0000 2015
>Originator:     Alan Barrett
>Release:        NetBSD 7.99.1
>Organization:
not much
>Environment:
System: NetBSD 7.99.1 i386
Architecture: i386
Machine: i386
>Description:
	The fuse-encfs-1.2.0.2nb4 package (from pkgsrc filesystems/fuse-encfs)
        does not build on NetBSD-7.99.1.

        Upstream version 1.2.0-2 was released in Feb 2005.  The latest
        upstream release is version 1.7.5 (released in Dec 2011), and
        upstream version 1.8 is likely to be released soon (1.8-rc1 was
        released in Dec 2014).

        There have been so many changes over the past 10 years that it
        seems sensible to update to a newer version, rather than to
        figure out how to make the old version build.

>How-To-Repeat:
	Try to build fuse-enfcs-1.2.0.2nb4 on NetBSD-7.99.1.  See the
	following errors:

Error messages from "make build":
[[[
In file included from Cipher.h:27:0,
                 from Cipher.cpp:19:
Ptr.h: In instantiation of 'class rel::Ptr<Cipher>':
Cipher.cpp:101:55:   required from here
Ptr.h:155:2: error: cannot allocate an object of abstract type 'Cipher'
  Ptr(Type value, void *noDestructor)
  ^
In file included from Cipher.cpp:19:0:
Cipher.h:43:7: note:   because the following virtual functions are pure within 'Cipher':
 class Cipher
       ^
Cipher.h:85:28: note:   virtual rel::Interface Cipher::interface() const
     virtual rel::Interface interface() const =0;
                            ^
Cipher.h:88:23: note:   virtual CipherKey Cipher::newKey(const char*, int)
     virtual CipherKey newKey(const char *password, int passwdLength) =0;
                       ^
Cipher.h:90:23: note:   virtual CipherKey Cipher::newRandomKey()
     virtual CipherKey newRandomKey() =0;
                       ^
Cipher.h:93:23: note:   virtual CipherKey Cipher::readKey(const unsigned char*, const CipherKey&, bool)
     virtual CipherKey readKey(const unsigned char *data,
                       ^
Cipher.h:96:18: note:   virtual void Cipher::writeKey(const CipherKey&, unsigned char*, const CipherKey&)
     virtual void writeKey(const CipherKey &key, unsigned char *data,
                  ^
Cipher.h:99:18: note:   virtual bool Cipher::compareKey(const CipherKey&, const CipherKey&) const
     virtual bool compareKey( const CipherKey &A, const CipherKey &B ) const =0;
                  ^
Cipher.h:102:17: note:  virtual int Cipher::keySize() const
     virtual int keySize() const=0;
                 ^
Cipher.h:103:17: note:  virtual int Cipher::encodedKeySize() const
     virtual int encodedKeySize() const=0; // size
                 ^
Cipher.h:104:17: note:  virtual int Cipher::cipherBlockSize() const
     virtual int cipherBlockSize() const=0; // size of a cipher block
                 ^
Cipher.h:109:18: note:  virtual void Cipher::randomize(unsigned char*, int) const
     virtual void randomize( unsigned char *buf, int len ) const =0;
                  ^
Cipher.h:112:22: note:  virtual __uint64_t Cipher::MAC_64(const unsigned char*, int, const CipherKey&, __uint64_t*) const
     virtual uint64_t MAC_64( const unsigned char *src, int len,
                      ^
Cipher.h:124:18: note:  virtual bool Cipher::streamEncode(unsigned char*, int, __uint64_t, const CipherKey&) const
     virtual bool streamEncode( unsigned char *data, int len,
                  ^
Cipher.h:126:18: note:  virtual bool Cipher::streamDecode(unsigned char*, int, __uint64_t, const CipherKey&) const
     virtual bool streamDecode( unsigned char *data, int len,
                  ^
Cipher.h:144:18: note:  virtual bool Cipher::blockEncode(unsigned char*, int, __uint64_t, const CipherKey&) const
     virtual bool blockEncode(unsigned char *buf, int size,
                  ^
Cipher.h:146:18: note:  virtual bool Cipher::blockDecode(unsigned char*, int, __uint64_t, const CipherKey&) const
     virtual bool blockDecode(unsigned char *buf, int size,
                  ^
In file included from Cipher.h:27:0,
                 from Cipher.cpp:19:
Ptr.h:176:6: error: cannot allocate an object of abstract type 'Cipher'
      Ptr(Type value, void(*destructor)(Type))
      ^
In file included from Cipher.cpp:19:0:
Cipher.h:43:7: note:   since type 'Cipher' has pure virtual functions
 class Cipher
       ^
In file included from Cipher.h:27:0,
                 from Cipher.cpp:19:
Ptr.h:245:7: error: cannot allocate an object of abstract type 'Cipher'
  void reset(Type value, void(*destructor)(Type))
       ^
In file included from Cipher.cpp:19:0:
Cipher.h:43:7: note:   since type 'Cipher' has pure virtual functions
 class Cipher
       ^
Makefile:512: recipe for target 'Cipher.o' failed
gmake[2]: *** [Cipher.o] Error 1
]]]

>Fix:
	Please update fuse-encfs to version 1.7.5, or 1.8rc1, or
	wait for version 1.8 and update to that.

        Here's my failed attempt.  I deleted all the patch files,
        and edited the Makefile as follows (updating the version
        number, MASTER_SITE, and a few related variables, and adding a
        dependency on boost), but it complains about a failure to find
        some unidentified library.

Makefile patch:
[[[
--- pkgsrc/filesystems/fuse-encfs/Makefile	12 Feb 2014 23:17:53 -0000	1.10
+++ pkgsrc/filesystems/fuse-encfs/Makefile	2 Jan 2015 10:36:19 -0000
@@ -1,20 +1,19 @@
 # $NetBSD: Makefile,v 1.10 2014/02/12 23:17:53 tron Exp $
 #

-DISTNAME=	encfs-1.2.0-2
-PKGNAME=	fuse-${DISTNAME:S/-2/.2/}
-PKGREVISION=	4
+DISTNAME=	v1.8-rc1
+PKGNAME=	fuse-encfs-${DISTNAME:S/^v//:S/-rc/rc/}
 CATEGORIES=	filesystems
-MASTER_SITES=	${MASTER_SITE_SOURCEFORGE:=encfs/}
-EXTRACT_SUFX=	.tgz
+MASTER_SITES=	https://github.com/vgough/encfs/archive/

 MAINTAINER=	pkgsrc-users@NetBSD.org
 HOMEPAGE=	http://www.arg0.net/encfs
 COMMENT=	FUSE Encrypted Filesystem
+LICENSE=	gnu-gpl-v3 AND gnu-lgpl-v3

-WRKSRC=		${WRKDIR}/${DISTNAME:S/-2//}
+WRKSRC=		${WRKDIR}/encfs-${DISTNAME:S/^v//}
 GNU_CONFIGURE=	yes
-USE_TOOLS+=	autoconf gmake pkg-config
+USE_TOOLS+=	gmake pkg-config
 USE_LANGUAGES=	c c++

 .include "../../mk/bsd.prefs.mk"
@@ -23,6 +22,14 @@ USE_LANGUAGES=	c c++
 CPPFLAGS+=	-D_NETBSD_SOURCE
 .endif

+.if "${DISTNAME:M*rc[0-9]*}" != ""
+# "rc" releases don't have pre-generated configure scripts
+USE_TOOLS+=	autoconf automake
+pre-configure:
+	cd ${WRKSRC} && autoreconf -if
+.endif
+
+.include "../../devel/boost-headers/buildlink3.mk"
 .include "../../devel/librlog/buildlink3.mk"
 .include "../../security/openssl/buildlink3.mk"
 .include "../../mk/fuse.buildlink3.mk"

]]]

Error messages from "make configure":
[[[
checking for boostlib >= 1.34... yes
configure: WARNING: BOOST_CPPFLAGS
checking whether the Boost::Serialization library is available... yes
configure: error: Could not find a version of the library!
*** Error code 1
]]]

>Audit-Trail:
From: David Holland <dholland-pbugs@netbsd.org>
To: gnats-bugs@NetBSD.org
Cc: 
Subject: Re: pkg/49525: fuse-encfs is old and does not build
Date: Sun, 18 Jan 2015 05:43:46 +0000

 On Fri, Jan 02, 2015 at 11:05:00AM +0000, apb@cequrux.com wrote:
  > Error messages from "make configure":
  > [[[
  > checking for boostlib >= 1.34... yes
  > configure: WARNING: BOOST_CPPFLAGS
  > checking whether the Boost::Serialization library is available... yes
  > configure: error: Could not find a version of the library!
  > *** Error code 1
  > ]]]

 Ugh, boost... can you check config.log?

 Also, if it doesn't build now, the fact that the update doesn't build
 either doesn't make the situation worse, so maybe you should just
 commit what you've got and we'll try to get it fixed...

 -- 
 David A. Holland
 dholland@netbsd.org

NetBSD Home
NetBSD PR Database Search

(Contact us) $NetBSD: query-full-pr,v 1.39 2013/11/01 18:47:49 spz Exp $
$NetBSD: gnats_config.sh,v 1.8 2006/05/07 09:23:38 tsutsui Exp $
Copyright © 1994-2014 The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.