[Buildroot] [PATCH] package/dlib: new package

Romain Naour romain.naour at smile.fr
Thu Aug 1 21:14:29 UTC 2019


Hi,

Le 02/07/2019 à 22:17, Romain Naour a écrit :
> Build the dlib library using the cmake package infrastructure
> and build the dlib python module as POST_HOOKS instead of
> adding a python-dlib package. Doing so, we borrow some
> variables from the python infrastructure and reuse
> DLIB_CONF_OPTS to convert cmake option (-D) to python
> syntax (--set).

I marked this patch Changes Requested since I'm going to send a new version
after fixing packaging issues.

Best regards,
Romain

> 
> Signed-off-by: Romain Naour <romain.naour at smile.fr>
> ---
> Tested on a potato board (aarch64) using the ARM Aarch64 toolchain.
> This require a fix to python-numpy package [1] to fix a runtime
> issue.
> 
> [1] http://patchwork.ozlabs.org/patch/1114198/
> ---
>  DEVELOPERS             |  1 +
>  package/Config.in      |  1 +
>  package/dlib/Config.in | 42 +++++++++++++++++++++++++++
>  package/dlib/dlib.hash |  2 ++
>  package/dlib/dlib.mk   | 64 ++++++++++++++++++++++++++++++++++++++++++
>  5 files changed, 110 insertions(+)
>  create mode 100644 package/dlib/Config.in
>  create mode 100644 package/dlib/dlib.hash
>  create mode 100644 package/dlib/dlib.mk
> 
> diff --git a/DEVELOPERS b/DEVELOPERS
> index ef6fe1feca..6496af6d88 100644
> --- a/DEVELOPERS
> +++ b/DEVELOPERS
> @@ -1934,6 +1934,7 @@ F:	package/vnstat/
>  N:	Romain Naour <romain.naour at gmail.com>
>  F:	package/aubio/
>  F:	package/bullet/
> +F:	package/dlib/
>  F:	package/efl/
>  F:	package/enet/
>  F:	package/enlightenment/
> diff --git a/package/Config.in b/package/Config.in
> index 076f21712e..41d07c71fa 100644
> --- a/package/Config.in
> +++ b/package/Config.in
> @@ -1672,6 +1672,7 @@ menu "Other"
>  	source "package/cracklib/Config.in"
>  	source "package/dawgdic/Config.in"
>  	source "package/ding-libs/Config.in"
> +	source "package/dlib/Config.in"
>  	source "package/eigen/Config.in"
>  	source "package/elfutils/Config.in"
>  	source "package/ell/Config.in"
> diff --git a/package/dlib/Config.in b/package/dlib/Config.in
> new file mode 100644
> index 0000000000..086d82857c
> --- /dev/null
> +++ b/package/dlib/Config.in
> @@ -0,0 +1,42 @@
> +config BR2_PACKAGE_DLIB
> +	bool "dlib"
> +	depends on BR2_INSTALL_LIBSTDCPP
> +	depends on !(BR2_powerpc && BR2_TOOLCHAIN_USES_UCLIBC) # lapack
> +	depends on BR2_PACKAGE_OPENBLAS_ARCH_SUPPORTS
> +	depends on BR2_PACKAGE_XORG7
> +	depends on BR2_TOOLCHAIN_HAS_FORTRAN # lapack
> +	depends on BR2_TOOLCHAIN_HAS_THREADS
> +	select BR2_PACKAGE_JPEG
> +	select BR2_PACKAGE_LAPACK
> +	select BR2_PACKAGE_LIBPNG
> +	select BR2_PACKAGE_OPENBLAS
> +	select BR2_PACKAGE_XLIB_LIBXEXT
> +	help
> +	  Dlib is a modern C++ toolkit containing machine learning
> +	  algorithms and tools for creating complex software in C++
> +	  to solve real world problems. It is used in both industry
> +	  and academia in a wide range of domains including robotics,
> +	  embedded devices, mobile phones, and large high performance
> +	  computing environments. Dlib's open source licensing allows
> +	  you to use it in any application, free of charge.
> +
> +	  http://dlib.net
> +
> +if BR2_PACKAGE_DLIB
> +
> +config BR2_PACKAGE_DLIB_PYTHON_MODULE
> +	bool "python-dlib"
> +	depends on BR2_PACKAGE_PYTHON || BR2_PACKAGE_PYTHON3
> +	help
> +	  This option provide the dlib python module.
> +
> +	  http://dlib.net
> +
> +endif
> +
> +comment "dlib needs a toolchain w/ C++, threads"
> +	depends on !(BR2_powerpc && BR2_TOOLCHAIN_USES_UCLIBC)
> +	depends on BR2_PACKAGE_OPENBLAS_ARCH_SUPPORTS
> +	depends on BR2_PACKAGE_XORG7
> +	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS \
> +		|| !BR2_TOOLCHAIN_HAS_FORTRAN
> diff --git a/package/dlib/dlib.hash b/package/dlib/dlib.hash
> new file mode 100644
> index 0000000000..a3cdd281dc
> --- /dev/null
> +++ b/package/dlib/dlib.hash
> @@ -0,0 +1,2 @@
> +sha256 9d2a158b2adad6acba2346f90d929558a691151aa076a0b409ee685534118692  dlib-v19.17.tar.gz
> +sha256 8d8291caf1cee26d23acf3eb67c9f9a2d58f1c681b16a4fbe8cbfb9e3c0b5a9b  dlib/LICENSE.txt
> diff --git a/package/dlib/dlib.mk b/package/dlib/dlib.mk
> new file mode 100644
> index 0000000000..6189c8da94
> --- /dev/null
> +++ b/package/dlib/dlib.mk
> @@ -0,0 +1,64 @@
> +################################################################################
> +#
> +# dlib
> +#
> +################################################################################
> +
> +DLIB_VERSION = v19.17
> +DLIB_SITE = $(call github,davisking,dlib,$(DLIB_VERSION))
> +DLIB_INSTALL_STAGING = YES
> +DLIB_LICENSE = BSL-1.0
> +DLIB_LICENSE_FILES = dlib/LICENSE.txt
> +
> +DLIB_DEPENDENCIES += \
> +	xlib_libX11 \
> +	xlib_libXext \
> +	lapack \
> +	openblas \
> +	jpeg \
> +	libpng
> +
> +# Disable cuda support for now.
> +DLIB_CONF_OPTS = -DDLIB_USE_CUDA=OFF
> +
> +ifeq ($(BR2_PACKAGE_GIFLIB),y)
> +DLIB_DEPENDENCIES += giflib
> +DLIB_CONF_OPTS += -DDLIB_GIF_SUPPORT=ON
> +else
> +DLIB_CONF_OPTS += -DDLIB_GIF_SUPPORT=OFF
> +endif
> +
> +ifeq ($(BR2_PACKAGE_SQLITE),y)
> +DLIB_DEPENDENCIES += sqlite
> +DLIB_CONF_OPTS += -DDLIB_LINK_WITH_SQLITE3=ON
> +else
> +DLIB_CONF_OPTS += -DDLIB_LINK_WITH_SQLITE3=OFF
> +endif
> +
> +ifeq ($(BR2_PACKAGE_DLIB_PYTHON_MODULE),y)
> +
> +DLIB_DEPENDENCIES += $(if $(BR2_PACKAGE_PYTHON3),host-python3,host-python)
> +
> +# python-dlib call cmake to build the python module library, so we have
> +# to provide at least CMAKE_TOOLCHAIN_FILE to crosscompile.
> +DLIB_PYTHON_BUILD_OPTS += \
> +	--set CMAKE_TOOLCHAIN_FILE="$(HOST_DIR)/share/buildroot/toolchainfile.cmake" \
> +	--set CMAKE_INSTALL_PREFIX="/usr" \
> +	--set CMAKE_COLOR_MAKEFILE=OFF \
> +	$(subst -D,--set ,$(DLIB_CONF_OPTS))
> +
> +define DLIB_PYTHON_BUILD_TGT
> +	cd $(@D) && $(PKG_PYTHON_SETUPTOOLS_ENV) $(HOST_DIR)/bin/python \
> +		setup.py build $(DLIB_PYTHON_BUILD_OPTS)
> +endef
> +DLIB_POST_BUILD_HOOKS += DLIB_PYTHON_BUILD_TGT
> +
> +define DLIB_PYTHON_INSTALL_TGT
> +	cd $(@D) && $(PKG_PYTHON_SETUPTOOLS_ENV) $(HOST_DIR)/bin/python \
> +		setup.py install --no-compile $(PKG_PYTHON_SETUPTOOLS_INSTALL_TARGET_OPTS)
> +endef
> +DLIB_POST_INSTALL_TARGET_HOOKS += DLIB_PYTHON_INSTALL_TGT
> +
> +endif
> +
> +$(eval $(cmake-package))
> 



More information about the buildroot mailing list