authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-07-22 10:45:59-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-07-22 10:45:59-04:00
logd6d0bb054219da26a55f880f48f00902a4fbaf56
tree23e21f3d83dad2e433768247acc46f7bfbded16f
parent77c2ac3fcd27b114b0068d3b64b3d884aa71e4ef
signaturelock-open Commit is signed but in an unrecognized format.

zig build: adjust DESTDIR logic

now if DESTDIR is provided then the default install prefix is /usr. otherwise the default install prefix is still zig-cache directly. DESTDIR is prepended to the prefix to match what make install does.

1 files changed, 16 insertions(+), 9 deletions(-)

std/build.zig+16-9
...@@ -44,6 +44,7 @@ pub const Builder = struct {...@@ -44,6 +44,7 @@ pub const Builder = struct {
44 dest_dir: ?[]const u8,44 dest_dir: ?[]const u8,
45 lib_dir: ?[]const u8,45 lib_dir: ?[]const u8,
46 exe_dir: ?[]const u8,46 exe_dir: ?[]const u8,
47 install_path: []const u8,
47 search_prefixes: ArrayList([]const u8),48 search_prefixes: ArrayList([]const u8),
48 installed_files: ArrayList(InstalledFile),49 installed_files: ArrayList(InstalledFile),
49 build_root: []const u8,50 build_root: []const u8,
...@@ -144,6 +145,7 @@ pub const Builder = struct {...@@ -144,6 +145,7 @@ pub const Builder = struct {
144 .is_release = false,145 .is_release = false,
145 .override_std_dir = null,146 .override_std_dir = null,
146 .override_lib_dir = null,147 .override_lib_dir = null,
148 .install_path = undefined,
147 };149 };
148 try self.top_level_steps.append(&self.install_tls);150 try self.top_level_steps.append(&self.install_tls);
149 try self.top_level_steps.append(&self.uninstall_tls);151 try self.top_level_steps.append(&self.uninstall_tls);
...@@ -166,14 +168,19 @@ pub const Builder = struct {...@@ -166,14 +168,19 @@ pub const Builder = struct {
166 }168 }
167169
168 fn resolveInstallPrefix(self: *Builder) void {170 fn resolveInstallPrefix(self: *Builder) void {
169 const dest_dir = self.dest_dir orelse blk: {171 if (self.dest_dir) |dest_dir| {
170 const dest_dir = self.install_prefix orelse self.cache_root;172 const install_prefix = self.install_prefix orelse "/usr";
171 self.dest_dir = dest_dir;173 self.install_path = fs.path.join(self.allocator, [_][]const u8{ dest_dir, install_prefix }) catch unreachable;
172 break :blk dest_dir;174 } else {
173 };175 const install_prefix = self.install_prefix orelse blk: {
174 self.dest_dir = dest_dir;176 const p = self.cache_root;
175 self.lib_dir = fs.path.join(self.allocator, [_][]const u8{ dest_dir, "lib" }) catch unreachable;177 self.install_prefix = p;
176 self.exe_dir = fs.path.join(self.allocator, [_][]const u8{ dest_dir, "bin" }) catch unreachable;178 break :blk p;
179 };
180 self.install_path = install_prefix;
181 }
182 self.lib_dir = fs.path.join(self.allocator, [_][]const u8{ self.install_path, "lib" }) catch unreachable;
183 self.exe_dir = fs.path.join(self.allocator, [_][]const u8{ self.install_path, "bin" }) catch unreachable;
177 }184 }
178185
179 pub fn addExecutable(self: *Builder, name: []const u8, root_src: ?[]const u8) *LibExeObjStep {186 pub fn addExecutable(self: *Builder, name: []const u8, root_src: ?[]const u8) *LibExeObjStep {
...@@ -886,7 +893,7 @@ pub const Builder = struct {...@@ -886,7 +893,7 @@ pub const Builder = struct {
886893
887 fn getInstallPath(self: *Builder, dir: InstallDir, dest_rel_path: []const u8) []const u8 {894 fn getInstallPath(self: *Builder, dir: InstallDir, dest_rel_path: []const u8) []const u8 {
888 const base_dir = switch (dir) {895 const base_dir = switch (dir) {
889 .Prefix => self.dest_dir.?,896 .Prefix => self.install_path,
890 .Bin => self.exe_dir.?,897 .Bin => self.exe_dir.?,
891 .Lib => self.lib_dir.?,898 .Lib => self.lib_dir.?,
892 };899 };