<div dir="ltr"><div>Does openssl10 work for anyone in real-world scenarios?</div><div><br></div><div>I was trying to fix at least some of the failures reported in last bitbake world status:</div><div><a href="http://lists.openembedded.org/pipermail/openembedded-core/2017-August/140829.html">http://lists.openembedded.org/pipermail/openembedded-core/2017-August/140829.html</a></div><div><br></div><div>But in most recipes if you update DEPENDS to use openssl10, it will get openssl (1.1) somewhere in dependency tree as well, e.g. like qtbase through python3:</div><div><br></div><div>OE qemux86@ ~/build/oe-core $ grep &quot; -&gt; \&quot;openssl.*do_populate_sysroot&quot; task-depends.dot </div><div>&quot;qtbase.do_prepare_recipe_sysroot&quot; -&gt; &quot;openssl10.do_populate_sysroot&quot;</div><div>&quot;openssl10.do_prepare_recipe_sysroot&quot; -&gt; &quot;openssl-native.do_populate_sysroot&quot;</div><div>&quot;python3-native.do_prepare_recipe_sysroot&quot; -&gt; &quot;openssl-native.do_populate_sysroot&quot;</div><div>&quot;python3.do_prepare_recipe_sysroot&quot; -&gt; &quot;openssl.do_populate_sysroot&quot;</div><div><br></div><div>and then do_prepare_recipe_sysroot fails, because both dependencies provid libssl.a:</div><div><br></div><div>ERROR: qtbase-5.9.0+gitAUTOINC+f6b36eaafe-r0 do_prepare_recipe_sysroot: Error executing a python function in exec_python_func() autogenerated:</div><div><br></div><div>The stack trace of python calls that resulted in this exception/failure was:</div><div>File: &#39;exec_python_func() autogenerated&#39;, lineno: 2, function: &lt;module&gt;</div><div>     0001:</div><div> *** 0002:extend_recipe_sysroot(d)</div><div>     0003:</div><div>File: &#39;/OE/build/oe-core/openembedded-core/meta/classes/staging.bbclass&#39;, lineno: 510, function: extend_recipe_sysroot</div><div>     0506:                    dest = newmanifest[l]</div><div>     0507:                    if l.endswith(&quot;/&quot;):</div><div>     0508:                        staging_copydir(l, targetdir, dest, seendirs)</div><div>     0509:                        continue</div><div> *** 0510:                    staging_copyfile(l, targetdir, dest, postinsts, seendirs)</div><div>     0511:</div><div>     0512:    for f in fixme:</div><div>     0513:        if f == &#39;&#39;:</div><div>     0514:            staging_processfixme(fixme[f], recipesysroot, recipesysroot, recipesysrootnative, d)</div><div>File: &#39;/OE/build/oe-core/openembedded-core/meta/classes/staging.bbclass&#39;, lineno: 151, function: staging_copyfile</div><div>     0147:        os.symlink(linkto, dest)</div><div>     0148:        #bb.warn(c)</div><div>     0149:    else:</div><div>     0150:        try:</div><div> *** 0151:            os.link(c, dest)</div><div>     0152:        except OSError as err:</div><div>     0153:            if err.errno == errno.EXDEV:</div><div>     0154:                bb.utils.copyfile(c, dest)</div><div>     0155:            else:</div><div>Exception: FileExistsError: [Errno 17] File exists: &#39;/OE/build/oe-core/tmp-glibc/sysroots-components/i586/openssl/usr/lib/libssl.a&#39; -&gt; &#39;/OE/build/oe-core/tmp-glibc/work/i586-oe-linux/qtbase/5.9.0+gitAUTOINC+f6b36eaafe-r0/recipe-sysroot/usr/lib/libssl.a&#39;</div><div><br></div><div>ERROR: qtbase-5.9.0+gitAUTOINC+f6b36eaafe-r0 do_prepare_recipe_sysroot: Function failed: extend_recipe_sysroot</div><div>ERROR: Logfile of failure stored in: /OE/build/oe-core/tmp-glibc/work/i586-oe-linux/qtbase/5.9.0+gitAUTOINC+f6b36eaafe-r0/temp/log.do_prepare_recipe_sysroot.6496</div><div>ERROR: Task (/OE/build/oe-core/meta-qt5/recipes-qt/qt5/qtbase_git.bb:do_prepare_recipe_sysroot) failed with exit code &#39;1&#39;</div><div><br></div><div>And not just libssl.a, they both provide also identically named pkg-config files: </div><div>openssl.pc, libcrypto.pc, libssl.pc</div><div>OE qemux86@ ~/build/oe-core $ find /OE/build/oe-core/tmp-glibc/sysroots-components/i586/openssl10/ | grep pc</div><div>/OE/build/oe-core/tmp-glibc/sysroots-components/i586/openssl10/usr/lib/pkgconfig/openssl.pc</div><div>/OE/build/oe-core/tmp-glibc/sysroots-components/i586/openssl10/usr/lib/pkgconfig/libcrypto.pc</div><div>/OE/build/oe-core/tmp-glibc/sysroots-components/i586/openssl10/usr/lib/pkgconfig/libssl.pc</div><div>OE qemux86@ ~/build/oe-core $ find /OE/build/oe-core/tmp-glibc/sysroots-components/i586/openssl | grep pc</div><div>/OE/build/oe-core/tmp-glibc/sysroots-components/i586/openssl/usr/lib/pkgconfig/openssl.pc</div><div>/OE/build/oe-core/tmp-glibc/sysroots-components/i586/openssl/usr/lib/pkgconfig/libcrypto.pc</div><div>/OE/build/oe-core/tmp-glibc/sysroots-components/i586/openssl/usr/lib/pkgconfig/libssl.pc</div><div><br></div><div>So you cannot just select which openssl implementation you want for given component, unless it&#39;s very simple component with small dependency tree.</div></div>