Allow specifying VCS revision on the build command line
This commit is contained in:
parent
1ddb1dc5e1
commit
935a36f5a8
@ -41,6 +41,7 @@ class Env:
|
|||||||
library_paths: Dict[str, List[str]] = {}
|
library_paths: Dict[str, List[str]] = {}
|
||||||
ldpaths: List[str] = []
|
ldpaths: List[str] = []
|
||||||
ccver: Tuple[int, int]
|
ccver: Tuple[int, int]
|
||||||
|
vcs_rev: str = ''
|
||||||
|
|
||||||
# glfw stuff
|
# glfw stuff
|
||||||
all_headers: List[str] = []
|
all_headers: List[str] = []
|
||||||
@ -52,11 +53,13 @@ class Env:
|
|||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self, cc: List[str] = [], cppflags: List[str] = [], cflags: List[str] = [], ldflags: List[str] = [],
|
self, cc: List[str] = [], cppflags: List[str] = [], cflags: List[str] = [], ldflags: List[str] = [],
|
||||||
library_paths: Dict[str, List[str]] = {}, ldpaths: Optional[List[str]] = None, ccver: Tuple[int, int] = (0, 0)
|
library_paths: Dict[str, List[str]] = {}, ldpaths: Optional[List[str]] = None, ccver: Tuple[int, int] = (0, 0),
|
||||||
|
vcs_rev: str = ''
|
||||||
):
|
):
|
||||||
self.cc, self.cppflags, self.cflags, self.ldflags, self.library_paths = cc, cppflags, cflags, ldflags, library_paths
|
self.cc, self.cppflags, self.cflags, self.ldflags, self.library_paths = cc, cppflags, cflags, ldflags, library_paths
|
||||||
self.ldpaths = ldpaths or []
|
self.ldpaths = ldpaths or []
|
||||||
self.ccver = ccver
|
self.ccver = ccver
|
||||||
|
self.vcs_rev = vcs_rev
|
||||||
|
|
||||||
def copy(self) -> 'Env':
|
def copy(self) -> 'Env':
|
||||||
ans = Env(self.cc, list(self.cppflags), list(self.cflags), list(self.ldflags), dict(self.library_paths), list(self.ldpaths), self.ccver)
|
ans = Env(self.cc, list(self.cppflags), list(self.cflags), list(self.ldflags), dict(self.library_paths), list(self.ldpaths), self.ccver)
|
||||||
|
|||||||
18
setup.py
18
setup.py
@ -333,7 +333,8 @@ def init_env(
|
|||||||
ignore_compiler_warnings: bool = False,
|
ignore_compiler_warnings: bool = False,
|
||||||
build_universal_binary: bool = False,
|
build_universal_binary: bool = False,
|
||||||
extra_library_dirs: Iterable[str] = (),
|
extra_library_dirs: Iterable[str] = (),
|
||||||
verbose: bool = True
|
verbose: bool = True,
|
||||||
|
vcs_rev: str = '',
|
||||||
) -> Env:
|
) -> Env:
|
||||||
native_optimizations = native_optimizations and not sanitize and not debug
|
native_optimizations = native_optimizations and not sanitize and not debug
|
||||||
if native_optimizations and is_macos and is_arm:
|
if native_optimizations and is_macos and is_arm:
|
||||||
@ -428,7 +429,7 @@ def init_env(
|
|||||||
set_arches(cflags)
|
set_arches(cflags)
|
||||||
set_arches(ldflags)
|
set_arches(ldflags)
|
||||||
|
|
||||||
return Env(cc, cppflags, cflags, ldflags, library_paths, ccver=ccver, ldpaths=ldpaths)
|
return Env(cc, cppflags, cflags, ldflags, library_paths, ccver=ccver, ldpaths=ldpaths, vcs_rev=vcs_rev)
|
||||||
|
|
||||||
|
|
||||||
def kitty_env() -> Env:
|
def kitty_env() -> Env:
|
||||||
@ -503,7 +504,7 @@ def run_tool(cmd: Union[str, List[str]], desc: Optional[str] = None) -> None:
|
|||||||
|
|
||||||
|
|
||||||
@lru_cache
|
@lru_cache
|
||||||
def get_vcs_rev_define() -> str:
|
def get_vcs_rev() -> str:
|
||||||
ans = ''
|
ans = ''
|
||||||
if os.path.exists('.git'):
|
if os.path.exists('.git'):
|
||||||
try:
|
try:
|
||||||
@ -526,7 +527,9 @@ def get_source_specific_defines(env: Env, src: str) -> Tuple[str, Optional[List[
|
|||||||
if src == 'kitty/parser_dump.c':
|
if src == 'kitty/parser_dump.c':
|
||||||
return 'kitty/parser.c', ['DUMP_COMMANDS']
|
return 'kitty/parser.c', ['DUMP_COMMANDS']
|
||||||
if src == 'kitty/data-types.c':
|
if src == 'kitty/data-types.c':
|
||||||
return src, [f'KITTY_VCS_REV="{get_vcs_rev_define()}"', f'WRAPPED_KITTENS="{wrapped_kittens()}"']
|
if not env.vcs_rev:
|
||||||
|
env.vcs_rev = get_vcs_rev()
|
||||||
|
return src, [f'KITTY_VCS_REV="{env.vcs_rev}"', f'WRAPPED_KITTENS="{wrapped_kittens()}"']
|
||||||
try:
|
try:
|
||||||
return src, env.library_paths[src]
|
return src, env.library_paths[src]
|
||||||
except KeyError:
|
except KeyError:
|
||||||
@ -908,7 +911,8 @@ def build_static_kittens(
|
|||||||
if not for_platform:
|
if not for_platform:
|
||||||
update_go_generated_files(args, os.path.join(launcher_dir, appname))
|
update_go_generated_files(args, os.path.join(launcher_dir, appname))
|
||||||
cmd = [go, 'build', '-v']
|
cmd = [go, 'build', '-v']
|
||||||
ld_flags = [f"-X 'kitty.VCSRevision={get_vcs_rev_define()}'"]
|
vcs_rev = args.vcs_rev or get_vcs_rev()
|
||||||
|
ld_flags = [f"-X 'kitty.VCSRevision={vcs_rev}'"]
|
||||||
if for_freeze:
|
if for_freeze:
|
||||||
ld_flags.append("-X 'kitty.IsFrozenBuild=true'")
|
ld_flags.append("-X 'kitty.IsFrozenBuild=true'")
|
||||||
if for_platform:
|
if for_platform:
|
||||||
@ -1588,6 +1592,10 @@ def option_parser() -> argparse.ArgumentParser: # {{{
|
|||||||
default=Options.libdir_name,
|
default=Options.libdir_name,
|
||||||
help='The name of the directory inside --prefix in which to store compiled files. Defaults to "lib"'
|
help='The name of the directory inside --prefix in which to store compiled files. Defaults to "lib"'
|
||||||
)
|
)
|
||||||
|
p.add_argument(
|
||||||
|
'--vcs-rev', default='',
|
||||||
|
help='The VCS revision to embed in the binary. The default is to read it from the .git directory when present.'
|
||||||
|
)
|
||||||
p.add_argument(
|
p.add_argument(
|
||||||
'--extra-logging',
|
'--extra-logging',
|
||||||
action='append',
|
action='append',
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user