nyxt icon indicating copy to clipboard operation
nyxt copied to clipboard

Windows builds?

Open irdyn opened this issue 7 years ago • 31 comments

I can't say how popular this sort of browser would be with Windows users, but it's starting to see more Linux-type developers with the advent of the Linux subsystem for it. I think, however, I can speak for most of us trapped in a Windows ecosystem in that we would appreciate another choice for web browsers for a platform that has so few. This is essentially the modern take on something like Conkeror but not dependent on (now) unsupported technology, which is awesome.

irdyn avatar Jan 10 '18 21:01 irdyn

Hi, thank you very much for the kind words! It was a huge priority that this project not be beholden on some third party API or technology that could break everything at any given minute, hence why the core and the ports are separated by a strict API.

I also don't know how popular it would be among Windows users, but there does appear to be some interest. I personally do not own any Windows licenses, so it is unlikely that I will be able to build such a version, but I would not be opposed to merging one in if anyone in the community would like to develop it.

Hopefully we can make your dreams come true! Thank you once again! :)

jmercouris avatar Jan 11 '18 20:01 jmercouris

There is WSL and VcXsrv to run graphical applications from WSL. I'll try, maybe, after few days work (today installed it on my laptop with Arch Linux).

emakei avatar Nov 14 '18 11:11 emakei

@mrDSide

Cool! I'm interested to see how it works out!

jmercouris avatar Nov 14 '18 20:11 jmercouris

I can almost install it using MSYS2 MinGW, but I get this error:

Unhandled LOAD-FOREIGN-LIBRARY-ERROR in thread #<SB-THREAD:THREAD "main thread" RUNNING
                                                  {23170329}>:
  Unable to load any of the alternatives:
   ((:DEFAULT "libsqlite3") (:DEFAULT "sqlite3"))

Backtrace for: #<SB-THREAD:THREAD "main thread" RUNNING {23170329}>
0: (SB-DEBUG::DEBUGGER-DISABLED-HOOK #<LOAD-FOREIGN-LIBRARY-ERROR "Unable to load any of the alternatives:~%   ~S" {253765E9}> #<unused argument> :QUIT T)
1: (SB-DEBUG::RUN-HOOK SB-EXT:*INVOKE-DEBUGGER-HOOK* #<LOAD-FOREIGN-LIBRARY-ERROR "Unable to load any of the alternatives:~%   ~S" {253765E9}>)
2: (INVOKE-DEBUGGER #<LOAD-FOREIGN-LIBRARY-ERROR "Unable to load any of the alternatives:~%   ~S" {253765E9}>)
3: (ERROR LOAD-FOREIGN-LIBRARY-ERROR :FORMAT-CONTROL "Unable to load any of the alternatives:~%   ~S" :FORMAT-ARGUMENTS (((:DEFAULT "libsqlite3") (:DEFAULT "sqlite3"))))
4: (CFFI::FL-ERROR "Unable to load any of the alternatives:~%   ~S" ((:DEFAULT "libsqlite3") (:DEFAULT "sqlite3")))
5: (CFFI::TRY-FOREIGN-LIBRARY-ALTERNATIVES SQLITE3-LIB ((:DEFAULT "libsqlite3") (:DEFAULT "sqlite3")) NIL)
6: ((FLET CFFI::%DO-LOAD :IN CFFI::%DO-LOAD-FOREIGN-LIBRARY) #<FOREIGN-LIBRARY SQLITE3-LIB> SQLITE3-LIB (:OR (:DEFAULT "libsqlite3") (:DEFAULT "sqlite3")))
7: (LOAD-FOREIGN-LIBRARY SQLITE3-LIB :SEARCH-PATH NIL)
8: (SB-FASL::LOAD-FASL-GROUP #S(SB-FASL::FASL-INPUT :STREAM #<SB-SYS:FD-STREAM for "file C:\\Users\\bradn\\AppData\\Local\\cache\\common-lisp\\sbcl-1.4.14-win-x86\\C\\Users\\bradn\\Downloads\\next\\quicklisp\\dists\\quicklisp\\software\\cl-sqlite-20130615-git\\sqlite-ffi.fasl" {2536AC21}> :TABLE #(65 #<PACKAGE "SB-IMPL"> SB-IMPL::%DEFPACKAGE #1="SQLITE-FFI" #2="CL" #3="CFFI" (#2# #3#) #4="ERROR-CODE" #5="P-SQLITE3" #6="SQLITE3-OPEN" #7="SQLITE3-CLOSE" #8="SQLITE3-ERRMSG" ...) :STACK #(0 LOAD-FOREIGN-LIBRARY SQLITE3-LIB ((:DARWIN #9=(:DEFAULT "libsqlite3")) #10=(:UNIX (:OR "libsqlite3.so.0" "libsqlite3.so")) #11=(T #12=(:OR #9# #13=#))) #10# #11# #12# #9# #13# "sqlite3" (#4# #5# #6# #7# #8# "SQLITE3-BUSY-TIMEOUT" "P-SQLITE3-STMT" "SQLITE3-PREPARE" "SQLITE3-FINALIZE" "SQLITE3-STEP" "SQLITE3-RESET" "SQLITE3-CLEAR-BINDINGS" ...) (#1#) ...) :NAME-BUFFER #("" "LOAD-FOREIGN-LIBRARYRARY") :DEPRECATED-STUFF NIL :SKIP-UNTIL NIL) NIL)
9: (SB-FASL::LOAD-AS-FASL #<SB-SYS:FD-STREAM for "file C:\\Users\\bradn\\AppData\\Local\\cache\\common-lisp\\sbcl-1.4.14-win-x86\\C\\Users\\bradn\\Downloads\\next\\quicklisp\\dists\\quicklisp\\software\\cl-sqlite-20130615-git\\sqlite-ffi.fasl" {2536AC21}> NIL NIL)
10: ((FLET SB-FASL::THUNK :IN LOAD))
11: (SB-FASL::CALL-WITH-LOAD-BINDINGS #<CLOSURE (FLET SB-FASL::THUNK :IN LOAD) {8FF04D}> #<SB-SYS:FD-STREAM for "file C:\\Users\\bradn\\AppData\\Local\\cache\\common-lisp\\sbcl-1.4.14-win-x86\\C\\Users\\bradn\\Downloads\\next\\quicklisp\\dists\\quicklisp\\software\\cl-sqlite-20130615-git\\sqlite-ffi.fasl" {2536AC21}>)
12: ((FLET SB-FASL::LOAD-STREAM :IN LOAD) #<SB-SYS:FD-STREAM for "file C:\\Users\\bradn\\AppData\\Local\\cache\\common-lisp\\sbcl-1.4.14-win-x86\\C\\Users\\bradn\\Downloads\\next\\quicklisp\\dists\\quicklisp\\software\\cl-sqlite-20130615-git\\sqlite-ffi.fasl" {2536AC21}> T)
13: (LOAD #P"C:/Users/bradn/AppData/Local/cache/common-lisp/sbcl-1.4.14-win-x86/C/Users/bradn/Downloads/next/quicklisp/dists/quicklisp/software/cl-sqlite-20130615-git/sqlite-ffi.fasl" :VERBOSE NIL :PRINT NIL :IF-DOES-NOT-EXIST T :EXTERNAL-FORMAT :DEFAULT)
14: (UIOP/UTILITY:CALL-WITH-MUFFLED-CONDITIONS #<CLOSURE (LAMBDA NIL :IN UIOP/LISP-BUILD:LOAD*) {25368E45}> ("Overwriting already existing readtable ~S." #(#:FINALIZERS-OFF-WARNING :ASDF-FINALIZERS)))
15: ((SB-PCL::EMF ASDF/ACTION:PERFORM) #<unused argument> #<unused argument> #<ASDF/LISP-ACTION:LOAD-OP > #<ASDF/LISP-ACTION:CL-SOURCE-FILE "sqlite" "sqlite-ffi">)
16: ((LAMBDA NIL :IN ASDF/ACTION:CALL-WHILE-VISITING-ACTION))
17: ((:METHOD ASDF/ACTION:PERFORM-WITH-RESTARTS (ASDF/LISP-ACTION:LOAD-OP ASDF/LISP-ACTION:CL-SOURCE-FILE)) #<ASDF/LISP-ACTION:LOAD-OP > #<ASDF/LISP-ACTION:CL-SOURCE-FILE "sqlite" "sqlite-ffi">) [fast-method]
18: ((:METHOD ASDF/ACTION:PERFORM-WITH-RESTARTS :AROUND (T T)) #<ASDF/LISP-ACTION:LOAD-OP > #<ASDF/LISP-ACTION:CL-SOURCE-FILE "sqlite" "sqlite-ffi">) [fast-method]
19: ((:METHOD ASDF/PLAN:PERFORM-PLAN (T)) #<ASDF/PLAN:SEQUENTIAL-PLAN {2583B8B9}>) [fast-method]
20: ((FLET SB-C::WITH-IT :IN SB-C::%WITH-COMPILATION-UNIT))
21: ((:METHOD ASDF/PLAN:PERFORM-PLAN :AROUND (T)) #<ASDF/PLAN:SEQUENTIAL-PLAN {2583B8B9}>) [fast-method]
22: ((:METHOD ASDF/OPERATE:OPERATE (ASDF/OPERATION:OPERATION ASDF/COMPONENT:COMPONENT)) #<ASDF/OPERATE:BUILD-OP > #<ASDF/SYSTEM:SYSTEM "next"> :PLAN-CLASS NIL :PLAN-OPTIONS NIL) [fast-method]
23: ((SB-PCL::EMF ASDF/OPERATE:OPERATE) #<unused argument> #<unused argument> #<ASDF/OPERATE:BUILD-OP > #<ASDF/SYSTEM:SYSTEM "next">)
24: ((LAMBDA NIL :IN ASDF/OPERATE:OPERATE))
25: ((:METHOD ASDF/OPERATE:OPERATE :AROUND (T T)) #<ASDF/OPERATE:BUILD-OP > #<ASDF/SYSTEM:SYSTEM "next">) [fast-method]
26: ((SB-PCL::EMF ASDF/OPERATE:OPERATE) #<unused argument> #<unused argument> ASDF/OPERATE:BUILD-OP :NEXT)
27: ((LAMBDA NIL :IN ASDF/OPERATE:OPERATE))
28: ((:METHOD ASDF/OPERATE:OPERATE :AROUND (T T)) ASDF/OPERATE:BUILD-OP :NEXT) [fast-method]
29: (ASDF/SESSION:CALL-WITH-ASDF-SESSION #<CLOSURE (LAMBDA NIL :IN ASDF/OPERATE:OPERATE) {2551A28D}> :OVERRIDE T :KEY NIL :OVERRIDE-CACHE T :OVERRIDE-FORCING NIL)
30: ((LAMBDA NIL :IN ASDF/OPERATE:OPERATE))
31: (ASDF/SESSION:CALL-WITH-ASDF-SESSION #<CLOSURE (LAMBDA NIL :IN ASDF/OPERATE:OPERATE) {2550B31D}> :OVERRIDE NIL :KEY NIL :OVERRIDE-CACHE NIL :OVERRIDE-FORCING NIL)
32: ((:METHOD ASDF/OPERATE:OPERATE :AROUND (T T)) ASDF/OPERATE:BUILD-OP :NEXT) [fast-method]
33: (ASDF/OPERATE:MAKE :NEXT)
34: (SB-INT:SIMPLE-EVAL-IN-LEXENV (ASDF/OPERATE:MAKE :NEXT) #<NULL-LEXENV>)
35: (EVAL (ASDF/OPERATE:MAKE :NEXT))
36: (SB-IMPL::PROCESS-EVAL/LOAD-OPTIONS ((:EVAL . "(require \"asdf\")") (:EVAL . "(when (string= (uiop:getenv \"NEXT_INTERNAL_QUICKLISP\") \"true\") (load \"quicklisp/setup.lisp\"))") (:EVAL . "(ql:quickload :trivial-features)") (:LOAD . "next.asd") (:EVAL . "(asdf:make :next)") (:QUIT)))
37: (SB-IMPL::TOPLEVEL-INIT)
38: ((FLET SB-UNIX::BODY :IN SB-EXT:SAVE-LISP-AND-DIE))
39: ((FLET "WITHOUT-INTERRUPTS-BODY-7" :IN SB-EXT:SAVE-LISP-AND-DIE))
40: ((LABELS SB-IMPL::RESTART-LISP :IN SB-EXT:SAVE-LISP-AND-DIE))
41: ("foreign function: #x435E8D")
42: ("foreign function: #x4045C4")

Which is odd, because I do seem to have SQLite installed:

$ pacman -Ss sqlite | grep installed
mingw32/mingw-w64-i686-sqlite3 3.24.0-1 [installed]
mingw64/mingw-w64-x86_64-sqlite3 3.24.0-1 [installed]
msys/lemon 3.8.7.0-1 (base-devel) [installed]
msys/libsqlite 3.21.0-2 (libraries) [installed]

bradrn avatar Dec 06 '18 03:12 bradrn

I am very familiar with this error! :)

I don't know msys, but I assume that SBCL does not recognized the pacman destination dir for packages as its default location.

One workaround is to do something like the following in your .sbclrc:

(require :cffi) (push "/path/to/your/lib/folder/" cffi:foreign-library-directories)

You might have to swap "/" for "", dunno.

Another approach is to patch the cl-sqlite package like I did for Guix, but that might be more complicated on MSYS. Let me know if you want details to go down that road.

Ambrevar avatar Dec 06 '18 08:12 Ambrevar

That gives me this error: Don't know how to REQUIRE CFFI.

(Note also with this approach that you have to edit the Makefile by uncommenting line 7 in order to load the .sbclrc.)

bradrn avatar Dec 06 '18 10:12 bradrn

Use Quicklisp to install CFFI. I'm not sure how it works on Windows, sorry if I cannot help more here.

You don't necessarily have to edit the Makefile, you can simply pass the following argument:

make next LISP_FLAGS=--non-interactive

Ambrevar avatar Dec 06 '18 15:12 Ambrevar

That helped the process run a bit more but eventually it still gave me the same sqlite error it was before.

bradrn avatar Dec 06 '18 20:12 bradrn

If you know a little bit about Common Lisp, try the following:

  • Fire up a REPL (in this case "sbcl").
  • Install Quicklisp.
  • Run (ql:quickload :cffi)
  • Run (push "/path/to/your/lib/folder/" cffi:foreign-library-directories)
  • Run (ql:quickload :cl-sqlite)

If you can get the above to work manually, then you should be able to install Next.

The Common Lisp community might know more.

Ambrevar avatar Dec 06 '18 20:12 Ambrevar

I've already run the first line, and the second line is in my ~/.sbclrc as per earlier. Running (ql:quickload :cl-sqlite) in the REPL gives me this error:

* (ql:quickload :cl-sqlite)

debugger invoked on a QUICKLISP-CLIENT:SYSTEM-NOT-FOUND in thread
#<THREAD "main thread" RUNNING {23170329}>:
  System "cl-sqlite" not found

Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL.

restarts (invokable by number or by possibly-abbreviated name):
  0: [CONTINUE] Try again
  1: [ABORT   ] Give up on "cl-sqlite"
  2:            Exit debugger, returning to top level.

((LABELS QUICKLISP-CLIENT::RECURSE :IN QUICKLISP-CLIENT::COMPUTE-LOAD-STRATEGY) "cl-sqlite")
   source: (CERROR "Try again" 'SYSTEM-NOT-FOUND :NAME NAME)
0]

bradrn avatar Dec 06 '18 20:12 bradrn

@bradrn that is because the system name is actually :sqlite, sorry for the confusion! so it would actually be (ql:quickload :sqlite). If that doesn't work, then there is indeed something wrong with how/where sqlite is installed and where CFFI is looking for sqlite (CFFI is the C foreign function interface for Lisp, which allows Lisp to run interop between Lisp and C enabling use of the sqlite library/db).

jmercouris avatar Dec 06 '18 21:12 jmercouris

That gives me a very familiar error again:

* (ql:quickload :sqlite)
To load "sqlite":
  Load 1 ASDF system:
    sqlite
; Loading "sqlite"

debugger invoked on a LOAD-FOREIGN-LIBRARY-ERROR in thread
#<THREAD "main thread" RUNNING {23170329}>:
  Unable to load any of the alternatives:
   ((:DEFAULT "libsqlite3") (:DEFAULT "sqlite3"))

Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL.

restarts (invokable by number or by possibly-abbreviated name):
  0: [RETRY                        ] Try loading the foreign library again.
  1: [USE-VALUE                    ] Use another library instead.
  2: [TRY-RECOMPILING              ] Recompile sqlite-ffi and try loading it again
  3: [RETRY                        ] Retry
                                     loading FASL for #<CL-SOURCE-FILE "sqlite" "sqlite-ffi">.
  4: [ACCEPT                       ] Continue, treating
                                     loading FASL for #<CL-SOURCE-FILE "sqlite" "sqlite-ffi">
                                     as having been successful.
  5:                                 Retry ASDF operation.
  6: [CLEAR-CONFIGURATION-AND-RETRY] Retry ASDF operation after resetting the
                                     configuration.
  7:                                 Retry ASDF operation.
  8:                                 Retry ASDF operation after resetting the
                                     configuration.
  9: [ABORT                        ] Give up on "sqlite"
 10:                                 Exit debugger, returning to top level.

(CFFI::FL-ERROR "Unable to load any of the alternatives:~%   ~S" ((:DEFAULT "libsqlite3") (:DEFAULT "sq                                                                             lite3")))
   source: (ERROR 'LOAD-FOREIGN-LIBRARY-ERROR :FORMAT-CONTROL CONTROL
                  :FORMAT-ARGUMENTS ARGUMENTS)
0]

Should I report this issue to the sqlite library? (Although I'm not quite sure where I would go to do this...)

bradrn avatar Dec 06 '18 21:12 bradrn

Then what I said was true, CFFI cannot find SQLITE, or it is installed in some strange location. I wish I could help, but I don't know the specifics of your system, sorry! Maybe there is some SQLITE documentation (the Lisp system) about Windows specifically https://common-lisp.net/project/cl-sqlite/

-John

That gives me a very familiar error again:

  • (ql:quickload :sqlite) To load "sqlite": Load 1 ASDF system: sqlite ; Loading "sqlite"

debugger invoked on a LOAD-FOREIGN-LIBRARY-ERROR in thread #<THREAD "main thread" RUNNING {23170329}>: Unable to load any of the alternatives: ((:DEFAULT "libsqlite3") (:DEFAULT "sqlite3"))

Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL.

restarts (invokable by number or by possibly-abbreviated name): 0: [RETRY ] Try loading the foreign library again. 1: [USE-VALUE ] Use another library instead. 2: [TRY-RECOMPILING ] Recompile sqlite-ffi and try loading it again 3: [RETRY ] Retry loading FASL for #<CL-SOURCE-FILE "sqlite" "sqlite-ffi">. 4: [ACCEPT ] Continue, treating loading FASL for #<CL-SOURCE-FILE "sqlite" "sqlite-ffi"> as having been successful. 5: Retry ASDF operation. 6: [CLEAR-CONFIGURATION-AND-RETRY] Retry ASDF operation after resetting the configuration. 7: Retry ASDF operation. 8: Retry ASDF operation after resetting the configuration. 9: [ABORT ] Give up on "sqlite" 10: Exit debugger, returning to top level.

(CFFI::FL-ERROR "Unable to load any of the alternatives:~% ~S" ((:DEFAULT "libsqlite3") (:DEFAULT "sq lite3"))) source: (ERROR 'LOAD-FOREIGN-LIBRARY-ERROR :FORMAT-CONTROL CONTROL :FORMAT-ARGUMENTS ARGUMENTS) 0]

Should I report this issue to the sqlite library? (Although I'm not quite sure where I would go to do this...)

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or mute the thread.

<#secure method=pgpmime mode=encrypt>

jmercouris avatar Dec 06 '18 21:12 jmercouris

No, it should work on your system.

One of the following

$ pacman -Ql msys/libsqlite $ pacman -Ql mingw32/mingw-w64-i686-sqlite3 $ pacman -Ql mingw64/mingw-w64-x86_64-sqlite3

should return some "libsqlite3" or "sqlite3".

What "push" have you done? What's in your .sbclrc?

Ambrevar avatar Dec 06 '18 21:12 Ambrevar

@Ambrevar All those give me error: package ________ was not found messages. Which is odd, because I do have some installed SQLite packages:

$ pacman -Q | grep sqlite
libsqlite 3.21.0-2
libsqlite-devel 3.21.0-2
mingw-w64-i686-sqlite3 3.24.0-1
mingw-w64-x86_64-sqlite3 3.24.0-1
sqlite 3.21.0-2

My .sbclrc contains the following:

;;; The following lines added by ql:add-to-init-file:
#-quicklisp
(let ((quicklisp-init (merge-pathnames "quicklisp/setup.lisp"
                                       (user-homedir-pathname))))
  (when (probe-file quicklisp-init)
    (load quicklisp-init)))


(require :cffi)
(push "/mingw64/bin/" cffi:*foreign-library-directories*)

bradrn avatar Dec 07 '18 00:12 bradrn

Refer to the documentation of msys2, the answer must be there.

For the push, it's probably more something like "/mingw64/lib/", but I could be wrong.

Ambrevar avatar Dec 07 '18 07:12 Ambrevar

Nope - making that change doesn't do anything.

I originally got that directory from the output of this command finding the installation location of SQLite:

$ pacman -Ql mingw-w64-x86_64-sqlite3
mingw-w64-x86_64-sqlite3 /mingw64/
mingw-w64-x86_64-sqlite3 /mingw64/bin/
mingw-w64-x86_64-sqlite3 /mingw64/bin/libsqlite3-0.dll
mingw-w64-x86_64-sqlite3 /mingw64/bin/sqlite3.exe
mingw-w64-x86_64-sqlite3 /mingw64/include/
mingw-w64-x86_64-sqlite3 /mingw64/include/sqlite3.h
mingw-w64-x86_64-sqlite3 /mingw64/include/sqlite3ext.h
mingw-w64-x86_64-sqlite3 /mingw64/lib/
mingw-w64-x86_64-sqlite3 /mingw64/lib/libsqlite3.a
mingw-w64-x86_64-sqlite3 /mingw64/lib/libsqlite3.dll.a
mingw-w64-x86_64-sqlite3 /mingw64/lib/pkgconfig/
mingw-w64-x86_64-sqlite3 /mingw64/lib/pkgconfig/sqlite3.pc
mingw-w64-x86_64-sqlite3 /mingw64/share/
mingw-w64-x86_64-sqlite3 /mingw64/share/licenses/
mingw-w64-x86_64-sqlite3 /mingw64/share/licenses/sqlite3/
mingw-w64-x86_64-sqlite3 /mingw64/share/licenses/sqlite3/LICENSE
mingw-w64-x86_64-sqlite3 /mingw64/share/man/
mingw-w64-x86_64-sqlite3 /mingw64/share/man/man1/
mingw-w64-x86_64-sqlite3 /mingw64/share/man/man1/sqlite3.1.gz

bradrn avatar Dec 07 '18 11:12 bradrn

Hmm, just had a look at the source of cl-sqlite and it might not support Windows. Not sure. You should ask the devs.

Ambrevar avatar Dec 07 '18 12:12 Ambrevar

(Sorry, clicked the wrong button :p)

Ambrevar avatar Dec 07 '18 12:12 Ambrevar

@omrisim210 Unfortunately, that didn't do anything. I'm using MinGW, so firstly I'm using libsqlite3-0.dll, which is already on PATH. But even when I rename it to sqlite3.dll, it doesn't do anything.

bradrn avatar Dec 24 '18 22:12 bradrn

well, at least sqlite is our only CFFI based dependency (that I am aware of), so if we can do without (which we have been considering), we could potentially improve portability quite a bit...

jmercouris avatar Dec 25 '18 00:12 jmercouris

I don't yet know how the build process is managed on this project, but wouldn't relying on something like Travis windows be a good idea?

Arteneko avatar Jun 01 '19 13:06 Arteneko

It does not seem to build on Windows, so I guess "Travis windows" would be premature at this point.

Ambrevar avatar Jun 01 '19 14:06 Ambrevar

Sorry to revive a old issue, but I am one of those former Linux users turned Windows users with the WSL (Windows Subsystem for Linux.) I am looking for a keyboard driven browser. I used qutebrowser on Linux, but its Windows port is unstable at the moment.

Is sqlite still a dependency?

kindrowboat avatar Dec 28 '20 17:12 kindrowboat

Firstly thank you for your interest! sqlite is not a dependency any more. If you do get Nyxt running, please do let us know!

jmercouris avatar Dec 28 '20 17:12 jmercouris

Thanks for the update. :slightly_smiling_face: I got further (I think), but still ran into the following error (pasted below). FWIW, I was able to install the packaged .deb on Debian Sid on WSL and run it using WSL+X410. That'll work for me, but it's not the same as a Windows compiled executable. I'd be happy to help with this as much as I can, but my knowledge of LISP is practically nil.

While evaluating the form starting at line 6, column 0
  of #P"C:/msys64/home/kindrobot/workspace/nyxt/quicklisp-client/dists/quicklisp/software/iolib-v0.8.3/iolib.asd":
Unhandled LOAD-SYSTEM-DEFINITION-ERROR in thread #<SB-THREAD:THREAD "main thread" RUNNING {10010B0523}>: Error while trying to load definition for system iolib from pathname C:/msys64/home/kindrobot/workspace/nyxt/quicklisp-client/dists/quicklisp/software/iolib-v0.8.3/iolib.asd: Error while parsing arguments to DESTRUCTURING-BIND:odd number of elements in keyword/value list: (:PATHNAME)

Backtrace for: #<SB-THREAD:THREAD "main thread" RUNNING {10010B0523}>
0: (SB-DEBUG::DEBUGGER-DISABLED-HOOK #<LOAD-SYSTEM-DEFINITION-ERROR {10045CB7C3}> #<unused argument> :QUIT T)
1: (SB-DEBUG::RUN-HOOK SB-EXT:*INVOKE-DEBUGGER-HOOK* #<LOAD-SYSTEM-DEFINITION-ERROR {10045CB7C3}>)
2: (INVOKE-DEBUGGER #<LOAD-SYSTEM-DEFINITION-ERROR {10045CB7C3}>)
3: (ERROR LOAD-SYSTEM-DEFINITION-ERROR :NAME "iolib" :PATHNAME #P"C:/msys64/home/kindrobot/workspace/nyxt/quicklisp-client/dists/quicklisp/software/iolib-v0.8.3/iolib.asd" :CONDITION #<SB-KERNEL::DEFMACRO-LAMBDA-LIST-BROKEN-KEY-LIST-ERROR {10045CA693}>)
4: ((FLET "H0" :IN PERFORM) #<SB-KERNEL::DEFMACRO-LAMBDA-LIST-BROKEN-KEY-LIST-ERROR {10045CA693}>)
5: (SB-KERNEL::%SIGNAL #<SB-KERNEL::DEFMACRO-LAMBDA-LIST-BROKEN-KEY-LIST-ERROR {10045CA693}>)
6: (ERROR SB-KERNEL::DEFMACRO-LAMBDA-LIST-BROKEN-KEY-LIST-ERROR :KIND NIL :NAME DESTRUCTURING-BIND :PROBLEM :ODD-LENGTH :INFO (:PATHNAME))
7: (ASDF/PARSE-DEFSYSTEM:PARSE-COMPONENT-FORM #<SYSTEM "iolib/syscalls"> (:IOLIB-GROVEL-FILE "ffi-types" :PATHNAME) :PREVIOUS-SERIAL-COMPONENT "pkgdcl")
8: (ASDF/PARSE-DEFSYSTEM:PARSE-COMPONENT-FORM NIL (:MODULE "iolib/syscalls" :PATHNAME #P"C:/msys64/home/kindrobot/workspace/nyxt/quicklisp-client/dists/quicklisp/software/iolib-v0.8.3/src/syscalls/" :DESCRIPTION "Syscalls and foreign types." :AUTHOR "Stelian Ionescu <[email protected]>" :LICENCE "MIT" :VERSION (:READ-FILE-FORM "version.sexp") ...) :PREVIOUS-SERIAL-COMPONENT NIL)
9: (SB-INT:SIMPLE-EVAL-IN-LEXENV (DEFSYSTEM :IOLIB/SYSCALLS :DESCRIPTION "Syscalls and foreign types." :AUTHOR "Stelian Ionescu <[email protected]>" :LICENCE "MIT" :VERSION (:READ-FILE-FORM "version.sexp") :DEFSYSTEM-DEPENDS-ON (:IOLIB.ASDF :IOLIB.CONF :IOLIB.GROVEL) ...) #<NULL-LEXENV>)
10: (SB-EXT:EVAL-TLF (DEFSYSTEM :IOLIB/SYSCALLS :DESCRIPTION "Syscalls and foreign types." :AUTHOR "Stelian Ionescu <[email protected]>" :LICENCE "MIT" :VERSION (:READ-FILE-FORM "version.sexp") :DEFSYSTEM-DEPENDS-ON (:IOLIB.ASDF :IOLIB.CONF :IOLIB.GROVEL) ...) 1 NIL)
11: ((LABELS SB-FASL::EVAL-FORM :IN SB-INT:LOAD-AS-SOURCE) (DEFSYSTEM :IOLIB/SYSCALLS :DESCRIPTION "Syscalls and foreign types." :AUTHOR "Stelian Ionescu <[email protected]>" :LICENCE "MIT" :VERSION (:READ-FILE-FORM "version.sexp") :DEFSYSTEM-DEPENDS-ON (:IOLIB.ASDF :IOLIB.CONF :IOLIB.GROVEL) ...) 1)
12: ((LAMBDA (SB-KERNEL:FORM &KEY :CURRENT-INDEX &ALLOW-OTHER-KEYS) :IN SB-INT:LOAD-AS-SOURCE) (DEFSYSTEM :IOLIB/SYSCALLS :DESCRIPTION "Syscalls and foreign types." :AUTHOR "Stelian Ionescu <[email protected]>" :LICENCE "MIT" :VERSION (:READ-FILE-FORM "version.sexp") :DEFSYSTEM-DEPENDS-ON (:IOLIB.ASDF :IOLIB.CONF :IOLIB.GROVEL) ...) :CURRENT-INDEX 1)
13: (SB-C::%DO-FORMS-FROM-INFO #<CLOSURE (LAMBDA (SB-KERNEL:FORM &KEY :CURRENT-INDEX &ALLOW-OTHER-KEYS) :IN SB-INT:LOAD-AS-SOURCE) {1003C41FDB}> #<SB-C::SOURCE-INFO {1003C41F93}> SB-C::INPUT-ERROR-IN-LOAD)
14: (SB-INT:LOAD-AS-SOURCE #<SB-INT:FORM-TRACKING-STREAM for "file C:\\msys64\\home\\kindrobot\\workspace\\nyxt\\quicklisp-client\\dists\\quicklisp\\software\\iolib-v0.8.3\\iolib.asd" {1003C3E9B3}> :VERBOSE NIL :PRINT NIL :CONTEXT "loading")
15: ((FLET SB-FASL::THUNK :IN LOAD))
16: (SB-FASL::CALL-WITH-LOAD-BINDINGS #<CLOSURE (FLET SB-FASL::THUNK :IN LOAD) {96C81B}> #<SB-INT:FORM-TRACKING-STREAM for "file C:\\msys64\\home\\kindrobot\\workspace\\nyxt\\quicklisp-client\\dists\\quicklisp\\software\\iolib-v0.8.3\\iolib.asd" {1003C3E9B3}>)
17: ((FLET SB-FASL::LOAD-STREAM :IN LOAD) #<SB-INT:FORM-TRACKING-STREAM for "file C:\\msys64\\home\\kindrobot\\workspace\\nyxt\\quicklisp-client\\dists\\quicklisp\\software\\iolib-v0.8.3\\iolib.asd" {1003C3E9B3}> NIL)
18: (LOAD #P"C:/msys64/home/kindrobot/workspace/nyxt/quicklisp-client/dists/quicklisp/software/iolib-v0.8.3/iolib.asd" :VERBOSE NIL :PRINT NIL :IF-DOES-NOT-EXIST T :EXTERNAL-FORMAT :UTF-8)
19: (CALL-WITH-MUFFLED-CONDITIONS #<CLOSURE (LAMBDA NIL :IN LOAD*) {1003C3A3BB}> ("Overwriting already existing readtable ~S." #(#:FINALIZERS-OFF-WARNING :ASDF-FINALIZERS)))
20: ((FLET "THUNK" :IN PERFORM))
21: (SB-IMPL::%WITH-STANDARD-IO-SYNTAX #<CLOSURE (FLET "THUNK" :IN PERFORM) {96CB6B}>)
22: ((:METHOD PERFORM (DEFINE-OP SYSTEM)) #<DEFINE-OP > #<ASDF/SYSTEM:UNDEFINED-SYSTEM "iolib">) [fast-method]
23: ((SB-PCL::EMF PERFORM) #<unused argument> #<unused argument> #<DEFINE-OP > #<ASDF/SYSTEM:UNDEFINED-SYSTEM "iolib">)
24: ((LAMBDA NIL :IN ASDF/ACTION:CALL-WHILE-VISITING-ACTION))
25: ((:METHOD PERFORM-WITH-RESTARTS :AROUND (T T)) #<DEFINE-OP > #<ASDF/SYSTEM:UNDEFINED-SYSTEM "iolib">) [fast-method]
26: ((:METHOD PERFORM-PLAN (T)) #<SEQUENTIAL-PLAN {1003C37813}>) [fast-method]
27: ((FLET SB-C::WITH-IT :IN SB-C::%WITH-COMPILATION-UNIT))
28: ((:METHOD PERFORM-PLAN :AROUND (T)) #<SEQUENTIAL-PLAN {1003C37813}>) [fast-method]
29: ((:METHOD OPERATE (OPERATION COMPONENT)) #<DEFINE-OP > #<ASDF/SYSTEM:UNDEFINED-SYSTEM "iolib"> :PLAN-CLASS NIL :PLAN-OPTIONS NIL) [fast-method]
30: ((SB-PCL::EMF OPERATE) #<unused argument> #<unused argument> #<DEFINE-OP > #<ASDF/SYSTEM:UNDEFINED-SYSTEM "iolib">)
31: ((LAMBDA NIL :IN OPERATE))
32: ((:METHOD OPERATE :AROUND (T T)) #<DEFINE-OP > #<ASDF/SYSTEM:UNDEFINED-SYSTEM "iolib">) [fast-method]
33: ((LAMBDA NIL :IN LOAD-ASD))
34: ((LAMBDA NIL :IN FIND-SYSTEM))
35: (ASDF/SESSION:CONSULT-ASDF-CACHE (FIND-SYSTEM "iolib") #<CLOSURE (LAMBDA NIL :IN FIND-SYSTEM) {1003C0BFBB}>)
36: ((:METHOD FIND-COMPONENT (STRING T)) "iolib" NIL :REGISTERED NIL) [fast-method]
37: (ASDF/FIND-COMPONENT:RESOLVE-DEPENDENCY-NAME #<SYSTEM "nyxt"> :IOLIB NIL)
38: (ASDF/PLAN:MAP-DIRECT-DEPENDENCIES #<PREPARE-OP > #<SYSTEM "nyxt"> #<CLOSURE (LAMBDA (ASDF/PLAN::O ASDF/PLAN::C) :IN ASDF/PLAN:TRAVERSE-ACTION) {100486150B}>)
39: ((LAMBDA NIL :IN ASDF/PLAN:TRAVERSE-ACTION))
40: ((LAMBDA NIL :IN ASDF/ACTION:CALL-WHILE-VISITING-ACTION))
41: (ASDF/PLAN:TRAVERSE-ACTION #<SEQUENTIAL-PLAN {1004852EA3}> #<PREPARE-OP > #<SYSTEM "nyxt"> NIL)
42: (ASDF/PLAN:MAP-DIRECT-DEPENDENCIES #<PREPARE-OP > #<CL-SOURCE-FILE "nyxt" "package"> #<CLOSURE (LAMBDA (ASDF/PLAN::O ASDF/PLAN::C) :IN ASDF/PLAN:TRAVERSE-ACTION) {100486110B}>)
43: ((LAMBDA NIL :IN ASDF/PLAN:TRAVERSE-ACTION))
44: ((LAMBDA NIL :IN ASDF/ACTION:CALL-WHILE-VISITING-ACTION))
45: (ASDF/PLAN:TRAVERSE-ACTION #<SEQUENTIAL-PLAN {1004852EA3}> #<PREPARE-OP > #<CL-SOURCE-FILE "nyxt" "package"> NIL)
46: (ASDF/PLAN:MAP-DIRECT-DEPENDENCIES #<LOAD-OP > #<CL-SOURCE-FILE "nyxt" "package"> #<CLOSURE (LAMBDA (ASDF/PLAN::O ASDF/PLAN::C) :IN ASDF/PLAN:TRAVERSE-ACTION) {100486029B}>)
47: ((LAMBDA NIL :IN ASDF/PLAN:TRAVERSE-ACTION))
48: ((LAMBDA NIL :IN ASDF/ACTION:CALL-WHILE-VISITING-ACTION))
49: (ASDF/PLAN:TRAVERSE-ACTION #<SEQUENTIAL-PLAN {1004852EA3}> #<LOAD-OP > #<CL-SOURCE-FILE "nyxt" "package"> NIL)
50: (ASDF/PLAN:MAP-DIRECT-DEPENDENCIES #<LOAD-OP > #<SYSTEM "nyxt"> #<CLOSURE (LAMBDA (ASDF/PLAN::O ASDF/PLAN::C) :IN ASDF/PLAN:TRAVERSE-ACTION) {100485FDFB}>)
51: ((LAMBDA NIL :IN ASDF/PLAN:TRAVERSE-ACTION))
52: ((LAMBDA NIL :IN ASDF/ACTION:CALL-WHILE-VISITING-ACTION))
53: (ASDF/PLAN:TRAVERSE-ACTION #<SEQUENTIAL-PLAN {1004852EA3}> #<LOAD-OP > #<SYSTEM "nyxt"> NIL)
54: (ASDF/PLAN:MAP-DIRECT-DEPENDENCIES #<PREPARE-OP > #<SYSTEM "nyxt/gtk"> #<CLOSURE (LAMBDA (ASDF/PLAN::O ASDF/PLAN::C) :IN ASDF/PLAN:TRAVERSE-ACTION) {100485F93B}>)
55: ((LAMBDA NIL :IN ASDF/PLAN:TRAVERSE-ACTION))
56: ((LAMBDA NIL :IN ASDF/ACTION:CALL-WHILE-VISITING-ACTION))
57: (ASDF/PLAN:TRAVERSE-ACTION #<SEQUENTIAL-PLAN {1004852EA3}> #<PREPARE-OP > #<SYSTEM "nyxt/gtk"> NIL)
58: (ASDF/PLAN:MAP-DIRECT-DEPENDENCIES #<PREPARE-OP > #<CL-SOURCE-FILE "nyxt/gtk" "renderer-gtk"> #<CLOSURE (LAMBDA (ASDF/PLAN::O ASDF/PLAN::C) :IN ASDF/PLAN:TRAVERSE-ACTION) {100485F53B}>)
59: ((LAMBDA NIL :IN ASDF/PLAN:TRAVERSE-ACTION))
60: ((LAMBDA NIL :IN ASDF/ACTION:CALL-WHILE-VISITING-ACTION))
61: (ASDF/PLAN:TRAVERSE-ACTION #<SEQUENTIAL-PLAN {1004852EA3}> #<PREPARE-OP > #<CL-SOURCE-FILE "nyxt/gtk" "renderer-gtk"> NIL)
62: (ASDF/PLAN:MAP-DIRECT-DEPENDENCIES #<LOAD-OP > #<CL-SOURCE-FILE "nyxt/gtk" "renderer-gtk"> #<CLOSURE (LAMBDA (ASDF/PLAN::O ASDF/PLAN::C) :IN ASDF/PLAN:TRAVERSE-ACTION) {100485F0FB}>)
63: ((LAMBDA NIL :IN ASDF/PLAN:TRAVERSE-ACTION))
64: ((LAMBDA NIL :IN ASDF/ACTION:CALL-WHILE-VISITING-ACTION))
65: (ASDF/PLAN:TRAVERSE-ACTION #<SEQUENTIAL-PLAN {1004852EA3}> #<LOAD-OP > #<CL-SOURCE-FILE "nyxt/gtk" "renderer-gtk"> NIL)
66: (ASDF/PLAN:MAP-DIRECT-DEPENDENCIES #<LOAD-OP > #<SYSTEM "nyxt/gtk"> #<CLOSURE (LAMBDA (ASDF/PLAN::O ASDF/PLAN::C) :IN ASDF/PLAN:TRAVERSE-ACTION) {100485EC4B}>)
67: ((LAMBDA NIL :IN ASDF/PLAN:TRAVERSE-ACTION))
68: ((LAMBDA NIL :IN ASDF/ACTION:CALL-WHILE-VISITING-ACTION))
69: (ASDF/PLAN:TRAVERSE-ACTION #<SEQUENTIAL-PLAN {1004852EA3}> #<LOAD-OP > #<SYSTEM "nyxt/gtk"> NIL)
70: (ASDF/PLAN:MAP-DIRECT-DEPENDENCIES #<PREPARE-OP > #<SYSTEM "nyxt/gtk-application"> #<CLOSURE (LAMBDA (ASDF/PLAN::O ASDF/PLAN::C) :IN ASDF/PLAN:TRAVERSE-ACTION) {100485E78B}>)
71: ((LAMBDA NIL :IN ASDF/PLAN:TRAVERSE-ACTION))
72: ((LAMBDA NIL :IN ASDF/ACTION:CALL-WHILE-VISITING-ACTION))
73: (ASDF/PLAN:TRAVERSE-ACTION #<SEQUENTIAL-PLAN {1004852EA3}> #<PREPARE-OP > #<SYSTEM "nyxt/gtk-application"> NIL)
74: (ASDF/PLAN:MAP-DIRECT-DEPENDENCIES #<LOAD-OP > #<SYSTEM "nyxt/gtk-application"> #<CLOSURE (LAMBDA (ASDF/PLAN::O ASDF/PLAN::C) :IN ASDF/PLAN:TRAVERSE-ACTION) {100485E42B}>)
75: ((LAMBDA NIL :IN ASDF/PLAN:TRAVERSE-ACTION))
76: ((LAMBDA NIL :IN ASDF/ACTION:CALL-WHILE-VISITING-ACTION))
77: (ASDF/PLAN:TRAVERSE-ACTION #<SEQUENTIAL-PLAN {1004852EA3}> #<LOAD-OP > #<SYSTEM "nyxt/gtk-application"> NIL)
78: (ASDF/PLAN:MAP-DIRECT-DEPENDENCIES #<PROGRAM-OP > #<SYSTEM "nyxt/gtk-application"> #<CLOSURE (LAMBDA (ASDF/PLAN::O ASDF/PLAN::C) :IN ASDF/PLAN:TRAVERSE-ACTION) {100485D50B}>)
79: ((LAMBDA NIL :IN ASDF/PLAN:TRAVERSE-ACTION))
80: ((LAMBDA NIL :IN ASDF/ACTION:CALL-WHILE-VISITING-ACTION))
81: (ASDF/PLAN:TRAVERSE-ACTION #<SEQUENTIAL-PLAN {1004852EA3}> #<PROGRAM-OP > #<SYSTEM "nyxt/gtk-application"> T)
82: (ASDF/PLAN:MAP-DIRECT-DEPENDENCIES #<BUILD-OP > #<SYSTEM "nyxt/gtk-application"> #<CLOSURE (LAMBDA (ASDF/PLAN::O ASDF/PLAN::C) :IN ASDF/PLAN:TRAVERSE-ACTION) {100485402B}>)
83: ((LAMBDA NIL :IN ASDF/PLAN:TRAVERSE-ACTION))
84: ((LAMBDA NIL :IN ASDF/ACTION:CALL-WHILE-VISITING-ACTION))
85: (ASDF/PLAN:TRAVERSE-ACTION #<SEQUENTIAL-PLAN {1004852EA3}> #<BUILD-OP > #<SYSTEM "nyxt/gtk-application"> T)
86: ((LAMBDA NIL :IN MAKE-PLAN))
87: ((:METHOD OPERATE (OPERATION COMPONENT)) #<BUILD-OP > #<SYSTEM "nyxt/gtk-application"> :PLAN-CLASS NIL :PLAN-OPTIONS NIL) [fast-method]
88: ((SB-PCL::EMF OPERATE) #<unused argument> #<unused argument> #<BUILD-OP > #<SYSTEM "nyxt/gtk-application">)
89: ((LAMBDA NIL :IN OPERATE))
90: ((:METHOD OPERATE :AROUND (T T)) #<BUILD-OP > #<SYSTEM "nyxt/gtk-application">) [fast-method]
91: ((SB-PCL::EMF OPERATE) #<unused argument> #<unused argument> BUILD-OP :NYXT/GTK-APPLICATION)
92: ((LAMBDA NIL :IN OPERATE))
93: ((:METHOD OPERATE :AROUND (T T)) BUILD-OP :NYXT/GTK-APPLICATION) [fast-method]
94: (ASDF/SESSION:CALL-WITH-ASDF-SESSION #<CLOSURE (LAMBDA NIL :IN OPERATE) {10044F3A3B}> :OVERRIDE T :KEY NIL :OVERRIDE-CACHE T :OVERRIDE-FORCING NIL)
95: ((LAMBDA NIL :IN OPERATE))
96: (ASDF/SESSION:CALL-WITH-ASDF-SESSION #<CLOSURE (LAMBDA NIL :IN OPERATE) {10042567DB}> :OVERRIDE NIL :KEY NIL :OVERRIDE-CACHE NIL :OVERRIDE-FORCING NIL)
97: ((:METHOD OPERATE :AROUND (T T)) BUILD-OP :NYXT/GTK-APPLICATION) [fast-method]
98: (MAKE :NYXT/GTK-APPLICATION)
99: (SB-INT:SIMPLE-EVAL-IN-LEXENV (MAKE :NYXT/GTK-APPLICATION) #<NULL-LEXENV>)
100: (EVAL (MAKE :NYXT/GTK-APPLICATION))
101: (SB-IMPL::PROCESS-EVAL/LOAD-OPTIONS ((:EVAL . "(require \"asdf\")") (:EVAL . #<(SIMPLE-ARRAY CHARACTER (217)) (when (string= (uiop:getenv "NYXT_INTERNAL_QUICKLISP") "true") (load "quicklisp-client/setup.lisp") (push #p"quicklisp-libraries/" (symbol-value (find-symbol "*LOCAL-PROJECT-DIRECTORIES*" (find-packag... {100230033F}>) (:LOAD . "nyxt.asd") (:EVAL . "(asdf:make :nyxt/gtk-application)") (:EVAL . "(uiop:quit)") (:QUIT)))
102: (SB-IMPL::TOPLEVEL-INIT)
103: ((FLET SB-UNIX::BODY :IN SB-EXT:SAVE-LISP-AND-DIE))
104: ((FLET "WITHOUT-INTERRUPTS-BODY-7" :IN SB-EXT:SAVE-LISP-AND-DIE))
105: ((LABELS SB-IMPL::RESTART-LISP :IN SB-EXT:SAVE-LISP-AND-DIE))
106: ("foreign function: #x43270B")
107: ("foreign function: #x403F08")

kindrowboat avatar Dec 29 '20 20:12 kindrowboat

This error seems to indicate that iolib fails on WSL. Can you report this issue upstream?

https://github.com/sionescu/iolib

Ambrevar avatar Dec 30 '20 10:12 Ambrevar

@Ambrevar Pardon my ignorance, but this was built on msys, not WSL. Does your point still stand? Should I still report it upstream?

edit: or is this the (conflictingly acronym'd) Windows System Library that msys uses?

kindrowboat avatar Dec 30 '20 15:12 kindrowboat

Yes, please do! :)

Ambrevar avatar Dec 30 '20 15:12 Ambrevar

@motevets would you also please consider documenting how you got Nyxt to work via the WSL so that we may provide other users on Windows the same ability? A pull request would be welcome!

jmercouris avatar Dec 30 '20 15:12 jmercouris