Shinmera / qt-libs

Helper system to ensure the necessary library for CommonQt/Qtools development are available and deployable.
zlib License
18 stars 8 forks source link

Wonkiness on Windows 7 ccl 32 bit #4

Closed jkordani closed 5 years ago

jkordani commented 8 years ago

Hello Shinmera!

I have finally gotten qtools up and running on windows 7 64 bit, using a 32 bit ccl following the qtools github.io page but I'm having problems when I get to the deploy step.

For starters I noticed that when I initially tried to quickload qt-libs, it took several issuances of the command and a purge of the resultant standalone directory to finally succeed in getting past the (ql:quickload '(qtools qtcore qtgui)) step. In each attempted load of the qt-libs library, different things seemed to happen at each step. I chalked this up to a potentially flaky internet connection on my part, and I apologize for its vagueness, capturing a log of this would have spanned several image restarts, I apologize for its vagueness.

Once I was able to successfully invoke the (with-main-window call from your demo code, I attempted to walk through the deploy steps and this is where I ran into issues. Taking a cue from your suggestion that things would probably work best trying to deploy from an image with no extra initialization, I tried the following command line.

C:\Users\bullshit user>ccl32 --no-init --load c:\Users\Public\Documents\ccl-trunk\tools\asdf.lisp -e "(asdf:operate :build-op :qtools-intro :force T)"

My first problem was that I needed to configure asdf to find the project in the quicklisp local-projects, and then once asdf couldn't find the quicklisp-sourced qtools, I added the quicklisp/software folder to the registry search as well.

I now realize that since I have multiple versions of qtools and associated libs in my quicklisp distribution from numerous upgrades over time, that it is likely that a barebones asdf library search is probably picking up a random sampling of the appropriate libs from the quicklisp/software folder as opposed to whatever quicklisp does to provide only the most recent libs, and so I am here to ask, given that you expect users to find qtools from quicklisp but then base applications off of it (likely sourced from local-projects or other user specified locations outside of quicklisp, when deploying, how should everything be set up in order to deploy with the correct libraries located? As it stands my efforts have resulted in binaries that crash or don't display a window at all, but I suspect is because I'm not pulling in everything cleanly.

Any help would be greatly appreciated.

Shinmera commented 8 years ago

There should be restarts for every failure that let you try to redownload the archive for every step instead of having to clean things out manually and reissuing the command. I can't help you beyond that without knowing more about what your particular failures were or how they happened.

Usually I do use the standard initialisation code that pulls in Quicklisp and everything. The only thing you must exclude for sure is Slime/Swank as that would start threads, making your image unable to be deployed. The reason why I still use my standard init file that pulls in Quicklisp is what you essentially discovered-- ASDF is a pain to manage on your own. If you absolutely want to exclude Quicklisp from your distributed image, you can use ql:write-asdf-manifest-file to generate a file listing all the active ASDs in their proper order for you. You can then use this file to tell ASDF where to load the systems from. I haven't ever used this myself however, so I can't really tell you how to go about it in exact steps.

In order to understand what makes it crash, you have to launch your generated binary from the Windows command prompt. That might give you some sort of clue as to where it's failing.

jkordani commented 8 years ago

The failures I would encounter were when I would attempt to load qtools, indicating that something was wrong with the dlls. As I have no more context for this problem I'll just have to try to reproduce it later.

As for the crashes, I mispoke. After using asdf to build an executable, after the messagebox prompt appears, the application would hang. After I tried walking back through my steps (and currently) I would instead experience no gui window but the process would be running in task manager. I only though to try running from the command line in the latter case. When run from windows explorer, i get no window and the application appears in the task manager. when I run from the command line, the prompt immediately returns and the program appears in the task manager for a few seconds. This happens even after I use a normal image to build the executable with (omitting --no-init)

jkordani commented 8 years ago

At this point, i've deleted the cache files, qt-libs and qtools in quicklisp, opened ccl32 and just loaded qt-libs and qtools, waited for them to finish, then retried building the sample app and I get the same behavior. loading the project in a running instance and invoking the main function works fine however

Shinmera commented 8 years ago

Can you try building it with SBCL?

jkordani commented 8 years ago

No I haven't. I'll do that next. On Jun 7, 2016 8:28 AM, "Nicolas Hafner" notifications@github.com wrote:

Have you tried building it with SBCL?

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/Shinmera/qt-libs/issues/4#issuecomment-224181371, or mute the thread https://github.com/notifications/unsubscribe/ABDh4yctQBcencTAZ8axbJdkVUHbZ-35ks5qJQFrgaJpZM4Iup1J .

jkordani commented 8 years ago

building from sbcl out of the same quicklisp distribution is invoking yet another redownload of your libraries. tangentially, the drakma call seems to take a very long time to pull the files down when compared to a pull from a browser. I know you're not responsible for this but I figured the former might interest you while the latter is merely noteworthy.

Thanks for all your work in this space, with this problem and otherwise.

On Tuesday, June 7, 2016, Joshua Kordani joshua.kordani@gmail.com wrote:

No I haven't. I'll do that next. On Jun 7, 2016 8:28 AM, "Nicolas Hafner" <notifications@github.com javascript:_e(%7B%7D,'cvml','notifications@github.com');> wrote:

Have you tried building it with SBCL?

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/Shinmera/qt-libs/issues/4#issuecomment-224181371, or mute the thread https://github.com/notifications/unsubscribe/ABDh4yctQBcencTAZ8axbJdkVUHbZ-35ks5qJQFrgaJpZM4Iup1J .

jkordani commented 8 years ago

building with sbcl results in an exe that displays the gui. when I close the gui the process remains and I have to later close it. cpu usage of the exe goes to 100% after closing the gui, behavior similar to what happens with a ccl built exe minus the gui display.

Shinmera commented 8 years ago

What does it show if you launch it from the cmd?

Shinmera commented 5 years ago

Closing due to inactivity.