diff mbox series

[1/1] pkg-generic: fix no-check-hash for inferred site method

Message ID 20180625014101.13177-1-ricardo.martincoski@gmail.com
State Superseded
Headers show
Series [1/1] pkg-generic: fix no-check-hash for inferred site method | expand

Commit Message

Ricardo Martincoski June 25, 2018, 1:41 a.m. UTC
Currently, when the site method is explicitly set to a SCM other than
git, the main download is correctly excluded from being hash-checked.
But when the site method is inferred from the site uri, the download
from a SCM other than git is wrongly being hash-checked.

Fix this by moving the code that excludes SCM methods from hash-check
below the code that infers the site method.

Signed-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com>
Cc: Luca Ceresoli <luca@lucaceresoli.net>
Cc: Maxime Hadjinlian <maxime.hadjinlian@gmail.com>
Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Cc: Yann E. MORIN <yann.morin.1998@free.fr>
---
All packages in the tree that use those site methods currently
explicitly set the site method.
$ make -s printvars VARS=%_SITE_METHOD | grep '=\(bzr\|cvs\|hg\|svn\)'
CANFESTIVAL_SITE_METHOD=hg
DVB_APPS_SITE_METHOD=hg
FIS_SITE_METHOD=svn
OPEN2300_SITE_METHOD=svn
OPENTYRIAN_SITE_METHOD=hg
PYTHON_NFC_SITE_METHOD=bzr
PYTHON_PYGAME_SITE_METHOD=hg
---
 package/pkg-generic.mk | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

Comments

Luca Ceresoli June 25, 2018, 9:01 p.m. UTC | #1
Hi Ricardo,

On 25/06/2018 03:41, Ricardo Martincoski wrote:
> Currently, when the site method is explicitly set to a SCM other than
> git, the main download is correctly excluded from being hash-checked.
> But when the site method is inferred from the site uri, the download
> from a SCM other than git is wrongly being hash-checked.
> 
> Fix this by moving the code that excludes SCM methods from hash-check
> below the code that infers the site method.
> 
> Signed-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com>
> Cc: Luca Ceresoli <luca@lucaceresoli.net>
> Cc: Maxime Hadjinlian <maxime.hadjinlian@gmail.com>
> Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
> Cc: Yann E. MORIN <yann.morin.1998@free.fr>
> ---
> All packages in the tree that use those site methods currently
> explicitly set the site method.
> $ make -s printvars VARS=%_SITE_METHOD | grep '=\(bzr\|cvs\|hg\|svn\)'
> CANFESTIVAL_SITE_METHOD=hg
> DVB_APPS_SITE_METHOD=hg
> FIS_SITE_METHOD=svn
> OPEN2300_SITE_METHOD=svn
> OPENTYRIAN_SITE_METHOD=hg
> PYTHON_NFC_SITE_METHOD=bzr
> PYTHON_PYGAME_SITE_METHOD=hg

Apologies, but I couldn't understand what this commit is supposed to
fix. From your description above I understand you're fixing packages
whose method is inferred (i.e. not explicitly set). But here you list
packages which explicitly set it.

Which one are you fixing exactly? Can you provide an example package
that your patch fixes?

BTW I couldn't find in Buildroot any package whose method is an SCM
other than git and is not explicitly set.

Thanks,
Ricardo Martincoski June 26, 2018, 2:01 a.m. UTC | #2
Hello,

On Mon, Jun 25, 2018 at 06:01 PM, Luca Ceresoli wrote:

> On 25/06/2018 03:41, Ricardo Martincoski wrote:
>> Currently, when the site method is explicitly set to a SCM other than
>> git, the main download is correctly excluded from being hash-checked.
>> But when the site method is inferred from the site uri, the download
>> from a SCM other than git is wrongly being hash-checked.
[snip]
>> ---
>> All packages in the tree that use those site methods currently
>> explicitly set the site method.
>> $ make -s printvars VARS=%_SITE_METHOD | grep '=\(bzr\|cvs\|hg\|svn\)'
[snip]
>> PYTHON_PYGAME_SITE_METHOD=hg
> 
> Apologies, but I couldn't understand what this commit is supposed to
> fix. From your description above I understand you're fixing packages
> whose method is inferred (i.e. not explicitly set). But here you list

I am fixing packages whose method is inferred.

> packages which explicitly set it.

Sorry. My message after the commit log was misleading.
Rethinking now, a better message would be:
"Currently there is no package in the tree that uses inferred site method, and
that is why the autobuilder didn't caught this. We had packages using inferred
site method in the past, the last one was 'expect', but since they didn't have a
hash file (for a license or extra-download for example) the build didn't error
out."

> 
> Which one are you fixing exactly? Can you provide an example package
> that your patch fixes?

There is no example in the tree right now, but they can either live in a
br2-external somewhere or they can be added to the tree in the future.
I don't have a real package with this problem.

I stumbled on this because I am creating automated tests for the download infra.
They setup a SCM remote in the docker image by calling git daemon, svnserver,
... depending on the download method and download a package. Here is one package
under test [1], the test failing before this patch [2] and the test passing
after this patch [3].

> 
> BTW I couldn't find in Buildroot any package whose method is an SCM
> other than git and is not explicitly set.

Correct. The last one was 'expect', it now uses a tarball instead of cvs.

You can reproduce the problem I a trying to fix by doing this:
$ git revert 23ab6cb162b7456925e2c3df4917cf9b45868d55
$ touch package/expect/expect.hash
$ make expect-source
ERROR: No hash found for expect-2014-05-02.tar.gz


[1] https://gitlab.com/RicardoMartincoski/buildroot/blob/910ad20b78db2b5f238daca18c5688e3ec3c157b/support/testing/tests/download/br2-external/svn-refs/package/svn-revision-number/svn-revision-number.mk
[2] https://gitlab.com/RicardoMartincoski/buildroot/-/jobs/77355189
[3] https://gitlab.com/RicardoMartincoski/buildroot/-/jobs/77355202


Regards,
Ricardo
Luca Ceresoli June 26, 2018, 7:13 a.m. UTC | #3
Hi Ricardo,

On 26/06/2018 04:01, Ricardo Martincoski wrote:
> Hello,
> 
> On Mon, Jun 25, 2018 at 06:01 PM, Luca Ceresoli wrote:
> 
>> On 25/06/2018 03:41, Ricardo Martincoski wrote:
>>> Currently, when the site method is explicitly set to a SCM other than
>>> git, the main download is correctly excluded from being hash-checked.
>>> But when the site method is inferred from the site uri, the download
>>> from a SCM other than git is wrongly being hash-checked.
> [snip]
>>> ---
>>> All packages in the tree that use those site methods currently
>>> explicitly set the site method.
>>> $ make -s printvars VARS=%_SITE_METHOD | grep '=\(bzr\|cvs\|hg\|svn\)'
> [snip]
>>> PYTHON_PYGAME_SITE_METHOD=hg
>>
>> Apologies, but I couldn't understand what this commit is supposed to
>> fix. From your description above I understand you're fixing packages
>> whose method is inferred (i.e. not explicitly set). But here you list
> 
> I am fixing packages whose method is inferred.
> 
>> packages which explicitly set it.
> 
> Sorry. My message after the commit log was misleading.
> Rethinking now, a better message would be:
> "Currently there is no package in the tree that uses inferred site method, and
> that is why the autobuilder didn't caught this. We had packages using inferred
> site method in the past, the last one was 'expect', but since they didn't have a
> hash file (for a license or extra-download for example) the build didn't error
> out."

Ok, thanks for the detailed explanation. I would append the above
paragraph to the existing message, just before the SoB line. If you
resubmit with this change, you can add my:

 Reviewed-by: Luca Ceresoli <luca@lucaceresoli.net>
 Tested-by: Luca Ceresoli <luca@lucaceresoli.net>

Bye,
diff mbox series

Patch

diff --git a/package/pkg-generic.mk b/package/pkg-generic.mk
index 501dd3de39..91b61c6de0 100644
--- a/package/pkg-generic.mk
+++ b/package/pkg-generic.mk
@@ -489,10 +489,6 @@  ifndef $(2)_PATCH
  endif
 endif
 
-ifneq ($$(filter bzr cvs hg svn,$$($(2)_SITE_METHOD)),)
-BR_NO_CHECK_HASH_FOR += $$($(2)_SOURCE)
-endif
-
 $(2)_ALL_DOWNLOADS = \
 	$$(if $$($(2)_SOURCE),$$($(2)_SITE_METHOD)+$$($(2)_SITE)/$$($(2)_SOURCE)) \
 	$$(foreach p,$$($(2)_PATCH) $$($(2)_EXTRA_DOWNLOADS),\
@@ -514,6 +510,10 @@  ifndef $(2)_SITE_METHOD
  endif
 endif
 
+ifneq ($$(filter bzr cvs hg svn,$$($(2)_SITE_METHOD)),)
+BR_NO_CHECK_HASH_FOR += $$($(2)_SOURCE)
+endif
+
 # Do not accept to download git submodule if not using the git method
 ifneq ($$($(2)_GIT_SUBMODULES),)
  ifneq ($$($(2)_SITE_METHOD),git)