jetzig-framework / jetzig

Jetzig is a web framework written in Zig
MIT License
308 stars 15 forks source link

New projects made with jetzig init on Windows will not run #81

Closed rhues closed 3 weeks ago

rhues commented 3 weeks ago

When working on Ubuntu Linux, all seems to work fine, but this issue seems to be for Windows only.

With the latest Jetzig, I create a directory, cd to it and run jetzig init. The new project appears to be created successfully, along with the two fetch operations. Then I run `zig build run' and get this result:

PS C:\Users\rob\huez\jetzigtest> zig build run warning: [zmpl] Templates path not found: src\app\mailers - skipping. [jetzig] Imported 1 route(s) [jetzig] Mailers directory not found, no mailers generated: C:\Users\rob\huez\jetzigtest\src\app\mailers [jetzig] Jobs directory not found, no jobs generated: C:\Users\rob\huez\jetzigtest\src\app\jobs run └─ run jetzigtest └─ install └─ install jetzigtest └─ zig build-exe jetzigtest Debug native 1 errors C:\Users\rob\AppData\Local\zig\p\12204d765047997e80f0d3cd6530ead064640fe7682f1c8e98d86e79259e9d2512f2\src\jetzig\colors.zig:34:26: error: root struct of file 'std' has no member named 'StaticStringMap' pub const codes_map = std.StaticStringMap(std.io.tty.Color).initComptime(.{


C:\ProgramData\chocolatey\lib\zig\tools\zig-windows-x86_64-0.12.0\lib\std\std.zig:1:1: note: struct declared here
pub const ArrayHashMap = array_hash_map.ArrayHashMap;
^~~
referenced by:
writeWindows__anon_17406: C:\Users\rob\AppData\Local\zig\p\12204d765047997e80f0d3cd6530ead064640fe7682f1c8e98d86e79259e9d2512f2\src\jetzig\loggers\LogQueue.zig:291:34
publish: C:\Users\rob\AppData\Local\zig\p\12204d765047997e80f0d3cd6530ead064640fe7682f1c8e98d86e79259e9d2512f2\src\jetzig\loggers\LogQueue.zig:200:37
remaining reference traces hidden; use '-freference-trace' to see all reference traces
error: the following command failed with 1 compilation errors:
C:\ProgramData\chocolatey\lib\zig\tools\zig-windows-x86_64-0.12.0\zig.exe build-exe -ODebug --dep iguanas --dep jetzig --dep zmpl --dep zmd --dep routes -Mroot=C:\Users\rob\huez\jetzigtest\src\main.zig -Miguanas=C:\Users\rob\AppData\Local\zig\p\12202fd319a5ab4e124b00e8ddea474d07c19c4e005d77b6c29fc44860904ea01a5c\src\root.zig --dep mime_types --dep zmpl --dep args --dep zmd --dep jetkv --dep smtp --dep httpz -Mjetzig=C:\Users\rob\AppData\Local\zig\p\12204d765047997e80f0d3cd6530ead064640fe7682f1c8e98d86e79259e9d2512f2\src\jetzig.zig --dep zmd --dep zmpl.manifest -Mzmpl=C:\Users\rob\AppData\Local\zig\p\1220b6dfedaf6ad2b464ebcec2aafdc01ba593a07a53885033d56c50a5a04334b517\src\zmpl.zig -Mzmd=C:\Users\rob\AppData\Local\zig\p\12203b56c2e17a2fd62ea3d3d9be466f43921a3aef88b381cf58f41251815205fdb5\src\zmd.zig --dep iguanas --dep jetzig --dep zmpl --dep zmd --dep routes -Mroutes=C:\Users\rob\huez\jetzigtest\zig-cache\o\37dbb8593fe9cd0deec5d99d1cb96bd0\routes.zig -Mmime_types=C:\Users\rob\huez\jetzigtest\zig-cache\o\72b25efd1d10b0e9b932ba7abe9814d6\mime_types.zig -Margs=C:\Users\rob\AppData\Local\zig\p\1220fe6ae56b668cc4a033282b5f227bfbb46a67ede6d84e9f9493fea9de339b5f37\args.zig -Mjetkv=C:\Users\rob\AppData\Local\zig\p\12201944769794b2f18e3932ec3d5031066d0ccb3293cf7c3fb1f5b269e56b76c57e\src\jetkv.zig -Msmtp=C:\Users\rob\AppData\Local\zig\p\1220d4f1c2472769b0d689ea878f41f0a66cb07f28569a138aea2c0a648a5c90dd4e\src\smtp.zig --dep metrics --dep websocket --dep build -Mhttpz=C:\Users\rob\AppData\Local\zig\p\1220ea0d5860657d59cf1ca0fe0e553bfabc7d9cd467005488155baffb1ddf65ecf2\src\httpz.zig --dep zmpl --dep zmd -Mzmpl.manifest=C:\Users\rob\huez\jetzigtest\zig-cache\o\433d8cfc54b7c8710307c39d99a3903a\zmpl.manifest.zig -Mmetrics=C:\Users\rob\AppData\Local\zig\p\1220232ab38d0c2cfb10680115c17ad2fa1a8531dbaf8bbfb359ec67e80c7d5f5758\src\metrics.zig -Mwebsocket=C:\Users\rob\AppData\Local\zig\p\12208720b772330f309cfb48957f4152ee0930b716837d0c1d07fee2dea2f4dc712e\src\websocket.zig -Mbuild=C:\Users\rob\huez\jetzigtest\zig-cache\c\cbe72848d8f65fb18f43defc04d76678\options.zig --cache-dir C:\Users\rob\huez\jetzigtest\zig-cache --global-cache-dir C:\Users\rob\AppData\Local\zig --name jetzigtest --listen=-
Build Summary: 8/13 steps succeeded; 1 failed (disable with --summary none)
run transitive failure
└─ run jetzigtest transitive failure
├─ zig build-exe jetzigtest Debug native 1 errors
└─ install transitive failure
└─ install jetzigtest transitive failure
└─ zig build-exe jetzigtest Debug native (+14 more reused dependencies)
error: the following build command failed with exit code 1:
C:\Users\rob\huez\jetzigtest\zig-cache\o\d7c848842febe2ac28db44baa6eb5c79\build.exe C:\ProgramData\chocolatey\lib\zig\tools\zig-windows-x86_64-0.12.0\zig.exe C:\Users\rob\huez\jetzigtest C:\Users\rob\huez\jetzigtest\zig-cache C:\Users\rob\AppData\Local\zig --seed 0xf0396467 -Z536ffd6c2548da85 run

What seems strange to me is this part : error: root struct of file 'std' has no member named 'StaticStringMap' pub const codes_map = std.StaticStringMap(std.io.tty.Color).initComptime(.{



I confirmed that `std.StaticStringMap` does in fact exist.
Froxcey commented 3 weeks ago

StaticStringMap shouldn't exist in zig 0.12, it was renamed from ComptimeStringMap in a commit in 0.13 nightly. We need to change this to support 0.12.

rhues commented 3 weeks ago

That would be appreciated! I have a fix for one of the other open tickets, but I can't test and submit a PR until Jetzig is running on Windows.

rhues commented 3 weeks ago

I found an example of compatibility in cli/commands/generate.zig starting in line 48.

// XXX: 0.12 Compatibility const map = if (@hasDecl(std, "ComptimeStringMap")) blk: { const inner_map = std.ComptimeStringMap(Generator, .{ .{ "view", .view }, .{ "partial", .partial }, .{ "layout", .layout }, .{ "job", .job }, .{ "mailer", .mailer }, .{ "middleware", .middleware }, .{ "secret", .secret }, }); for (inner_map.kvs) |kv| try available_buf.append(kv.key); break :blk inner_map; } else if (@hasDecl(std, "StaticStringMap")) blk: { const inner_map = std.StaticStringMap(Generator).initComptime(.{ .{ "view", .view }, .{ "partial", .partial }, .{ "layout", .layout }, .{ "job", .job }, .{ "mailer", .mailer }, .{ "middleware", .middleware }, .{ "secret", .secret }, }); for (inner_map.keys()) |key| try available_buf.append(key); break :blk inner_map; } else unreachable;

Maybe something similar can be done in colors.zig.

bobf commented 3 weeks ago

@rhues There was a blocker for 0.12 compatibility in http.zig (the HTTP server Jetzig uses) which was resolved by this PR - I should be able to get 0.12 compatibility back now.

bobf commented 3 weeks ago

@rhues Try jetzig update to update your project to latest main, I am able to run an app on Windows using Zig 0.12.

rhues commented 3 weeks ago

Confirmed fixed on commit [b7af4a3]. The project is running on Windows.