[lfs-patches] r2640 - in trunk: NetworkManager httpd mysql

krejzi at higgs.linuxfromscratch.org krejzi at higgs.linuxfromscratch.org
Sat Apr 27 11:03:55 PDT 2013


Author: krejzi
Date: Sat Apr 27 11:03:55 2013
New Revision: 2640

Log:
New patches.

Added:
   trunk/NetworkManager/NetworkManager-0.9.8.0-upstream_fixes-1.patch
   trunk/httpd/httpd-2.4.4-blfs_layout-1.patch
   trunk/mysql/mysql-5.6.11-embedded_library_shared-1.patch

Added: trunk/NetworkManager/NetworkManager-0.9.8.0-upstream_fixes-1.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/NetworkManager/NetworkManager-0.9.8.0-upstream_fixes-1.patch	Sat Apr 27 11:03:55 2013	(r2640)
@@ -0,0 +1,696 @@
+Submitted By:            Armin K. <krejzi at email dot com>
+Date:                    2013-04-27
+Initial Package Version: 0.9.8.0
+Upstream Status:         Fixed Upstream
+Origin:                  Upstream
+Description:             Varius fixes from upstream git repository.
+
+--- a/cli/src/devices.c	2013-02-20 21:56:15.000000000 +0100
++++ b/cli/src/devices.c	2013-04-27 13:18:27.262354256 +0200
+@@ -909,7 +909,7 @@
+ 			/* available-connections */
+ 			avail_cons = nm_device_get_available_connections (device);
+ 			ac_paths_str = g_string_new (NULL);
+-			if (avail_cons->len) {
++			if (avail_cons && avail_cons->len) {
+ 				ac_arr = g_new (char *, avail_cons->len + 1);
+ 				ac_arr[avail_cons->len] = NULL;
+ 			}
+--- a/libnm-glib/nm-device.c	2013-02-20 21:56:15.000000000 +0100
++++ b/libnm-glib/nm-device.c	2013-04-27 13:21:07.658452029 +0200
+@@ -1364,39 +1364,33 @@
+ 	return unescaped;
+ }
+ 
+-static void
+-_device_update_description (NMDevice *device)
++static char *
++_get_udev_property (NMDevice *device,
++                    const char *enc_prop,  /* ID_XXX_ENC */
++                    const char *db_prop)   /* ID_XXX_FROM_DATABASE */
+ {
+-	NMDevicePrivate *priv;
++	NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE (device);
+ 	const char *subsys[3] = { "net", "tty", NULL };
+ 	GUdevDevice *udev_device = NULL, *tmpdev, *olddev;
+ 	const char *ifname;
+ 	guint32 count = 0;
+-	const char *vendor, *model;
+-
+-	g_return_if_fail (NM_IS_DEVICE (device));
+-	priv = NM_DEVICE_GET_PRIVATE (device);
++	char *enc_value = NULL, *db_value = NULL;
+ 
+ 	if (!priv->client) {
+ 		priv->client = g_udev_client_new (subsys);
+ 		if (!priv->client)
+-			return;
++			return NULL;
+ 	}
+ 
+ 	ifname = nm_device_get_iface (device);
+ 	if (!ifname)
+-		return;
++		return NULL;
+ 
+ 	udev_device = g_udev_client_query_by_subsystem_and_name (priv->client, "net", ifname);
+ 	if (!udev_device)
+ 		udev_device = g_udev_client_query_by_subsystem_and_name (priv->client, "tty", ifname);
+ 	if (!udev_device)
+-		return;
+-
+-	g_free (priv->product);
+-	priv->product = NULL;
+-	g_free (priv->vendor);
+-	priv->vendor = NULL;
++		return NULL;
+ 
+ 	/* Walk up the chain of the device and its parents a few steps to grab
+ 	 * vendor and device ID information off it.
+@@ -1406,12 +1400,11 @@
+ 	 * as g_udev_device_get_parent() returns a ref-ed object.
+ 	 */
+ 	tmpdev = g_object_ref (udev_device);
+-	while ((count++ < 3) && tmpdev && (!priv->vendor || !priv->product)) {
+-		if (!priv->vendor)
+-			priv->vendor = get_decoded_property (tmpdev, "ID_VENDOR_ENC");
+-
+-		if (!priv->product)
+-			priv->product = get_decoded_property (tmpdev, "ID_MODEL_ENC");
++	while ((count++ < 3) && tmpdev && !enc_value) {
++		if (!enc_value)
++			enc_value = get_decoded_property (tmpdev, enc_prop);
++		if (!db_value)
++			db_value = g_strdup (g_udev_device_get_property (tmpdev, db_prop));
+ 
+ 		olddev = tmpdev;
+ 		tmpdev = g_udev_device_get_parent (tmpdev);
+@@ -1424,42 +1417,18 @@
+ 	if (tmpdev)
+ 		g_object_unref (tmpdev);
+ 
+-	/* If we didn't get strings directly from the device, try database strings */
++	/* Balance the initial g_udev_client_query_by_subsystem_and_name() */
++	g_object_unref (udev_device);
+ 
+-	/* Again, ref the original device as we need to unref it every iteration
+-	 * since g_udev_device_get_parent() returns a refed object.
++	/* Prefer the the encoded value which comes directly from the device
++	 * over the hwdata database value.
+ 	 */
+-	tmpdev = g_object_ref (udev_device);
+-	count = 0;
+-	while ((count++ < 3) && tmpdev && (!priv->vendor || !priv->product)) {
+-		if (!priv->vendor) {
+-			vendor = g_udev_device_get_property (tmpdev, "ID_VENDOR_FROM_DATABASE");
+-			if (vendor)
+-				priv->vendor = g_strdup (vendor);
+-		}
+-
+-		if (!priv->product) {
+-			model = g_udev_device_get_property (tmpdev, "ID_MODEL_FROM_DATABASE");
+-			if (model)
+-				priv->product = g_strdup (model);
+-		}
+-
+-		olddev = tmpdev;
+-		tmpdev = g_udev_device_get_parent (tmpdev);
+-		g_object_unref (olddev);
++	if (enc_value) {
++		g_free (db_value);
++		return enc_value;
+ 	}
+ 
+-	/* Unref the last device if we found what we needed before running out
+-	 * of parents.
+-	 */
+-	if (tmpdev)
+-		g_object_unref (tmpdev);
+-
+-	/* Balance the initial g_udev_client_query_by_subsystem_and_name() */
+-	g_object_unref (udev_device);
+-
+-	_nm_object_queue_notify (NM_OBJECT (device), NM_DEVICE_VENDOR);
+-	_nm_object_queue_notify (NM_OBJECT (device), NM_DEVICE_PRODUCT);
++	return db_value;
+ }
+ 
+ /**
+@@ -1479,8 +1448,10 @@
+ 	g_return_val_if_fail (NM_IS_DEVICE (device), NULL);
+ 
+ 	priv = NM_DEVICE_GET_PRIVATE (device);
+-	if (!priv->product)
+-		_device_update_description (device);
++	if (!priv->product) {
++		priv->product = _get_udev_property (device, "ID_MODEL_ENC", "ID_PRODUCT_FROM_DATABASE");
++		_nm_object_queue_notify (NM_OBJECT (device), NM_DEVICE_PRODUCT);
++	}
+ 	return priv->product;
+ }
+ 
+@@ -1501,8 +1472,10 @@
+ 	g_return_val_if_fail (NM_IS_DEVICE (device), NULL);
+ 
+ 	priv = NM_DEVICE_GET_PRIVATE (device);
+-	if (!priv->vendor)
+-		_device_update_description (device);
++	if (!priv->vendor) {
++		priv->vendor = _get_udev_property (device, "ID_VENDOR_ENC", "ID_VENDOR_FROM_DATABASE");
++		_nm_object_queue_notify (NM_OBJECT (device), NM_DEVICE_VENDOR);
++	}
+ 	return priv->vendor;
+ }
+ 
+--- a/libnm-glib/nm-object.c	2013-02-20 18:21:48.000000000 +0100
++++ b/libnm-glib/nm-object.c	2013-04-27 13:21:51.322529548 +0200
+@@ -1399,6 +1399,7 @@
+ 
+ 	if (!priv->property_interfaces && !priv->pseudo_properties) {
+ 		g_simple_async_result_complete_in_idle (simple);
++		g_object_unref (simple);
+ 		return;
+ 	}
+ 
+--- a/libnm-glib/nm-remote-connection.c	2013-02-20 21:56:15.000000000 +0100
++++ b/libnm-glib/nm-remote-connection.c	2013-04-27 13:21:30.238837272 +0200
+@@ -428,6 +428,7 @@
+ 	}
+ 
+ 	g_simple_async_result_complete (init_data->result);
++	g_object_unref (init_data->result);
+ 	g_slice_free (NMRemoteConnectionInitData, init_data);
+ }
+ 
+--- a/libnm-util/crypto.c	2013-02-20 21:01:55.000000000 +0100
++++ b/libnm-util/crypto.c	2013-04-27 13:20:24.984388188 +0200
+@@ -238,19 +238,25 @@
+ 		             _("Could not decode private key."));
+ 		goto parse_error;
+ 	}
++	g_string_free (str, TRUE);
+ 
+ 	if (lines)
+ 		g_strfreev (lines);
+ 
+ 	bindata = g_byte_array_sized_new (tmp_len);
+ 	g_byte_array_append (bindata, tmp, tmp_len);
++	g_free (tmp);
++
+ 	*out_iv = iv;
+ 	*out_cipher = cipher;
+ 	return bindata;
+ 
+ parse_error:
++	g_free (tmp);
+ 	g_free (cipher);
+ 	g_free (iv);
++	if (str)
++		g_string_free (str, TRUE);
+ 	if (lines)
+ 		g_strfreev (lines);
+ 	return NULL;
+--- a/libnm-util/nm-setting-8021x.c	2013-02-20 21:56:15.000000000 +0100
++++ b/libnm-util/nm-setting-8021x.c	2013-04-27 13:19:51.223807844 +0200
+@@ -538,29 +538,23 @@
+ 	data = crypto_load_and_verify_certificate (cert_path, &format, error);
+ 	if (data) {
+ 		/* wpa_supplicant can only use raw x509 CA certs */
+-		switch (format) {
+-		case NM_CRYPTO_FILE_FORMAT_X509:
++		if (format == NM_CRYPTO_FILE_FORMAT_X509) {
+ 			if (out_format)
+ 				*out_format = NM_SETTING_802_1X_CK_FORMAT_X509;
+-			break;
+-		default:
+-			g_byte_array_free (data, TRUE);
+-			data = NULL;
+-			g_set_error (error,
+-			             NM_SETTING_802_1X_ERROR,
+-			             NM_SETTING_802_1X_ERROR_INVALID_PROPERTY,
+-			             NM_SETTING_802_1X_CA_CERT);
+-			break;
+-		}
+ 
+-		if (data) {
+ 			if (scheme == NM_SETTING_802_1X_CK_SCHEME_BLOB)
+-				priv->ca_cert = data;
++				priv->ca_cert = g_byte_array_ref (data);
+ 			else if (scheme == NM_SETTING_802_1X_CK_SCHEME_PATH)
+ 				priv->ca_cert = path_to_scheme_value (cert_path);
+ 			else
+ 				g_assert_not_reached ();
++		} else {
++			g_set_error (error,
++			             NM_SETTING_802_1X_ERROR,
++			             NM_SETTING_802_1X_ERROR_INVALID_PROPERTY,
++			             NM_SETTING_802_1X_CA_CERT);
+ 		}
++		g_byte_array_unref (data);
+ 	}
+ 
+ 	return priv->ca_cert != NULL;
+@@ -818,19 +812,20 @@
+ 
+ 	data = crypto_load_and_verify_certificate (cert_path, &format, error);
+ 	if (data) {
+-		/* wpa_supplicant can only use raw x509 CA certs */
++		gboolean valid = FALSE;
++
+ 		switch (format) {
+ 		case NM_CRYPTO_FILE_FORMAT_X509:
+ 			if (out_format)
+ 				*out_format = NM_SETTING_802_1X_CK_FORMAT_X509;
++			valid = TRUE;
+ 			break;
+ 		case NM_CRYPTO_FILE_FORMAT_PKCS12:
+ 			if (out_format)
+ 				*out_format = NM_SETTING_802_1X_CK_FORMAT_PKCS12;
++			valid = TRUE;
+ 			break;
+ 		default:
+-			g_byte_array_free (data, TRUE);
+-			data = NULL;
+ 			g_set_error (error,
+ 			             NM_SETTING_802_1X_ERROR,
+ 			             NM_SETTING_802_1X_ERROR_INVALID_PROPERTY,
+@@ -838,14 +833,15 @@
+ 			break;
+ 		}
+ 
+-		if (data) {
++		if (valid) {
+ 			if (scheme == NM_SETTING_802_1X_CK_SCHEME_BLOB)
+-				priv->client_cert = data;
++				priv->client_cert = g_byte_array_ref (data);
+ 			else if (scheme == NM_SETTING_802_1X_CK_SCHEME_PATH)
+ 				priv->client_cert = path_to_scheme_value (cert_path);
+ 			else
+ 				g_assert_not_reached ();
+ 		}
++		g_byte_array_unref (data);
+ 	}
+ 
+ 	return priv->client_cert != NULL;
+@@ -1078,29 +1074,23 @@
+ 	data = crypto_load_and_verify_certificate (cert_path, &format, error);
+ 	if (data) {
+ 		/* wpa_supplicant can only use raw x509 CA certs */
+-		switch (format) {
+-		case NM_CRYPTO_FILE_FORMAT_X509:
++		if (format == NM_CRYPTO_FILE_FORMAT_X509) {
+ 			if (out_format)
+ 				*out_format = NM_SETTING_802_1X_CK_FORMAT_X509;
+-			break;
+-		default:
+-			g_byte_array_free (data, TRUE);
+-			data = NULL;
+-			g_set_error (error,
+-			             NM_SETTING_802_1X_ERROR,
+-			             NM_SETTING_802_1X_ERROR_INVALID_PROPERTY,
+-			             NM_SETTING_802_1X_PHASE2_CA_CERT);
+-			break;
+-		}
+ 
+-		if (data) {
+ 			if (scheme == NM_SETTING_802_1X_CK_SCHEME_BLOB)
+-				priv->phase2_ca_cert = data;
++				priv->phase2_ca_cert = g_byte_array_ref (data);
+ 			else if (scheme == NM_SETTING_802_1X_CK_SCHEME_PATH)
+ 				priv->phase2_ca_cert = path_to_scheme_value (cert_path);
+ 			else
+ 				g_assert_not_reached ();
++		} else {
++			g_set_error (error,
++			             NM_SETTING_802_1X_ERROR,
++			             NM_SETTING_802_1X_ERROR_INVALID_PROPERTY,
++			             NM_SETTING_802_1X_PHASE2_CA_CERT);
+ 		}
++		g_byte_array_unref (data);
+ 	}
+ 
+ 	return priv->phase2_ca_cert != NULL;
+@@ -1362,19 +1352,21 @@
+ 
+ 	data = crypto_load_and_verify_certificate (cert_path, &format, error);
+ 	if (data) {
++		gboolean valid = FALSE;
++
+ 		/* wpa_supplicant can only use raw x509 CA certs */
+ 		switch (format) {
+ 		case NM_CRYPTO_FILE_FORMAT_X509:
+ 			if (out_format)
+ 				*out_format = NM_SETTING_802_1X_CK_FORMAT_X509;
++			valid = TRUE;
+ 			break;
+ 		case NM_CRYPTO_FILE_FORMAT_PKCS12:
+ 			if (out_format)
+ 				*out_format = NM_SETTING_802_1X_CK_FORMAT_PKCS12;
++			valid = TRUE;
+ 			break;
+ 		default:
+-			g_byte_array_free (data, TRUE);
+-			data = NULL;
+ 			g_set_error (error,
+ 			             NM_SETTING_802_1X_ERROR,
+ 			             NM_SETTING_802_1X_ERROR_INVALID_PROPERTY,
+@@ -1382,14 +1374,15 @@
+ 			break;
+ 		}
+ 
+-		if (data) {
++		if (valid) {
+ 			if (scheme == NM_SETTING_802_1X_CK_SCHEME_BLOB)
+-				priv->phase2_client_cert = data;
++				priv->phase2_client_cert = g_byte_array_ref (data);
+ 			else if (scheme == NM_SETTING_802_1X_CK_SCHEME_PATH)
+ 				priv->phase2_client_cert = path_to_scheme_value (cert_path);
+ 			else
+ 				g_assert_not_reached ();
+ 		}
++		g_byte_array_unref (data);
+ 	}
+ 
+ 	return priv->phase2_client_cert != NULL;
+--- a/libnm-util/nm-setting-ip4-config.c	2013-02-20 21:56:15.000000000 +0100
++++ b/libnm-util/nm-setting-ip4-config.c	2013-04-27 13:21:40.442344407 +0200
+@@ -818,6 +818,8 @@
+ 	NMSettingIP4ConfigPrivate *priv = NM_SETTING_IP4_CONFIG_GET_PRIVATE (self);
+ 
+ 	g_free (priv->method);
++	g_free (priv->dhcp_hostname);
++	g_free (priv->dhcp_client_id);
+ 
+ 	g_array_free (priv->dns, TRUE);
+ 
+--- a/libnm-util/nm-setting-ip6-config.c	2013-02-20 21:56:15.000000000 +0100
++++ b/libnm-util/nm-setting-ip6-config.c	2013-04-27 13:21:40.442344407 +0200
+@@ -744,6 +744,8 @@
+ 	NMSettingIP6ConfigPrivate *priv = NM_SETTING_IP6_CONFIG_GET_PRIVATE (object);
+ 
+ 	g_free (priv->method);
++	g_free (priv->dhcp_hostname);
++
+ 	g_slist_free (priv->dns);
+ 
+ 	nm_utils_slist_free (priv->dns_search, g_free);
+--- a/libnm-util/nm-setting-pppoe.c	2013-02-20 21:56:15.000000000 +0100
++++ b/libnm-util/nm-setting-pppoe.c	2013-04-27 13:20:14.787546471 +0200
+@@ -258,6 +258,18 @@
+ }
+ 
+ static void
++finalize (GObject *object)
++{
++	NMSettingPPPOEPrivate *priv = NM_SETTING_PPPOE_GET_PRIVATE (object);
++
++	g_free (priv->username);
++	g_free (priv->password);
++	g_free (priv->service);
++
++	G_OBJECT_CLASS (nm_setting_pppoe_parent_class)->finalize (object);
++}
++
++static void
+ nm_setting_pppoe_class_init (NMSettingPPPOEClass *setting_class)
+ {
+ 	GObjectClass *object_class = G_OBJECT_CLASS (setting_class);
+@@ -268,6 +280,7 @@
+ 	/* virtual methods */
+ 	object_class->set_property = set_property;
+ 	object_class->get_property = get_property;
++	object_class->finalize     = finalize;
+ 	parent_class->verify       = verify;
+ 	parent_class->need_secrets = need_secrets;
+ 
+--- a/libnm-util/nm-setting-vlan.c	2013-02-20 21:56:15.000000000 +0100
++++ b/libnm-util/nm-setting-vlan.c	2013-04-27 13:23:56.631315885 +0200
+@@ -407,8 +407,8 @@
+ 	list = get_map (setting, map);
+ 	g_return_if_fail (idx < g_slist_length (list));
+ 
+-	item = g_slist_nth_data (list, idx);
+-	priority_map_free ((PriorityMap *) item);
++	item = g_slist_nth (list, idx);
++	priority_map_free ((PriorityMap *) (item->data));
+ 	set_map (setting, map, g_slist_delete_link (list, item));
+ }
+ 
+--- a/libnm-util/nm-setting-wired.c	2013-02-20 21:56:15.000000000 +0100
++++ b/libnm-util/nm-setting-wired.c	2013-04-27 13:19:42.193652234 +0200
+@@ -537,6 +537,11 @@
+ 
+ 	nm_utils_slist_free (priv->mac_address_blacklist, g_free);
+ 
++	if (priv->s390_subchannels) {
++		g_ptr_array_foreach (priv->s390_subchannels, (GFunc) g_free, NULL);
++		g_ptr_array_free (priv->s390_subchannels, TRUE);
++	}
++
+ 	G_OBJECT_CLASS (nm_setting_wired_parent_class)->finalize (object);
+ }
+ 
+--- a/src/dns-manager/nm-dns-manager.c	2013-02-20 21:56:16.000000000 +0100
++++ b/src/dns-manager/nm-dns-manager.c	2013-04-27 13:22:19.423006855 +0200
+@@ -561,7 +561,6 @@
+ 			nm_ip6_config_hash (NM_IP6_CONFIG (iter->data), sum, TRUE);
+ 	}
+ 
+-	memset (buffer, 0, sizeof (buffer));
+ 	g_checksum_get_digest (sum, buffer, &len);
+ 	g_checksum_free (sum);
+ }
+--- a/src/ip6-manager/nm-ip6-manager.c	2013-02-20 21:56:16.000000000 +0100
++++ b/src/ip6-manager/nm-ip6-manager.c	2013-04-27 13:18:57.319543075 +0200
+@@ -455,7 +455,7 @@
+ 
+ 		nm_ip6_manager_cancel_addrconf (manager, ifindex);
+ 		g_signal_emit (manager, signals[ADDRCONF_COMPLETE], 0,
+-		               ifindex, device->dhcp_opts, FALSE);
++		               ifindex, IP6_DHCP_OPT_NONE, FALSE);
+ 	}
+ 
+ 	return FALSE;
+--- a/src/nm-device.c	2013-02-20 21:56:16.000000000 +0100
++++ b/src/nm-device.c	2013-04-27 13:24:10.141543160 +0200
+@@ -4526,8 +4526,7 @@
+ 		g_value_set_uint (value, priv->state);
+ 		break;
+ 	case PROP_STATE_REASON:
+-		g_value_set_boxed (value,
+-			dbus_g_type_specialized_construct (DBUS_G_TYPE_UINT_STRUCT));
++		g_value_take_boxed (value, dbus_g_type_specialized_construct (DBUS_G_TYPE_UINT_STRUCT));
+ 		dbus_g_type_struct_set (value,
+ 		                        0, priv->state,
+ 		                        1, priv->state_reason,
+@@ -5525,6 +5524,7 @@
+ 			g_hash_table_insert (NM_DEVICE_GET_PRIVATE (self)->available_connections,
+ 					             g_object_ref (connection),
+ 					             GUINT_TO_POINTER (1));
++			return TRUE;
+ 		}
+ 	}
+ 	return FALSE;
+--- a/src/nm-device-ethernet.c	2013-02-20 21:56:16.000000000 +0100
++++ b/src/nm-device-ethernet.c	2013-04-27 13:22:49.270179194 +0200
+@@ -439,7 +439,7 @@
+ 	errno = 0;
+ 	ret = ioctl (fd, SIOCETHTOOL, &req);
+ 	if ((ret < 0) || !nm_ethernet_address_is_valid ((struct ether_addr *) epaddr->data)) {
+-		nm_log_err (LOGD_HW | LOGD_ETHER, "(%s): unable to read permanent MAC address (error %d)",
++		nm_log_dbg (LOGD_HW | LOGD_ETHER, "(%s): unable to read permanent MAC address (error %d)",
+ 		            nm_device_get_iface (dev), errno);
+ 		/* Fall back to current address */
+ 		memcpy (epaddr->data, priv->hw_addr, ETH_ALEN);
+--- a/src/nm-device-wifi.c	2013-02-20 21:56:16.000000000 +0100
++++ b/src/nm-device-wifi.c	2013-04-27 13:23:34.177604322 +0200
+@@ -1125,11 +1125,11 @@
+ 
+ 	s_wifi = nm_connection_get_setting_wireless (connection);
+ 
+-	/* Ad-Hoc connections are always available because they may be started
+-	 * at any time.
++	/* Ad-Hoc and AP connections are always available because they may be
++	 * started at any time.
+ 	 */
+ 	mode = nm_setting_wireless_get_mode (s_wifi);
+-	if (g_strcmp0 (mode, "adhoc") == 0)
++	if (g_strcmp0 (mode, "adhoc") == 0 || g_strcmp0 (mode, "ap") == 0)
+ 		return TRUE;
+ 
+ 	/* Hidden SSIDs obviously don't always appear in the scan list either */
+@@ -2887,7 +2887,7 @@
+ 	errno = 0;
+ 	ret = ioctl (fd, SIOCETHTOOL, &req);
+ 	if ((ret < 0) || !nm_ethernet_address_is_valid ((struct ether_addr *) epaddr->data)) {
+-		nm_log_err (LOGD_HW | LOGD_ETHER, "(%s): unable to read permanent MAC address (error %d)",
++		nm_log_dbg (LOGD_HW | LOGD_ETHER, "(%s): unable to read permanent MAC address (error %d)",
+ 		            nm_device_get_iface (dev), errno);
+ 		/* Fall back to current address */
+ 		memcpy (epaddr->data, &priv->hw_addr, ETH_ALEN);
+--- a/src/nm-manager.c	2013-02-20 21:56:16.000000000 +0100
++++ b/src/nm-manager.c	2013-04-27 13:21:20.178665743 +0200
+@@ -215,6 +215,7 @@
+ #endif
+ 
+ 	NMDBusManager *dbus_mgr;
++	guint          dbus_connection_changed_id;
+ 	NMUdevManager *udev_mgr;
+ 	NMBluezManager *bluez_mgr;
+ 
+@@ -4245,6 +4246,7 @@
+ 		g_assert (dbus_connection);
+ 		dbus_connection_remove_filter (dbus_connection, prop_filter, manager);
+ 	}
++	g_signal_handler_disconnect (priv->dbus_mgr, priv->dbus_connection_changed_id);
+ 	g_object_unref (priv->dbus_mgr);
+ 
+ 	if (priv->bluez_mgr)
+@@ -4492,6 +4494,26 @@
+ }
+ 
+ static void
++dbus_connection_changed_cb (NMDBusManager *dbus_mgr,
++                            DBusGConnection *connection,
++                            gpointer user_data)
++{
++	NMManager *self = NM_MANAGER (user_data);
++	DBusConnection *dbus_connection;
++
++	if (connection) {
++		dbus_connection = dbus_g_connection_get_connection (connection);
++		g_assert (dbus_connection);
++
++		/* Register property filter on new connection; there's no reason this
++		 * should fail except out-of-memory or program error; if it does fail
++		 * then there's no Manager property access control, which is bad.
++		 */
++		g_assert (dbus_connection_add_filter (dbus_connection, prop_filter, self, NULL));
++	}
++}
++
++static void
+ nm_manager_init (NMManager *manager)
+ {
+ 	NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE (manager);
+@@ -4533,6 +4555,10 @@
+ 	priv->state = NM_STATE_DISCONNECTED;
+ 
+ 	priv->dbus_mgr = nm_dbus_manager_get ();
++	priv->dbus_connection_changed_id = g_signal_connect (priv->dbus_mgr,
++	                                                     NM_DBUS_MANAGER_DBUS_CONNECTION_CHANGED,
++	                                                     G_CALLBACK (dbus_connection_changed_cb),
++	                                                     manager);
+ 
+ 	priv->modem_manager = nm_modem_manager_get ();
+ 	priv->modem_added_id = g_signal_connect (priv->modem_manager, "modem-added",
+--- a/src/settings/plugins/keyfile/reader.c	2013-02-20 21:56:16.000000000 +0100
++++ b/src/settings/plugins/keyfile/reader.c	2013-04-27 13:23:46.174473155 +0200
+@@ -1157,15 +1157,23 @@
+ 
+ 	/* Make sure that we have the base device type setting even if
+ 	 * the keyfile didn't include it, which can happen when the base
+-	 * device type setting is all default values (like ethernet).
++	 * device type setting is all default values (like ethernet where
++	 * the MAC address isn't given, or VLAN when the VLAN ID is zero).
+ 	 */
+ 	s_con = nm_connection_get_setting_connection (connection);
+ 	if (s_con) {
+ 		ctype = nm_setting_connection_get_connection_type (s_con);
+ 		setting = nm_connection_get_setting_by_name (connection, ctype);
+-		if (ctype) {
+-			if (!setting && !strcmp (ctype, NM_SETTING_WIRED_SETTING_NAME))
+-				nm_connection_add_setting (connection, nm_setting_wired_new ());
++		if (ctype && !setting) {
++			NMSetting *base_setting;
++			GType base_setting_type;
++
++			base_setting_type = nm_connection_lookup_setting_type (ctype);
++			if (base_setting_type != G_TYPE_INVALID) {
++				base_setting = (NMSetting *) g_object_new (base_setting_type, NULL);
++				g_assert (base_setting);
++				nm_connection_add_setting (connection, base_setting);
++			}
+ 		}
+ 	}
+ 
+--- a/src/settings/plugins/keyfile/tests/keyfiles/Makefile.am	2013-02-20 21:56:16.000000000 +0100
++++ b/src/settings/plugins/keyfile/tests/keyfiles/Makefile.am	2013-04-27 13:23:46.174473155 +0200
+@@ -16,7 +16,8 @@
+ 	Test_Wired_TLS_Path_Missing \
+ 	Test_InfiniBand_Connection \
+ 	Test_Bridge_Main \
+-	Test_Bridge_Component
++	Test_Bridge_Component \
++	Test_Missing_Vlan_Setting
+ 
+ CERTS = \
+ 	test-ca-cert.pem \
+--- a/src/settings/plugins/keyfile/tests/keyfiles/Test_Missing_Vlan_Setting	1970-01-01 01:00:00.000000000 +0100
++++ b/src/settings/plugins/keyfile/tests/keyfiles/Test_Missing_Vlan_Setting	2013-04-27 13:23:46.177806544 +0200
+@@ -0,0 +1,11 @@
++# Settings with all default values are not written, including
++# VLAN settings with a VLAN ID of 0, which is the default value.
++
++[connection]
++id=Test Missing Vlan Setting
++uuid=4e80a56d-c99f-4aad-a6dd-b449bc398c57
++type=vlan
++autoconnect=true
++
++[802-3-ethernet]
++mac-address=00:11:22:33:44:55
+--- a/src/settings/plugins/keyfile/tests/test-keyfile.c	2013-02-20 21:56:16.000000000 +0100
++++ b/src/settings/plugins/keyfile/tests/test-keyfile.c	2013-04-27 13:23:46.177806544 +0200
+@@ -1193,11 +1193,8 @@
+ 	        TEST_STRING_SSID_FILE,
+ 	        NM_SETTING_WIRELESS_SETTING_NAME,
+ 	        NM_SETTING_WIRELESS_SSID);
+-	ASSERT (memcmp (array->data, expected_ssid, sizeof (expected_ssid)) == 0,
+-	        "connection-verify-wireless", "failed to verify %s: unexpected %s / %s key value",
+-	        TEST_STRING_SSID_FILE,
+-	        NM_SETTING_WIRELESS_SETTING_NAME,
+-	        NM_SETTING_WIRELESS_SSID);
++	g_assert_cmpint (array->len, ==, strlen (expected_ssid));
++	g_assert (memcmp (array->data, expected_ssid, array->len) == 0);
+ 
+ 	g_object_unref (connection);
+ }
+@@ -3078,6 +3075,28 @@
+ 	g_object_unref (connection);
+ }
+ 
++static void
++test_read_missing_vlan_setting (void)
++{
++	NMConnection *connection;
++	NMSettingVlan *s_vlan;
++	GError *error = NULL;
++	gboolean success;
++
++	connection = nm_keyfile_plugin_connection_from_file (TEST_KEYFILES_DIR"/Test_Missing_Vlan_Setting", &error);
++	g_assert_no_error (error);
++	g_assert (connection);
++	success = nm_connection_verify (connection, &error);
++	g_assert_no_error (error);
++	g_assert (success);
++
++	/* Ensure the VLAN setting exists */
++	s_vlan = nm_connection_get_setting_vlan (connection);
++	g_assert (s_vlan);
++	g_assert_cmpint (nm_setting_vlan_get_id (s_vlan), ==, 0);
++
++	g_object_unref (connection);
++}
+ 
+ int main (int argc, char **argv)
+ {
+@@ -3135,6 +3154,8 @@
+ 	test_read_bridge_component ();
+ 	test_write_bridge_component ();
+ 
++	test_read_missing_vlan_setting ();
++
+ 	base = g_path_get_basename (argv[0]);
+ 	fprintf (stdout, "%s: SUCCESS\n", base);
+ 	g_free (base);

Added: trunk/httpd/httpd-2.4.4-blfs_layout-1.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/httpd/httpd-2.4.4-blfs_layout-1.patch	Sat Apr 27 11:03:55 2013	(r2640)
@@ -0,0 +1,290 @@
+Submitted By:            Armin K. <krejzi at email dot com>
+Date:                    2013-04-17
+Initial Package Version: 2.4.4
+Upstream Status:         Not applicable
+Origin:                  Self
+Description:             Patches the build system to install stuff into BLFS
+                         specific paths, and adjusts proper permissions
+                         on installed files and directories.
+
+diff -Naur a/config.layout b/config.layout
+--- a/config.layout	2012-04-17 16:01:41.000000000 +0200
++++ b/config.layout	2013-04-17 18:05:34.731598732 +0200
+@@ -9,6 +9,30 @@
+ ##    (This may become a configurable parameter at some point.)
+ ##
+ 
++<Layout BLFS>
++    prefix:
++    exec_prefix:     ${prefix}/usr
++    bindir:          ${exec_prefix}/bin
++    sbindir:         ${exec_prefix}/sbin
++    libdir:          ${exec_prefix}/lib
++    libexecdir:      ${exec_prefix}/lib/httpd/modules
++    mandir:          ${exec_prefix}/share/man
++    sysconfdir:      ${prefix}/etc/httpd
++    datadir:         ${exec_prefix}/share/httpd
++    iconsdir:        ${datadir}/icons
++    htdocsdir:       ${prefix}/srv/www
++    manualdir:       ${datadir}/manual
++    cgidir:          ${exec_prefix}/lib/httpd/cgi-bin
++    includedir:      ${exec_prefix}/include/httpd
++    localstatedir:   ${prefix}/var/lock/httpd
++    runtimedir:      ${prefix}/var/run/httpd
++    logfiledir:      ${prefix}/var/log/httpd
++    proxycachedir:   ${prefix}/var/cache/httpd/proxy
++    infodir:         ${exec_prefix}/share/info
++    installbuilddir: ${datadir}/build
++    errordir:        ${datadir}/error
++</Layout>
++
+ #   Classical Apache path layout.
+ <Layout Apache>
+     prefix:        /usr/local/apache2
+diff -Naur a/configure b/configure
+--- a/configure	2013-02-18 21:28:23.000000000 +0100
++++ b/configure	2013-04-17 18:04:12.603612701 +0200
+@@ -32270,17 +32270,17 @@
+ 
+ 
+ cat >>confdefs.h <<_ACEOF
+-#define HTTPD_ROOT "${ap_prefix}"
++#define HTTPD_ROOT "/etc/httpd"
+ _ACEOF
+ 
+ 
+ cat >>confdefs.h <<_ACEOF
+-#define SERVER_CONFIG_FILE "${rel_sysconfdir}/${progname}.conf"
++#define SERVER_CONFIG_FILE "${progname}.conf"
+ _ACEOF
+ 
+ 
+ cat >>confdefs.h <<_ACEOF
+-#define AP_TYPES_CONFIG_FILE "${rel_sysconfdir}/mime.types"
++#define AP_TYPES_CONFIG_FILE "mime.types"
+ _ACEOF
+ 
+ 
+diff -Naur a/configure.in b/configure.in
+--- a/configure.in	2013-01-09 17:39:05.000000000 +0100
++++ b/configure.in	2013-04-17 18:04:12.603612701 +0200
+@@ -818,11 +818,11 @@
+ echo $MODLIST | $AWK -f $srcdir/build/build-modules-c.awk > modules.c
+ 
+ APR_EXPAND_VAR(ap_prefix, $prefix)
+-AC_DEFINE_UNQUOTED(HTTPD_ROOT, "${ap_prefix}",
++AC_DEFINE_UNQUOTED(HTTPD_ROOT, "/etc/httpd",
+ 	[Root directory of the Apache install area])
+-AC_DEFINE_UNQUOTED(SERVER_CONFIG_FILE, "${rel_sysconfdir}/${progname}.conf",
++AC_DEFINE_UNQUOTED(SERVER_CONFIG_FILE, "${progname}.conf",
+ 	[Location of the config file, relative to the Apache root directory])
+-AC_DEFINE_UNQUOTED(AP_TYPES_CONFIG_FILE, "${rel_sysconfdir}/mime.types",
++AC_DEFINE_UNQUOTED(AP_TYPES_CONFIG_FILE, "mime.types",
+ 	[Location of the MIME types config file, relative to the Apache root directory])
+ 
+ perlbin=`$ac_aux_dir/PrintPath perl`
+diff -Naur a/docs/conf/httpd.conf.in b/docs/conf/httpd.conf.in
+--- a/docs/conf/httpd.conf.in	2012-11-08 04:05:38.000000000 +0100
++++ b/docs/conf/httpd.conf.in	2013-04-17 18:04:12.606946089 +0200
+@@ -28,7 +28,7 @@
+ # same ServerRoot for multiple httpd daemons, you will need to change at
+ # least PidFile.
+ #
+-ServerRoot "@@ServerRoot@@"
++#ServerRoot "@@ServerRoot@@"
+ 
+ #
+ # Mutex: Allows you to set the mutex mechanism and mutex file directory
+@@ -74,8 +74,8 @@
+ # It is usually good practice to create a dedicated user and group for
+ # running httpd, as with most system services.
+ #
+-User daemon
+-Group daemon
++User apache
++Group apache
+ 
+ </IfModule>
+ 
+@@ -96,7 +96,7 @@
+ # e-mailed.  This address appears on some server-generated pages, such
+ # as error documents.  e.g. admin at your-domain.com
+ #
+-ServerAdmin you at example.com
++ServerAdmin admin at localhost
+ 
+ #
+ # ServerName gives the name and port that the server uses to identify itself.
+@@ -105,7 +105,7 @@
+ #
+ # If your host doesn't have a registered DNS name, enter its IP address here.
+ #
+-#ServerName www.example.com:@@Port@@
++#ServerName localhost:@@Port@@
+ 
+ #
+ # Deny access to the entirety of your server's filesystem. You must
+@@ -181,7 +181,7 @@
+ # logged here.  If you *do* define an error logfile for a <VirtualHost>
+ # container, that host's errors will be logged there and not here.
+ #
+-ErrorLog "@rel_logfiledir@/error_log"
++ErrorLog "@rel_logfiledir@/error.log"
+ 
+ #
+ # LogLevel: Control the number of messages logged to the error_log.
+@@ -210,13 +210,13 @@
+     # define per-<VirtualHost> access logfiles, transactions will be
+     # logged therein and *not* in this file.
+     #
+-    CustomLog "@rel_logfiledir@/access_log" common
++    CustomLog "@rel_logfiledir@/access.log" common
+ 
+     #
+     # If you prefer a logfile with access, agent, and referer information
+     # (Combined Logfile Format) you can use the following directive.
+     #
+-    #CustomLog "@rel_logfiledir@/access_log" combined
++    #CustomLog "@rel_logfiledir@/access.log" combined
+ </IfModule>
+ 
+ <IfModule alias_module>
+diff -Naur a/include/ap_config_layout.h.in b/include/ap_config_layout.h.in
+--- a/include/ap_config_layout.h.in	2006-07-11 22:55:32.000000000 +0200
++++ b/include/ap_config_layout.h.in	2013-04-17 18:04:12.606946089 +0200
+@@ -60,5 +60,6 @@
+ #define DEFAULT_REL_LOGFILEDIR "@rel_logfiledir@"
+ #define DEFAULT_EXP_PROXYCACHEDIR "@exp_proxycachedir@"
+ #define DEFAULT_REL_PROXYCACHEDIR "@rel_proxycachedir@"
++#define DEFAULT_PIDLOG "/var/run/httpd/httpd.pid"
+ 
+ #endif /* AP_CONFIG_LAYOUT_H */
+diff -Naur a/include/httpd.h b/include/httpd.h
+--- a/include/httpd.h	2013-01-28 14:09:39.000000000 +0100
++++ b/include/httpd.h	2013-04-17 18:04:12.606946089 +0200
+@@ -109,7 +109,7 @@
+ #define DOCUMENT_LOCATION  HTTPD_ROOT "/docs"
+ #else
+ /* Set default for non OS/2 file system */
+-#define DOCUMENT_LOCATION  HTTPD_ROOT "/htdocs"
++#define DOCUMENT_LOCATION  "/srv/www"
+ #endif
+ #endif /* DOCUMENT_LOCATION */
+ 
+diff -Naur a/Makefile.in b/Makefile.in
+--- a/Makefile.in	2012-12-17 12:50:41.000000000 +0100
++++ b/Makefile.in	2013-04-17 18:04:12.606946089 +0200
+@@ -91,9 +91,9 @@
+ 	    done ; \
+ 	done ; \
+ 	if test -f "$(builddir)/envvars-std"; then \
+-	    cp -p envvars-std $(DESTDIR)$(sbindir); \
+-	    if test ! -f $(DESTDIR)$(sbindir)/envvars; then \
+-	        cp -p envvars-std $(DESTDIR)$(sbindir)/envvars ; \
++	    install -o root -g root -m644 envvars-std $(DESTDIR)$(installbuilddir); \
++	    if test ! -f $(DESTDIR)$(sysconfdir)/envvars; then \
++	        install -o root -g root -m644 envvars-std $(DESTDIR)$(sysconfdir)/envvars ; \
+ 	    fi ; \
+ 	fi
+ 
+@@ -145,7 +145,7 @@
+ 	    if test -d $(htdocs-srcdir) && test "x$(RSYNC)" != "x" && test -x $(RSYNC) ; then \
+ 		$(RSYNC) --exclude .svn -rlpt --numeric-ids $(htdocs-srcdir)/ $(DESTDIR)$(htdocsdir)/; \
+ 	    else \
+-		test -d $(htdocs-srcdir) && (cd $(htdocs-srcdir) && cp -rp * $(DESTDIR)$(htdocsdir)) ; \
++		test -d $(htdocs-srcdir) && (cd $(htdocs-srcdir) && cp -rp * $(DESTDIR)$(htdocsdir) && chown -R root:root $(DESTDIR)$(htdocsdir)) ; \
+ 		cd $(DESTDIR)$(htdocsdir) && find . -name ".svn" -type d -print | xargs rm -rf 2>/dev/null || true; \
+ 	    fi; \
+ 	fi
+@@ -156,7 +156,7 @@
+         else \
+ 	    echo Installing error documents ; \
+ 	    $(MKINSTALLDIRS) $(DESTDIR)$(errordir) ; \
+-	    cd $(top_srcdir)/docs/error && cp -rp * $(DESTDIR)$(errordir) ; \
++	    cd $(top_srcdir)/docs/error && cp -rp * $(DESTDIR)$(errordir) && chown -R root:root $(DESTDIR)$(errordir); \
+ 	    test "x$(errordir)" != "x" && cd $(DESTDIR)$(errordir) && find . -name ".svn" -type d -print | xargs rm -rf 2>/dev/null || true; \
+ 	fi
+ 
+@@ -166,7 +166,7 @@
+         else \
+ 	    echo Installing icons ; \
+ 	    $(MKINSTALLDIRS) $(DESTDIR)$(iconsdir) ; \
+-	    cd $(top_srcdir)/docs/icons && cp -rp * $(DESTDIR)$(iconsdir) ; \
++	    cd $(top_srcdir)/docs/icons && cp -rp * $(DESTDIR)$(iconsdir) && chown -R root:root $(DESTDIR)$(iconsdir); \
+ 	    test "x$(iconsdir)" != "x" && cd $(DESTDIR)$(iconsdir) && find . -name ".svn" -type d -print | xargs rm -rf 2>/dev/null || true; \
+ 	fi
+ 
+@@ -176,7 +176,7 @@
+ 	else \
+ 	   echo Installing CGIs ; \
+ 	   $(MKINSTALLDIRS) $(DESTDIR)$(cgidir) ; \
+-	   cd $(top_srcdir)/docs/cgi-examples && cp -rp * $(DESTDIR)$(cgidir) ; \
++	   cd $(top_srcdir)/docs/cgi-examples && cp -rp * $(DESTDIR)$(cgidir) && chown -R root:root $(DESTDIR)$(cgidir); \
+ 	   test "x$(cgidir)" != "x" && cd $(DESTDIR)$(cgidir) && find . -name ".svn" -type d -print | xargs rm -rf 2>/dev/null || true; \
+ 	fi
+ 
+@@ -229,12 +229,12 @@
+ 	@test -d $(DESTDIR)$(mandir)/man1 || $(MKINSTALLDIRS) $(DESTDIR)$(mandir)/man1
+ 	@test -d $(DESTDIR)$(mandir)/man8 || $(MKINSTALLDIRS) $(DESTDIR)$(mandir)/man8
+ 	@test -d $(DESTDIR)$(manualdir)   || $(MKINSTALLDIRS) $(DESTDIR)$(manualdir)
+-	@cp -p $(top_srcdir)/docs/man/*.1 $(DESTDIR)$(mandir)/man1
+-	@cp -p $(top_srcdir)/docs/man/*.8 $(DESTDIR)$(mandir)/man8
++	@install -o root -g root -m644 $(top_srcdir)/docs/man/*.1 $(DESTDIR)$(mandir)/man1
++	@install -o root -g root -m644 $(top_srcdir)/docs/man/*.8 $(DESTDIR)$(mandir)/man8
+ 	@if test "x$(RSYNC)" != "x" && test -x $(RSYNC) ; then \
+ 	  $(RSYNC) --exclude .svn -rlpt --numeric-ids $(top_srcdir)/docs/manual/ $(DESTDIR)$(manualdir)/; \
+ 	else \
+-	  cd $(top_srcdir)/docs/manual && cp -rp * $(DESTDIR)$(manualdir); \
++	  cd $(top_srcdir)/docs/manual && cp -rp * $(DESTDIR)$(manualdir) && chown -R root:root $(DESTDIR)$(manualdir); \
+ 	  cd $(DESTDIR)$(manualdir) && find . -name ".svn" -type d -print | xargs rm -rf 2>/dev/null || true; \
+ 	fi
+ 
+diff -Naur a/support/apachectl.in b/support/apachectl.in
+--- a/support/apachectl.in	2012-02-01 04:47:28.000000000 +0100
++++ b/support/apachectl.in	2013-04-17 18:04:12.606946089 +0200
+@@ -45,8 +45,8 @@
+ HTTPD='@exp_sbindir@/@progname@'
+ #
+ # pick up any necessary environment variables
+-if test -f @exp_sbindir@/envvars; then
+-  . @exp_sbindir@/envvars
++if test -f @exp_sysconfdir@/envvars; then
++  . @exp_sysconfdir@/envvars
+ fi
+ #
+ # a command that outputs a formatted text version of the HTML at the
+diff -Naur a/support/Makefile.in b/support/Makefile.in
+--- a/support/Makefile.in	2012-12-11 11:37:25.000000000 +0100
++++ b/support/Makefile.in	2013-04-17 18:04:12.610279475 +0200
+@@ -16,23 +16,23 @@
+ 	@test -d $(DESTDIR)$(bindir) || $(MKINSTALLDIRS) $(DESTDIR)$(bindir)
+ 	@test -d $(DESTDIR)$(sbindir) || $(MKINSTALLDIRS) $(DESTDIR)$(sbindir)
+ 	@test -d $(DESTDIR)$(libexecdir) || $(MKINSTALLDIRS) $(DESTDIR)$(libexecdir)
+-	@cp -p $(top_builddir)/server/httpd.exp $(DESTDIR)$(libexecdir)
++	@test -d $(DESTDIR)$(sysconfdir) || $(MKINSTALLDIRS) $(DESTDIR)$(sysconfdir)
++	@test -d $(DESTDIR)$(installbuilddir) || $(MKINSTALLDIRS) $(DESTDIR)$(installbuilddir)
++	@install -o root -g root -m644 $(top_builddir)/server/httpd.exp $(DESTDIR)$(libexecdir)
+ 	@for i in apxs dbmmanage; do \
+ 	    if test -f "$(builddir)/$$i"; then \
+-	        cp -p $$i $(DESTDIR)$(bindir); \
+-	        chmod 755 $(DESTDIR)$(bindir)/$$i; \
++	        install -o root -g root -m755 $$i $(DESTDIR)$(bindir); \
+ 	    fi ; \
+ 	done
+ 	@for i in apachectl; do \
+ 	    if test -f "$(builddir)/$$i"; then \
+-	        cp -p $$i $(DESTDIR)$(sbindir); \
+-	        chmod 755 $(DESTDIR)$(sbindir)/$$i; \
++	        install -o root -g root -m755 $$i $(DESTDIR)$(sbindir); \
+ 	    fi ; \
+ 	done
+ 	@if test -f "$(builddir)/envvars-std"; then \
+-	    cp -p envvars-std $(DESTDIR)$(sbindir); \
+-	    if test ! -f $(DESTDIR)$(sbindir)/envvars; then \
+-	        cp -p envvars-std $(DESTDIR)$(sbindir)/envvars ; \
++	    install -o root -g root -m644 envvars-std $(DESTDIR)$(installbuilddir); \
++	    if test ! -f $(DESTDIR)$(sysconfdir)/envvars; then \
++	        install -o root -g root -m644 envvars-std $(DESTDIR)$(sysconfdir)/envvars ; \
+ 	    fi ; \
+ 	fi
+ 

Added: trunk/mysql/mysql-5.6.11-embedded_library_shared-1.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/mysql/mysql-5.6.11-embedded_library_shared-1.patch	Sat Apr 27 11:03:55 2013	(r2640)
@@ -0,0 +1,48 @@
+Submitted By: Ragnar Thomsen (rthomsen at linuxfromscratch dot org)
+Date: 2012-03-21
+Initial Package Version: 5.5.17
+Origin: Gentoo Git
+Description: Fixes mysql to build a shared version of the embedded server library (libmysqld.so) used by amarok2
+
+--- a/cmake/libutils.cmake	2013-04-05 14:27:18.000000000 +0200
++++ b/cmake/libutils.cmake	2013-04-27 13:38:52.806295199 +0200
+@@ -269,6 +269,16 @@
+     MYSQL_INSTALL_TARGETS(${TARGET} DESTINATION "${INSTALL_LIBDIR}" ${COMP})
+   ENDIF()
+   SET_TARGET_PROPERTIES(${TARGET} PROPERTIES LINK_INTERFACE_LIBRARIES "")
++
++  IF(ARG_SHARED AND LINK_FLAG_NO_UNDEFINED)
++    # Do not allow undefined symbols in shared libraries
++    GET_TARGET_PROPERTY(TARGET_LINK_FLAGS ${TARGET} LINK_FLAGS)
++    IF(NOT TARGET_LINK_FLAGS)
++      SET(TARGET_LINK_FLAGS)
++    ENDIF()
++    SET_TARGET_PROPERTIES(${TARGET} PROPERTIES LINK_FLAGS 
++      "${TARGET_LINK_FLAGS} ${LINK_FLAG_NO_UNDEFINED}")
++  ENDIF() 
+ ENDMACRO()
+ 
+ FUNCTION(GET_DEPENDEND_OS_LIBS target result)
+--- a/libmysqld/CMakeLists.txt	2013-04-05 14:27:18.000000000 +0200
++++ b/libmysqld/CMakeLists.txt	2013-04-27 13:38:52.806295199 +0200
+@@ -125,7 +125,17 @@
+   ${CMAKE_STATIC_LIBRARY_PREFIX}mysqld-debug)
+ ENDIF()
+ 
+-IF(MSVC AND NOT DISABLE_SHARED)
+-  MERGE_LIBRARIES(libmysqld SHARED ${LIBS} EXPORTS ${CLIENT_API_FUNCTIONS}
+-  COMPONENT Embedded)
++IF(NOT DISABLE_SHARED)
++  MERGE_LIBRARIES(libmysqld SHARED mysqlserver EXPORTS ${CLIENT_API_FUNCTIONS})
++  IF(UNIX)
++    # Name the shared library, handle versioning (provides same api as client library
++    # hence the same version)
++    SET_TARGET_PROPERTIES(libmysqld PROPERTIES 
++      OUTPUT_NAME mysqld 
++      VERSION "${SHARED_LIB_MAJOR_VERSION}.0.0" 
++      SOVERSION "${SHARED_LIB_MAJOR_VERSION}")
++    # Clean direct output flags, as 2 targets have the same base name (libmysqld)
++    SET_TARGET_PROPERTIES(libmysqld PROPERTIES CLEAN_DIRECT_OUTPUT 1)
++    SET_TARGET_PROPERTIES(mysqlserver PROPERTIES CLEAN_DIRECT_OUTPUT 1)
++  ENDIF()
+ ENDIF()



More information about the patches mailing list