lmacken / liveusb-creator

A cross-platform tool for easily installing Fedora on to USB flash drives and SD cards.
http://fedorahosted.org/liveusb-creator
GNU General Public License v2.0
140 stars 47 forks source link

New User Interface #18

Closed MartinBriza closed 8 years ago

MartinBriza commented 9 years ago

Opening this pull request to track the outstanding issues and tasks in the new UI of the Fedora LiveUSB Creator. So far, I'm aware the following stuff needs to be completed:

Please, everybody comment with what should be improved and I'll (or Luke can) update this post while I'm working on the remaining stuff.

To see it live in action without actually installing it: state of Apr 17 is captured here

Screenshot Windows Screenshot

Cheers

lmacken commented 9 years ago

Apologizes for the lack of feedback here. I have been testing it out on Fedora, which has been working fine, but I've been struggling for the past month to get a Windows 8 VM setup for it.

MartinBriza commented 9 years ago

I'm currently working on Windows builds - initial work can be seen on http://ma.rtinbriza.cz/w/liveusb-creator.zip . It's possible to run the thing using WINE if you're still struggling with VM setup. Warning: It just shows the GUI - the user is not actually able to access the USB drives due to a bunch of errors I've introduced with my changes to the backend. These are easy to fix though and will be fixed once I've figured out the whole build process - the archive linked above had to be partially done by hand, not just scripts. So far, I'm trying to be able to create a spec file to compile the executable using PyInstaller in WINE to get rid of the dependency on Windows machines for building. There is a few things I've not yet sorted out, like importing QtQuick libraries and library stripping but I'm getting there.

lmacken commented 9 years ago

Being able to build a Windows package without Windows would be great :) I basically gave up on Win8, and was about ready to start playing with AppVeyor, but it sounds like you're working on a much better solution.

MartinBriza commented 9 years ago

Yeah, I already got it working - answering from mobile though so I don't have the link to an archive. But getting the build requirements is quite a pain, I'll have to automate it for you.

pypingou commented 9 years ago

After install python-pyquery and python-qt5 on F21, I ran make and:

QQmlApplicationEngine failed to load component
qrc:/liveusb.qml:4 module "QtQuick.Dialogs" is not installed
qrc:/liveusb.qml:2 module "QtQuick.Controls" is not installed
qrc:/liveusb.qml:4 module "QtQuick.Dialogs" is not installed
qrc:/liveusb.qml:2 module "QtQuick.Controls" is not installed

Traceback (most recent call last):
  File "./liveusb-creator", line 103, in <module>
    main()
  File "./liveusb-creator", line 94, in main
    LiveUSBApp(opts, sys.argv)
  File "/home/pierrey/repos/gitrepo/liveusb-creator/liveusb/gui.py", line 989, in __init__
    engine.rootObjects()[0].show()
IndexError: list index out of range

Since the spec file has been removed, I do not know which dependency I am missing. Could you consider re-including it? (This way I could also test the new UI via the RPM directly)

MartinBriza commented 9 years ago

@pypingou Hi, yes, this is caused by the fact you don't have QtQuick Controls installed. In Fedora, these are contained in the qt5-qtquickcontrols package. Also, I maintain a Copr repository with occasionally updated packages on https://copr.fedoraproject.org/coprs/mbriza/unstable/ . There's quite an old version so I recommend rather sticking to this repository if you want to test the fresh stuff.

pypingou commented 9 years ago

Keeping the spec files in the sources would help people that want to test HEAD rather than the occasionally updated copr :) Unless this occasionally is in fact fairly often :) (Know about dgroc? pypingou/dgroc)

MartinBriza commented 9 years ago

Hmm, for some reason I thought the specfile included previously was for PyExe. I'll have to readd it too. I do know now! Good idea, I'll go set up the builds right now, thank you

lmacken commented 9 years ago

Right when I open the app, it messes with the drive label without me interacting with the interface at all.

[creator:773] Verifying filesystem...
[creator:783] Setting /dev/sdb2 label to LIVE
lmacken commented 9 years ago

I'm getting the error message 'T' in the gui. And after that error message, it sat there chewing up 100% CPU

Traceback (most recent call last):
  File "/home/lmacken/code/github.com/liveusb-creator/liveusb/gui.py", line 244, in run
    self.copyImage(now)
  File "/home/lmacken/code/github.com/liveusb-creator/liveusb/gui.py", line 266, in copyImage
    self.live.check_free_space()
  File "/home/lmacken/code/github.com/liveusb-creator/liveusb/creator.py", line 263, in check_free_space
    str(freebytes/1024**2) + "MB")))
LiveUSBError: (u'T', u'h', u'e', u'r', u'e', u' ', u'i', u's', u' ', u'n', u'o', u't', u' ', u'e', u'n', u'o', u'u', u'g', u'h', u' ', u'f', u'r', u'e', u'e', u' ', u's', u'p', u'a', u'c', u'e', u' ', u'o', u'n', u' ', u't', u'h', u'e', u' ', u's', u'e', u'l', u'e', u'c', u't', u'e', u'd', u' ', u'd', u'e', u'v', u'i', u'c', u'e', u'.', u' ', u'R', u'e', u'q', u'u', u'i', u'r', u'e', u'd', u':', u' ', u'1', u'3', u'6', u'5', u'M', u'B', u'.', u' ', u'F', u'r', u'e', u'e', u':', u' ', u'0', u'M', u'B', u'.')
MartinBriza commented 9 years ago

Thanks, these problems should be fixed now

MartinBriza commented 9 years ago

The binary Fedora packages are residing in this repo: https://copr.fedoraproject.org/coprs/mbriza/liveusb-creator/

Dremor commented 9 years ago

I still get an error after installing it : file:///usr/lib64/qt5/qml/QtQuick/Controls/ComboBox.qml:513:5: QML Menu: Binding loop detected for property "" TypeError: unable to convert a Python 'list' object to a C++ 'QString' instance

MartinBriza commented 9 years ago

Thanks for reporting but this should not affect the running process in any way. If the app is unusable, please describe more symptoms of the problem.

Dremor commented 9 years ago

Here is the full log :

file:///usr/lib64/qt5/qml/QtQuick/Controls/ComboBox.qml:513:5: QML Menu: Binding loop detected for property "" TypeError: unable to convert a Python 'list' object to a C++ 'QString' instance QOpenGLShaderProgram: could not create shader program QOpenGLShader: could not create shader QOpenGLShader: could not create shader shader compilation failed: "" QOpenGLShaderProgram::uniformLocation( matrix ): shader program is not linked QOpenGLShaderProgram::uniformLocation( opacity ): shader program is not linked QOpenGLShaderProgram: could not create shader program QOpenGLShader: could not create shader QOpenGLShader: could not create shader shader compilation failed: "" QOpenGLShaderProgram::uniformLocation( matrix ): shader program is not linked QOpenGLShaderProgram::uniformLocation( opacity ): shader program is not linked QOpenGLShaderProgram: could not create shader program QOpenGLShader: could not create shader QOpenGLShader: could not create shader shader compilation failed: "" QOpenGLShaderProgram::uniformLocation( matrix ): shader program is not linked QOpenGLShaderProgram::uniformLocation( opacity ): shader program is not linked QOpenGLShaderProgram: could not create shader program QOpenGLShader: could not create shader QOpenGLShader: could not create shader shader compilation failed: "" QOpenGLShaderProgram::uniformLocation( matrix ): shader program is not linked QOpenGLShaderProgram::uniformLocation( opacity ): shader program is not linked QOpenGLShaderProgram: could not create shader program QOpenGLShader: could not create shader QOpenGLShader: could not create shader shader compilation failed: "" QOpenGLShaderProgram::uniformLocation( matrix ): shader program is not linked QOpenGLShaderProgram::uniformLocation( opacity ): shader program is not linked QOpenGLShaderProgram: could not create shader program QOpenGLShader: could not create shader QOpenGLShader: could not create shader shader compilation failed: "" QOpenGLShaderProgram::uniformLocation( matrix ): shader program is not linked QOpenGLShaderProgram::uniformLocation( opacity ): shader program is not linked QOpenGLShaderProgram: could not create shader program QOpenGLShader: could not create shader QOpenGLShader: could not create shader shader compilation failed: "" QOpenGLShaderProgram::uniformLocation( matrix ): shader program is not linked QOpenGLShaderProgram::uniformLocation( opacity ): shader program is not linked QOpenGLShaderProgram: could not create shader program QOpenGLShader: could not create shader QOpenGLShader: could not create shader shader compilation failed: "" QOpenGLShaderProgram::uniformLocation( matrix ): shader program is not linked QOpenGLShaderProgram::uniformLocation( opacity ): shader program is not linked QOpenGLShaderProgram: could not create shader program QOpenGLShader: could not create shader QOpenGLShader: could not create shader shader compilation failed: "" QOpenGLShaderProgram::uniformLocation( matrix ): shader program is not linked QOpenGLShaderProgram::uniformLocation( opacity ): shader program is not linked QOpenGLShaderProgram: could not create shader program QOpenGLShader: could not create shader QOpenGLShader: could not create shader shader compilation failed: "" QOpenGLShaderProgram::uniformLocation( matrix ): shader program is not linked QOpenGLShaderProgram::uniformLocation( opacity ): shader program is not linked QOpenGLShaderProgram::uniformLocation( pixelSize ): shader program is not linked QOpenGLShaderProgram: could not create shader program QOpenGLShader: could not create shader QOpenGLShader: could not create shader shader compilation failed: "" QOpenGLShaderProgram::uniformLocation( matrix ): shader program is not linked QOpenGLShaderProgram::uniformLocation( opacity ): shader program is not linked QOpenGLShaderProgram::uniformLocation( pixelSize ): shader program is not linked QOpenGLShaderProgram: could not create shader program QOpenGLShader: could not create shader QOpenGLShader: could not create shader shader compilation failed: "" QOpenGLShaderProgram::uniformLocation( qt_Matrix ): shader program is not linked QOpenGLShaderProgram: could not create shader program QOpenGLShader: could not create shader QOpenGLShader: could not create shader shader compilation failed: "" QOpenGLShaderProgram::uniformLocation( matrix ): shader program is not linked QOpenGLShaderProgram::uniformLocation( textureScale ): shader program is not linked QOpenGLShaderProgram::uniformLocation( color ): shader program is not linked QOpenGLShaderProgram::uniformLocation( alphaMin ): shader program is not linked QOpenGLShaderProgram::uniformLocation( alphaMax ): shader program is not linked QOpenGLShaderProgram::uniformLocation( fontScale ): shader program is not linked QOpenGLShaderProgram::uniformLocation( vecDelta ): shader program is not linked QOpenGLShaderProgram: could not create shader program QOpenGLShader: could not create shader QOpenGLShader: could not create shader shader compilation failed: "" QOpenGLShaderProgram::uniformLocation( matrix ): shader program is not linked QOpenGLShaderProgram::uniformLocation( textureScale ): shader program is not linked QOpenGLShaderProgram::uniformLocation( color ): shader program is not linked QOpenGLShaderProgram::uniformLocation( alphaMin ): shader program is not linked QOpenGLShaderProgram::uniformLocation( alphaMax ): shader program is not linked QOpenGLShaderProgram::uniformLocation( fontScale ): shader program is not linked QOpenGLShaderProgram::uniformLocation( vecDelta ): shader program is not linked QOpenGLShaderProgram: could not create shader program QOpenGLShader: could not create shader QOpenGLShader: could not create shader shader compilation failed: "" QOpenGLShaderProgram::uniformLocation( qt_Matrix ): shader program is not linked QOpenGLShaderProgram: could not create shader program QOpenGLShader: could not create shader QOpenGLShader: could not create shader shader compilation failed: "" QOpenGLShaderProgram::uniformLocation( matrix ): shader program is not linked QOpenGLShaderProgram::uniformLocation( textureScale ): shader program is not linked QOpenGLShaderProgram::uniformLocation( color ): shader program is not linked QOpenGLShaderProgram::uniformLocation( alphaMin ): shader program is not linked QOpenGLShaderProgram::uniformLocation( alphaMax ): shader program is not linked QOpenGLShaderProgram::uniformLocation( fontScale ): shader program is not linked QOpenGLShaderProgram::uniformLocation( vecDelta ): shader program is not linked QOpenGLShaderProgram: could not create shader program QOpenGLShader: could not create shader QOpenGLShader: could not create shader shader compilation failed: "" QOpenGLShaderProgram::uniformLocation( matrix ): shader program is not linked QOpenGLShaderProgram::uniformLocation( opacity ): shader program is not linked QOpenGLShaderProgram::uniformLocation( pixelSize ): shader program is not linked QOpenGLShaderProgram: could not create shader program QOpenGLShader: could not create shader QOpenGLShader: could not create shader shader compilation failed: "" QOpenGLShaderProgram::uniformLocation( matrix ): shader program is not linked QOpenGLShaderProgram::uniformLocation( textureScale ): shader program is not linked QOpenGLShaderProgram::uniformLocation( color ): shader program is not linked QOpenGLShaderProgram::uniformLocation( alphaMin ): shader program is not linked QOpenGLShaderProgram::uniformLocation( alphaMax ): shader program is not linked QOpenGLShaderProgram::uniformLocation( fontScale ): shader program is not linked QOpenGLShaderProgram::uniformLocation( vecDelta ): shader program is not linked QOpenGLShaderProgram: could not create shader program QOpenGLShader: could not create shader QOpenGLShader: could not create shader shader compilation failed: "" QOpenGLShaderProgram::uniformLocation( matrix ): shader program is not linked QOpenGLShaderProgram::uniformLocation( opacity ): shader program is not linked QOpenGLShaderProgram: could not create shader program QOpenGLShader: could not create shader QSGMaterialShader: Shader compilation failed: "" QOpenGLShaderProgram::uniformLocation( matrix ): shader program is not linked QOpenGLShaderProgram::uniformLocation( opacity ): shader program is not linked QOpenGLShaderProgram::uniformLocation( pixelSize ): shader program is not linked

MartinBriza commented 9 years ago

Huh, what machine are you running on? Do you have an OpenGL-capable graphics card/driver?

Dremor commented 9 years ago

Fedora 22 GTX 770 with latest stable (closed-source) driver

MartinBriza commented 9 years ago

Well now that's odd. Can you run any other Qt5 (ideally QML) application? Obviously I should recommend using the opensource driver but being completely unable to run a QML application with the closed one is really weird.

Dremor commented 9 years ago

Do you know any QML app I might try?

MartinBriza commented 9 years ago

hmm, for starters, I'd try running https://github.com/MartinBriza/2048.qml/blob/master/2048.qml with qmlscene-qt5: qmlscene-qt5 2048.qml

Dremor commented 9 years ago

It seem to work.

MartinBriza commented 9 years ago

Then it seems to be caused by some effect or something more specialized... Anyway, that's not a problem I can address in liveusb-creator but either Qt or a driver issue (but more likely, it's caused by the closed driver).

frantisekz commented 9 years ago

Probably missing dependency in spec: (Fedora 22, installed from copr)

sudo liveusb-creator Traceback (most recent call last): File "/sbin/liveusb-creator", line 103, in main() File "/sbin/liveusb-creator", line 92, in main from liveusb.gui import LiveUSBApp File "/usr/lib/python2.7/site-packages/liveusb/gui.py", line 49, in import resources_rc ImportError: No module named resources_rc

lmacken commented 9 years ago

I am triggering a bunch of issues when running it against a previously dd'd USB. After the Unknown Filesystem error, I opened up gnome-disks and formatted it, which triggered the last two exceptions.

[creator:606] Found block device with filesystem on /org/freedesktop/UDisks2/block_devices/sda1
[creator:626] Skipping a device that is not removable, connected via USB or is optical: /org/freedesktop/UDisks2/block_devices/sda1
file:///usr/lib64/qt5/qml/QtQuick/Controls/ComboBox.qml:513:5: QML Menu: Binding loop detected for property ""
[creator:606] Found block device with filesystem on /org/freedesktop/UDisks2/block_devices/sdd2
[creator:639] data = {'size': 5189632, 'fsversion': 'FAT12', 'fstype': 'vfat', 'device': u'/dev/sdd2', 'mount': [], 'udi': '/org/freedesktop/UDisks2/drives/Generic_Flash_Disk_9FCDEA7E', 'uuid': 'C313-8FD9', 'label': 'LIVE'}
[creator:674] {'device': u'/dev/sdd2',
 'free': None,
 'fstype': 'vfat',
 'fsversion': 'FAT12',
 'label': 'LIVE',
 'mount': None,
 'parent': u'/dev/sdd',
 'size': 5189632,
 'udi': '/org/freedesktop/UDisks2/drives/Generic_Flash_Disk_9FCDEA7E',
 'uuid': 'C313-8FD9'}
[creator:606] Found block device with filesystem on /org/freedesktop/UDisks2/block_devices/sdd1
[creator:639] data = {'size': 1824522240, 'fsversion': 'Joliet Extension', 'fstype': 'iso9660', 'device': u'/dev/sdd1', 'mount': [], 'udi': '/org/freedesktop/UDisks2/drives/Generic_Flash_Disk_9FCDEA7E', 'uuid': '2015-05-21-19-19-24-00', 'label': 'Fedora-Live-Jam-x86_64-22-3'}
[creator:654] Skipping /dev/sdd1 with unknown filesystem: iso9660
[creator:606] Found block device with filesystem on /org/freedesktop/UDisks2/block_devices/sdd3
[creator:639] data = {'size': 20774912, 'fsversion': 'Joliet Extension', 'fstype': 'hfsplus', 'device': u'/dev/sdd3', 'mount': [], 'udi': '/org/freedesktop/UDisks2/drives/Generic_Flash_Disk_9FCDEA7E', 'uuid': 'd514f7e1-fc93-324d-b2ec-9b4f186f8c94', 'label': 'Fedora Live'}
[creator:654] Skipping /dev/sdd3 with unknown filesystem: hfsplus
Traceback (most recent call last):
  File "/home/lmacken/code/github.com/liveusb-creator/liveusb/gui.py", line 595, in path
    self.size = self.live.isosize
  File "/home/lmacken/code/github.com/liveusb-creator/liveusb/gui.py", line 543, in size
    if value != self._size:
AttributeError: 'Release' object has no attribute '_size'
[creator:773] Verifying filesystem...
[gui:251] Unknown filesystem.  Your device may need to be reformatted.
Traceback (most recent call last):
  File "/home/lmacken/code/github.com/liveusb-creator/liveusb/gui.py", line 239, in run
    self.live.verify_filesystem()
  File "/home/lmacken/code/github.com/liveusb-creator/liveusb/creator.py", line 776, in verify_filesystem
    raise LiveUSBError(_("Unknown filesystem.  Your device "
LiveUSBError: Unknown filesystem.  Your device may need to be reformatted.
[creator:410] /org/freedesktop/UDisks2/block_devices/sdd2 selected: {'size': 5189632, 'parent': u'/dev/sdd', 'fsversion': 'FAT12', 'fstype': 'vfat', 'device': u'/dev/sdd2', 'mount': None, 'udi': '/org/freedesktop/UDisks2/drives/Generic_Flash_Disk_9FCDEA7E', 'uuid': 'C313-8FD9', 'free': None, 'label': 'LIVE'}
[creator:1015] Checking the MBR of /dev/sdd
[creator:1019] mbr = '0000'
[creator:741] Mounting /dev/sdd2
[creator:748] Unknown dbus exception while trying to mount device: org.freedesktop.UDisks2.Error.Failed: Error mounting /dev/sdd2 at /run/media/root/LIVE: Command-line `mount -t "vfat" -o "uhelper=udisks2,nodev,nosuid,uid=0,gid=0,shortname=mixed,utf8=1,showexec,flush" "/dev/sdd2" "/run/media/root/LIVE"' exited with non-zero exit status 32: mount: special device /dev/sdd2 does not exist

Traceback (most recent call last):
  File "/home/lmacken/code/github.com/liveusb-creator/liveusb/gui.py", line 504, in inspectDestination
    self.live.mount_device()
  File "/home/lmacken/code/github.com/liveusb-creator/liveusb/creator.py", line 752, in mount_device
    if not os.path.exists(mnt):
  File "/usr/lib64/python2.7/genericpath.py", line 26, in exists
    os.stat(path)
TypeError: coercing to Unicode: need string or buffer, NoneType found
MartinBriza commented 9 years ago

Thank you, this should be fixed now, too.

lmacken commented 9 years ago

I'm frequently hitting a weird UI glitch whenever I check the "Use dd to write the image" checkbox. Here is what it looks like immediately after I toggle the checkbox. I's actually enabled here, but doesn't reflect it, and the bottom of the window grows a weird black line.

screenshot from 2015-09-16 13-35-27

MartinBriza commented 9 years ago

Hmm, could be a driver issue. If you have a recent (I think Haswell) Intel graphics card and a new kernel, you could hit issues with Qt apps. This doesn't happen on my Sandy Bridge box where I tested in Gnome Shell.

lmacken commented 9 years ago

I'm hitting some weird behavior when using the Open button in the file chooser dialog for custom images. https://lmacken.fedorapeople.org/tmp/liveusb-creator-bug-1.webm

Double-clicking the file seems to work, but Open does not.

lmacken commented 8 years ago

A few more issues that I'm continually hitting.. I'm basically unable to use this tool for testing F23.

MartinBriza commented 8 years ago

Hi, thanks! As for the video, I don't experience that on any of my machines. There is however a problem with GNOME breaking its ABI compatibility - Qt usually uses directly the system-provided file dialogs, so normally you should get the regular GNOME one. Anyway, I tried it in GNOME too and am getting this one - but there are no glitches, it works as expected (except the fact it looks ugly). I'm not sure how to address this... I'll fix the other two issues this afternoon, they're valid.

lmacken commented 8 years ago

Yeah, I am hitting the file chooser issue on both of my machines. I guess it's a Qt issue that we'll have to push upstream if it persists.

If you're comfortable with the current state of this branch, feel free to merge it into develop and we can start filing individual issues as needed.

MartinBriza commented 8 years ago

Ok, I'll merge - it will be more convenient to have separate issues