[Buildroot] [PATCH v2 2/4] package/libftdi1: new package

Yegor Yefremov yegorslists at googlemail.com
Mon Mar 9 10:13:12 UTC 2015


On Mon, Mar 9, 2015 at 9:33 AM, Yegor Yefremov
<yegorslists at googlemail.com> wrote:
> On Sun, Mar 8, 2015 at 12:26 PM, Samuel Martin <s.martin49 at gmail.com> wrote:
>> From: Daniel Sangue <daniel.sangue at sangue.ch>
>>
>> This version of libftdi can coexists beside the 0.x version.
>>
>> Signed-off-by: Daniel Sangue <daniel.sangue at sangue.ch>
>> [Samuel Martin:
>>   - libftdi1.mk: bump to version 1.2 and add hash
>>   - cleanup uneeded libusb-compat stuff
>>   - Config.in: add comment when ftdipp1 deps are not met
>>   - fix typos in variable names and legit CMake options for *_CONF_OPTS
>>   - add support for python bindings and ftdi_eeprom
>>   - fix static build
>>   - fix build with toolchain w/o C++ support
>> ]
>> Signed-off-by: Samuel Martin <s.martin49 at gmail.com>
>>
>> ---
>> change v1->v2
>> - rebase on top of master
>> - libftdi1.mk: bump to version 1.2
>> - add hash
>> - Config.in: cleanup deps for ftdipp1
>> - Config.in: add comment when ftdipp1 deps are not met
>> - libftdi1.mk: fix typos in LIBFTDI1_CONF_OPTS variable name
>> - libftdi1.mk: use proper CMake options for *_CONF_OPTS
>> - libftdi1.mk: update libftdi1 deps and conf. opts.
>> - libftdi1.mk: add support for python bindings and ftdi_eeprom
>> - libftdi1.mk: add patch fixing static build
>> - libftdi1.mk: add patch fixing FindUSB1.cmake module (for static build)
>> - libftdi1.mk: add patch correctly disabling ftdipp when the toolchain
>>   does not install libstdc++
>> - reword commit message
>> ---
>>  package/Config.in                                  |  1 +
>>  ...he-standard-CMake-flag-to-drive-the-share.patch | 96 ++++++++++++++++++++++
>>  .../libftdi1/0002-cmake-fix-FindUSB1.cmake.patch   | 34 ++++++++
>>  ...o-not-check-for-g-when-FTDIPP-is-disabled.patch | 46 +++++++++++
>>  package/libftdi1/Config.in                         | 37 +++++++++
>>  package/libftdi1/libftdi1.hash                     |  2 +
>>  package/libftdi1/libftdi1.mk                       | 37 +++++++++
>>  7 files changed, 253 insertions(+)
>>  create mode 100644 package/libftdi1/0001-cmake-use-the-standard-CMake-flag-to-drive-the-share.patch
>>  create mode 100644 package/libftdi1/0002-cmake-fix-FindUSB1.cmake.patch
>>  create mode 100644 package/libftdi1/0003-cmake-do-not-check-for-g-when-FTDIPP-is-disabled.patch
>>  create mode 100644 package/libftdi1/Config.in
>>  create mode 100644 package/libftdi1/libftdi1.hash
>>  create mode 100644 package/libftdi1/libftdi1.mk
>>
>> diff --git a/package/Config.in b/package/Config.in
>> index 1bce00a..b46eb79 100644
>> --- a/package/Config.in
>> +++ b/package/Config.in
>> @@ -752,6 +752,7 @@ menu "Hardware handling"
>>         source "package/libcec/Config.in"
>>         source "package/libfreefare/Config.in"
>>         source "package/libftdi/Config.in"
>> +       source "package/libftdi1/Config.in"
>>         source "package/libhid/Config.in"
>>         source "package/libiio/Config.in"
>>         source "package/libinput/Config.in"
>> diff --git a/package/libftdi1/0001-cmake-use-the-standard-CMake-flag-to-drive-the-share.patch b/package/libftdi1/0001-cmake-use-the-standard-CMake-flag-to-drive-the-share.patch
>> new file mode 100644
>> index 0000000..487fc28
>> --- /dev/null
>> +++ b/package/libftdi1/0001-cmake-use-the-standard-CMake-flag-to-drive-the-share.patch
>> @@ -0,0 +1,96 @@
>> +From 7e57ff280b55b45e74329b9988279e8831d32eab Mon Sep 17 00:00:00 2001
>> +From: Samuel Martin <s.martin49 at gmail.com>
>> +Date: Sun, 25 Jan 2015 09:45:04 +0100
>> +Subject: [PATCH 1/2] cmake: use the standard CMake flag to drive the shared
>> + object build
>> +
>> +Remove the STATICLIBS CMake option (and the code handling it) and let
>> +the standard CMake flags drive the shared object build.
>> +
>> +Signed-off-by: Samuel Martin <s.martin49 at gmail.com>
>> +---
>> + CMakeLists.txt        |  2 --
>> + ftdipp/CMakeLists.txt | 15 +--------------
>> + src/CMakeLists.txt    | 13 +------------
>> + 3 files changed, 2 insertions(+), 28 deletions(-)
>> +
>> +diff --git a/CMakeLists.txt b/CMakeLists.txt
>> +index 74f80f4..0ba0b08 100644
>> +--- a/CMakeLists.txt
>> ++++ b/CMakeLists.txt
>> +@@ -46,8 +46,6 @@ set(CPACK_COMPONENT_SHAREDLIBS_GROUP "Development")
>> + set(CPACK_COMPONENT_STATICLIBS_GROUP "Development")
>> + set(CPACK_COMPONENT_HEADERS_GROUP    "Development")
>> +
>> +-option ( STATICLIBS "Build static libraries" ON )
>> +-
>> + # guess LIB_SUFFIX, don't take debian multiarch into account
>> + if ( NOT DEFINED LIB_SUFFIX )
>> +   if( CMAKE_SYSTEM_NAME MATCHES "Linux"
>> +diff --git a/ftdipp/CMakeLists.txt b/ftdipp/CMakeLists.txt
>> +index 7500211..27e7884 100644
>> +--- a/ftdipp/CMakeLists.txt
>> ++++ b/ftdipp/CMakeLists.txt
>> +@@ -23,8 +23,7 @@ if (FTDIPP)
>> +     set(FTDI_BUILD_CPP True PARENT_SCOPE)
>> +     message(STATUS "Building libftdi1++")
>> +
>> +-    # Shared library
>> +-    add_library(ftdipp1 SHARED ${cpp_sources})
>> ++    add_library(ftdipp1 ${cpp_sources})
>> +
>> +     math(EXPR VERSION_FIXUP "${MAJOR_VERSION} + 1")    # Compatiblity with previous releases
>> +     set_target_properties(ftdipp1 PROPERTIES VERSION ${VERSION_FIXUP}.${MINOR_VERSION}.0 SOVERSION 2)
>> +@@ -41,18 +40,6 @@ if (FTDIPP)
>> +               LIBRARY DESTINATION lib${LIB_SUFFIX}
>> +               ARCHIVE DESTINATION lib${LIB_SUFFIX}
>> +             )
>> +-
>> +-    # Static library
>> +-    if ( STATICLIBS )
>> +-      add_library(ftdipp1-static STATIC ${cpp_sources})
>> +-      set_target_properties(ftdipp1-static PROPERTIES OUTPUT_NAME "ftdipp1")
>> +-      set_target_properties(ftdipp1-static PROPERTIES CLEAN_DIRECT_OUTPUT 1)
>> +-
>> +-      install ( TARGETS ftdipp1-static
>> +-                ARCHIVE DESTINATION lib${LIB_SUFFIX}
>> +-                COMPONENT staticlibs
>> +-              )
>> +-    endif ()
>> +
>> +     install ( FILES ${cpp_headers}
>> +               DESTINATION include/${PROJECT_NAME}
>> +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
>> +index 9fd86a6..501d4a8 100644
>> +--- a/src/CMakeLists.txt
>> ++++ b/src/CMakeLists.txt
>> +@@ -21,7 +21,7 @@ configure_file(ftdi_version_i.h.in "${CMAKE_CURRENT_BINARY_DIR}/ftdi_version_i.h
>> + set(c_sources     ${CMAKE_CURRENT_SOURCE_DIR}/ftdi.c ${CMAKE_CURRENT_SOURCE_DIR}/ftdi_stream.c CACHE INTERNAL "List of c sources" )
>> + set(c_headers     ${CMAKE_CURRENT_SOURCE_DIR}/ftdi.h CACHE INTERNAL "List of c headers" )
>> +
>> +-add_library(ftdi1 SHARED ${c_sources})
>> ++add_library(ftdi1 ${c_sources})
>> +
>> + math(EXPR VERSION_FIXUP "${MAJOR_VERSION} + 1")    # Compatiblity with previous releases
>> + set_target_properties(ftdi1 PROPERTIES VERSION ${VERSION_FIXUP}.${MINOR_VERSION}.0 SOVERSION 2)
>> +@@ -38,17 +38,6 @@ install ( TARGETS ftdi1
>> +           ARCHIVE DESTINATION lib${LIB_SUFFIX}
>> +         )
>> +
>> +-if ( STATICLIBS )
>> +-  add_library(ftdi1-static STATIC ${c_sources})
>> +-  target_link_libraries(ftdi1-static ${LIBUSB_LIBRARIES})
>> +-  set_target_properties(ftdi1-static PROPERTIES OUTPUT_NAME "ftdi1")
>> +-  set_target_properties(ftdi1-static PROPERTIES CLEAN_DIRECT_OUTPUT 1)
>> +-  install ( TARGETS ftdi1-static
>> +-            ARCHIVE DESTINATION lib${LIB_SUFFIX}
>> +-            COMPONENT staticlibs
>> +-          )
>> +-endif ()
>> +-
>> + install ( FILES ${c_headers}
>> +           DESTINATION include/${PROJECT_NAME}
>> +           COMPONENT headers
>> +--
>> +2.2.2
>> +
>> diff --git a/package/libftdi1/0002-cmake-fix-FindUSB1.cmake.patch b/package/libftdi1/0002-cmake-fix-FindUSB1.cmake.patch
>> new file mode 100644
>> index 0000000..5619a0c
>> --- /dev/null
>> +++ b/package/libftdi1/0002-cmake-fix-FindUSB1.cmake.patch
>> @@ -0,0 +1,34 @@
>> +From 81275d75ae88fe8ab1915d3ba260ea935e63c362 Mon Sep 17 00:00:00 2001
>> +From: Samuel Martin <s.martin49 at gmail.com>
>> +Date: Sun, 25 Jan 2015 10:01:17 +0100
>> +Subject: [PATCH 2/2] cmake: fix FindUSB1.cmake
>> +
>> +Make sure all ldflags are correctly set, especially for static build.
>> +
>> +Signed-off-by: Samuel Martin <s.martin49 at gmail.com>
>> +---
>> + cmake/FindUSB1.cmake | 8 ++++++--
>> + 1 file changed, 6 insertions(+), 2 deletions(-)
>> +
>> +diff --git a/cmake/FindUSB1.cmake b/cmake/FindUSB1.cmake
>> +index b90e297..e7f1b3c 100644
>> +--- a/cmake/FindUSB1.cmake
>> ++++ b/cmake/FindUSB1.cmake
>> +@@ -26,8 +26,12 @@ else (LIBUSB_INCLUDE_DIR AND LIBUSB_LIBRARIES)
>> +     PATH_SUFFIXES libusb-1.0
>> +     PATHS ${PC_LIBUSB_INCLUDEDIR} ${PC_LIBUSB_INCLUDE_DIRS})
>> +
>> +-  FIND_LIBRARY(LIBUSB_LIBRARIES NAMES usb-1.0
>> +-    PATHS ${PC_LIBUSB_LIBDIR} ${PC_LIBUSB_LIBRARY_DIRS})
>> ++  set(LIBUSB_LIBRARIES ${PC_LIBUSB_STATIC_LDFLAGS} ${PC_LIBUSB_STATIC_LDFLAGS_OTHER})
>> ++  foreach(libname ${PC_LIBUSB_STATIC_LIBRARIES})
>> ++    FIND_LIBRARY(lib NAMES ${libname}
>> ++      PATHS ${PC_LIBUSB_LIBDIR} ${PC_LIBUSB_LIBRARY_DIRS})
>> ++    list(APPEND LIBUSB_LIBRARIES ${lib})
>> ++  endforeach()
>> +
>> +   include(FindPackageHandleStandardArgs)
>> +   FIND_PACKAGE_HANDLE_STANDARD_ARGS(LIBUSB DEFAULT_MSG LIBUSB_LIBRARIES LIBUSB_INCLUDE_DIR)
>> +--
>> +2.2.2
>> +
>> diff --git a/package/libftdi1/0003-cmake-do-not-check-for-g-when-FTDIPP-is-disabled.patch b/package/libftdi1/0003-cmake-do-not-check-for-g-when-FTDIPP-is-disabled.patch
>> new file mode 100644
>> index 0000000..be0913d
>> --- /dev/null
>> +++ b/package/libftdi1/0003-cmake-do-not-check-for-g-when-FTDIPP-is-disabled.patch
>> @@ -0,0 +1,46 @@
>> +From c215d5ecd985b57700e817920d0e99112b4a571b Mon Sep 17 00:00:00 2001
>> +From: Samuel Martin <s.martin49 at gmail.com>
>> +Date: Sun, 25 Jan 2015 13:35:24 +0100
>> +Subject: [PATCH] cmake: do not check for g++ when FTDIPP is disabled
>> +
>> +Signed-off-by: Samuel Martin <s.martin49 at gmail.com>
>> +---
>> + CMakeLists.txt        | 6 ++++--
>> + ftdipp/CMakeLists.txt | 1 +
>> + 2 files changed, 5 insertions(+), 2 deletions(-)
>> +
>> +diff --git a/CMakeLists.txt b/CMakeLists.txt
>> +index 0ba0b08..e880211 100644
>> +--- a/CMakeLists.txt
>> ++++ b/CMakeLists.txt
>> +@@ -1,5 +1,5 @@
>> + # Project
>> +-project(libftdi1)
>> ++project(libftdi1 C)
>> + set(MAJOR_VERSION 1)
>> + set(MINOR_VERSION 2)
>> + set(PACKAGE libftdi1)
>> +@@ -145,7 +145,9 @@ else(DOCUMENTATION AND DOXYGEN_FOUND)
>> + endif(DOCUMENTATION AND DOXYGEN_FOUND)
>> +
>> + add_subdirectory(src)
>> +-add_subdirectory(ftdipp)
>> ++if(FTDIPP)
>> ++  add_subdirectory(ftdipp)
>> ++endif()
>> + add_subdirectory(python)
>> + add_subdirectory(ftdi_eeprom)
>> + add_subdirectory(examples)
>> +diff --git a/ftdipp/CMakeLists.txt b/ftdipp/CMakeLists.txt
>> +index 27e7884..2d080f4 100644
>> +--- a/ftdipp/CMakeLists.txt
>> ++++ b/ftdipp/CMakeLists.txt
>> +@@ -1,4 +1,5 @@
>> + # Check
>> ++project(libftdipp1 C CXX)
>> + set(FTDI_BUILD_CPP False PARENT_SCOPE)
>> +
>> + option ( FTDIPP "Build C++ binding library libftdi1++" ON )
>> +--
>> +2.2.2
>> +
>> diff --git a/package/libftdi1/Config.in b/package/libftdi1/Config.in
>> new file mode 100644
>> index 0000000..1bb0bfd
>> --- /dev/null
>> +++ b/package/libftdi1/Config.in
>> @@ -0,0 +1,37 @@
>> +config BR2_PACKAGE_LIBFTDI1
>> +       bool "libftdi1"
>> +       depends on BR2_TOOLCHAIN_HAS_THREADS # libusb
>> +       select BR2_PACKAGE_LIBUSB
>> +       help
>> +         Userspace access to FTDI USB interface chips (version 1.x)
>> +
>> +         http://www.intra2net.com/en/developer/libftdi/index.php
>> +
>> +if BR2_PACKAGE_LIBFTDI1
>> +
>> +config BR2_PACKAGE_LIBTFDI1_LIBFTDIPP1
>> +       depends on BR2_INSTALL_LIBSTDCPP # boost
>> +       depends on BR2_LARGEFILE # boost
>> +       depends on BR2_TOOLCHAIN_HAS_THREADS # boost
>> +       select BR2_PACKAGE_BOOST
>> +       bool "libfdtipp1"
>> +       help
>> +         C++ bindings for libftdi
>> +
>> +comment "libfdtipp1 needs a toolchain w/ C++, largefile, threads"
>> +       depends on !BR2_INSTALL_LIBSTDCPP || !BR2_LARGEFILE || !BR2_TOOLCHAIN_HAS_THREADS
>> +
>> +config BR2_PACKAGE_LIBTFDI1_PYTHON_BINDINGS
>> +       depends on BR2_PACKAGE_PYTHON || BR2_PACKAGE_PYTHON3
>> +       bool "python bindings"
>> +       help
>> +         Python bindings for libftdi
>> +
>> +config BR2_PACKAGE_LIBTFDI1_FDTI_EEPROM
>> +       select BR2_PACKAGE_LIBCONFUSE
>> +       bool "ftdi_eeprom tool"
>> +
>> +endif # BR2_PACKAGE_LIBFTDI1
>> +
>> +comment "libftdi1 needs a toolchain w/ threads"
>> +       depends on !BR2_TOOLCHAIN_HAS_THREADS
>> diff --git a/package/libftdi1/libftdi1.hash b/package/libftdi1/libftdi1.hash
>> new file mode 100644
>> index 0000000..e53bc8f
>> --- /dev/null
>> +++ b/package/libftdi1/libftdi1.hash
>> @@ -0,0 +1,2 @@
>> +# Locally computed (after checking the signature from http://www.intra2net.com/en/developer/libftdi/download.php)
>> +sha256  a6ea795c829219015eb372b03008351cee3fb39f684bff3bf8a4620b558488d6  libftdi1-1.2.tar.bz2
>> diff --git a/package/libftdi1/libftdi1.mk b/package/libftdi1/libftdi1.mk
>> new file mode 100644
>> index 0000000..608c29a
>> --- /dev/null
>> +++ b/package/libftdi1/libftdi1.mk
>> @@ -0,0 +1,37 @@
>> +################################################################################
>> +#
>> +# libftdi1
>> +#
>> +################################################################################
>> +
>> +LIBFTDI1_VERSION = 1.2
>> +LIBFTDI1_SOURCE = libftdi1-$(LIBFTDI1_VERSION).tar.bz2
>> +LIBFTDI1_SITE = http://www.intra2net.com/en/developer/libftdi/download/
>> +LIBFTDI1_INSTALL_STAGING = YES
>> +LIBFTDI1_DEPENDENCIES = libusb
>> +LIBFTDI1_CONF_OPTS = -DDOCUMENTATION=OFF -DEXAMPLES=OFF
>> +
>> +ifeq ($(BR2_PACKAGE_LIBTFDI1_LIBFTDIPP1),y)
>> +LIBFTDI1_DEPENDENCIES += boost
>> +LIBFTDI1_CONF_OPTS += -DFTDIPP=ON
>> +else
>> +LIBFTDI1_CONF_OPTS += -DFTDIPP=OFF
>> +endif
>> +
>> +ifeq ($(BR2_PACKAGE_LIBTFDI1_PYTHON_BINDINGS),y)
>> +LIBFTDI1_DEPENDENCIES += $(if BR2_PACKAGE_PYTHON,python,python3) host-swig
>> +LIBFTDI1_CONF_OPTS += -DPYTHON_BINDINGS=ON
>> +else
>> +LIBFTDI1_CONF_OPTS += -DPYTHON_BINDINGS=OFF
>> +endif
>> +
>> +ifeq ($(BR2_PACKAGE_LIBTFDI1_FDTI_EEPROM),y)
>> +# ftdi_eeprom optionally depends on libintl, so make sure gettext is built
>> +# _before_ libfitdi1 when gettext is enbaled.
>> +LIBFTDI1_DEPENDENCIES += libconfuse $(if $(BR2_PACKAGE_GETTEXT),gettext)
>> +LIBFTDI1_CONF_OPTS += -DFTDI_EEPROM=ON
>> +else
>> +LIBFTDI1_CONF_OPTS += -DFTDI_EEPROM=OFF
>> +endif
>> +
>> +$(eval $(cmake-package))
>
> I've applied two first patches: libftdi bump and libfdti1 package.
> During compiling I get following error:
>
> libftdi1-1.2.tar.bz2: OK (sha256:
> a6ea795c829219015eb372b03008351cee3fb39f684bff3bf8a4620b558488d6)
>>>> libftdi1 1.2 Extracting
> bzcat /home/YegorYefremov/MyProjects/versioned/br-latest/dl/libftdi1-1.2.tar.bz2
> | tar --strip-components=1 -C
> /home/YegorYefremov/MyProjects/versioned/br-latest/prod-s1/build/libftdi1-1.2
>  -xf -
>>>> libftdi1 1.2 Patching
>
> Applying 0001-cmake-use-the-standard-CMake-flag-to-drive-the-share.patch
> using patch:
> patching file CMakeLists.txt
> Hunk #1 FAILED at 46.
> 1 out of 1 hunk FAILED -- saving rejects to file CMakeLists.txt.rej
> patching file ftdipp/CMakeLists.txt
> Hunk #2 FAILED at 40.
> 1 out of 2 hunks FAILED -- saving rejects to file ftdipp/CMakeLists.txt.rej
> patching file src/CMakeLists.txt
> Patch failed!  Please fix
> 0001-cmake-use-the-standard-CMake-flag-to-drive-the-share.patch!
>
> I've made git pull today, so I'm on the newest state.
>
> First reject file:
>
> --- CMakeLists.txt
> +++ CMakeLists.txt
> @@ -46,8 +46,6 @@
>  set(CPACK_COMPONENT_STATICLIBS_GROUP "Development")
>  set(CPACK_COMPONENT_HEADERS_GROUP    "Development")
>
> -option ( STATICLIBS "Build static libraries" ON )
> -
>  # guess LIB_SUFFIX, don't take debian multiarch into account
>  if ( NOT DEFINED LIB_SUFFIX )
>    if( CMAKE_SYSTEM_NAME MATCHES "Linux"
>
> Second:
>
> --- ftdipp/CMakeLists.txt
> +++ ftdipp/CMakeLists.txt
> @@ -40,18 +39,6 @@
>                LIBRARY DESTINATION lib${LIB_SUFFIX}
>                ARCHIVE DESTINATION lib${LIB_SUFFIX}
>              )
> -
> -    # Static library
> -    if ( STATICLIBS )
> -      add_library(ftdipp1-static STATIC ${cpp_sources})
> -      set_target_properties(ftdipp1-static PROPERTIES OUTPUT_NAME "ftdipp1")
> -      set_target_properties(ftdipp1-static PROPERTIES CLEAN_DIRECT_OUTPUT 1)
> -
> -      install ( TARGETS ftdipp1-static
> -                ARCHIVE DESTINATION lib${LIB_SUFFIX}
> -                COMPONENT staticlibs
> -              )
> -    endif ()
>
>      install ( FILES ${cpp_headers}
>                DESTINATION include/${PROJECT_NAME}
>
> Am I missing some other patches?

When applying the libftdi1 patch via "git am" I get following warnings:

Applying: package/libftdi1: new package
/home/user/Documents/versioned/br-test/.git/rebase-apply/patch:74:
trailing whitespace.

/home/user/Documents/versioned/br-test/.git/rebase-apply/patch:77:
trailing whitespace.
 # guess LIB_SUFFIX, don't take debian multiarch into account
/home/user/Documents/versioned/br-test/.git/rebase-apply/patch:87:
trailing whitespace.

/home/user/Documents/versioned/br-test/.git/rebase-apply/patch:91:
trailing whitespace.

/home/user/Documents/versioned/br-test/.git/rebase-apply/patch:98:
trailing whitespace.
-
warning: squelched 14 whitespace errors
warning: 16 lines applied after fixing whitespace errors.

The problem seems to be e-mail version of a patch. I've tried both
mbox variant from patchwork and saving the patch from my web gmail.
But direct cherry-picking was successful.

Yegor



More information about the buildroot mailing list