[Buildroot] [PATCH v4 1/2] package/bmap-tools: new package

Romain Naour romain.naour at smile.fr
Tue Feb 4 12:49:29 UTC 2020


Le 19/11/2019 à 21:36, Romain Naour a écrit :
> Hi Nicolas,
> 
> 
> Le 05/11/2019 à 13:51, Nicolas Carrier a écrit :
>> ---
>>
>> I need bmap-tools on the target since it's what our flashing / upgrade procudure
>> uses to speed up the process (flashing ~8GB disk images full of zeroes).
>>
>> Changes v3 -v4:
>>   - added the upstream URL to the package's help
>>
>> Changes v2 -> v3:
>>   - double-checked that setuptools is required by bmap-tools at runtime too
>>   - moved the "v" from BMAP_TOOLS_VERSION to BMAP_TOOLS_SITE (in the .hash too)
>>   - changed license name from GPLv2 to GPL-2.0
>>
>> Changes v1 -> v2:
>>   - no change
>>
>> ---
>>
>> Signed-off-by: Nicolas Carrier <nicolas.carrier at orolia.com>

Your SoB line should be on top of "---" in the commit log.
Otherwise it is dropped by git am when the patch is applied.


>> ---
>>  DEVELOPERS                         |  3 +++
>>  package/Config.in                  |  1 +
>>  package/bmap-tools/Config.in       | 15 +++++++++++++++
>>  package/bmap-tools/bmap-tools.hash |  2 ++
>>  package/bmap-tools/bmap-tools.mk   | 15 +++++++++++++++
>>  5 files changed, 36 insertions(+)
>>  create mode 100644 package/bmap-tools/Config.in
>>  create mode 100644 package/bmap-tools/bmap-tools.hash
>>  create mode 100644 package/bmap-tools/bmap-tools.mk
>>
>> diff --git a/DEVELOPERS b/DEVELOPERS
>> index 24c57b25f7..947722a8c7 100644
>> --- a/DEVELOPERS
>> +++ b/DEVELOPERS
>> @@ -1728,6 +1728,9 @@ F:	package/libevdev/
>>  N:	Nicola Di Lieto <nicola.dilieto at gmail.com>
>>  F:	package/uacme/
>>  
>> +N:	Nicolas Carrier <nicolas.carrier at orolia.com>
>> +F:	package/bmap-tools/
>> +
>>  N:	Nicolas Cavallari <nicolas.cavallari at green-communications.fr>
>>  F:	package/libgit2/
>>  
>> diff --git a/package/Config.in b/package/Config.in
>> index 1ad1d49a8a..52852ac2fc 100644
>> --- a/package/Config.in
>> +++ b/package/Config.in
>> @@ -184,6 +184,7 @@ menu "Filesystem and flash utilities"
>>  	source "package/aufs/Config.in"
>>  	source "package/aufs-util/Config.in"
>>  	source "package/autofs/Config.in"
>> +	source "package/bmap-tools/Config.in"
>>  	source "package/btrfs-progs/Config.in"
>>  	source "package/cifs-utils/Config.in"
>>  	source "package/cpio/Config.in"
>> diff --git a/package/bmap-tools/Config.in b/package/bmap-tools/Config.in
>> new file mode 100644
>> index 0000000000..e582270c44
>> --- /dev/null
>> +++ b/package/bmap-tools/Config.in
>> @@ -0,0 +1,15 @@
>> +config BR2_PACKAGE_BMAP_TOOLS
>> +	bool "bmap-tools"
>> +	depends on BR2_PACKAGE_PYTHON3 || \
>> +		BR2_PACKAGE_PYTHON
>> +	select BR2_PACKAGE_PYTHON_SIX # runtime
>> +	select BR2_PACKAGE_PYTHON_SETUPTOOLS
>> +	help
>> +	  Tool to flash image files to block devices using the block map
>> +	  bmaptool is a generic tool for creating the block map (bmap)
>> +	  for a file, and copying files using the block map. The idea is
>> +	  that large file containing unused blocks, like raw system
>> +	  image files, can be copied or flashed a lot faster with
>> +	  bmaptool than with traditional tools like "dd" or "cp".
>> +
>> +	  https://github.com/intel/bmap-tools
>> diff --git a/package/bmap-tools/bmap-tools.hash b/package/bmap-tools/bmap-tools.hash
>> new file mode 100644
>> index 0000000000..794765b633
>> --- /dev/null
>> +++ b/package/bmap-tools/bmap-tools.hash
>> @@ -0,0 +1,2 @@
>> +sha256  d410e2d97192d0fc2f88ef160a0bb6ed83fce99da97a606d7f6890cc654ec594  bmap-tools-3.5.tar.gz
>> +sha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING
>> diff --git a/package/bmap-tools/bmap-tools.mk b/package/bmap-tools/bmap-tools.mk
>> new file mode 100644
>> index 0000000000..4c2465876e
>> --- /dev/null
>> +++ b/package/bmap-tools/bmap-tools.mk
>> @@ -0,0 +1,15 @@
>> +################################################################################
>> +#
>> +# bmap-tools
>> +#
>> +################################################################################
>> +
>> +BMAP_TOOLS_VERSION = 3.5
>> +BMAP_TOOLS_SITE = $(call github,intel,bmap-tools,v$(BMAP_TOOLS_VERSION))
>> +BMAP_TOOLS_LICENSE = GPL-2.0
>> +BMAP_TOOLS_LICENSE_FILES = COPYING
>> +BMAP_TOOLS_SETUP_TYPE = setuptools
>> +BMAP_TOOLS_DEPENDENCIES = \
>> +	python-setuptools
> When you create a new package for a software in Buildroot, it can be useful to
> check how the software is packaged for other Linux distribution or build tool
> (Yocto).
> 
> For example, Fedora, ArchLinux and Debian
> 
> https://github.com/intel/bmap-tools/blob/master/packaging/bmap-tools.spec#L20
> https://github.com/intel/bmap-tools/blob/master/debian/control#L13
> 
>          python-gpgme,
>          ${misc:Depends},
>          ${python:Depends},
>          bzip2,
>          pbzip2,
>          gzip,
>          pigz,
>          lzop,
>          liblz4-tool,
>          xz-utils,
>          tar,
>          unzip
> 
> Some of theses (maybe optional) dependencies are missing in your patch.
> Can you check them?


When python2 is used, BR2_PACKAGE_PYTHON_HASHLIB should be selected [1] (to be
checked but I'm not sure it's worth the effort to test python2 case, maybe you
can make this package python3 only)

[1] https://github.com/intel/bmap-tools/blob/master/bmaptools/BmapCopy.py#L62

For others dependencies, bmaptool is testing several command at runtime (ssh,
pigz, pbzip2) but it can use an alternative tool for some of them.
(grep for program_is_available in the code)

- ssh command is required for remote access.
- pbzip2 command can be replaced by bzip2 but in the system used for testing
bzip2 is not installed.
- tar is used as archiver but it can be use with options that is not available
from the busybox version.

Here is the output of tar --help from busybox:
Create, extract, or list files from a tar file

	c	Create
	x	Extract
	t	List
	-f FILE	Name of TARFILE ('-' for stdin/out)
	-C DIR	Change to DIR before operation
	-v	Verbose
	-O	Extract to stdout
	-o	Don't restore user:group
	-k	Don't replace existing files
	-h	Follow symlinks
	-T FILE	File with names to include
	-X FILE	File with glob patterns to exclude
	--exclude PATTERN	Glob pattern to exclude

By looking at the code [1] bmaptool is expecting the complete version of tar
command. The one that provide -z option.

Note: you can also add -z option for busybox tar but it require to enable it
from the busybox configuration.

There are other such unsupported options. I would suggest to select the tar
package (don't forget to add tar's reverse dependencies)

[1] https://github.com/intel/bmap-tools/blob/master/bmaptools/TransRead.py#L336


Best regards,
Romain

> 
> Best regards,
> Romain
> 
>> +
>> +$(eval $(python-package))
>>
> 



More information about the buildroot mailing list