package.bbclass: remove unneeded chmod() and chown()
cover package.bbclass: remove unneeded chmod() and chown()
The following changes since commit 986f7fbe37a48d050611f08f7160ed96755ac3dc:
foomatic-filters: Security fixes CVE-2015-8327 (2016-08-01 12:11:09 +0100)
are available in the git repository at:
git://git.openembedded.org/openembedded-core-contrib rbt/mode
http://cgit.openembedded.org/cgit.cgi/openembedded-core-contrib/log/?h=rbt/mode
Robert Yang (1):
package.bbclass: remove unneeded chmod() and chown()
meta/classes/package.bbclass | 3 --- 1 file changed, 3 deletions(-)
Signature · 1 line
2.9.0
PATCH 1/1 package.bbclass: remove unneeded chmod() and chown()
* The mode and owner info are saved in inode, hardlink won't change them, so remove unneeded chmod() and chown().
* This can avoid the problem that when do_package re-run, the file's mode maybe different if it is 0444 (changed to 0644 when re-run), this is caused by pseudo adds 'w' on real file, and doesn't track linked source when hard link, Peter and Mark may fix pseudo, but the removed code is not needed, which can avoid the problem.
* To reproduce the problem, for example, version.c from gzip's ${B}:
1) bitbake gzip
2) Edit rpm-native or package.bbclass to make do_package re-run.
3) bitbake gzip
After the first build, build/version.c in gzip-dbg is 0444, but after the second build, it will be 0644, this because do_package does:
$ ln ${B}/version.c gzip-dbg/version.c,
$ chmod 0444 gzip-dbg/version.c (it runs chmod 0644 on the real filesystem)
And in the second build, the gzip-dbg/version.c will be removed and
created again, so that stat() can't get 0444 but 0644 since
${B}/version.c is not tracked by pseudo.--- meta/classes/package.bbclass | 3 --- 1 file changed, 3 deletions(-)
meta/classes/package.bbclass +0 -3
@@ -1152,9 +1152,6 @@ python populate_packages () { fpath = os.path.join(root,file) if not cpath.islink(file): os.link(file, fpath) - fstat = cpath.stat(file) - os.chmod(fpath, fstat.st_mode) - os.chown(fpath, fstat.st_uid, fstat.st_gid) continue ret = bb.utils.copyfile(file, fpath) if ret is False or ret == 0:
Signature · 1 line
2.9.0