This enables tracking an exact shippable. So that builds in the past can be reproduced without guess as to what version of ZFS/SPL was used.
There are many fine ways to track your exact shippable without embedding a fixed version number in Lustre's source tree. Please change to one that doesn't require a Lustre tree code change.
This documents what the latest version of ZFS is that has been tested.
Since lbuild is part of Intel's build farm, not part of Lustre's build system, hiding that detail in lbuild is pretty sneaky. That would seem to violate the Principal of Least Astonishment. Seriously, you can delete the lbuild directory and Lustre still builds just fine (perhaps only needed a minor tweak to adjust for the loss of that directory). lbuild is not the place to communicate important details testing. Not to mention that this value is set before any testing is performed, so at some point it time it only represent what version will be tested in the future...and then it says nothing about what amount of testing has happened. It only really tells us that the Intel's automated testing from that point on would have target the new version.
And furthermore, no one but Intel can even change that value, because a coordinating change in the Intel build farm is needed. Since a change to Intel's build farm is needed to pull in the new ZFS packages, why not just make the current build target part of that build farm as well? That would seem to be the least astonishing place to put that setting to, I imagine, most people that have never seen lbuild.
Build environment changes should not magically break source-code (Principal of Least Astonishment). This forces a developer to make any required ZFS specific changes (autoconf, and feature specific tests) when upgrading the compatible ZFS version.
It sounds like you were agreeing with me with that last point. I would just clarify again that Lustre is often compatible with multiple versions of ZFS, so the version listed in lbuild is not the compatible ZFS version, it is merely a compatible ZFS version.
I agree with Chris that hardcode zfs version in lbuild is bad; and yes, we build a zfs version just to test one version at a given time, not the exclusive version. Perhaps the compatible version should go into README or release-note so user can see without looking into the codes.
I think we can implement the zfs version similar to kernel version in target files. ie 2.6-rhel6.6.target.in. lbuild sources this file before building zfs to it should pick up the version.