Revert "all: build: fix sdkPath for relative @src.file / fix autocompletion with ZLS / IDEs (#661)"
This reverts commit a1fe671db8.
Lue suggested reverting #661 because ZLS worked around the issue of @src
being relative in that environment: https://github.com/zigtools/zls/pull/898
This is not a perfect solution (what zls did seems to be a workaround), but
is good enough for us until Zig gets an official package manager.
This commit is contained in:
parent
7d246e76b3
commit
a750e31d11
17 changed files with 325 additions and 925 deletions
|
|
@ -6,7 +6,7 @@ const mem = std.mem;
|
|||
const fs = std.fs;
|
||||
const build = std.build;
|
||||
|
||||
const www_dir_path = "/www";
|
||||
const www_dir_path = sdkPath("/www");
|
||||
const buffer_size = 2048;
|
||||
const esc = struct {
|
||||
pub const reset = "\x1b[0m";
|
||||
|
|
@ -75,13 +75,11 @@ const Wasmserve = struct {
|
|||
self.compile();
|
||||
std.debug.assert(mem.eql(u8, fs.path.extension(self.exe_step.out_filename), ".wasm"));
|
||||
|
||||
const resolved_www_dir_path = sdkPathAllocator(step.dependencies.allocator, www_dir_path);
|
||||
|
||||
var www_dir = try fs.cwd().openIterableDir(resolved_www_dir_path, .{});
|
||||
var www_dir = try fs.cwd().openIterableDir(www_dir_path, .{});
|
||||
defer www_dir.close();
|
||||
var www_dir_iter = www_dir.iterate();
|
||||
while (try www_dir_iter.next()) |file| {
|
||||
const path = try fs.path.join(self.b.allocator, &.{ resolved_www_dir_path, file.name });
|
||||
const path = try fs.path.join(self.b.allocator, &.{ www_dir_path, file.name });
|
||||
defer self.b.allocator.free(path);
|
||||
const install_www = self.b.addInstallFileWithDir(
|
||||
.{ .path = path },
|
||||
|
|
@ -328,52 +326,12 @@ fn logErr(err: anyerror, src: std.builtin.SourceLocation) void {
|
|||
}
|
||||
}
|
||||
|
||||
const unresolved_dir = (struct {
|
||||
inline fn unresolvedDir() []const u8 {
|
||||
return comptime std.fs.path.dirname(@src().file) orelse ".";
|
||||
}
|
||||
}).unresolvedDir();
|
||||
|
||||
fn thisDir(allocator: std.mem.Allocator) []const u8 {
|
||||
if (comptime unresolved_dir[0] == '/') {
|
||||
return unresolved_dir;
|
||||
}
|
||||
|
||||
const cached_dir = &(struct {
|
||||
var cached_dir: ?[]const u8 = null;
|
||||
}).cached_dir;
|
||||
|
||||
if (cached_dir.* == null) {
|
||||
cached_dir.* = std.fs.cwd().realpathAlloc(allocator, unresolved_dir) catch unreachable;
|
||||
}
|
||||
|
||||
return cached_dir.*.?;
|
||||
}
|
||||
|
||||
inline fn sdkPath(b: *build.Builder, comptime suffix: []const u8) []const u8 {
|
||||
return sdkPathAllocator(b.allocator, suffix);
|
||||
}
|
||||
|
||||
inline fn sdkPathAllocator(allocator: std.mem.Allocator, comptime suffix: []const u8) []const u8 {
|
||||
return sdkPathInternal(allocator, suffix.len, suffix[0..suffix.len].*);
|
||||
}
|
||||
|
||||
fn sdkPathInternal(allocator: std.mem.Allocator, comptime len: usize, comptime suffix: [len]u8) []const u8 {
|
||||
fn sdkPath(comptime suffix: []const u8) []const u8 {
|
||||
if (suffix[0] != '/') @compileError("suffix must be an absolute path");
|
||||
|
||||
if (comptime unresolved_dir[0] == '/') {
|
||||
return unresolved_dir ++ @as([]const u8, &suffix);
|
||||
}
|
||||
|
||||
const cached_dir = &(struct {
|
||||
var cached_dir: ?[]const u8 = null;
|
||||
}).cached_dir;
|
||||
|
||||
if (cached_dir.* == null) {
|
||||
cached_dir.* = std.fs.path.resolve(allocator, &.{ thisDir(allocator), suffix[1..] }) catch unreachable;
|
||||
}
|
||||
|
||||
return cached_dir.*.?;
|
||||
return comptime blk: {
|
||||
const root_dir = std.fs.path.dirname(@src().file) orelse ".";
|
||||
break :blk root_dir ++ suffix;
|
||||
};
|
||||
}
|
||||
|
||||
// copied from LibExeObjStep.make()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue