diff mbox series

[bitbake-devel] wget.py: always use the custom user agent

Message ID 20240209152547.2741703-1-thomas.perrot@bootlin.com
State New
Headers show
Series [bitbake-devel] wget.py: always use the custom user agent | expand

Commit Message

Thomas Perrot Feb. 9, 2024, 3:25 p.m. UTC
From: Thomas Perrot <thomas.perrot@bootlin.com>

Add the "--user-agent" paramater in the wget base command to
perform all wget commands with this parameter, because a few
HTTP servers block requests with the default wget user agent.

For example, "hg.openjdk.org" never send a response to requests
have been sent with wget:
wget https://hg.openjdk.org/jdk8u/jdk8u/archive/jdk8u272-ga.tar.bz2
https://hg.openjdk.org/jdk8u/jdk8u/archive/jdk8u272-ga.tar.bz2
Resolving hg.openjdk.org (hg.openjdk.org)... 23.54.129.73
Connecting to hg.openjdk.org (hg.openjdk.org)|23.54.129.73|:443... connected.
HTTP request sent, awaiting response...

Signed-off-by: Thomas Perrot <thomas.perrot@bootlin.com>
---
 lib/bb/fetch2/wget.py | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

Comments

Jose Quaresma Feb. 9, 2024, 3:52 p.m. UTC | #1
Thomas Perrot via lists.openembedded.org <thomas.perrot=
bootlin.com@lists.openembedded.org> escreveu (sexta, 9/02/2024 à(s) 15:25):

> From: Thomas Perrot <thomas.perrot@bootlin.com>
>
> Add the "--user-agent" paramater in the wget base command to
> perform all wget commands with this parameter, because a few
> HTTP servers block requests with the default wget user agent.
>
> For example, "hg.openjdk.org" never send a response to requests
> have been sent with wget:
> wget https://hg.openjdk.org/jdk8u/jdk8u/archive/jdk8u272-ga.tar.bz2
> https://hg.openjdk.org/jdk8u/jdk8u/archive/jdk8u272-ga.tar.bz2
> Resolving hg.openjdk.org (hg.openjdk.org)... 23.54.129.73
> Connecting to hg.openjdk.org (hg.openjdk.org)|23.54.129.73|:443...
> connected.
> HTTP request sent, awaiting response...
>
> Signed-off-by: Thomas Perrot <thomas.perrot@bootlin.com>
> ---
>  lib/bb/fetch2/wget.py | 7 ++++---
>  1 file changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/lib/bb/fetch2/wget.py b/lib/bb/fetch2/wget.py
> index dc025800e659..e7c4cdd396b3 100644
> --- a/lib/bb/fetch2/wget.py
> +++ b/lib/bb/fetch2/wget.py
> @@ -87,7 +87,8 @@ class Wget(FetchMethod):
>          if not ud.localfile:
>              ud.localfile = d.expand(urllib.parse.unquote(ud.host +
> ud.path).replace("/", "."))
>
> -        self.basecmd = d.getVar("FETCHCMD_wget") or "/usr/bin/env wget -t
> 2 -T 30 --passive-ftp"
> +        self.basecmd = d.getVar("FETCHCMD_wget") \
> +            or "/usr/bin/env wget -t 2 -T 30 --passive-ftp
> --user-agent='%s'" % (self.user_agent)
>
>          if not self.check_certs(d):
>              self.basecmd += " --no-check-certificate"
> @@ -454,7 +455,7 @@ class Wget(FetchMethod):
>          f = tempfile.NamedTemporaryFile()
>          with tempfile.TemporaryDirectory(prefix="wget-index-") as
> workdir, tempfile.NamedTemporaryFile(dir=workdir, prefix="wget-listing-")
> as f:
>              fetchcmd = self.basecmd
> -            fetchcmd += " -O " + f.name + " --user-agent='" +
> self.user_agent + "' '" + uri + "'"
> +            fetchcmd += " -O '" + uri + "'"
>

Looks like the file name was removed unintentional.

Jose


>              try:
>                  self._runwget(ud, d, fetchcmd, True, workdir=workdir)
>                  fetchresult = f.read()
> @@ -492,7 +493,7 @@ class Wget(FetchMethod):
>                      valid = 1
>                  elif self._vercmp(version, newver) < 0:
>                      version = newver
> -
> +
>          pupver = re.sub('_', '.', version[1])
>
>          bb.debug(3, "*** %s -> UpstreamVersion = %s (CurrentVersion =
> %s)" %
> --
> 2.43.0
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#15851):
> https://lists.openembedded.org/g/bitbake-devel/message/15851
> Mute This Topic: https://lists.openembedded.org/mt/104260370/5052612
> Group Owner: bitbake-devel+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/bitbake-devel/unsub [
> quaresma.jose@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
>
Thomas Perrot Feb. 9, 2024, 4:04 p.m. UTC | #2
Hello Jose,

On Fri, 2024-02-09 at 15:52 +0000, Jose Quaresma wrote:
> 
> 
> Thomas Perrot via lists.openembedded.org
> <thomas.perrot=bootlin.com@lists.openembedded.org> escreveu (sexta,
> 9/02/2024 à(s) 15:25):
> > From: Thomas Perrot <thomas.perrot@bootlin.com>
> > 
> > Add the "--user-agent" paramater in the wget base command to
> > perform all wget commands with this parameter, because a few
> > HTTP servers block requests with the default wget user agent.
> > 
> > For example, "hg.openjdk.org" never send a response to requests
> > have been sent with wget:
> > wget https://hg.openjdk.org/jdk8u/jdk8u/archive/jdk8u272-ga.tar.bz2
> > https://hg.openjdk.org/jdk8u/jdk8u/archive/jdk8u272-ga.tar.bz2
> > Resolving hg.openjdk.org (hg.openjdk.org)... 23.54.129.73
> > Connecting to hg.openjdk.org (hg.openjdk.org)|23.54.129.73|:443...
> > connected.
> > HTTP request sent, awaiting response...
> > 
> > Signed-off-by: Thomas Perrot <thomas.perrot@bootlin.com>
> > ---
> >  lib/bb/fetch2/wget.py | 7 ++++---
> >  1 file changed, 4 insertions(+), 3 deletions(-)
> > 
> > diff --git a/lib/bb/fetch2/wget.py b/lib/bb/fetch2/wget.py
> > index dc025800e659..e7c4cdd396b3 100644
> > --- a/lib/bb/fetch2/wget.py
> > +++ b/lib/bb/fetch2/wget.py
> > @@ -87,7 +87,8 @@ class Wget(FetchMethod):
> >          if not ud.localfile:
> >              ud.localfile = d.expand(urllib.parse.unquote(ud.host +
> > ud.path).replace("/", "."))
> > 
> > -        self.basecmd = d.getVar("FETCHCMD_wget") or "/usr/bin/env
> > wget -t 2 -T 30 --passive-ftp"
> > +        self.basecmd = d.getVar("FETCHCMD_wget") \
> > +            or "/usr/bin/env wget -t 2 -T 30 --passive-ftp --user-
> > agent='%s'" % (self.user_agent)
> > 
> >          if not self.check_certs(d):
> >              self.basecmd += " --no-check-certificate"
> > @@ -454,7 +455,7 @@ class Wget(FetchMethod):
> >          f = tempfile.NamedTemporaryFile()
> >          with tempfile.TemporaryDirectory(prefix="wget-index-") as
> > workdir, tempfile.NamedTemporaryFile(dir=workdir, prefix="wget-
> > listing-") as f:
> >              fetchcmd = self.basecmd
> > -            fetchcmd += " -O " + f.name + " --user-agent='" +
> > self.user_agent + "' '" + uri + "'"
> > +            fetchcmd += " -O '" + uri + "'"
> > 
> 
> 
> Looks like the file name was removed unintentional.

Really sorry for this error, I'm sending a v2.

Kind regards,
Thomas Perrot
> 
> Jose
>  
> >              try:
> >                  self._runwget(ud, d, fetchcmd, True,
> > workdir=workdir)
> >                  fetchresult = f.read()
> > @@ -492,7 +493,7 @@ class Wget(FetchMethod):
> >                      valid = 1
> >                  elif self._vercmp(version, newver) < 0:
> >                      version = newver
> > -                
> > +
> >          pupver = re.sub('_', '.', version[1])
> > 
> >          bb.debug(3, "*** %s -> UpstreamVersion = %s
> > (CurrentVersion = %s)" %
> > 
> > -=-=-=-=-=-=-=-=-=-=-=-
> > Links: You receive all messages sent to this group.
> > View/Reply Online (#15853):
> > https://lists.openembedded.org/g/bitbake-devel/message/15853
> > Mute This Topic:
> > https://lists.openembedded.org/mt/104260370/5443093
> > Group Owner: bitbake-devel+owner@lists.openembedded.org
> > Unsubscribe:
> > https://lists.openembedded.org/g/bitbake-devel/unsub [thomas.perrot@bootlin.com
> > ]
> > -=-=-=-=-=-=-=-=-=-=-=-
> >
diff mbox series

Patch

diff --git a/lib/bb/fetch2/wget.py b/lib/bb/fetch2/wget.py
index dc025800e659..e7c4cdd396b3 100644
--- a/lib/bb/fetch2/wget.py
+++ b/lib/bb/fetch2/wget.py
@@ -87,7 +87,8 @@  class Wget(FetchMethod):
         if not ud.localfile:
             ud.localfile = d.expand(urllib.parse.unquote(ud.host + ud.path).replace("/", "."))
 
-        self.basecmd = d.getVar("FETCHCMD_wget") or "/usr/bin/env wget -t 2 -T 30 --passive-ftp"
+        self.basecmd = d.getVar("FETCHCMD_wget") \
+            or "/usr/bin/env wget -t 2 -T 30 --passive-ftp --user-agent='%s'" % (self.user_agent)
 
         if not self.check_certs(d):
             self.basecmd += " --no-check-certificate"
@@ -454,7 +455,7 @@  class Wget(FetchMethod):
         f = tempfile.NamedTemporaryFile()
         with tempfile.TemporaryDirectory(prefix="wget-index-") as workdir, tempfile.NamedTemporaryFile(dir=workdir, prefix="wget-listing-") as f:
             fetchcmd = self.basecmd
-            fetchcmd += " -O " + f.name + " --user-agent='" + self.user_agent + "' '" + uri + "'"
+            fetchcmd += " -O '" + uri + "'"
             try:
                 self._runwget(ud, d, fetchcmd, True, workdir=workdir)
                 fetchresult = f.read()
@@ -492,7 +493,7 @@  class Wget(FetchMethod):
                     valid = 1
                 elif self._vercmp(version, newver) < 0:
                     version = newver
-                
+
         pupver = re.sub('_', '.', version[1])
 
         bb.debug(3, "*** %s -> UpstreamVersion = %s (CurrentVersion = %s)" %