Red Hat Bugzilla – Bug 1254537
[RFE] support for cpio --reproducible
Last modified: 2016-10-19 08:06:52 EDT
Description of problem:
The OSTree system uses content-addressed storage, and when initramfs images generated by dracut are in the tree, because the cpio format contains modification and it causes a different checksum every time
it's created, so causing the download of the initrd even if not changed from last time.
Dracut has already support for --reproducible and it is used whenever it is supported by cpio.
Version-Release number of selected component (if applicable):
Steps to Reproduce:
1. cpio --help | grep reproducible
no support for --reproducible
--reproducible is supported
The backport of the upstream patch:
Author: Sergey Poznyakoff <email@example.com>
Date: Mon Dec 1 15:02:38 2014 +0200
New options to create device and inode-independent archives.
* src/util.c (inode_val): New member trans_inode
(find_inode_val): New function.
(find_inode_file): Rewrite using the above.
(add_inode): Initialize the trans_inode member
depending on the value of renumber_inodes_option.
(get_inode_and_dev): New function.
(stat_to_cpio): Use get_inode_and_dev.
(arf_stores_inode_p): New function.
* src/extern.h (renumber_inodes_option)
(ignore_devno_option): New externs.
* src/global.c (renumber_inodes_option)
(ignore_devno_option): New variables.
* src/main.c: Add new options.
* NEWS: Document changes.
* doc/cpio.1: Document new options.
* doc/cpio.texi: Likewise.
It is 5 years since the cpio-2.11 was released. I think it would be better to ask upstream to release cpio-2.12 - this might be good excuse for it. Backport is of course doable (although almost all hunks fail when applying directly) - but there are more useful commits in cpio upstream in the last 5 years (and we backported just a few).
Pavel, will you ask Sergey there?
I have sent some patches to firstname.lastname@example.org (still didn't appear in the archives) to get the latest version built on Fedora 22 and get "make check" to pass.
now they are on the archives:
cpio 2.12 that was released on the 12th of September contains --reproducible: