On Fri, Oct 24, 2014 at 05:09:19PM +0200, Pino Toscano wrote:
On Friday 24 October 2014 16:00:15 Richard W.M. Jones wrote:
> Don't carry around Augeas lenses. It is fragile, since if the lens is
> added to upstream Augeas but the version number has not changed, then
> Augeas won't parse the target file at all. This specifically causes
> password adjustments to fail in RHEL 7.1.
I disagree with this patch, in the current situation.
The two lenses we carry have not been part of any Augeas release (last
is 1.2.0, done months ago), thus this would break the password changing
and the user removal from /etc/shadow, and the LVM filtering.
Why don't we carry the Augeas lenses downstream in Fedora until
Augeas 1.2.<whatever> is out?
I'm also sending an email to augeas-devel to encourage them to make
an upstream release.
Rich.
What has broken in RHEL 7.1 is the local addition of the lenses, and
thus what's needed to fix it is the local disabling of our lenses. Patch
attached for it.
This patch could be okay for me (modulo change below) once Augeas >=
1.2.1 is released.
> diff --git a/daemon/lvm-filter.c b/daemon/lvm-filter.c
> index 72fe6ac..d119f9e 100644
> --- a/daemon/lvm-filter.c
> +++ b/daemon/lvm-filter.c
> @@ -133,18 +133,6 @@ set_filter (char *const *filters)
> return -1;
> }
>
> - r = aug_transform (aug, "guestfs_lvm_conf", "/lvm/lvm.conf",
> - 0 /* = included */);
> - if (r == -1) {
> - AUGEAS_ERROR ("aug_transform");
> - return -1;
> - }
> -
> - if (aug_load (aug) == -1) {
> - AUGEAS_ERROR ("aug_load");
> - return -1;
> - }
> -
> /* Remove all the old filters ... */
> r = aug_rm (aug, "/files/lvm/lvm.conf/devices/dict/filter/list/*");
> if (r == -1) {
Note this part is needed, since within the local lvm config tree the
configuration file is /lvm/lvm.conf, thus the transform is needed (see
the change in the patch).
--
Pino Toscano
diff --git a/appliance/Makefile.am b/appliance/Makefile.am
index 7b30bbe..c7eca20 100644
--- a/appliance/Makefile.am
+++ b/appliance/Makefile.am
@@ -82,8 +82,6 @@ supermin.d/daemon.tar.gz: ../daemon/guestfsd guestfsd.suppressions
guestfs_lvm_c
mkdir -p tmp-d$(DAEMON_SUPERMIN_DIR) tmp-d/etc tmp-d/usr/share/guestfs
ln ../daemon/guestfsd tmp-d$(DAEMON_SUPERMIN_DIR)/guestfsd
ln $(srcdir)/guestfsd.suppressions tmp-d/etc/guestfsd.suppressions
- ln $(srcdir)/guestfs_lvm_conf.aug tmp-d/usr/share/guestfs/guestfs_lvm_conf.aug
- ln $(srcdir)/guestfs_shadow.aug tmp-d/usr/share/guestfs/guestfs_shadow.aug
( cd tmp-d && tar zcf - * ) > $@-t
rm -r tmp-d
mv $@-t $@
diff --git a/daemon/augeas.c b/daemon/augeas.c
index ce49726..7753e67 100644
--- a/daemon/augeas.c
+++ b/daemon/augeas.c
@@ -134,7 +134,7 @@ do_aug_init (const char *root, int flags)
}
/* Pass AUG_NO_ERR_CLOSE so we can display detailed errors. */
- aug = aug_init (buf, "/usr/share/guestfs/", flags | AUG_NO_ERR_CLOSE);
+ aug = aug_init (buf, NULL, flags | AUG_NO_ERR_CLOSE);
if (!aug) {
reply_with_error ("augeas initialization failed");
@@ -148,6 +148,8 @@ do_aug_init (const char *root, int flags)
return -1;
}
+ /* We already have the needed lenses in RHEL 7 */
+#if 0
if (!augeas_is_version (1, 2, 1)) {
int r = aug_transform (aug, "guestfs_shadow", "/etc/shadow",
0 /* = included */);
@@ -166,6 +168,7 @@ do_aug_init (const char *root, int flags)
}
}
}
+#endif
return 0;
}
diff --git a/daemon/lvm-filter.c b/daemon/lvm-filter.c
index 72fe6ac..d1e6466 100644
--- a/daemon/lvm-filter.c
+++ b/daemon/lvm-filter.c
@@ -122,7 +122,7 @@ set_filter (char *const *filters)
* but do that only after having applied the transformation.
*/
const int flags = AUG_NO_ERR_CLOSE | AUG_NO_LOAD;
- aug = aug_init (lvm_system_dir, "/usr/share/guestfs/", flags);
+ aug = aug_init (lvm_system_dir, NULL, flags);
if (!aug) {
reply_with_error ("augeas initialization failed");
return -1;
@@ -133,7 +133,7 @@ set_filter (char *const *filters)
return -1;
}
- r = aug_transform (aug, "guestfs_lvm_conf", "/lvm/lvm.conf",
+ r = aug_transform (aug, "lvm", "/lvm/lvm.conf",
0 /* = included */);
if (r == -1) {
AUGEAS_ERROR ("aug_transform");
_______________________________________________
Libguestfs mailing list
Libguestfs(a)redhat.com
https://www.redhat.com/mailman/listinfo/libguestfs
--
Richard Jones, Virtualization Group, Red Hat
http://people.redhat.com/~rjones
Read my programming and virtualization blog:
http://rwmj.wordpress.com
Fedora Windows cross-compiler. Compile Windows programs, test, and
build Windows installers. Over 100 libraries supported.
http://fedoraproject.org/wiki/MinGW