From dcea76ff41276d64643707a72c0684cd88e9a48f Mon Sep 17 00:00:00 2001 From: pfefferminz132 Date: Thu, 21 Nov 2019 02:34:08 +0100 Subject: [PATCH] fix "v symlink" with relative paths --- vlib/compiler/main.v | 11 ++++++----- vlib/compiler/module_header.v | 2 +- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/vlib/compiler/main.v b/vlib/compiler/main.v index 0498256016..eeb4235d82 100644 --- a/vlib/compiler/main.v +++ b/vlib/compiler/main.v @@ -1036,21 +1036,22 @@ pub fn vfmt(args[]string) { pub fn create_symlink() { $if windows { return } - vexe := os.executable() + vexe := vexe_path() link_path := '/usr/local/bin/v' ret := os.system('ln -sf $vexe $link_path') if ret == 0 { - println('symlink "$link_path" has been created') + println('Symlink "$link_path" has been created') } else { - println('failed to create symlink "$link_path", '+ - 'make sure you run with sudo') + println('Failed to create symlink "$link_path". Try again with sudo.') } } pub fn vexe_path() string { vexe := os.getenv('VEXE') if '' != vexe { return vexe } - return os.executable() + real_vexe_path := os.realpath(os.executable()) + os.setenv('VEXE', real_vexe_path, true) + return real_vexe_path } pub fn verror(s string) { diff --git a/vlib/compiler/module_header.v b/vlib/compiler/module_header.v index 07e39fbc3e..6c9ac8f28a 100644 --- a/vlib/compiler/module_header.v +++ b/vlib/compiler/module_header.v @@ -29,7 +29,7 @@ mut: // `mod` == "vlib/os" fn generate_vh(mod string) { println('\n\n\n\nGenerating a V header file for module `$mod`') - vexe := os.executable() + vexe := vexe_path() full_mod_path := filepath.join(os.dir(vexe), mod) dir := if mod.starts_with('vlib') { '$compiler.v_modules_path${os.path_separator}$mod' } else { mod } path := dir + '.vh'