Hi.
I'm getting the following errors trying to build parted-3.2:
arch/linux.c: In function 'dm_canonical_path':
arch/linux.c:2313:16: warning: implicit declaration of function
'dm_task_create' [-Wimplicit-function-declaration]
struct dm_task *task = dm_task_create (DM_DEVICE_INFO);
^
arch/linux.c:2313:48: error: 'DM_DEVICE_INFO' undeclared (first use in this
function)
struct dm_task *task = dm_task_create (DM_DEVICE_INFO);
^
arch/linux.c:2313:48: note: each undeclared identifier is reported only once
for each function it appears in
arch/linux.c:2316:9: warning: implicit declaration of function
'dm_task_set_major_minor' [-Wimplicit-function-declaration]
if (!dm_task_set_major_minor (task, arch_specific->major,
^
arch/linux.c:2319:9: warning: implicit declaration of function 'dm_task_run'
[-Wimplicit-function-declaration]
if (!dm_task_run(task))
^
arch/linux.c:2321:9: warning: implicit declaration of function
'dm_task_get_name' [-Wimplicit-function-declaration]
char *dev_name = zasprintf ("/dev/mapper/%s", dm_task_get_name (task));
^
arch/linux.c:2324:9: warning: implicit declaration of function
'dm_task_destroy' [-Wimplicit-function-declaration]
dm_task_destroy (task);
^
arch/linux.c: In function '_disk_sync_part_table':
arch/linux.c:2949:33: error: '_dm_add_partition' undeclared (first use in this
function)
add_partition = _dm_add_partition;
^
arch/linux.c:2950:36: error: '_dm_remove_partition' undeclared (first use in
this function)
remove_partition = _dm_remove_partition;
^
arch/linux.c:2951:36: error: '_dm_resize_partition' undeclared (first use in
this function)
resize_partition = _dm_resize_partition;
^
arch/linux.c:2952:50: error: '_dm_get_partition_start_and_length' undeclared
(first use in this function)
get_partition_start_and_length =
_dm_get_partition_start_and_length;
^
I am passing --disable-device-mapper to configure, but the code causing the
errors is not guarded by #ifdef
ENABLE_DEVICE_MAPPER.
The attached patch allows the build to succeed. I think the resultant code is
functionally correct, but I'm sure you
will check that :-)
Regards.
Chris
--- parted-3.2/libparted/arch/linux.c.device-mapper 2014-06-15
20:15:54.000000000 +0100
+++ parted-3.2/libparted/arch/linux.c 2014-07-29 22:27:54.487430030 +0100
@@ -2307,6 +2307,7 @@ zasprintf (const char *format, ...)
static char *
dm_canonical_path (PedDevice const *dev)
{
+#ifdef ENABLE_DEVICE_MAPPER
LinuxSpecific const *arch_specific = LINUX_SPECIFIC (dev);
/* Get map name from devicemapper */
@@ -2324,6 +2325,7 @@ dm_canonical_path (PedDevice const *dev)
dm_task_destroy (task);
return dev_name;
err:
+#endif
return NULL;
}
@@ -2944,13 +2946,14 @@ _disk_sync_part_table (PedDisk* disk)
unsigned long long *start,
unsigned long long *length);
-
+#ifdef ENABLE_DEVICE_MAPPER
if (disk->dev->type == PED_DEVICE_DM) {
add_partition = _dm_add_partition;
remove_partition = _dm_remove_partition;
resize_partition = _dm_resize_partition;
get_partition_start_and_length =
_dm_get_partition_start_and_length;
} else {
+#endif
add_partition = _blkpg_add_partition;
remove_partition = _blkpg_remove_partition;
#ifdef BLKPG_RESIZE_PARTITION
@@ -2959,7 +2962,9 @@ _disk_sync_part_table (PedDisk* disk)
resize_partition = NULL;
#endif
get_partition_start_and_length =
_kernel_get_partition_start_and_length;
+#ifdef ENABLE_DEVICE_MAPPER
}
+#endif
/* lpn = largest partition number.
* for remove pass, use greater of device or label limit */