Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

support fetching dependencies bundled with .tar.xz extension #14300

Closed
Tracked by #14265
andrewrk opened this issue Jan 13, 2023 · 3 comments
Closed
Tracked by #14265

support fetching dependencies bundled with .tar.xz extension #14300

andrewrk opened this issue Jan 13, 2023 · 3 comments
Labels
contributor friendly This issue is limited in scope and/or knowledge of Zig internals. enhancement Solving this issue will likely involve adding new logic or components to the codebase. zig build system std.Build, the build runner, `zig build` subcommand, package management
Milestone

Comments

@andrewrk
Copy link
Member

andrewrk commented Jan 13, 2023

Extracted from #14265.
Depends on #2851.

zig build should support fetching via an URL like this:

    .url = "https://example.com/foo.tar.xz",

zig/src/Package.zig

Lines 357 to 376 in 7cb2f92

if (mem.endsWith(u8, uri.path, ".tar.gz")) {
// I observed the gzip stream to read 1 byte at a time, so I am using a
// buffered reader on the front of it.
var br = std.io.bufferedReaderSize(std.crypto.tls.max_ciphertext_record_len, req.reader());
var gzip_stream = try std.compress.gzip.gzipStream(gpa, br.reader());
defer gzip_stream.deinit();
try std.tar.pipeToFileSystem(tmp_directory.handle, gzip_stream.reader(), .{
.strip_components = 1,
});
} else {
return reportError(
ini,
comp_directory,
uri.path.ptr,
"unknown file extension for path '{s}'",
.{uri.path},
);
}

Related:

@andrewrk andrewrk added enhancement Solving this issue will likely involve adding new logic or components to the codebase. contributor friendly This issue is limited in scope and/or knowledge of Zig internals. zig build system std.Build, the build runner, `zig build` subcommand, package management labels Jan 13, 2023
@andrewrk andrewrk added this to the 0.12.0 milestone Jan 13, 2023
@andrewrk andrewrk modified the milestones: 0.13.0, 0.12.0 Jan 16, 2023
@nikkicoon
Copy link
Contributor

with package manager hat on (pkgsrc), I have a question: will you consider people pre-fetching URLs out-of-band with an override for this and similar settings, since most system package managers do not have online enabled environments (for reproducibility and other reasons)? (in pkgsrc we wrap build-systems and repeated steps)

@nektro
Copy link
Contributor

nektro commented Jan 22, 2023

yes thats handled in #14281

@andrewrk
Copy link
Member Author

pre-fetching URLs out-of-band

The system is designed to avoid network access when unnecessary. Combined with #14283, it would be trivial to ensure no network access by providing the directory pre-populated with the necessary dependencies.

And yes the mode hinted at in #14281 would likely make attempted network access by the build system into a compilation error.

@andrewrk andrewrk modified the milestones: 0.12.0, 0.11.0 Jan 29, 2023
@mlugg mlugg moved this to Fetching in Package Manager Aug 22, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
contributor friendly This issue is limited in scope and/or knowledge of Zig internals. enhancement Solving this issue will likely involve adding new logic or components to the codebase. zig build system std.Build, the build runner, `zig build` subcommand, package management
Projects
Archived in project
Development

No branches or pull requests

3 participants