<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugzilla.yoctoproject.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.6"
          urlbase="https://bugzilla.yoctoproject.org/"
          
          maintainer="it-coreprojects-helpdesk@linuxfoundation.org"
>

    <bug>
          <bug_id>9748</bug_id>
          
          <creation_ts>2016-06-09 17:11:41 +0000</creation_ts>
          <short_desc>[PATCH] license.bbclass: try copyfile() as fallback when link() fails</short_desc>
          <delta_ts>2016-06-16 14:35:38 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>7</classification_id>
          <classification>Build System, Metadata &amp; Runtime</classification>
          <product>OE-Core</product>
          <component>core</component>
          <version>unspecified</version>
          <rep_platform>x86</rep_platform>
          <op_sys>Multiple</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>Undecided</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Enrico Scholz">enrico.scholz</reporter>
          <assigned_to name="Ross Burton">ross.burton</assigned_to>
          <cc>meta.mr.watcher</cc>
    
    <cc>meta.watcher</cc>
          
          
          <cf_os>---</cf_os>
          <cf_regression_type>---</cf_regression_type>
          
          <cf_docchange>No (bug/feature does not impact docs)</cf_docchange>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>62858</commentid>
    <comment_count>0</comment_count>
      <attachid>3230</attachid>
    <who name="Enrico Scholz">enrico.scholz</who>
    <bug_when>2016-06-09 17:11:41 +0000</bug_when>
    <thetext>Created attachment 3230
patch

link() will fail with EXDEV when source and destination are on different mountpoints.
Unfortunately, stat().st_dev does not identify the mountpoint so that copy_license_files()
fails in bind-mount environments.

E.g.:

| # mkdir /tmp/a /tmp/b /tmp/X /tmp/X/a /tmp/X/b
| # touch /tmp/a/foo
| # mount --bind /tmp/a /tmp/X/a
| # mount --bind /tmp/b /tmp/X/b
|
| # python -c &apos;import os;
| print(os.stat(&quot;/tmp/X/a&quot;)).st_dev;
| print(os.stat(&quot;/tmp/X/b&quot;)).st_dev;
| os.link(&quot;/tmp/X/a/foo&quot;, &quot;/tmp/X/b/foo&quot;)&apos;
| 62
| 62
| Traceback (most recent call last):
|   File &quot;&lt;string&gt;&quot;, line 1, in &lt;module&gt;
| OSError: [Errno 18] Invalid cross-device link

Patch catches errno EXDEV and tries a plain copy then.


Without this patch, I see

| WARNING: Could not copy license file generic_MIT: [Errno 18] Invalid cross-device link
| WARNING: Could not copy license file generic_MIT-style: [Errno 18] Invalid cross-device link

messages.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>63032</commentid>
    <comment_count>1</comment_count>
    <who name="Ross Burton">ross.burton</who>
    <bug_when>2016-06-16 14:35:38 +0000</bug_when>
    <thetext>Looks like Manuel beat you to a patch.  Fixed in oe-core c00423d6bab9849e331beadf4d3cee90e04fe295.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>3230</attachid>
            <date>2016-06-09 17:11:41 +0000</date>
            <delta_ts>2016-06-09 17:11:58 +0000</delta_ts>
            <desc>patch</desc>
            <filename>0001-license.bbclass-try-copyfile-as-fallback-when-link-f.patch</filename>
            <type>text/plain</type>
            <size>2013</size>
            <attacher name="Enrico Scholz">enrico.scholz</attacher>
            
              <data encoding="base64">RnJvbSA4NWY2MDhhMDEzY2E3OTVjZTFiOWFhNmQ5YjlmMjZiZjM0ZjZhMWJjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBFbnJpY28gU2Nob2x6IDxlbnJpY28uc2Nob2x6QHNpZ21hLWNo
ZW1uaXR6LmRlPgpEYXRlOiBTdW4sIDEyIEp1bCAyMDE1IDE4OjIzOjA4ICswMjAwClN1YmplY3Q6
IFtQQVRDSF0gbGljZW5zZS5iYmNsYXNzOiB0cnkgY29weWZpbGUoKSBhcyBmYWxsYmFjayB3aGVu
IGxpbmsoKSBmYWlscwoKbGluaygpIHdpbGwgZmFpbCB3aXRoIEVYREVWIHdoZW4gc291cmNlIGFu
ZCBkZXN0aW5hdGlvbiBhcmUgb24gZGlmZmVyZW50IG1vdW50cG9pbnRzLgpVbmZvcnR1bmF0ZWx5
LCBzdGF0KCkuc3RfZGV2IGRvZXMgbm90IGlkZW50aWZ5IHRoZSBtb3VudHBvaW50IHNvIHRoYXQg
Y29weV9saWNlbnNlX2ZpbGVzKCkKZmFpbHMgaW4gYmluZC1tb3VudCBlbnZpcm9ubWVudHMuCgpF
LmcuOgoKfCAjIG1rZGlyIC90bXAvYSAvdG1wL2IgL3RtcC9YIC90bXAvWC9hIC90bXAvWC9iCnwg
IyB0b3VjaCAvdG1wL2EvZm9vCnwgIyBtb3VudCAtLWJpbmQgL3RtcC9hIC90bXAvWC9hCnwgIyBt
b3VudCAtLWJpbmQgL3RtcC9iIC90bXAvWC9iCnwKfCAjIHB5dGhvbiAtYyAnaW1wb3J0IG9zOwp8
IHByaW50KG9zLnN0YXQoIi90bXAvWC9hIikpLnN0X2RldjsKfCBwcmludChvcy5zdGF0KCIvdG1w
L1gvYiIpKS5zdF9kZXY7Cnwgb3MubGluaygiL3RtcC9YL2EvZm9vIiwgIi90bXAvWC9iL2ZvbyIp
Jwp8IDYyCnwgNjIKfCBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CnwgICBGaWxl
ICI8c3RyaW5nPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KfCBPU0Vycm9yOiBbRXJybm8gMThdIElu
dmFsaWQgY3Jvc3MtZGV2aWNlIGxpbmsKClBhdGNoIGNhdGNoZXMgZXJybm8gRVhERVYgYW5kIHRy
aWVzIGEgcGxhaW4gY29weSB0aGVuLgoKU2lnbmVkLW9mZi1ieTogRW5yaWNvIFNjaG9seiA8ZW5y
aWNvLnNjaG9sekBzaWdtYS1jaGVtbml0ei5kZT4KLS0tCiBtZXRhL2NsYXNzZXMvbGljZW5zZS5i
YmNsYXNzIHwgMTIgKysrKysrKysrKy0tCiAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygr
KSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9tZXRhL2NsYXNzZXMvbGljZW5zZS5iYmNs
YXNzIGIvbWV0YS9jbGFzc2VzL2xpY2Vuc2UuYmJjbGFzcwppbmRleCAxMGQ2ZWQ4Li4wNzY2MjJj
IDEwMDY0NAotLS0gYS9tZXRhL2NsYXNzZXMvbGljZW5zZS5iYmNsYXNzCisrKyBiL21ldGEvY2xh
c3Nlcy9saWNlbnNlLmJiY2xhc3MKQEAgLTM1MCw4ICszNTAsMTYgQEAgZGVmIGNvcHlfbGljZW5z
ZV9maWxlcyhsaWNfZmlsZXNfcGF0aHMsIGRlc3RkaXIpOgogICAgICAgICAgICAgZHN0ID0gb3Mu
cGF0aC5qb2luKGRlc3RkaXIsIGJhc2VuYW1lKQogICAgICAgICAgICAgaWYgb3MucGF0aC5leGlz
dHMoZHN0KToKICAgICAgICAgICAgICAgICBvcy5yZW1vdmUoZHN0KQotICAgICAgICAgICAgaWYg
b3MuYWNjZXNzKHNyYywgb3MuV19PSykgYW5kIChvcy5zdGF0KHNyYykuc3RfZGV2ID09IG9zLnN0
YXQoZGVzdGRpcikuc3RfZGV2KToKLSAgICAgICAgICAgICAgICBvcy5saW5rKHNyYywgZHN0KQor
ICAgICAgICAgICAgaWYgb3MuYWNjZXNzKHNyYywgb3MuV19PSyk6CisgICAgICAgICAgICAgICAg
dHJ5OgorICAgICAgICAgICAgICAgICAgICBvcy5saW5rKHNyYywgZHN0KQorICAgICAgICAgICAg
ICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgICAgIGltcG9ydCBlcnJu
bworICAgICAgICAgICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVYREVWOgorICAgICAg
ICAgICAgICAgICAgICAgICAgcmFpc2UgZQorCisgICAgICAgICAgICAgICAgICAgIHNodXRpbC5j
b3B5ZmlsZShzcmMsIGRzdCkKKwogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAg
ICAgICAgb3MuY2hvd24oZHN0LDAsMCkKICAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBh
cyBlcnI6Ci0tIAoyLjUuNQoK
</data>

          </attachment>
      

    </bug>

</bugzilla>