NetBSD Problem Report #49566

From ef@math.uni-bonn.de  Tue Jan 13 19:35:03 2015
Return-Path: <ef@math.uni-bonn.de>
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 C39B7A6552
	for <gnats-bugs@gnats.NetBSD.org>; Tue, 13 Jan 2015 19:35:03 +0000 (UTC)
Message-Id: <20150113193459.DD2061BD49@trave.math.uni-bonn.de>
Date: Tue, 13 Jan 2015 20:34:59 +0100 (CET)
From: ef@math.uni-bonn.de
Reply-To: ef@math.uni-bonn.de
To: gnats-bugs@gnats.NetBSD.org
Subject: devel/libftdi1 build failure
X-Send-Pr-Version: 3.95

>Number:         49566
>Category:       pkg
>Synopsis:       devel/libftdi1 build failure
>Confidential:   no
>Severity:       serious
>Priority:       low
>Responsible:    pkg-manager
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Tue Jan 13 19:40:00 +0000 2015
>Last-Modified:  Tue Jan 13 22:20:01 +0000 2015
>Originator:     Edgar Fuß
>Release:        pkgsrc-2014Q4
>Organization:
	Mathematisches Institut der Universität Bonn
>Description:
	While building devel/libftdi1, <Python.h> cannot be found because 
	it's in include/pythonX.Y, not include.
	While there: Arrange for documentation to be built and installed.
	While there: Examples shoud go to share/examples.
>How-To-Repeat:
	cd devel/libftdi1 && bmake build
>Fix:
	Pass PYTHON_INCLUDE_DIR to cmake:
	Index: devel/libftdi1/Makefile
	===================================================================
	RCS file: /cvsroot/pkgsrc/devel/libftdi1/Makefile,v
	retrieving revision 1.8
	diff -u -r1.8 Makefile
	--- devel/libftdi1/Makefile	7 Nov 2014 19:39:29 -0000	1.8
	+++ devel/libftdi1/Makefile	13 Jan 2015 18:16:38 -0000
	@@ -39,6 +39,7 @@
		-DCMAKE_INSTALL_RPATH=${PREFIX}/lib \
		-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=FALSE \
		-DLIBUSB_INCLUDE_DIR=${PREFIX}/include/libusb-1.0 \
	+	-DPYTHON_INCLUDE_DIR=${PREFIX}/include/python${PYVERSSUFFIX} \
		.)
	 # -DCMAKE_INSTALL_PREFIX=${PREFIX} converts /usr/local to ${PREFIX}

	While there, one can also build and install the documentation:
	Index: Makefile
	===================================================================
	RCS file: /cvsroot/pkgsrc/devel/libftdi1/Makefile,v
	retrieving revision 1.8
	diff -u -r1.8 Makefile
	--- Makefile	7 Nov 2014 19:39:29 -0000	1.8
	+++ Makefile	13 Jan 2015 19:20:57 -0000
	@@ -1,7 +1,7 @@
	 # $NetBSD: Makefile,v 1.8 2014/11/07 19:39:29 adam Exp $

	 DISTNAME=	libftdi1-1.1
	-PKGREVISION=	1
	+PKGREVISION=	2
	 CATEGORIES=	devel
	 MASTER_SITES=	http://www.intra2net.com/en/developer/libftdi/download/
	 EXTRACT_SUFX=	.tar.bz2
	@@ -20,28 +20,39 @@
	 PYTHON_VERSIONS_INCOMPATIBLE=	33 34 # not yet ported as of 1.0

	 BUILD_DEPENDS+=libusb1-[0-9]*:../../devel/libusb1
	-# It is better off to have doxygen, but
	-# clang segfaults while packaging print/luatex
	-#BUILD_DEPENDS+=doxygen-[0-9]*:../../devel/doxygen
	+BUILD_DEPENDS+=doxygen-[0-9]*:../../devel/doxygen

	 PKGCONFIG_OVERRIDE+=	libftdi1.pc.in
	 PKGCONFIG_OVERRIDE+=	libftdipp1.pc.in

	 PLIST_SUBST+=	PYSITELIB=${PYSITELIB}

	+HTML_DOC_DIR=		share/doc/libftdi1
	+
	+INSTALLATION_DIRS+=	man/man3
	+INSTALLATION_DIRS+=	${HTML_DOC_DIR}
	+
	 do-configure:
		(cd $(WRKSRC) ; \
		cmake \
		-DEXAMPLES:BOOL=off \
	-	-DDOCUMENTATION:BOOL=off \
	+	-DDOCUMENTATION:BOOL=on \
		-DCMAKE_BUILD_WITH_INSTALL_RPATH=TRUE \
		-DCMAKE_INSTALL_PREFIX=${PREFIX} \
		-DCMAKE_INSTALL_RPATH=${PREFIX}/lib \
		-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=FALSE \
		-DLIBUSB_INCLUDE_DIR=${PREFIX}/include/libusb-1.0 \
	+	-DPYTHON_INCLUDE_DIR=${PREFIX}/include/python${PYVERSSUFFIX} \
		.)
	 # -DCMAKE_INSTALL_PREFIX=${PREFIX} converts /usr/local to ${PREFIX}

	+# The upstream makefile builds, but doesn't install the documentation
	+post-install:
	+.for f in FTDIProgressInfo FTDIStreamState Ftdi Ftdi_Context_Private Ftdi_Eeprom_Private Ftdi_List Ftdi_List_Private ftdi.c ftdi.cpp ftdi.h ftdi.hpp ftdi_context ftdi_device_list ftdi_eeprom ftdi_i.h ftdi_stream.c ftdi_transfer_control ftdi_version_i.h ftdi_version_info libftdi size_and_time
	+	${INSTALL_MAN} ${WRKSRC}/doc/man/man3/${f}.3 ${DESTDIR}${PREFIX}/${PKGMANDIR}/man3
	+.endfor
	+	${INSTALL_DATA} ${WRKSRC}/doc/html/* ${DESTDIR}${PREFIX}/${HTML_DOC_DIR}
	+
	 .include "../../devel/boost-headers/buildlink3.mk"
	 .include "../../devel/boost-libs/buildlink3.mk"
	 .include "../../devel/libconfuse/buildlink3.mk"
	Index: PLIST
	===================================================================
	RCS file: /cvsroot/pkgsrc/devel/libftdi1/PLIST,v
	retrieving revision 1.2
	diff -u -r1.2 PLIST
	--- PLIST	4 Oct 2014 12:01:08 -0000	1.2
	+++ PLIST	13 Jan 2015 19:20:57 -0000
	@@ -19,3 +19,160 @@
	 ${PYSITELIB}/ftdi1.py
	 share/libftdi/examples/complete.py
	 share/libftdi/examples/simple.py
	+man/man3/FTDIProgressInfo.3
	+man/man3/FTDIStreamState.3
	+man/man3/Ftdi.3
	+man/man3/Ftdi_Context_Private.3
	+man/man3/Ftdi_Eeprom_Private.3
	+man/man3/Ftdi_List.3
	+man/man3/Ftdi_List_Private.3
	+man/man3/ftdi.c.3
	+man/man3/ftdi.cpp.3
	+man/man3/ftdi.h.3
	+man/man3/ftdi.hpp.3
	+man/man3/ftdi_context.3
	+man/man3/ftdi_device_list.3
	+man/man3/ftdi_eeprom.3
	+man/man3/ftdi_i.h.3
	+man/man3/ftdi_stream.c.3
	+man/man3/ftdi_transfer_control.3
	+man/man3/ftdi_version_i.h.3
	+man/man3/ftdi_version_info.3
	+man/man3/libftdi.3
	+man/man3/size_and_time.3
	+share/doc/libftdi1/annotated.html
	+share/doc/libftdi1/bc_s.png
	+share/doc/libftdi1/bdwn.png
	+share/doc/libftdi1/classFtdi_1_1Context-members.html
	+share/doc/libftdi1/classFtdi_1_1Context.html
	+share/doc/libftdi1/classFtdi_1_1Context_1_1Private-members.html
	+share/doc/libftdi1/classFtdi_1_1Context_1_1Private.html
	+share/doc/libftdi1/classFtdi_1_1Eeprom-members.html
	+share/doc/libftdi1/classFtdi_1_1Eeprom.html
	+share/doc/libftdi1/classFtdi_1_1Eeprom_1_1Private-members.html
	+share/doc/libftdi1/classFtdi_1_1Eeprom_1_1Private.html
	+share/doc/libftdi1/classFtdi_1_1List-members.html
	+share/doc/libftdi1/classFtdi_1_1List.html
	+share/doc/libftdi1/classFtdi_1_1List_1_1Private-members.html
	+share/doc/libftdi1/classFtdi_1_1List_1_1Private.html
	+share/doc/libftdi1/classes.html
	+share/doc/libftdi1/closed.png
	+share/doc/libftdi1/dir_000000.html
	+share/doc/libftdi1/dir_000001.html
	+share/doc/libftdi1/doxygen.css
	+share/doc/libftdi1/doxygen.png
	+share/doc/libftdi1/dynsections.js
	+share/doc/libftdi1/files.html
	+share/doc/libftdi1/ftdi_8c.html
	+share/doc/libftdi1/ftdi_8c_source.html
	+share/doc/libftdi1/ftdi_8cpp.html
	+share/doc/libftdi1/ftdi_8cpp_source.html
	+share/doc/libftdi1/ftdi_8h.html
	+share/doc/libftdi1/ftdi_8h_source.html
	+share/doc/libftdi1/ftdi_8hpp.html
	+share/doc/libftdi1/ftdi_8hpp_source.html
	+share/doc/libftdi1/ftdi__i_8h.html
	+share/doc/libftdi1/ftdi__i_8h_source.html
	+share/doc/libftdi1/ftdi__stream_8c.html
	+share/doc/libftdi1/ftdi__stream_8c_source.html
	+share/doc/libftdi1/ftdi__version__i_8h.html
	+share/doc/libftdi1/ftdi__version__i_8h_source.html
	+share/doc/libftdi1/ftv2blank.png
	+share/doc/libftdi1/ftv2doc.png
	+share/doc/libftdi1/ftv2folderclosed.png
	+share/doc/libftdi1/ftv2folderopen.png
	+share/doc/libftdi1/ftv2lastnode.png
	+share/doc/libftdi1/ftv2link.png
	+share/doc/libftdi1/ftv2mlastnode.png
	+share/doc/libftdi1/ftv2mnode.png
	+share/doc/libftdi1/ftv2node.png
	+share/doc/libftdi1/ftv2plastnode.png
	+share/doc/libftdi1/ftv2pnode.png
	+share/doc/libftdi1/ftv2splitbar.png
	+share/doc/libftdi1/ftv2vertline.png
	+share/doc/libftdi1/functions.html
	+share/doc/libftdi1/functions_b.html
	+share/doc/libftdi1/functions_c.html
	+share/doc/libftdi1/functions_d.html
	+share/doc/libftdi1/functions_e.html
	+share/doc/libftdi1/functions_enum.html
	+share/doc/libftdi1/functions_eval.html
	+share/doc/libftdi1/functions_f.html
	+share/doc/libftdi1/functions_func.html
	+share/doc/libftdi1/functions_g.html
	+share/doc/libftdi1/functions_h.html
	+share/doc/libftdi1/functions_i.html
	+share/doc/libftdi1/functions_l.html
	+share/doc/libftdi1/functions_m.html
	+share/doc/libftdi1/functions_n.html
	+share/doc/libftdi1/functions_o.html
	+share/doc/libftdi1/functions_p.html
	+share/doc/libftdi1/functions_r.html
	+share/doc/libftdi1/functions_rela.html
	+share/doc/libftdi1/functions_s.html
	+share/doc/libftdi1/functions_t.html
	+share/doc/libftdi1/functions_type.html
	+share/doc/libftdi1/functions_u.html
	+share/doc/libftdi1/functions_v.html
	+share/doc/libftdi1/functions_vars.html
	+share/doc/libftdi1/functions_w.html
	+share/doc/libftdi1/functions_~.html
	+share/doc/libftdi1/globals.html
	+share/doc/libftdi1/globals_b.html
	+share/doc/libftdi1/globals_c.html
	+share/doc/libftdi1/globals_d.html
	+share/doc/libftdi1/globals_defs.html
	+share/doc/libftdi1/globals_e.html
	+share/doc/libftdi1/globals_enum.html
	+share/doc/libftdi1/globals_eval.html
	+share/doc/libftdi1/globals_f.html
	+share/doc/libftdi1/globals_func.html
	+share/doc/libftdi1/globals_g.html
	+share/doc/libftdi1/globals_h.html
	+share/doc/libftdi1/globals_i.html
	+share/doc/libftdi1/globals_l.html
	+share/doc/libftdi1/globals_m.html
	+share/doc/libftdi1/globals_n.html
	+share/doc/libftdi1/globals_o.html
	+share/doc/libftdi1/globals_p.html
	+share/doc/libftdi1/globals_r.html
	+share/doc/libftdi1/globals_s.html
	+share/doc/libftdi1/globals_t.html
	+share/doc/libftdi1/globals_type.html
	+share/doc/libftdi1/globals_u.html
	+share/doc/libftdi1/globals_v.html
	+share/doc/libftdi1/globals_vars.html
	+share/doc/libftdi1/globals_w.html
	+share/doc/libftdi1/group__libftdi.html
	+share/doc/libftdi1/index.html
	+share/doc/libftdi1/jquery.js
	+share/doc/libftdi1/modules.html
	+share/doc/libftdi1/namespaceFtdi.html
	+share/doc/libftdi1/namespaces.html
	+share/doc/libftdi1/nav_f.png
	+share/doc/libftdi1/nav_g.png
	+share/doc/libftdi1/nav_h.png
	+share/doc/libftdi1/open.png
	+share/doc/libftdi1/structFTDIProgressInfo-members.html
	+share/doc/libftdi1/structFTDIProgressInfo.html
	+share/doc/libftdi1/structFTDIStreamState-members.html
	+share/doc/libftdi1/structFTDIStreamState.html
	+share/doc/libftdi1/structftdi__context-members.html
	+share/doc/libftdi1/structftdi__context.html
	+share/doc/libftdi1/structftdi__device__list-members.html
	+share/doc/libftdi1/structftdi__device__list.html
	+share/doc/libftdi1/structftdi__eeprom-members.html
	+share/doc/libftdi1/structftdi__eeprom.html
	+share/doc/libftdi1/structftdi__transfer__control-members.html
	+share/doc/libftdi1/structftdi__transfer__control.html
	+share/doc/libftdi1/structftdi__version__info-members.html
	+share/doc/libftdi1/structftdi__version__info.html
	+share/doc/libftdi1/structsize__and__time-members.html
	+share/doc/libftdi1/structsize__and__time.html
	+share/doc/libftdi1/sync_off.png
	+share/doc/libftdi1/sync_on.png
	+share/doc/libftdi1/tab_a.png
	+share/doc/libftdi1/tab_b.png
	+share/doc/libftdi1/tab_h.png
	+share/doc/libftdi1/tab_s.png
	+share/doc/libftdi1/tabs.css

	One more thing: Example should go to share/examples, right?
	--- Makefile.1	2015-01-13 20:23:54.000000000 +0100
	+++ Makefile	2015-01-13 20:28:15.000000000 +0100
	@@ -29,6 +29,7 @@

	 HTML_DOC_DIR=		share/doc/libftdi1

	+INSTALLATION_DIRS+=	share/examples/libftdi1
	 INSTALLATION_DIRS+=	man/man3
	 INSTALLATION_DIRS+=	${HTML_DOC_DIR}


	patches/patch-python_examples_CMakeLists.txt:
	$NetBSD: patch-python_examples_CMakeLists.txt
	Install examples into share/examples/libftdi1, not share/examples/libftdi
	--- python/examples/CMakeLists.txt.orig	2014-02-05 17:24:11.000000000 +0100
	+++ python/examples/CMakeLists.txt	2015-01-13 20:24:49.000000000 +0100
	@@ -1,5 +1,5 @@
	 install ( FILES simple.py complete.py
	-          DESTINATION share/libftdi/examples
	+          DESTINATION share/examples/libftdi1
		   PERMISSIONS OWNER_READ GROUP_READ WORLD_READ 
		 )


>Audit-Trail:
From: =?utf-8?Q?Edgar_Fu=C3=9F?= <ef@math.uni-bonn.de>
To: gnats-bugs@NetBSD.org
Cc: 
Subject: Re: pkg/49566: devel/libftdi1 build failure
Date: Tue, 13 Jan 2015 23:19:53 +0100

 To actually produce a usable libftdi1.dylib on OS X, you need two magic =
 additions to the cmake invocation in Makefile:

  	-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=3DFALSE \
 +	-DCMAKE_MACOSX_RPATH=3DON \
 +	-DCMAKE_INSTALL_NAME_DIR=3D${PREFIX}/lib \
  	-DLIBUSB_INCLUDE_DIR=3D${PREFIX}/include/libusb-1.0 \

 (I haven=E2=80=99t tried whether these OS X specific arguments will emit =
 warnings or errors on non-OSX-platforms)
 Without these, you will get a warning about policy CMP0042 not being set =
 and the generated libftdi1.dylib will not have /usr/pkg/lib baked in =
 (due to that directory not present in the argument to the C compiler=E2=80=
 =99s -install_name option), and thus, a program linked against libftdi1 =
 (e.g. avrdude) will reference libftdi1.2.dylib, not =
 /usr/pkg/lib/libftdi1.2.dylib and thus not run.=

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.