Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package dracut for openSUSE:Factory checked in at 2022-02-24 18:18:27 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/dracut (Old) and /work/SRC/openSUSE:Factory/.dracut.new.1958 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "dracut" Thu Feb 24 18:18:27 2022 rev:183 rq:957061 version:055+suse.238.gacab0df5 Changes: -------- --- /work/SRC/openSUSE:Factory/dracut/dracut.changes 2022-02-06 23:54:38.942673504 +0100 +++ /work/SRC/openSUSE:Factory/.dracut.new.1958/dracut.changes 2022-02-24 18:18:36.814735883 +0100 @@ -1,0 +2,22 @@ +Fri Feb 18 07:48:46 UTC 2022 - antonio.fei...@suse.com + +- Update to version 055+suse.238.gacab0df5: + * fix(cpio): correct dev_t -> rmajor/rminor mapping (bsc#1195808) + * ci(cpio): add test_archive_dev_maj_min (bsc#1195808) + * ci(cpio): add TempWorkDir.create_tmp_mknod helper (bsc#1195808) + +------------------------------------------------------------------- +Thu Feb 17 15:01:56 UTC 2022 - antonio.fei...@suse.com + +- Update to version 055+suse.234.gbdaf66ff: + * fix(tpm2-tss): install SUSE specific files (bsc#1195984) + * fix(systemd-sysusers): override systemd-sysusers.service (bsc#1195983) + +------------------------------------------------------------------- +Mon Feb 14 09:09:18 UTC 2022 - antonio.fei...@suse.com + +- Update to version 055+suse.230.g3fdde49a: + * fix(dasd_rules): correct udev dasd rules parsing (bsc#1195309) + * revert(lvm): remove 69-dm-lvm-metad.rules (bsc#1195604) + +------------------------------------------------------------------- Old: ---- dracut-055+suse.226.g44139dde.obscpio New: ---- dracut-055+suse.238.gacab0df5.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ dracut.spec ++++++ --- /var/tmp/diff_new_pack.kif6Wx/_old 2022-02-24 18:18:37.454735712 +0100 +++ /var/tmp/diff_new_pack.kif6Wx/_new 2022-02-24 18:18:37.462735710 +0100 @@ -25,7 +25,7 @@ %endif Name: dracut -Version: 055+suse.226.g44139dde +Version: 055+suse.238.gacab0df5 Release: 0 Summary: Initramfs generator using udev License: GPL-2.0-or-later AND LGPL-2.1-or-later ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.kif6Wx/_old 2022-02-24 18:18:37.518735695 +0100 +++ /var/tmp/diff_new_pack.kif6Wx/_new 2022-02-24 18:18:37.522735694 +0100 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/opensuse/dracut.git</param> - <param name="changesrevision">44139ddef245feebb2ee11bb70083b8b45e8ce00</param></service></servicedata> + <param name="changesrevision">569387aed7f1d27692095405744dfd84d5cd6aae</param></service></servicedata> (No newline at EOF) ++++++ dracut-055+suse.226.g44139dde.obscpio -> dracut-055+suse.238.gacab0df5.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dracut-055+suse.226.g44139dde/modules.d/01systemd-sysusers/module-setup.sh new/dracut-055+suse.238.gacab0df5/modules.d/01systemd-sysusers/module-setup.sh --- old/dracut-055+suse.226.g44139dde/modules.d/01systemd-sysusers/module-setup.sh 2022-01-28 08:31:48.000000000 +0100 +++ new/dracut-055+suse.238.gacab0df5/modules.d/01systemd-sysusers/module-setup.sh 2022-02-18 08:14:48.000000000 +0100 @@ -24,6 +24,8 @@ # Install the required file(s) and directories for the module in the initramfs. install() { + inst_simple "$moddir/sysusers-dracut.conf" "$systemdsystemunitdir/systemd-sysusers.service.d/sysusers-dracut.conf" + inst_multiple -o \ "$sysusers"/basic.conf \ "$sysusers"/systemd.conf \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dracut-055+suse.226.g44139dde/modules.d/01systemd-sysusers/sysusers-dracut.conf new/dracut-055+suse.238.gacab0df5/modules.d/01systemd-sysusers/sysusers-dracut.conf --- old/dracut-055+suse.226.g44139dde/modules.d/01systemd-sysusers/sysusers-dracut.conf 1970-01-01 01:00:00.000000000 +0100 +++ new/dracut-055+suse.238.gacab0df5/modules.d/01systemd-sysusers/sysusers-dracut.conf 2022-02-18 08:14:48.000000000 +0100 @@ -0,0 +1,2 @@ +[Unit] +ConditionNeedsUpdate= diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dracut-055+suse.226.g44139dde/modules.d/90lvm/module-setup.sh new/dracut-055+suse.238.gacab0df5/modules.d/90lvm/module-setup.sh --- old/dracut-055+suse.226.g44139dde/modules.d/90lvm/module-setup.sh 2022-01-28 08:31:48.000000000 +0100 +++ new/dracut-055+suse.238.gacab0df5/modules.d/90lvm/module-setup.sh 2022-02-18 08:14:48.000000000 +0100 @@ -92,20 +92,7 @@ } > "${initdir}/etc/lvm/lvm.conf" fi - inst_rules 11-dm-lvm.rules 69-dm-lvm-metad.rules - - # Do not run lvmetad update via pvscan in udev rule - lvmetad is not running yet in dracut! - if [[ -f ${initdir}/lib/udev/rules.d/69-dm-lvm-metad.rules ]]; then - if grep -q SYSTEMD_WANTS "${initdir}"/lib/udev/rules.d/69-dm-lvm-metad.rules; then - sed -i -e 's/^ENV{SYSTEMD_ALIAS}=.*/# No LVM pvscan in dracut - lvmetad is not running yet/' \ - "${initdir}"/lib/udev/rules.d/69-dm-lvm-metad.rules - sed -i -e 's/^ENV{ID_MODEL}=.*//' "${initdir}"/lib/udev/rules.d/69-dm-lvm-metad.rules - sed -i -e 's/^ENV{SYSTEMD_WANTS}+\?=.*//' "${initdir}"/lib/udev/rules.d/69-dm-lvm-metad.rules - else - sed -i -e 's/.*lvm pvscan.*/# No LVM pvscan for in dracut - lvmetad is not running yet/' \ - "${initdir}"/lib/udev/rules.d/69-dm-lvm-metad.rules - fi - fi + inst_rules 11-dm-lvm.rules # Gentoo ebuild for LVM2 prior to 2.02.63-r1 doesn't install above rules # files, but provides the one below: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dracut-055+suse.226.g44139dde/modules.d/91tpm2-tss/module-setup.sh new/dracut-055+suse.238.gacab0df5/modules.d/91tpm2-tss/module-setup.sh --- old/dracut-055+suse.226.g44139dde/modules.d/91tpm2-tss/module-setup.sh 2022-01-28 08:31:48.000000000 +0100 +++ new/dracut-055+suse.238.gacab0df5/modules.d/91tpm2-tss/module-setup.sh 2022-02-18 08:14:48.000000000 +0100 @@ -32,9 +32,9 @@ install() { inst_multiple -o \ - "$sysusers"/tpm2-tss.conf \ - "$tmpfilesdir"/tpm2-tss-fapi.conf \ - "$udevrulesdir"/60-tpm-udev.rules \ + "$sysusers"/system-user-tss.conf \ + "$tmpfilesdir"/tpm2-tss-fapi*.conf \ + "$udevrulesdir"/90-tpm.rules \ tpm2_pcrread tpm2_pcrextend tpm2_createprimary tpm2_createpolicy \ tpm2_create tpm2_load tpm2_unseal tpm2 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dracut-055+suse.226.g44139dde/modules.d/95dasd_rules/module-setup.sh new/dracut-055+suse.238.gacab0df5/modules.d/95dasd_rules/module-setup.sh --- old/dracut-055+suse.226.g44139dde/modules.d/95dasd_rules/module-setup.sh 2022-01-28 08:31:48.000000000 +0100 +++ new/dracut-055+suse.238.gacab0df5/modules.d/95dasd_rules/module-setup.sh 2022-02-18 08:14:48.000000000 +0100 @@ -57,8 +57,8 @@ [[ $_dasd ]] && printf "%s\n" "$_dasd" >> "${initdir}/etc/cmdline.d/95dasd.conf" fi if [[ $hostonly ]]; then - inst_rules_wildcard 51-dasd-*.rules - inst_rules_wildcard 41-dasd-*.rules + inst_rules_wildcard "51-dasd-*.rules" + inst_rules_wildcard "41-dasd-*.rules" mark_hostonly /etc/udev/rules.d/51-dasd-*.rules mark_hostonly /etc/udev/rules.d/41-dasd-*.rules fi diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dracut-055+suse.226.g44139dde/src/dracut-cpio/src/main.rs new/dracut-055+suse.238.gacab0df5/src/dracut-cpio/src/main.rs --- old/dracut-055+suse.226.g44139dde/src/dracut-cpio/src/main.rs 2022-01-28 08:31:48.000000000 +0100 +++ new/dracut-055+suse.238.gacab0df5/src/dracut-cpio/src/main.rs 2022-02-18 08:14:48.000000000 +0100 @@ -361,9 +361,12 @@ // no zero terminator for symlink target path } + // Linux kernel uses 32-bit dev_t, encoded as mmmM MMmm. glibc uses 64-bit + // MMMM Mmmm mmmM MMmm, which is compatible with the former. if ftype.is_block_device() || ftype.is_char_device() { - rmajor = (md.rdev() >> 8) as u32; - rminor = (md.rdev() & 0xff) as u32; + let rd = md.rdev(); + rmajor = (((rd >> 32) & 0xfffff000) | ((rd >> 8) & 0x00000fff)) as u32; + rminor = (((rd >> 12) & 0xffffff00) | (rd & 0x000000ff)) as u32; } if ftype.is_file() { @@ -810,7 +813,8 @@ Ok(()) } -// tests change working directory, so need to be run with --test-threads=1 +// tests change working directory, so need to be run with: +// cargo test -- --test-threads=1 --nocapture #[cfg(test)] mod tests { use super::*; @@ -883,6 +887,25 @@ fs::create_dir(name).unwrap(); self.cleanup_dirs.push(PathBuf::from(name)); } + + // execute coreutils mknod NAME TYPE [MAJOR MINOR] + pub fn create_tmp_mknod(&mut self, name: &str, typ: char, + maj_min: Option<(u32, u32)>) { + let t = typ.to_string(); + let proc = match maj_min { + Some(maj_min) => { + let (maj, min) = maj_min; + Command::new("mknod") + .args(&[name, &t, &maj.to_string(), &min.to_string()]) + .spawn() + }, + None => Command::new("mknod").args(&[name, &t]).spawn() + }; + let status = proc.expect("mknod failed to start").wait().unwrap(); + assert!(status.success()); + + self.cleanup_files.push(PathBuf::from(name)); + } } impl Drop for TempWorkDir { @@ -1144,13 +1167,7 @@ fn test_archive_fifo() { let mut twd = TempWorkDir::new(); - // mknod [OPTION]... NAME TYPE [MAJOR MINOR] - let mut proc = Command::new("mknod") - .args(&["fifo", "p"]) - .spawn() - .expect("mknod failed to start"); - assert!(proc.wait().unwrap().success()); - twd.cleanup_files.push(PathBuf::from("fifo")); + twd.create_tmp_mknod("fifo", 'p', None); gnu_cpio_create("fifo\n".as_bytes(), "gnu.cpio"); twd.cleanup_files.push(PathBuf::from("gnu.cpio")); @@ -1720,4 +1737,77 @@ assert_eq!(src_md.uid(), ex_md.uid()); assert_eq!(src_md.gid(), ex_md.gid()); } + + #[test] + fn test_archive_dev_maj_min() { + let mut twd = TempWorkDir::new(); + twd.create_tmp_file("file1", 0); + + let md = fs::symlink_metadata("file1").unwrap(); + if md.uid() != 0 { + println!("SKIPPED: this test requires root"); + return; + } + + twd.create_tmp_mknod("bdev1", 'b', Some((0x01, 0x01))); + twd.create_tmp_mknod("bdev2", 'b', Some((0x02, 0x100))); + twd.create_tmp_mknod("bdev3", 'b', Some((0x03, 0x1000))); + twd.create_tmp_mknod("bdev4", 'b', Some((0x04, 0x10000))); + twd.create_tmp_mknod("bdev5", 'b', Some((0x100, 0x05))); + twd.create_tmp_mknod("bdev6", 'b', Some((0x100, 0x06))); + let file_list: &str = "file1\nbdev1\nbdev2\nbdev3\nbdev4\nbdev5\nbdev6\n"; + + // create GNU cpio archive + twd.create_tmp_dir("gnucpio_xtr"); + gnu_cpio_create(file_list.as_bytes(), "gnucpio_xtr/gnu.cpio"); + twd.cleanup_files.push(PathBuf::from("gnucpio_xtr/gnu.cpio")); + + // create Dracut cpio archive + twd.create_tmp_dir("dracut_xtr"); + let f = fs::File::create("dracut_xtr/dracut.cpio").unwrap(); + let mut writer = io::BufWriter::new(f); + let mut reader = io::BufReader::new(file_list.as_bytes()); + let wrote = archive_loop( + &mut reader, + &mut writer, + &ArchiveProperties::default() + ) + .unwrap(); + twd.cleanup_files.push(PathBuf::from("dracut_xtr/dracut.cpio")); + + let file_list_count = file_list.split_terminator('\n').count() as u64; + assert!(wrote >= NEWC_HDR_LEN * file_list_count + + (file_list.len() as u64)); + + let status = Command::new("cpio") + .current_dir("gnucpio_xtr") + .args(&["--quiet", "-i", "-H", "newc", "-F", "gnu.cpio"]) + .status() + .expect("GNU cpio failed to start"); + assert!(status.success()); + for s in file_list.split_terminator('\n') { + let p = PathBuf::from("gnucpio_xtr/".to_owned() + s); + twd.cleanup_files.push(p); + } + + let status = Command::new("cpio") + .current_dir("dracut_xtr") + .args(&["--quiet", "-i", "-H", "newc", "-F", "dracut.cpio"]) + .status() + .expect("GNU cpio failed to start"); + assert!(status.success()); + for s in file_list.split_terminator('\n') { + let dp = PathBuf::from("dracut_xtr/".to_owned() + s); + twd.cleanup_files.push(dp); + } + + // diff extracted major/minor between dracut and GNU cpio created archives + for s in file_list.split_terminator('\n') { + let gmd = fs::symlink_metadata("gnucpio_xtr/".to_owned() + s).unwrap(); + let dmd = fs::symlink_metadata("dracut_xtr/".to_owned() + s).unwrap(); + print!("{}: cpio extracted dev_t gnu: {:#x}, dracut: {:#x}\n", + s, gmd.rdev(), dmd.rdev()); + assert!(gmd.rdev() == dmd.rdev()); + } + } } ++++++ dracut.obsinfo ++++++ --- /var/tmp/diff_new_pack.kif6Wx/_old 2022-02-24 18:18:37.770735628 +0100 +++ /var/tmp/diff_new_pack.kif6Wx/_new 2022-02-24 18:18:37.774735626 +0100 @@ -1,6 +1,6 @@ name: dracut -version: 055+suse.226.g44139dde -mtime: 1643355108 -commit: 44139ddef245feebb2ee11bb70083b8b45e8ce00 +version: 055+suse.238.gacab0df5 +mtime: 1645168488 +commit: acab0df540c367f5b83e4d63c8c491238b2a9cdf