archlinuxcn / lilac

Lilac is the build bot for archlinuxcn
GNU General Public License v3.0
113 stars 39 forks source link

build-cleaner: fix deletion of btrfs subvolume with nested subvolumes in coreutils >= 9.2 #197

Closed EHfive closed 1 year ago

EHfive commented 1 year ago

在 coreutils >= 9.2 后 --one-file-system 会导致 rm 跳过如下systemd创建的 "./portables" "./machines" subvolume 而返回非0,导致 check_call 抛出了另一个未拦截的 CalledProcessError

$ btrfs subvolume list /
ID xxx0 gen xxxxx0 top level 256 path var/lib/archbuild/multilib-x86_64/lilac-0
ID xxx1 gen xxxxx1 top level 1290 path var/lib/archbuild/multilib-x86_64/lilac-0/var/lib/portables
ID xxx2 gen xxxxx2 top level 1290 path var/lib/archbuild/multilib-x86_64/lilac-0/var/lib/machines
rm: 跳过 '/var/lib/archbuild/extra-x86_64/lilac-0/var/lib/portables',因为它位于另一个设备上
rm: 跳过 '/var/lib/archbuild/extra-x86_64/lilac-0/var/lib/machines',因为它位于另一个设备上

去掉 --one-file-system 以解决此问题。当然也用可以 subprocess.call() 而不检查返回值,但我不觉得 --one-file-system 在这里有什么作用

lilydjwg commented 1 year ago

关于添加 --one-file-system 的原因见合并提交的说明。