Browse Source
This is a partition editor. While editing real disks requires root, this is useful to create partitioned images for VMs.android-5
Vladimir Serbinenko
7 years ago
committed by
Fredrik Fornwall
4 changed files with 132 additions and 0 deletions
@ -0,0 +1,54 @@ |
|||
Fix disabling of libdevmapper. |
|||
|
|||
Fix bugs related to disabling libdevmapper. Parted is rarely compiled without |
|||
devmapper. So couple of syntax errors for the cas3 of disabled devmapper |
|||
sneaked in. |
|||
|
|||
diff -ur src-orig/libparted/arch/linux.c src/libparted/arch/linux.c
|
|||
--- src-orig/libparted/arch/linux.c 2017-08-31 15:47:07.007674598 +0200
|
|||
+++ src/libparted/arch/linux.c 2017-08-31 15:50:01.487860337 +0200
|
|||
@@ -2304,6 +2304,7 @@
|
|||
return r < 0 ? NULL : resultp; |
|||
} |
|||
|
|||
+#ifdef ENABLE_DEVICE_MAPPER
|
|||
static char * |
|||
dm_canonical_path (PedDevice const *dev) |
|||
{ |
|||
@@ -2326,12 +2327,17 @@
|
|||
err: |
|||
return NULL; |
|||
} |
|||
+#endif
|
|||
|
|||
static char* |
|||
_device_get_part_path (PedDevice const *dev, int num) |
|||
{ |
|||
+#ifdef ENABLE_DEVICE_MAPPER
|
|||
char *devpath = (dev->type == PED_DEVICE_DM |
|||
? dm_canonical_path (dev) : dev->path); |
|||
+#else
|
|||
+ char *devpath = dev->path;
|
|||
+#endif
|
|||
size_t path_len = strlen (devpath); |
|||
char *result; |
|||
/* Check for devfs-style /disc => /partN transformation |
|||
@@ -2946,10 +2948,18 @@
|
|||
|
|||
|
|||
if (disk->dev->type == PED_DEVICE_DM) { |
|||
+#ifdef ENABLE_DEVICE_MAPPER
|
|||
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
|
|||
+ ped_exception_throw (
|
|||
+ PED_EXCEPTION_BUG,
|
|||
+ PED_EXCEPTION_CANCEL,
|
|||
+ "This parted is compiled without devmapper support");
|
|||
+ return 0;
|
|||
+#endif
|
|||
} else { |
|||
add_partition = _blkpg_add_partition; |
|||
remove_partition = _blkpg_remove_partition; |
@ -0,0 +1,34 @@ |
|||
Change 64-bit offset code to Android variant. |
|||
|
|||
Parted uses a workaround in case when off_t is 32-bit. This happens i.a. |
|||
on arm android. Use android functions rather than syscall. |
|||
|
|||
--- src-orig/libparted/arch/linux.c 2018-06-21 02:53:48.635160013 +0200
|
|||
+++ src/libparted/arch/linux.c 2018-06-21 02:59:37.842096052 +0200
|
|||
@@ -1712,25 +1712,10 @@
|
|||
|
|||
#if SIZEOF_OFF_T < 8 |
|||
|
|||
-static _syscall5(int,_llseek,
|
|||
- unsigned int, fd,
|
|||
- unsigned long, offset_high,
|
|||
- unsigned long, offset_low,
|
|||
- loff_t*, result,
|
|||
- unsigned int, origin)
|
|||
-
|
|||
loff_t |
|||
llseek (unsigned int fd, loff_t offset, unsigned int whence) |
|||
{ |
|||
- loff_t result;
|
|||
- int retval;
|
|||
-
|
|||
- retval = _llseek(fd,
|
|||
- ((unsigned long long)offset) >> 32,
|
|||
- ((unsigned long long)offset) & 0xffffffff,
|
|||
- &result,
|
|||
- whence);
|
|||
- return (retval==-1 ? (loff_t) retval : result);
|
|||
+ return lseek64(fd, offset, whence);
|
|||
} |
|||
|
|||
#endif /* SIZEOF_OFF_T < 8 */ |
@ -0,0 +1,31 @@ |
|||
Add missing major() and minor(). |
|||
|
|||
Based on glibc version of this functions. Parted relies on those |
|||
functions and they're not provided by bionic libc. |
|||
|
|||
diff -ur src-orig/libparted/arch/linux.c src/libparted/arch/linux.c
|
|||
--- src-orig/libparted/arch/linux.c 2017-08-31 15:47:07.007674598 +0200
|
|||
+++ src/libparted/arch/linux.c 2017-08-31 15:50:01.487860337 +0200
|
|||
@@ -86,6 +86,22 @@
|
|||
#define WR_MODE (O_WRONLY) |
|||
#define RW_MODE (O_RDWR) |
|||
|
|||
+unsigned int major(dev_t __dev)
|
|||
+{
|
|||
+ unsigned int __major;
|
|||
+ __major = ((__dev & (dev_t) 0x00000000000fff00u) >> 8);
|
|||
+ __major |= ((__dev & (dev_t) 0xfffff00000000000u) >> 32);
|
|||
+ return __major;
|
|||
+}
|
|||
+
|
|||
+unsigned int minor(dev_t __dev)
|
|||
+{
|
|||
+ unsigned int __minor;
|
|||
+ __minor = ((__dev & (dev_t) 0x00000000000000ffu) >> 0);
|
|||
+ __minor |= ((__dev & (dev_t) 0x00000ffffff00000u) >> 12);
|
|||
+ return __minor;
|
|||
+}
|
|||
+
|
|||
struct hd_geometry { |
|||
unsigned char heads; |
|||
unsigned char sectors; |
@ -0,0 +1,13 @@ |
|||
TERMUX_PKG_HOMEPAGE=https://www.gnu.org/software/parted/ |
|||
TERMUX_PKG_DESCRIPTION="Versatile partition editor" |
|||
TERMUX_PKG_VERSION=3.2 |
|||
TERMUX_PKG_SRCURL=https://ftp.gnu.org/gnu/parted/parted-${TERMUX_PKG_VERSION}.tar.xz |
|||
TERMUX_PKG_SHA256=858b589c22297cacdf437f3baff6f04b333087521ab274f7ab677cb8c6bb78e4 |
|||
TERMUX_PKG_DEPENDS="libuuid, readline" |
|||
TERMUX_PKG_EXTRA_CONFIGURE_ARGS=" |
|||
--disable-device-mapper |
|||
" |
|||
|
|||
termux_step_pre_configure () { |
|||
CFLAGS+=" -Wno-gnu-designator" |
|||
} |
Loading…
Reference in new issue