Writing debian installer isos fails in syslinux part

Bug #1000527 reported by Wookey on 2012-05-17
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
usb-creator (Ubuntu)
Undecided
Unassigned

Bug Description

After fixing usb-creator so it builds on debian, I tried it on a debian box and found a problem:
in install.py is a load of code to use syslinx-legacy and apropriate options either side of the 10.04 and 10.10 Ubuntu releases.

That fails if a debian iso has been burned onto the USB stick.

    target_os_ver, our_os_ver = self.os_vers()
      File "/usr/lib/python2.7/dist-packages/usbcreator/install.py",line 206, in os_vers
    target_os_ver = debian_support.Version(contents[1])
      File "/usr/lib/python2.7/dist-packages/debian/debian_support.py", line 172,
in __init__
    super(AptPkgVersion, self).__init__(version)
      File "/usr/lib/python2.7/dist-packages/debian/debian_support.py", line 91,
in __init__
    self.full_version = version
      File "/usr/lib/python2.7/dist-packages/debian/debian_support.py", line 117,
in __setattr__
    self._set_full_version(str(value))
      File "/usr/lib/python2.7/dist-packages/debian/debian_support.py", line 96,
in _set_full_version
    raise ValueError("Invalid version string %r" % version)
    ValueError: Invalid version string 'GNU/Linux'

This is because of this code:
if os.path.exists(os.path.join(self.target, '.disk', 'info')):
    with open(os.path.join(self.target, '.disk', 'info'),'r') as f:
        contents = f.readline().split()
    if len(contents) > 2:
        # Consider point releases the same as the initial release
        # (10.04.4 -> 10.04)
        target_os_ver = debian_support.Version(contents[1])

becuause .disk/info is:
Debian GNU/Linux wheezy-DI-a1 "Wheezy" - Official Snapshot amd64 NETINST Binary-1 20120512-00:39

so the code tries to parse "GNU/Linux" as debian version number and rightly fails.

BTW I'm not sure that the 'debian_support.Version' fn is really apropriate here as it seems to be designed for package version numbers not release numbers - mind you this works OK:
our_os_ver = debian_support.Version(
      lsb_release.get_distro_information()['RELEASE'])

My python is not good enough to work out what to do about this. You could just look for contents[3] and not use the 'Version' function. (There is a 'Release' fn which might be helpful here?)

Or perhaps better is to simply not do any of this checking on Debian as we've been on syslinux 2.4 since squeeze, and there isn't a syslinux-legacy package to use anyway. I'm not sure of the full implications here.

In fact how much do we care about people writing images older then 10.10 any more. Could it all just be simplified for Ubuntu too?

There is a lot of simplification possible in install_bootloader, mangle_syslinux, need_syslinux_legacy etc.

Someone who actually speaks python and is vaguely famliar with the code could presumably fix this without too much trouble.

Hope this is helpful to someone.

Wookey (wookey) on 2012-05-17
description: updated
Wookey (wookey) wrote :

This is the patch I applied in order to build on Debian

removed dh-translations (doesn't exist in Debian) - used dpkg-vendor in rules file to call/not-call as required.

Changed description to be distro-neutral

Removed gir-unity install-dep (doesn't exist on debian)

Changed syslinux install-dep (no syslinux-legacy on debian - is this an issue technically - is syslinux 2.3x needed for some reason?

Hacked .ui files to say Debian or ubuntu, and suggest install as well a live disk. This is hacky - could be done much better to put in apropriate name for distro, or just talk about 'the image you just wrote'. Awkward to be both newbie-friendly and accurate, and cover installers as well as live images in one sentence. Suggestions for how to handle this are welcome.

Checked and updated standards-version.

Dimitri John Ledkov (xnox) wrote :

@wookey
The patch you attached doesn't look like a debdiff, instead it's a diff of dsc file only.

Can you re-attach a full debdiff with your changes?

Or can you commit it on top of lp:usb-creator and push it to launchpad?

Thank you for getting interested in usb-creator for Debian.

The attachment "usb-creator-2.2.8.patch" of this bug report has been identified as being a patch. The ubuntu-reviewers team has been subscribed to the bug report so that they can review the patch. In the event that this is in fact not a patch you can resolve this situation by removing the tag 'patch' from the bug report and editing the attachment so that it is not flagged as a patch. Additionally, if you are member of the ubuntu-reviewers team please also unsubscribe the team from this bug report.

[This is an automated message performed by a Launchpad user owned by Brian Murray. Please contact him regarding any issues with the action taken in this bug report.]

tags: added: patch
Wookey (wookey) wrote :

Sorry about the screwed-up patch. I've attached the correct one now.

To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers