poky: subtree update:7035b4b21e..a616ffebdc

Adrian Bunk (3):
      python3: Upgrade 3.7.4 -> 3.7.5
      lz4: Whitelist CVE-2014-4715
      iputils: Whitelist CVE-2000-1213 CVE-2000-1214

Alex Kube (1):
      go: Refactor patches for 1.13.3

Andreas Müller (2):
      vte: upgrade 0.56.3 -> 0.58.2
      webkitgtk: upgrade 2.26.1 -> 2.26.2

Andreas Oberritter (3):
      glibc: move ldconfig to its own package
      package.bbclass: Always include ldconfig fragment
      systemd: Add runtime dependency on new ldconfig package

André Draszik (1):
      libevent: update packaging (one package per shared library)

Anuj Mittal (1):
      libsdl2: fix race when building in parallel

Armin Kuster (13):
      oeqa/core: Add a check for MACHINE
      oeqa/core: Add qemu checks
      oeqa/manual/bsp-qemu: remove rpm tests already done in runtime
      oeqa/manual/bsp-qemu: remove KVM enabled which is already done in selftest runqemu
      oeqa/manual/bsp-qemu: drop xserver test done at runtime
      oeqa/manual/bsp-qemu: remove only_one_connmand_in_background test done at runtime
      oeqa/manual/bsp-qemu: remove postinit test done w/selftest runtime
      oeqa/manual/bsp-qemu: remove manual bash test
      oeqa/manual/bsp-qemu: remove manual useradd test
      oeqa/selftest/oescripts: move list-packageconfig-flags tests from manual to self
      oeqa/manua/oe-core: remove manual PACKAGECONFIG_FLAGS tests
      oeqa/selftest/runtime_test: add crosstab selftest
      oeqa/manual/oe-core: remove crosstab test from manual

Changhyeok Bae (1):
      iproute2: update 5.2.0 -> 5.3.0

Chee Yang Lee (1):
      wic: beautify 'wic help'

Chris Laplante via bitbake-devel (7):
      bitbake: contrib/vim: More Python indenting; move indent file to correct directory
      bitbake: contrib/vim: Special handling of bb.fatal
      bitbake: contrib/vim: don't redeclare indenter
      bitbake: contrib/vim: renaming & comments
      bitbake: contrib/vim: indenting for assignments; tweak Python indenting
      bitbake: contrib/vim: handle shell indenting
      bitbake: contrib/vim: Add copyright and license notice

Denys Dmytriyenko (1):
      buildhistory: fix "version went backwards" QA error message

Gavin Li (1):
      bitbake: prserv: fix ResourceWarning due to unclosed socket

Haris Okanovic (8):
      isoimage-isohybrid.py: Parameterize ESP label
      isoimage-isohybrid.py: Parameterize ESP partition size
      initscripts/sysfs.sh: Mount /sys/firmware/efi/efivars when possible
      gnupg: Split gpg and gpg-agent into a minimal gnupg-gpg package
      opkg: RDEPEND "gnupg-gpg" instead of "gnupg"
      gnupg/libksba/npth/pinentry: Add nativesdk to BBCLASSEXTEND
      meta/lib/oe/package_manager.py: Enable sha256 checksums in opkg indexer
      dhcp: Workaround busybox limitation in Linux dhclient-script

Ivan Efimov (1):
      bitbake: bitbake-worker child process create group before registering SIGTERM handler

Jacob Kroon (2):
      rm_work: Promote do_image_qa stamps to setscene versions
      rm_work: Simplify logic for setscene promotion

Jagadeesh Krishnanjanappa (1):
      tune-cortexa32: Fix libgcc-initial build issue for cortex-a32

Joshua Watt (4):
      oeqa: reproducible: Add option to capture bad packages
      icecc-create-env: Use OE patchelf in SDK
      mc: Fix build reproducibility
      wayland: Fix wayland-scanner build for MinGW

Khem Raj (4):
      libtirpc: Do not include bits/endian.h directly
      strace: Fix ptest build
      libnsl2: Update to latest master
      strace: Fix build found with 64bit time_t/musl

Liwei Song (1):
      buildtools-tarball: export OPENSSL_CONF for openssl

Mark Hatle (1):
      populate_sdk_ext.bbclass: Make integrated buildtools optional

Maxime Roussin-Bélanger (1):
      meta: add missing description for some recipes in graphics

Mikko Rapeli (1):
      harfbuzz: split libharfbuzz-subset.so to its own binary package

Oleksandr Kravchuk (1):
      git: update to 2.24.0

Paul Barker (1):
      scripts/native-intercept: Add chgrp intercept

Peter Kjellerstedt (3):
      sysstat: Correct our systemd unit file
      sysstat: Correct when to use the package provided systemd unit files
      bitbake: cooker: Remove a left-over comment about expanded_data

Richard Purdie (9):
      bitbake: fetch2: Ensure cached url data is matched to a datastore
      staging: Handle files moving between dependencies
      sstate: Add ability to hide summary output for sstate
      selftest/signing: Fix test_locked_signatures to use a temporary layer
      dhcp/ruby/ffpmeg: Use CFLAGS, not TARGET_CFLAGS
      bitbake: runqueue: Improve sstate rehashing output
      pseudo: Add statx support to fix fedora30 issues
      pseudo: Drop static linking to sqlite3
      sqlite3: Drop pic as we no longer need the sqlite3 static lib

Ross Burton (16):
      file: fix CVE-2019-18218
      file: remove redundant upstream check workaround
      file: run test suite when building natively
      patch: the CVE-2019-13638 fix also handles CVE-2018-20969
      libpng: whitelist CVE-2019-17371
      procps: whitelist CVE-2018-1121
      libsndfile1: whitelist CVE-2018-13419
      libpam: set CVE_PRODUCT
      libsoup: set CVE_PRODUCT
      libsoup-2.4: upgrade to 2.66.4
      insane: improve textrel warning message
      libsoup: update patch upstream status
      acpica: upgrade to 20191018
      ovmf: unify DEPENDS
      cve-check: we don't actually need to unpack to check
      cve-update-db-native: don't refresh more than once an hour

Samuli Piippo (1):
      linux-firmware: update packaging for brcm files

Scott Rifenbark (3):
      ref-manual: Completed the 3.0 migration section.
      mega-manual: Updated mega-manual Bitbake manual search path
      ref-manual: Removed blank lines from 3.0 migratrion section.

Stefan Agner (1):
      dbus: drop unused group netdev

Torbjörn Svensson (1):
      psplash: Do mount psplash tmpfs if not mounted

Trevor Gamblin (1):
      python3-misc: add python3-audio to RDEPENDS

Volker Vogelhuber (1):
      bitbake: fetch2/hg: Fix various runtime issues

Yeoh Ee Peng (4):
      scripts/resulttool/report: Enable report to use regression_map
      scripts/resulttool/report: Enable output raw test results
      scripts/resulttool/report: Add total statistic to test result.
      resulttool/store.py: Enable add extra test environment data

Yongxin Liu (2):
      systemd: Fix invalid argument of pstore log entry
      ltp: Add "udevadm trigger" before swap verification in mkswap01.sh

Zang Ruochen (8):
      ruby:upgrade 2.6.4 -> 2.6.5
      ethtool:upgrade 5.2 -> 5.3
      libdrm:upgrade 2.4.99 -> 2.4.100
      libcheck:upgrade 0.12.0 -> 0.13.0
      curl:upgrade 7.66.0 -> 7.67.0
      libinput:upgrade 1.14.1 -> 1.14.3
      python3-six:upgrade 1.12.0 -> 1.13.0
      libedit: upgrade 20190324 -> 20191025

Zhixiong Chi (1):
      libtirpc: create the symbol link for rpc header files

grygorii tertychnyi (1):
      archiver: avoid empty incfile in ar_recipe

Change-Id: Ice596e426e4533d7568a82bcbb21efdfc19e21e7
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
diff --git a/poky/bitbake/bin/bitbake-worker b/poky/bitbake/bin/bitbake-worker
index 6776cad..1e641e8 100755
--- a/poky/bitbake/bin/bitbake-worker
+++ b/poky/bitbake/bin/bitbake-worker
@@ -195,9 +195,6 @@
             global worker_pipe_lock
             pipein.close()
 
-            signal.signal(signal.SIGTERM, sigterm_handler)
-            # Let SIGHUP exit as SIGTERM
-            signal.signal(signal.SIGHUP, sigterm_handler)
             bb.utils.signal_on_parent_exit("SIGTERM")
 
             # Save out the PID so that the event can include it the
@@ -212,6 +209,11 @@
             # This ensures signals sent to the controlling terminal like Ctrl+C
             # don't stop the child processes.
             os.setsid()
+
+            signal.signal(signal.SIGTERM, sigterm_handler)
+            # Let SIGHUP exit as SIGTERM
+            signal.signal(signal.SIGHUP, sigterm_handler)
+
             # No stdin
             newsi = os.open(os.devnull, os.O_RDWR)
             os.dup2(newsi, sys.stdin.fileno())
diff --git a/poky/bitbake/bitbake/contrib/vim/bitbake.vim b/poky/bitbake/bitbake/contrib/vim/indent/bitbake.vim
similarity index 66%
rename from poky/bitbake/bitbake/contrib/vim/bitbake.vim
rename to poky/bitbake/bitbake/contrib/vim/indent/bitbake.vim
index ff86c19..1381034 100644
--- a/poky/bitbake/bitbake/contrib/vim/bitbake.vim
+++ b/poky/bitbake/bitbake/contrib/vim/indent/bitbake.vim
@@ -1,14 +1,25 @@
+" Vim indent file
+" Language:             BitBake
+" Copyright:            Copyright (C) 2019 Agilent Technologies, Inc.
+" Maintainer:           Chris Laplante <chris.laplante@agilent.com>
+" License:              You may redistribute this under the same terms as Vim itself
+
+
 if exists("b:did_indent")
     finish
 endif
 
+if exists("*BitbakeIndent")
+    finish
+endif
+
 runtime! indent/sh.vim
 unlet b:did_indent
 
 setlocal indentexpr=BitbakeIndent(v:lnum)
 setlocal autoindent nolisp
 
-function s:is_python_func_def(lnum)
+function s:is_bb_python_func_def(lnum)
     let stack = synstack(a:lnum, 1)
     if len(stack) == 0
         return 0
@@ -79,7 +90,9 @@
             \ . " =~ '\\(Comment\\|Todo\\|String\\)$'",
             \ searchpair_stopline, searchpair_timeout)
     if parlnum > 0
-      if s:is_python_func_def(parlnum)
+      " We may have found the opening brace of a BitBake Python task, e.g. 'python do_task {'
+      " If so, ignore it here - it will be handled later.
+      if s:is_bb_python_func_def(parlnum)
         let parlnum = 0
         let plindent = indent(plnum)
         let plnumstart = plnum
@@ -104,7 +117,19 @@
             \ . " =~ '\\(Comment\\|Todo\\|String\\)$'",
             \ searchpair_stopline, searchpair_timeout)
     if p > 0
-        if s:is_python_func_def(p)
+        if s:is_bb_python_func_def(p)
+          " Handle first non-empty line inside a BB Python task
+          if p == plnum
+              return shiftwidth()
+          endif
+
+          " Handle the user actually trying to close a BitBake Python task
+          let line = getline(a:lnum)
+          if line =~ '^\s*}'
+              return -2
+          endif
+
+          " Otherwise ignore the brace
           let p = 0
         else
           if p == plnum
@@ -167,7 +192,8 @@
   endif
 
   " If the previous line was a stop-execution statement...
-  if getline(plnum) =~ '^\s*\(break\|continue\|raise\|return\|pass\)\>'
+  " TODO: utilize this logic to deindent when ending a bbPyDefRegion
+  if getline(plnum) =~ '^\s*\(break\|continue\|raise\|return\|pass\|bb\.fatal\)\>'
     " See if the user has already dedented
     if indent(a:lnum) > indent(plnum) - shiftwidth()
       " If not, recommend one dedent
@@ -228,21 +254,90 @@
 
 
 let b:did_indent = 1
+setlocal indentkeys+=0\"
 
 
 function BitbakeIndent(lnum)
-    let stack = synstack(a:lnum, col("."))
+    if !has('syntax_items')
+        return -1
+    endif
+
+    let stack = synstack(a:lnum, 1)
     if len(stack) == 0
         return -1
     endif
 
     let name = synIDattr(stack[0], "name")
 
+    " TODO: support different styles of indentation for assignments. For now,
+    " we only support like this:
+    " VAR = " \
+    "     value1 \
+    "     value2 \
+    " "
+    "
+    " i.e. each value indented by shiftwidth(), with the final quote " completely unindented.
+    if name == "bbVarValue"
+        " Quote handling is tricky. kernel.bbclass has this line for instance:
+        "     EXTRA_OEMAKE = " HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" " HOSTCPP="${BUILD_CPP}""
+        " Instead of trying to handle crazy cases like that, just assume that a
+        " double-quote on a line by itself (following an assignment) means the
+        " user is closing the assignment, and de-dent.
+        if getline(a:lnum) =~ '^\s*"$'
+            return 0
+        endif
+
+        let prevstack = synstack(a:lnum - 1, 1)
+        if len(prevstack) == 0
+            return -1
+        endif
+
+        let prevname = synIDattr(prevstack[0], "name")
+
+        " Only indent if there was actually a continuation character on
+        " the previous line, to avoid misleading indentation.
+        let prevlinelastchar = synIDattr(synID(a:lnum - 1, col([a:lnum - 1, "$"]) - 1, 1), "name")
+        let prev_continued = prevlinelastchar == "bbContinue"
+
+        " Did the previous line introduce an assignment?
+        if index(["bbVarDef", "bbVarFlagDef"], prevname) != -1
+            if prev_continued
+                return shiftwidth()
+            endif
+        endif
+
+        if !prev_continued
+            return 0
+        endif
+
+        " Autoindent can take it from here
+        return -1
+    endif
+
     if index(["bbPyDefRegion", "bbPyFuncRegion"], name) != -1
         let ret = GetPythonIndent(a:lnum)
+        " Should normally always be indented by at least one shiftwidth; but allow
+        " return of -1 (defer to autoindent) or -2 (force indent to 0)
+        if ret == 0
+            return shiftwidth()
+        elseif ret == -2
+            return 0
+        endif
         return ret
     endif
 
+    " TODO: GetShIndent doesn't detect tasks prepended with 'fakeroot'
+    " Need to submit a patch upstream to Vim to provide an extension point.
+    " Unlike the Python indenter, the Sh indenter is way too large to copy and
+    " modify here.
+    if name == "bbShFuncRegion"
+        return GetShIndent()
+    endif
+
+    " TODO:
+    "   + heuristics for de-denting out of a bbPyDefRegion? e.g. when the user
+    "       types an obvious BB keyword like addhandler or addtask, or starts
+    "       writing a shell task. Maybe too hard to implement...
+
     return -1
-    "return s:pythonIndentExpr()
 endfunction
diff --git a/poky/bitbake/lib/bb/cooker.py b/poky/bitbake/lib/bb/cooker.py
index 20ef04d..e6442bf 100644
--- a/poky/bitbake/lib/bb/cooker.py
+++ b/poky/bitbake/lib/bb/cooker.py
@@ -371,10 +371,6 @@
 
         self.data.setVar('BB_CMDLINE', self.ui_cmdline)
 
-        #
-        # Copy of the data store which has been expanded.
-        # Used for firing events and accessing variables where expansion needs to be accounted for
-        #
         if CookerFeatures.BASEDATASTORE_TRACKING in self.featureset:
             self.disableDataTracking()
 
diff --git a/poky/bitbake/lib/bb/fetch2/__init__.py b/poky/bitbake/lib/bb/fetch2/__init__.py
index 1f5f8f1..07de6c2 100644
--- a/poky/bitbake/lib/bb/fetch2/__init__.py
+++ b/poky/bitbake/lib/bb/fetch2/__init__.py
@@ -1593,7 +1593,7 @@
         fn = d.getVar('FILE')
         mc = d.getVar('__BBMULTICONFIG') or ""
         if cache and fn and mc + fn in urldata_cache:
-            self.ud = urldata_cache[mc + fn]
+            self.ud = urldata_cache[mc + fn + str(id(d))]
 
         for url in urls:
             if url not in self.ud:
@@ -1605,7 +1605,7 @@
                         pass
 
         if fn and cache:
-            urldata_cache[mc + fn] = self.ud
+            urldata_cache[mc + fn + str(id(d))] = self.ud
 
     def localpath(self, url):
         if url not in self.urls:
diff --git a/poky/bitbake/lib/bb/fetch2/hg.py b/poky/bitbake/lib/bb/fetch2/hg.py
index 15d729e..e21115d 100644
--- a/poky/bitbake/lib/bb/fetch2/hg.py
+++ b/poky/bitbake/lib/bb/fetch2/hg.py
@@ -54,13 +54,6 @@
         else:
             ud.proto = "hg"
 
-        ud.setup_revisions(d)
-
-        if 'rev' in ud.parm:
-            ud.revision = ud.parm['rev']
-        elif not ud.revision:
-            ud.revision = self.latest_revision(ud, d)
-
         # Create paths to mercurial checkouts
         hgsrcname = '%s_%s_%s' % (ud.module.replace('/', '.'), \
                             ud.host, ud.path.replace('/', '.'))
@@ -74,6 +67,13 @@
         ud.localfile = ud.moddir
         ud.basecmd = d.getVar("FETCHCMD_hg") or "/usr/bin/env hg"
 
+        ud.setup_revisions(d)
+
+        if 'rev' in ud.parm:
+            ud.revision = ud.parm['rev']
+        elif not ud.revision:
+            ud.revision = self.latest_revision(ud, d)
+
         ud.write_tarballs = d.getVar("BB_GENERATE_MIRROR_TARBALLS")
 
     def need_update(self, ud, d):
@@ -139,7 +139,7 @@
                 cmd = "%s --config auth.default.prefix=* --config auth.default.username=%s --config auth.default.password=%s --config \"auth.default.schemes=%s\" pull" % (ud.basecmd, ud.user, ud.pswd, proto)
             else:
                 cmd = "%s pull" % (ud.basecmd)
-        elif command == "update":
+        elif command == "update" or command == "up":
             if ud.user and ud.pswd:
                 cmd = "%s --config auth.default.prefix=* --config auth.default.username=%s --config auth.default.password=%s --config \"auth.default.schemes=%s\" update -C %s" % (ud.basecmd, ud.user, ud.pswd, proto, " ".join(options))
             else:
@@ -247,12 +247,19 @@
 
         scmdata = ud.parm.get("scmdata", "")
         if scmdata != "nokeep":
+            proto = ud.parm.get('protocol', 'http')
             if not os.access(os.path.join(codir, '.hg'), os.R_OK):
                 logger.debug(2, "Unpack: creating new hg repository in '" + codir + "'")
                 runfetchcmd("%s init %s" % (ud.basecmd, codir), d)
             logger.debug(2, "Unpack: updating source in '" + codir + "'")
-            runfetchcmd("%s pull %s" % (ud.basecmd, ud.moddir), d, workdir=codir)
-            runfetchcmd("%s up -C %s" % (ud.basecmd, revflag), d, workdir=codir)
+            if ud.user and ud.pswd:
+                runfetchcmd("%s --config auth.default.prefix=* --config auth.default.username=%s --config auth.default.password=%s --config \"auth.default.schemes=%s\" pull %s" % (ud.basecmd, ud.user, ud.pswd, proto, ud.moddir), d, workdir=codir)
+            else:
+                runfetchcmd("%s pull %s" % (ud.basecmd, ud.moddir), d, workdir=codir)
+            if ud.user and ud.pswd:
+                runfetchcmd("%s --config auth.default.prefix=* --config auth.default.username=%s --config auth.default.password=%s --config \"auth.default.schemes=%s\" up -C %s" % (ud.basecmd, ud.user, ud.pswd, proto, revflag), d, workdir=codir)
+            else:
+                runfetchcmd("%s up -C %s" % (ud.basecmd, revflag), d, workdir=codir)
         else:
             logger.debug(2, "Unpack: extracting source to '" + codir + "'")
             runfetchcmd("%s archive -t files %s %s" % (ud.basecmd, revflag, codir), d, workdir=ud.moddir)
diff --git a/poky/bitbake/lib/bb/runqueue.py b/poky/bitbake/lib/bb/runqueue.py
index 1804943..8622738 100644
--- a/poky/bitbake/lib/bb/runqueue.py
+++ b/poky/bitbake/lib/bb/runqueue.py
@@ -1397,7 +1397,7 @@
             cache[tid] = iscurrent
         return iscurrent
 
-    def validate_hashes(self, tocheck, data, currentcount=0, siginfo=False):
+    def validate_hashes(self, tocheck, data, currentcount=0, siginfo=False, summary=True):
         valid = set()
         if self.hashvalidate:
             sq_data = {}
@@ -1410,15 +1410,15 @@
                 sq_data['hashfn'][tid] = self.rqdata.dataCaches[mc].hashfn[taskfn]
                 sq_data['unihash'][tid] = self.rqdata.runtaskentries[tid].unihash
 
-            valid = self.validate_hash(sq_data, data, siginfo, currentcount)
+            valid = self.validate_hash(sq_data, data, siginfo, currentcount, summary)
 
         return valid
 
-    def validate_hash(self, sq_data, d, siginfo, currentcount):
-        locs = {"sq_data" : sq_data, "d" : d, "siginfo" : siginfo, "currentcount" : currentcount}
+    def validate_hash(self, sq_data, d, siginfo, currentcount, summary):
+        locs = {"sq_data" : sq_data, "d" : d, "siginfo" : siginfo, "currentcount" : currentcount, "summary" : summary}
 
         # Metadata has **kwargs so args can be added, sq_data can also gain new fields
-        call = self.hashvalidate + "(sq_data, d, siginfo=siginfo, currentcount=currentcount)"
+        call = self.hashvalidate + "(sq_data, d, siginfo=siginfo, currentcount=currentcount, summary=summary)"
 
         return bb.utils.better_eval(call, locs)
 
@@ -1605,7 +1605,7 @@
 
             tocheck.add(tid)
 
-        valid_new = self.validate_hashes(tocheck, self.cooker.data, 0, True)
+        valid_new = self.validate_hashes(tocheck, self.cooker.data, 0, True, summary=False)
 
         # Tasks which are both setscene and noexec never care about dependencies
         # We therefore find tasks which are setscene and noexec and mark their
@@ -1986,7 +1986,7 @@
                             continue
                         logger.debug(1, "Task %s no longer deferred" % nexttask)
                         del self.sq_deferred[nexttask]
-                        valid = self.rq.validate_hashes(set([nexttask]), self.cooker.data, 0, False)
+                        valid = self.rq.validate_hashes(set([nexttask]), self.cooker.data, 0, False, summary=False)
                         if not valid:
                             logger.debug(1, "%s didn't become valid, skipping setscene" % nexttask)
                             self.sq_task_failoutright(nexttask)
@@ -2361,9 +2361,13 @@
             if tid in self.build_stamps:
                 del self.build_stamps[tid]
 
-            logger.info("Setscene task %s now valid and being rerun" % tid)
+            origvalid = False
+            if tid in self.sqdata.valid:
+                origvalid = True
             self.sqdone = False
-            update_scenequeue_data([tid], self.sqdata, self.rqdata, self.rq, self.cooker, self.stampcache, self)
+            update_scenequeue_data([tid], self.sqdata, self.rqdata, self.rq, self.cooker, self.stampcache, self, summary=False)
+            if tid in self.sqdata.valid and not origvalid:
+                logger.info("Setscene task %s became valid" % tid)
 
         if changed:
             self.holdoff_need_update = True
@@ -2692,9 +2696,9 @@
     sqdata.stamppresent = set()
     sqdata.valid = set()
 
-    update_scenequeue_data(sqdata.sq_revdeps, sqdata, rqdata, rq, cooker, stampcache, sqrq)
+    update_scenequeue_data(sqdata.sq_revdeps, sqdata, rqdata, rq, cooker, stampcache, sqrq, summary=True)
 
-def update_scenequeue_data(tids, sqdata, rqdata, rq, cooker, stampcache, sqrq):
+def update_scenequeue_data(tids, sqdata, rqdata, rq, cooker, stampcache, sqrq, summary=True):
 
     tocheck = set()
 
@@ -2728,7 +2732,7 @@
 
         tocheck.add(tid)
 
-    sqdata.valid |= rq.validate_hashes(tocheck, cooker.data, len(sqdata.stamppresent), False)
+    sqdata.valid |= rq.validate_hashes(tocheck, cooker.data, len(sqdata.stamppresent), False, summary=summary)
 
     sqdata.hashes = {}
     for mc in sorted(sqdata.multiconfigs):
diff --git a/poky/bitbake/lib/prserv/serv.py b/poky/bitbake/lib/prserv/serv.py
index 2bc6890..b854ba1 100644
--- a/poky/bitbake/lib/prserv/serv.py
+++ b/poky/bitbake/lib/prserv/serv.py
@@ -243,6 +243,7 @@
         try:
             pid = os.fork()
             if pid > 0:
+                self.socket.close() # avoid ResourceWarning in parent
                 return pid
         except OSError as e:
             raise Exception("%s [%d]" % (e.strerror, e.errno))