diff mbox series

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

Message ID 20191105125039.1443-1-nicolas.carrier@orolia.com
State Changes Requested
Headers show
Series [v4,1/2] package/bmap-tools: new package | expand

Commit Message

Nicolas Carrier Nov. 5, 2019, 12:51 p.m. UTC
---

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@orolia.com>
---
 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

Comments

Romain Naour Nov. 19, 2019, 8:36 p.m. UTC | #1
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@orolia.com>
> ---
>  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@gmail.com>
>  F:	package/uacme/
>  
> +N:	Nicolas Carrier <nicolas.carrier@orolia.com>
> +F:	package/bmap-tools/
> +
>  N:	Nicolas Cavallari <nicolas.cavallari@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?

Best regards,
Romain

> +
> +$(eval $(python-package))
>
Romain Naour Feb. 4, 2020, 12:49 p.m. UTC | #2
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@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@gmail.com>
>>  F:	package/uacme/
>>  
>> +N:	Nicolas Carrier <nicolas.carrier@orolia.com>
>> +F:	package/bmap-tools/
>> +
>>  N:	Nicolas Cavallari <nicolas.cavallari@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))
>>
>
Thomas Petazzoni Sept. 3, 2020, 6:44 p.m. UTC | #3
Hello Nicolas,

On Tue, 5 Nov 2019 12:51:09 +0000
Nicolas Carrier <nicolas.carrier@orolia.com> wrote:

> 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@orolia.com>

This patch series received some significant review and comments from
Romain Naour, but you haven't posted a v5. I've marked the v4 as
Changes Requested, which means that if you don't send a v5, we will
unfortunately forget about this contribution.

Thanks!

Thomas
Nicolas Carrier Sept. 4, 2020, 6:39 a.m. UTC | #4
Hello Thomas,
Thank you very much for the notice, I'll take a look, this patch is
starting to get quite old :)

I missed Romain's comments, because the mails for patches I have been
working on, are drowned into the rest of the ML's messages.
It's really by luck that I noticed this one :)

I'll try to configure some filtering in by email client, but is there
some setup option to get only emails for patch series I'm working on?
The Ml's volume is way to high for me to follow the pace :/



On Thu, 2020-09-03 at 20:44 +0200, Thomas Petazzoni wrote:
> CAUTION: This email originated from outside of the organization.
> Do not click links or open attachments unless you recognize the
> sender and know the content is safe.
> 
> Hello Nicolas,
> 
> On Tue, 5 Nov 2019 12:51:09 +0000
> Nicolas Carrier <nicolas.carrier@orolia.com> wrote:
> 
> > 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@orolia.com>
> 
> This patch series received some significant review and comments from
> Romain Naour, but you haven't posted a v5. I've marked the v4 as
> Changes Requested, which means that if you don't send a v5, we will
> unfortunately forget about this contribution.
> 
> Thanks!
> 
> Thomas
> --
> Thomas Petazzoni, CTO, Bootlin
> Embedded Linux and Kernel engineering
> https://bootlin.com
Thomas Petazzoni Sept. 4, 2020, 7:09 a.m. UTC | #5
Hello,

On Fri, 04 Sep 2020 08:39:58 +0200
Nicolas Carrier <nicolas.carrier@orolia.com> wrote:

> Thank you very much for the notice, I'll take a look, this patch is
> starting to get quite old :)
> 
> I missed Romain's comments, because the mails for patches I have been
> working on, are drowned into the rest of the ML's messages.
> It's really by luck that I noticed this one :)
> 
> I'll try to configure some filtering in by email client, but is there
> some setup option to get only emails for patch series I'm working on?
> The Ml's volume is way to high for me to follow the pace :/

You're probably not filtering e-mails the correct way. To filter
e-mails from the mailing list, you should filter them based on the
"List-Id" header.

If you do that, all the mailing list traffic will go to your
"buildroot" e-mail folder. But if you're explicitly Cc'ed on an e-mail
(which is the case here), you will receive it in your Inbox. This
allows to nicely split the "general mailing list traffic" from "the
specific things on which your input is needed".

Best regards,

Thomas
Nicolas Carrier Sept. 4, 2020, 7:26 a.m. UTC | #6
Hello,
Thank you Thomas for the nice trick, I'll test that right now :)

On Fri, 2020-09-04 at 09:09 +0200, Thomas Petazzoni wrote:
> CAUTION: This email originated from outside of the organization.
> Do not click links or open attachments unless you recognize the
> sender and know the content is safe.
> 
> Hello,
> 
> On Fri, 04 Sep 2020 08:39:58 +0200
> Nicolas Carrier <nicolas.carrier@orolia.com> wrote:
> 
> > Thank you very much for the notice, I'll take a look, this patch is
> > starting to get quite old :)
> > 
> > I missed Romain's comments, because the mails for patches I have
> > been
> > working on, are drowned into the rest of the ML's messages.
> > It's really by luck that I noticed this one :)
> > 
> > I'll try to configure some filtering in by email client, but is
> > there
> > some setup option to get only emails for patch series I'm working
> > on?
> > The Ml's volume is way to high for me to follow the pace :/
> 
> You're probably not filtering e-mails the correct way. To filter
> e-mails from the mailing list, you should filter them based on the
> "List-Id" header.
> 
> If you do that, all the mailing list traffic will go to your
> "buildroot" e-mail folder. But if you're explicitly Cc'ed on an e-
> mail
> (which is the case here), you will receive it in your Inbox. This
> allows to nicely split the "general mailing list traffic" from "the
> specific things on which your input is needed".
> 
> Best regards,
> 
> Thomas
> --
> Thomas Petazzoni, CTO, Bootlin
> Embedded Linux and Kernel engineering
> https://bootlin.com
diff mbox series

Patch

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@gmail.com>
 F:	package/uacme/
 
+N:	Nicolas Carrier <nicolas.carrier@orolia.com>
+F:	package/bmap-tools/
+
 N:	Nicolas Cavallari <nicolas.cavallari@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
+
+$(eval $(python-package))