When targets/livecd-stage2/livecd-stage2-controller.sh is called for clean, it will run find on /usr/lib, /usr/lib32 and last /usr/lib64. When I build x86 systems, /usr/lib64 doesn't exist, so the last find call exits with an error code that will be captures by calling python script (at modules/generic_stage_target.py:1140) and make it and thus catalyst fail in turn. This is with catalyst-2.0.6_pre6 (didn't happen with 2.0.5). Reproducible: Always Steps to Reproduce: 1. use catalyst for an x86 livecd-stage2 Actual Results: Catalyst exits with an error. Expected Results: Catalyst should make find ignore the non-existent directories and continue on instead.
Created attachment 144040 [details, diff] Makes catalyst check if the directories exist running find. The provided patch fixes the problem for me at least. Depending on what exact behaviour you're after for symbolic links you might want consider adding the -H (or -L) option for the find command in the patch since /usr/lib usually is a symbolic link pointing to /usr/lib64 on x86_64. But the patch already handles /usr/lib64 specifically, so it's perhaps superfluous.
I just realized that an even easier and more minimalistic fix would be to simply replace all three find calls with one using a wildcard, i.e.: find ${clst_chroot_path}/usr/lib* -iname "*.pyc" -exec rm -f {} \;
I prefer your original patch as it's more "explicit" and it doesn't pick up /usr/libexec (which may or may not matter). This is in SVN. Thanks.
This is in catalyst 2.0.6, which is in the tree and stable. If there's still a problem with this, please REOPEN this bug. Thanks!