aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xlinaro-hwpack-install49
-rwxr-xr-xlinaro-media-create26
-rw-r--r--linaro_image_tools/media_create/chroot_utils.py2
-rw-r--r--linaro_image_tools/media_create/rootfs.py19
-rw-r--r--linaro_image_tools/media_create/tests/test_media_create.py3
-rw-r--r--linaro_image_tools/media_create/unpack_binary_tarball.py5
-rw-r--r--linaro_image_tools/utils.py12
7 files changed, 26 insertions, 90 deletions
diff --git a/linaro-hwpack-install b/linaro-hwpack-install
index a6c3d9c..a6e0e96 100755
--- a/linaro-hwpack-install
+++ b/linaro-hwpack-install
@@ -1,7 +1,8 @@
#!/bin/sh
# linaro-hwpack-install - Install a Linaro Hardware Pack.
-# This script is meant to run inside a chroot. It must not depend on anything
-# that's not in there.
+# This script is meant to run inside a chroot containing nothing other than
+# ubuntu-minimal, so it must not depend on anything that's not in
+# there.
# TODO: When upgrading to a newer hwpack, make sure packages and apt sources
# that are no longer needed are removed.
@@ -43,7 +44,6 @@ APT_GET_OPTIONS="Dir::Etc::SourceList=${SOURCES_LIST_FILE}"
SUPPORTED_FORMATS="1.0 2.0 3.0" # A space-separated list of hwpack formats.
FLASH_KERNEL_SKIP="true"
export FLASH_KERNEL_SKIP # skip attempting to run flash-kernel-hooks
-DISTRIBUTION=`grep '^ID=' /etc/os-release | sed 's/ID=//'`
sudo="sudo"
if [ $(id -u) -eq 0 ]; then
@@ -129,7 +129,7 @@ setup_hwpack() {
"Try using a newer version of $(basename $0)."
# Check the architecture of the hwpack matches that of the host system.
- if [ "x$EXTRACT_KERNEL_ONLY" = "xno" -a "$DISTRIBUTION" = "ubuntu" ]; then
+ if [ "x$EXTRACT_KERNEL_ONLY" = "xno" ]; then
# TODO: create a generic way to identify the architecture, without depending on dpkg
[ "$HWPACK_ARCH" = `dpkg --print-architecture` ] || \
die "Hardware pack architecture ($HWPACK_ARCH) does not match the host's architecture"
@@ -269,49 +269,14 @@ extract_kernel_packages() {
# We assume the hwpack is always available at the rootfs
ROOTFS_DIR=$(dirname $HWPACK_TARBALL)
- DEB_DIR="${TEMP_DIR}/extracted"
- mkdir -p ${DEB_DIR}
-
ls ${HWPACK_DIR}/pkgs/linux-[ih]*.deb | while read pkg; do
echo "Extracting package `basename $pkg`"
- if [ "$DISTRIBUTION" = "ubuntu" ]; then
- dpkg-deb -x ${pkg} $ROOTFS_DIR
- elif [ "$DISTRIBUTION" = "fedora" ]; then
- ar x ${pkg}
- tar -xf data.tar.* -C ${DEB_DIR}
- rm -f debian-binary control.tar.gz data.tar.*
- fi
- done
-
- ls ${HWPACK_DIR}/pkgs/arndale-pre-boot_*.deb | while read pkg; do
- echo "Extracting package `basename $pkg`"
- if [ "$DISTRIBUTION" = "ubuntu" ]; then
- dpkg-deb -x ${pkg} $ROOTFS_DIR
- elif [ "$DISTRIBUTION" = "fedora" ]; then
- ar x ${pkg}
- tar -xf data.tar.* -C ${DEB_DIR}
- rm -f debian-binary control.tar.gz data.tar.*
- fi
+ dpkg-deb -x ${pkg} $ROOTFS_DIR
done
- if [ "$DISTRIBUTION" = "fedora" ]; then
- cp -a ${DEB_DIR}/boot/* /boot/
- cp -a ${DEB_DIR}/lib/modules/* /usr/lib/modules/
- cp -a ${DEB_DIR}/lib/firmware/* /usr/lib/firmware/
- fi
-
- if [ -d "${HWPACK_DIR}/u_boot" ]; then
- cp -a ${HWPACK_DIR}/u_boot/usr/lib/* /usr/lib
- fi
-
- if [ -d "${HWPACK_DIR}/uefi" ]; then
- cp -a ${HWPACK_DIR}/uefi/usr/lib/* /usr/lib
- fi
-
# manually generate modules.dep
ls $ROOTFS_DIR/lib/modules | while read kernel; do
depmod -b $ROOTFS_DIR ${kernel} || true
- [ "$DISTRIBUTION" = "fedora" ] && dracut /boot/initrd.img-${kernel} ${kernel}
done;
}
@@ -319,7 +284,7 @@ cleanup() {
# Ensure our temp dir and apt sources are removed.
echo -n "Cleaning up ..."
rm -rf $TEMP_DIR
- if [ "x$EXTRACT_KERNEL_ONLY" = "xno" -a "$DISTRIBUTION" = "ubuntu" ]; then
+ if [ "x$EXTRACT_KERNEL_ONLY" = "xno" ]; then
rm -f /usr/sbin/policy-rc.d
mv -f /sbin/start-stop-daemon.REAL /sbin/start-stop-daemon
if [ -x /sbin/initctl.REAL ]; then
@@ -353,7 +318,7 @@ trap cleanup EXIT
setup_hwpack
# In case we only care about the kernel, don't mess up with the system
-if [ "x$EXTRACT_KERNEL_ONLY" = "xno" -a "$DISTRIBUTION" = "ubuntu" ]; then
+if [ "x$EXTRACT_KERNEL_ONLY" = "xno" ]; then
setup_apt_sources
setup_ubuntu_rootfs
install_deb_packages
diff --git a/linaro-media-create b/linaro-media-create
index 2d41f46..d28eaff 100755
--- a/linaro-media-create
+++ b/linaro-media-create
@@ -181,6 +181,12 @@ if __name__ == '__main__':
# The binary image is in the new live format.
filesystem_dir = 'binary/boot/filesystem.dir'
+ # if not a debian compatible system, just extract the kernel packages
+ extract_kpkgs = False
+ if not path_in_tarfile_exists(
+ os.path.join(filesystem_dir, 'etc', 'debian_version'), args.binary):
+ extract_kpkgs = True
+
ROOTFS_DIR = os.path.join(BIN_DIR, filesystem_dir)
try:
@@ -203,24 +209,6 @@ if __name__ == '__main__':
unpack_binary_tarball(args.binary, BIN_DIR)
- # if compatible system, extract all packages
- os_release_id = 'linux'
- os_release_file = '%s/etc/os-release' % ROOTFS_DIR
- if os.path.exists(os_release_file):
- for line in open(os_release_file):
- if line.startswith('ID='):
- os_release_id = line[(len('ID=')):]
- os_release_id = os_release_id.strip('\"\n')
- break
-
- if os_release_id == 'debian' or os_release_id == 'ubuntu' or \
- os.path.exists('%s/etc/debian_version' % ROOTFS_DIR):
- extract_kpkgs = False
- elif os_release_id == 'fedora':
- extract_kpkgs = False
- else:
- extract_kpkgs = True
-
hwpacks = args.hwpacks
lmc_dir = os.path.dirname(__file__)
if lmc_dir == '':
@@ -275,6 +263,6 @@ if __name__ == '__main__':
populate_rootfs(ROOTFS_DIR, ROOT_DISK, root_partition, args.rootfs,
rootfs_id, create_swap, str(args.swap_file),
board_config.mmc_device_id, board_config.mmc_part_offset,
- os_release_id, board_config)
+ board_config)
logger.info("Done creating Linaro image on %s" % media.path)
diff --git a/linaro_image_tools/media_create/chroot_utils.py b/linaro_image_tools/media_create/chroot_utils.py
index 6776c4c..83b0f6d 100644
--- a/linaro_image_tools/media_create/chroot_utils.py
+++ b/linaro_image_tools/media_create/chroot_utils.py
@@ -105,7 +105,7 @@ def install_hwpack(rootfs_dir, hwpack_file, extract_kpkgs, hwpack_force_yes):
print "Installing (linaro-hwpack-install) %s in target rootfs." % (
hwpack_basename)
- # Get information required by linaro-hwpack-install
+ # Get infromation required by linaro-hwpack-install
with HardwarepackHandler([hwpack_file]) as hwpack:
version, _ = hwpack.get_field("version")
architecture, _ = hwpack.get_field("architecture")
diff --git a/linaro_image_tools/media_create/rootfs.py b/linaro_image_tools/media_create/rootfs.py
index 765cc99..73bc8eb 100644
--- a/linaro_image_tools/media_create/rootfs.py
+++ b/linaro_image_tools/media_create/rootfs.py
@@ -43,8 +43,7 @@ def rootfs_mount_options(rootfs_type):
def populate_rootfs(content_dir, root_disk, partition, rootfs_type,
rootfs_id, should_create_swap, swap_size,
- mmc_device_id, partition_offset, os_release_id,
- board_config=None):
+ mmc_device_id, partition_offset, board_config=None):
"""Populate the rootfs and make the necessary tweaks to make it usable.
This consists of:
@@ -87,14 +86,13 @@ def populate_rootfs(content_dir, root_disk, partition, rootfs_type,
append_to_fstab(root_disk, fstab_additions)
- if os_release_id == 'debian' or os_release_id == 'ubuntu':
- print "\nCreating /etc/flash-kernel.conf\n"
- create_flash_kernel_config(
- root_disk, mmc_device_id, 1 + partition_offset)
+ print "\nCreating /etc/flash-kernel.conf\n"
+ create_flash_kernel_config(
+ root_disk, mmc_device_id, 1 + partition_offset)
- if board_config is not None:
- print "\nUpdating /etc/network/interfaces\n"
- update_network_interfaces(root_disk, board_config)
+ if board_config is not None:
+ print "\nUpdating /etc/network/interfaces\n"
+ update_network_interfaces(root_disk, board_config)
def update_network_interfaces(root_disk, board_config):
@@ -138,8 +136,7 @@ def _list_files(directory):
not be world-readable.
"""
p = cmd_runner.run(
- ['find', directory, '-maxdepth', '1', '-mindepth', '1',
- '!', '-name', 'lost+found'],
+ ['find', directory, '-maxdepth', '1', '-mindepth', '1'],
stdout=subprocess.PIPE, as_root=True)
stdout, _ = p.communicate()
return stdout.split()
diff --git a/linaro_image_tools/media_create/tests/test_media_create.py b/linaro_image_tools/media_create/tests/test_media_create.py
index 565056c..269f986 100644
--- a/linaro_image_tools/media_create/tests/test_media_create.py
+++ b/linaro_image_tools/media_create/tests/test_media_create.py
@@ -3673,8 +3673,7 @@ class TestPopulateRootFS(TestCaseWithFixtures):
populate_rootfs(
contents_dir, root_disk, partition='/dev/rootfs',
rootfs_type='ext3', rootfs_id='UUID=uuid', should_create_swap=True,
- swap_size=100, mmc_device_id=0, partition_offset=0,
- os_release_id='ubuntu', board_config=None)
+ swap_size=100, mmc_device_id=0, partition_offset=0)
self.assertEqual(
['UUID=uuid / ext3 errors=remount-ro 0 1',
diff --git a/linaro_image_tools/media_create/unpack_binary_tarball.py b/linaro_image_tools/media_create/unpack_binary_tarball.py
index 8dcdef8..ba00261 100644
--- a/linaro_image_tools/media_create/unpack_binary_tarball.py
+++ b/linaro_image_tools/media_create/unpack_binary_tarball.py
@@ -29,11 +29,8 @@ def unpack_android_binary_tarball(tarball, unpack_dir, as_root=True):
def unpack_binary_tarball(tarball, unpack_dir, as_root=True):
- extract_opt = '-xf'
- if tarball.endswith('.xz'):
- extract_opt = '-Jxf'
proc = cmd_runner.run(
- ['tar', '--numeric-owner', '-C', unpack_dir, extract_opt, tarball],
+ ['tar', '--numeric-owner', '-C', unpack_dir, '-xf', tarball],
as_root=as_root)
proc.wait()
return proc.returncode
diff --git a/linaro_image_tools/utils.py b/linaro_image_tools/utils.py
index 2710c02..c8d9682 100644
--- a/linaro_image_tools/utils.py
+++ b/linaro_image_tools/utils.py
@@ -89,21 +89,11 @@ CommandNotFound = try_import('CommandNotFound.CommandNotFound')
def path_in_tarfile_exists(path, tar_file):
exists = True
try:
- tarinfo = tarfile.open(tar_file, 'r:*')
+ tarinfo = tarfile.open(tar_file, 'r:gz')
tarinfo.getmember(path)
tarinfo.close()
except KeyError:
exists = False
- except (tarfile.ReadError, tarfile.CompressionError):
- exists = False
- # Fallback to tar command
- cmd = ['tar', '-tf', tar_file, '--wildcards', '*' + path]
- proc = cmd_runner.run(cmd,
- stdout=open('/dev/null', 'w'),
- stderr=open('/dev/null', 'w'))
- proc.wait()
- if proc.returncode == 0:
- exists = True
finally:
return exists