diff --git a/meta-openembedded/meta-python/recipes-extended/python-pykickstart/files/0001-support-authentication-for-kickstart.patch b/meta-openembedded/meta-python/recipes-extended/python-pykickstart/files/0001-support-authentication-for-kickstart.patch
index 5f95d74..309a001 100644
--- a/meta-openembedded/meta-python/recipes-extended/python-pykickstart/files/0001-support-authentication-for-kickstart.patch
+++ b/meta-openembedded/meta-python/recipes-extended/python-pykickstart/files/0001-support-authentication-for-kickstart.patch
@@ -9,18 +9,17 @@
 Add KickstartAuthError to report authentication failure,
 which the invoker could parse this specific error.
 
-Upstream-Status: inappropriate [oe specific]
+Upstream-Status: Inappropriate [oe specific]
 
 Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
-
 ---
  pykickstart/errors.py | 17 +++++++++++++++++
- pykickstart/load.py   | 34 ++++++++++++++++++++++++++++------
+ pykickstart/load.py   | 32 +++++++++++++++++++++++++++-----
  pykickstart/parser.py |  4 ++--
- 3 files changed, 47 insertions(+), 8 deletions(-)
+ 3 files changed, 46 insertions(+), 7 deletions(-)
 
 diff --git a/pykickstart/errors.py b/pykickstart/errors.py
-index 8294f59a..3d20bf82 100644
+index 8294f59..3d20bf8 100644
 --- a/pykickstart/errors.py
 +++ b/pykickstart/errors.py
 @@ -32,6 +32,9 @@ This module exports several exception classes:
@@ -52,16 +51,15 @@
 +    def __str__(self):
 +        return self.value
 diff --git a/pykickstart/load.py b/pykickstart/load.py
-index 30e2fcfa..b984876d 100644
+index eb76b65..f51cf08 100644
 --- a/pykickstart/load.py
 +++ b/pykickstart/load.py
-@@ -18,9 +18,12 @@
+@@ -18,9 +18,11 @@
  # with the express permission of Red Hat, Inc.
  #
  import requests
 +from requests.auth import HTTPDigestAuth
 +from requests.auth import HTTPBasicAuth
-+
  import shutil
  
 -from pykickstart.errors import KickstartError
@@ -69,7 +67,7 @@
  from pykickstart.i18n import _
  from requests.exceptions import SSLError, RequestException
  
-@@ -28,7 +31,7 @@ _is_url = lambda location: '://' in location  # RFC 3986
+@@ -28,7 +30,7 @@ is_url = lambda location: '://' in location  # RFC 3986
  
  SSL_VERIFY = True
  
@@ -78,21 +76,20 @@
      '''Load a destination URL or file into a string.
      Type of input is inferred automatically.
  
-@@ -39,7 +42,7 @@ def load_to_str(location):
+@@ -39,7 +41,7 @@ def load_to_str(location):
      Raises: KickstartError on error reading'''
  
-     if _is_url(location):
+     if is_url(location):
 -        return _load_url(location)
 +        return _load_url(location, user=user, passwd=passwd)
      else:
          return _load_file(location)
  
-@@ -69,11 +72,30 @@ def load_to_file(location, destination):
+@@ -69,11 +71,31 @@ def load_to_file(location, destination):
          _copy_file(location, destination)
          return destination
  
 -def _load_url(location):
--    '''Load a location (URL or filename) and return contents as string'''
 +def _get_auth(location, user=None, passwd=None):
 +
 +    auth = None
@@ -101,7 +98,7 @@
 +        if user is None or passwd is None:
 +            log.info("Require Authentication")
 +            raise KickstartAuthError("Require Authentication.\nAppend 'ksuser=<username> kspasswd=<password>' to boot command")
- 
++
 +        reasons = request.headers.get("WWW-Authenticate", "").split()
 +        if reasons:
 +            auth_type = reasons[0]
@@ -113,8 +110,9 @@
 +    return auth
 +
 +def _load_url(location, user=None, passwd=None):
-+    '''Load a location (URL or filename) and return contents as string'''
+     '''Load a location (URL or filename) and return contents as string'''
 +    auth = _get_auth(location, user=user, passwd=passwd)
+ 
      try:
 -        request = requests.get(location, verify=SSL_VERIFY)
 +        request = requests.get(location, verify=SSL_VERIFY, auth=auth)
@@ -122,10 +120,10 @@
          raise KickstartError(_('Error securely accessing URL "%s"') % location + ': {e}'.format(e=str(e)))
      except RequestException as e:
 diff --git a/pykickstart/parser.py b/pykickstart/parser.py
-index b23e54f1..e10f06b5 100644
+index 7edf8aa..46c5299 100644
 --- a/pykickstart/parser.py
 +++ b/pykickstart/parser.py
-@@ -796,7 +796,7 @@ class KickstartParser(object):
+@@ -790,7 +790,7 @@ class KickstartParser(object):
          i = PutBackIterator(s.splitlines(True) + [""])
          self._stateMachine(i)
  
@@ -134,7 +132,7 @@
          """Process a kickstart file, given by the filename f."""
          if reset:
              self._reset()
-@@ -817,7 +817,7 @@ class KickstartParser(object):
+@@ -811,7 +811,7 @@ class KickstartParser(object):
          self.currentdir[self._includeDepth] = cd
  
          try:
@@ -143,3 +141,6 @@
          except KickstartError as e:
              raise KickstartError(_("Unable to open input kickstart file: %s") % str(e), lineno=0)
  
+-- 
+2.34.1
+
diff --git a/meta-openembedded/meta-python/recipes-extended/python-pykickstart/files/0002-pykickstart-parser.py-add-lock-for-readKickstart-and.patch b/meta-openembedded/meta-python/recipes-extended/python-pykickstart/files/0002-pykickstart-parser.py-add-lock-for-readKickstart-and.patch
index 4a001f3..5e0d616 100644
--- a/meta-openembedded/meta-python/recipes-extended/python-pykickstart/files/0002-pykickstart-parser.py-add-lock-for-readKickstart-and.patch
+++ b/meta-openembedded/meta-python/recipes-extended/python-pykickstart/files/0002-pykickstart-parser.py-add-lock-for-readKickstart-and.patch
@@ -1,7 +1,7 @@
 From 62fdead139edb0f29b2f222efcb8f39be15b057e Mon Sep 17 00:00:00 2001
 From: Hongxu Jia <hongxu.jia@windriver.com>
 Date: Mon, 30 Jul 2018 15:47:13 +0800
-Subject: [PATCH 2/4] pykickstart/parser.py: add lock for readKickstart and 
+Subject: [PATCH 2/4] pykickstart/parser.py: add lock for readKickstart and
  support https without certification
 
 - Add lock for readKickstart to fix race issue
@@ -9,18 +9,19 @@
 - Support to download kickstart file through https without certification
 
 Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
 ---
  pykickstart/load.py   |  2 +-
  pykickstart/parser.py | 18 ++++++++++++++++++
  2 files changed, 19 insertions(+), 1 deletion(-)
 
 diff --git a/pykickstart/load.py b/pykickstart/load.py
-index c6f013f..7adb751 100644
+index 8da8051..e856c8d 100644
 --- a/pykickstart/load.py
 +++ b/pykickstart/load.py
-@@ -30,7 +30,7 @@ from requests.exceptions import SSLError, RequestException
+@@ -32,7 +32,7 @@ log = logging.getLogger("anaconda.main")
  
- _is_url = lambda location: '://' in location  # RFC 3986
+ is_url = lambda location: '://' in location  # RFC 3986
  
 -SSL_VERIFY = True
 +SSL_VERIFY = False
@@ -28,10 +29,10 @@
  def load_to_str(location, user=None, passwd=None):
      '''Load a destination URL or file into a string.
 diff --git a/pykickstart/parser.py b/pykickstart/parser.py
-index e44099b..e68174d 100644
+index b95ba90..a55a9a3 100644
 --- a/pykickstart/parser.py
 +++ b/pykickstart/parser.py
-@@ -55,6 +55,20 @@ from pykickstart.i18n import _
+@@ -51,6 +51,20 @@ from pykickstart.i18n import _
  STATE_END = "end"
  STATE_COMMANDS = "commands"
  
@@ -52,7 +53,7 @@
  def _preprocessStateMachine(lineIter):
      l = None
      lineno = 0
-@@ -788,6 +802,10 @@ class KickstartParser(object):
+@@ -791,6 +805,10 @@ class KickstartParser(object):
          self._stateMachine(i)
  
      def readKickstart(self, f, reset=True, username=None, password=None):
@@ -64,5 +65,5 @@
          if reset:
              self._reset()
 -- 
-2.7.4
+2.34.1
 
diff --git a/meta-openembedded/meta-python/recipes-extended/python-pykickstart/files/0003-comment-out-sections-shutdown-and-environment-in-gen.patch b/meta-openembedded/meta-python/recipes-extended/python-pykickstart/files/0003-comment-out-sections-shutdown-and-environment-in-gen.patch
index 7ab7346..6242e23 100644
--- a/meta-openembedded/meta-python/recipes-extended/python-pykickstart/files/0003-comment-out-sections-shutdown-and-environment-in-gen.patch
+++ b/meta-openembedded/meta-python/recipes-extended/python-pykickstart/files/0003-comment-out-sections-shutdown-and-environment-in-gen.patch
@@ -6,7 +6,7 @@
 
 Both of them is disabled by default.
 
-Upstream-Status: Inappropriate[oe specific]
+Upstream-Status: Inappropriate [oe specific]
 
 Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
 
diff --git a/meta-openembedded/meta-python/recipes-extended/python-pykickstart/files/0004-load.py-retry-to-invoke-request-with-timeout.patch b/meta-openembedded/meta-python/recipes-extended/python-pykickstart/files/0004-load.py-retry-to-invoke-request-with-timeout.patch
index bf5a197..abe2c87 100644
--- a/meta-openembedded/meta-python/recipes-extended/python-pykickstart/files/0004-load.py-retry-to-invoke-request-with-timeout.patch
+++ b/meta-openembedded/meta-python/recipes-extended/python-pykickstart/files/0004-load.py-retry-to-invoke-request-with-timeout.patch
@@ -8,22 +8,21 @@
 to invoke request with timeout explicitly. So if it the
 network is up, the fetch works.
 
-Upstream-Status: inappropriate [oe specific]
+Upstream-Status: Inappropriate [oe specific]
 
 Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
-
 ---
  pykickstart/load.py | 31 +++++++++++++++++++++++++++++++
  1 file changed, 31 insertions(+)
 
 diff --git a/pykickstart/load.py b/pykickstart/load.py
-index f75fe5d3..a8f3ed1d 100644
+index 58faba6..e856c8d 100644
 --- a/pykickstart/load.py
 +++ b/pykickstart/load.py
-@@ -21,12 +21,16 @@ import requests
+@@ -20,12 +20,16 @@
+ import requests
  from requests.auth import HTTPDigestAuth
  from requests.auth import HTTPBasicAuth
- 
 +import time
  import shutil
  
@@ -34,10 +33,10 @@
 +import logging
 +log = logging.getLogger("anaconda.main")
 +
- _is_url = lambda location: '://' in location  # RFC 3986
+ is_url = lambda location: '://' in location  # RFC 3986
  
  SSL_VERIFY = False
-@@ -72,6 +76,29 @@ def load_to_file(location, destination):
+@@ -71,6 +75,29 @@ def load_to_file(location, destination):
          _copy_file(location, destination)
          return destination
  
@@ -67,7 +66,7 @@
  def _get_auth(location, user=None, passwd=None):
  
      auth = None
-@@ -93,6 +120,10 @@ def _get_auth(location, user=None, passwd=None):
+@@ -92,6 +119,10 @@ def _get_auth(location, user=None, passwd=None):
  
  def _load_url(location, user=None, passwd=None):
      '''Load a location (URL or filename) and return contents as string'''
@@ -76,5 +75,8 @@
 +        raise KickstartError(_("Connection %s failed" % location))
 +
      auth = _get_auth(location, user=user, passwd=passwd)
+ 
      try:
-         request = requests.get(location, verify=SSL_VERIFY, auth=auth)
+-- 
+2.34.1
+
