From b99a6e96e555c1cbecd56b536abb324e9b6859f8 Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Fri, 26 Aug 2011 12:20:46 -0500
Subject: linhes-config: align disk partitions at 2048.  Some drives report 512
 sector size, when they are in fact 4k.  By aligning at 2048 is works for both
 legacy 512 and 4k.

---
 abs/core/LinHES-config/PKGBUILD      |  4 ++--
 abs/core/LinHES-config/mv_install.py | 11 +++++++++--
 2 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/abs/core/LinHES-config/PKGBUILD b/abs/core/LinHES-config/PKGBUILD
index 865ba40..66d1d42 100644
--- a/abs/core/LinHES-config/PKGBUILD
+++ b/abs/core/LinHES-config/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=LinHES-config
 pkgver=2.3
-pkgrel=4
+pkgrel=5
 conflicts=(MythVantage-config MythVantage-config-dev LinHES-config-dev LinHes-config )
 pkgdesc="Install and configure your system"
 depends=('bc' 'libstatgrab'  'mysql-python' 'expect' 'curl' 'dnsutils' 'parted'
@@ -101,7 +101,7 @@ build() {
     install -m 0755 issue $startdir/pkg/etc/issue
 
 }
-md5sums=('3cf9277d2a205ef20b75d5f8b36d4f0d'
+md5sums=('b078307bd347cba80978511b0e75b68a'
          '16b98fcb3753ef6cfc35075c326d30e4'
          'e36da536dd651ef182e7642337889e77'
          '985891a43f7c4c983eb2a362162f1a0f'
diff --git a/abs/core/LinHES-config/mv_install.py b/abs/core/LinHES-config/mv_install.py
index c032aad..e774521 100755
--- a/abs/core/LinHES-config/mv_install.py
+++ b/abs/core/LinHES-config/mv_install.py
@@ -263,6 +263,7 @@ def create_partitions(diskdevice, size, ptype, startsector):
     newstart = 0
     totalused = 0
     device = parted.getDevice(diskdevice)
+    logging.debug("Sector size is %s   %s", %( diskdevice , device.sectorSize))
     partdisk = parted.Disk(device)
     for partition in partdisk.partitions:
         if partition.type != parted.PARTITION_FREESPACE:
@@ -280,7 +281,7 @@ def create_partitions(diskdevice, size, ptype, startsector):
         newstart = usedend+1
 
     if  startsector == 0:
-        newstart = 0
+        newstart = 2048
     if size == "ALL":
         logging.debug("     Using the rest of the disk  %s", (device.length-newstart) )
         try:
@@ -292,6 +293,10 @@ def create_partitions(diskdevice, size, ptype, startsector):
         # convert size in MB to a length on the device in sectors
         length = (int(size) * (1024 * 1024)) / device.sectorSize
         logging.debug("Size is %s", length)
+         if length > device.length:
+            length = device.length - newstart
+            logging.info("Size is larger then disk, reducing size")
+            logging.debug("New Size is %s", length)
         try:
             geom = parted.Geometry(device=device,  start=newstart,  length=length)
         except:
@@ -299,7 +304,9 @@ def create_partitions(diskdevice, size, ptype, startsector):
             error_out("invalid parition size")
 
     #collect device constraint
-    constraint = device.getConstraint()
+    #constraint = device.getConstraint()
+    #constraint = parted.Constraint(device=device)
+    constraint = parted.Constraint(exactGeom = geom )
     # new partition
     if ptype == "NORMAL":
         newpart = parted.Partition(disk=partdisk, type=parted.PARTITION_NORMAL,  geometry=geom)
-- 
cgit v0.12

