just kernel32 things (#4354)

* just kernel32 things

* more

* Update linux_c.zig

* Update windows_c.zig

* Add workaround

Workaround https://github.com/ziglang/zig/issues/16980

* Rename http.zig to bun_dev_http_server.zig

* Rename usages

* more

* more

* more

* thanks tigerbeetle

* Rename `JSC.Node.Syscall` -> `bun.sys`

* more

* woops

* more!

* hmm

* it says there are only 37 errors, but that's not true

* populate argv

* it says 32 errors!

* 24 errors

* fix regular build

* 12 left!

* Still 12 left!

* more

* 2 errors left...

* 1 more error

* Add link to Tigerbeetle

* Fix the remainign error

* Fix test timeout

* Update syscall.zig

---------

Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
This commit is contained in:
Jarred Sumner
2023-08-28 04:39:16 -07:00
committed by GitHub
parent efe987e8d1
commit e2a17344dc
92 changed files with 9360 additions and 1358 deletions

View File

@@ -50,6 +50,10 @@ pub const RunCommand = struct {
};
pub fn findShell(PATH: string, cwd: string) ?string {
if (comptime Environment.isWindows) {
return "C:\\Windows\\System32\\cmd.exe";
}
inline for (shells_to_search) |shell| {
if (which(&path_buf, PATH, cwd, shell)) |shell_| {
return shell_;
@@ -58,8 +62,7 @@ pub const RunCommand = struct {
const Try = struct {
pub fn shell(str: stringZ) bool {
std.os.accessZ(str, std.os.X_OK) catch return false;
return true;
return bun.sys.isExecutableFilePath(str);
}
};
@@ -341,7 +344,7 @@ pub const RunCommand = struct {
const result = child_process.spawnAndWait() catch |err| {
if (err == error.AccessDenied) {
{
if (comptime Environment.isPosix) {
var stat = std.mem.zeroes(std.c.Stat);
const rc = bun.C.stat(executable[0.. :0].ptr, &stat);
if (rc == 0) {
@@ -408,16 +411,21 @@ pub const RunCommand = struct {
var self_exe_bin_path_buf: [bun.MAX_PATH_BYTES + 1]u8 = undefined;
fn createFakeTemporaryNodeExecutable(PATH: *std.ArrayList(u8), optional_bun_path: *string) !void {
if (comptime Environment.isWindows) {
bun.todo(@src(), {});
return;
}
var retried = false;
if (!strings.endsWithComptime(std.mem.span(std.os.argv[0]), "node")) {
if (!strings.endsWithComptime(std.mem.span(bun.argv()[0]), "node")) {
var argv0 = @as([*:0]const u8, @ptrCast(optional_bun_path.ptr));
// if we are already an absolute path, use that
// if the user started the application via a shebang, it's likely that the path is absolute already
if (std.os.argv[0][0] == '/') {
optional_bun_path.* = bun.span(std.os.argv[0]);
argv0 = std.os.argv[0];
if (bun.argv()[0][0] == '/') {
optional_bun_path.* = bun.span(bun.argv()[0]);
argv0 = bun.argv()[0];
} else if (optional_bun_path.len == 0) {
// otherwise, ask the OS for the absolute path
var self = std.fs.selfExePath(&self_exe_bin_path_buf) catch unreachable;
@@ -429,7 +437,7 @@ pub const RunCommand = struct {
}
if (optional_bun_path.len == 0) {
argv0 = std.os.argv[0];
argv0 = bun.argv()[0];
}
while (true) {
@@ -445,7 +453,8 @@ pub const RunCommand = struct {
continue;
};
}
_ = bun.C.chmod(bun_node_dir ++ "/node", 0o777);
if (comptime Environment.isPosix)
_ = bun.C.chmod(bun_node_dir ++ "/node", 0o777);
break;
}
}
@@ -723,7 +732,7 @@ pub const RunCommand = struct {
bun.copy(u8, path_buf[dir_slice.len..], base);
path_buf[dir_slice.len + base.len] = 0;
var slice = path_buf[0 .. dir_slice.len + base.len :0];
std.os.accessZ(slice, std.os.X_OK) catch continue;
if (!(bun.sys.isExecutableFilePath(slice))) continue;
// we need to dupe because the string pay point to a pointer that only exists in the current scope
_ = try results.getOrPut(this_bundler.fs.filename_store.append(@TypeOf(base), base) catch continue);
}
@@ -953,7 +962,7 @@ pub const RunCommand = struct {
shebang = std.mem.trim(u8, shebang, " \r\n\t");
if (shebang.len == 0) break :possibly_open_with_bun_js;
if (strings.hasPrefixComptime(shebang, "#!")) {
const first_arg: string = if (std.os.argv.len > 0) bun.span(std.os.argv[0]) else "";
const first_arg: string = if (bun.argv().len > 0) bun.span(bun.argv()[0]) else "";
const filename = std.fs.path.basename(first_arg);
// are we attempting to run the script with bun?
if (!strings.contains(shebang, filename)) {