pkgsrc-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

pkg/49525: fuse-encfs is old and does not build



>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
>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@localhost
 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
]]]



Home | Main Index | Thread Index | Old Index