Q: Why I can’t git clone
private repositories?
A: HyperMake runs the build inside containers which may not have the right
SSH keys or credentials. There’re two options:
~/.ssh
into the container using volumes
property:volumes:
- '~/.ssh:/src/.ssh:ro'
~/.netrc
into the container:first, create a file ~/.netrc
. See the
manual
for the format and content. E.g.
machine github.com
protocol https
login username
password password
Then use volumes
property to map into the container.
volumes:
- '~/.netrc:/src/.netrc:ro'
Q: Can I build projects for Windows?
A: Depending on toolchain. HyperMake builds on Linux, for C/C++,
install mingw toolchain in the container and do
the cross complication.
Q: Can I build projects for native Mac OS?
A: Depending. If it’s a project in Go, yes. If it depends on native Mac OS
libraries, it’s possible when cross compiling toolchain and libraries are
installed on Linux.
Q: Why target is skipped but output file is not present?
A: Property artifacts
is not specified in the target. HyperMake checks
both input and output files to determine if a target is up-to-date. Property
watches
lists the input files whose last modification time is checked, and
property artifacts
lists the output files whose presence is checked.
If artifacts
is not specified, HyperMake assumes the target doesn’t generate
output files.
Q: What’s the artifacts
if the target doesn’t output files?
A: No need to specify artifacts
if there’s no output file. Some targets
like docker build doesn’t output files, it will automatically check if the
image exists. To explicitly rebuild the target, use -r TARGET
, -b
or -R
options.
Q: I want to run some commands, which are specific to my local environment,
before certain targets. But I don’t want to put them in HyperMake
file.
A: You can create a .hmakerc
in project root, and exclude that file using
.gitignore
. The settings
in .hmakerc
will override those in HyperMake
and use before
to inject your local targets into HyperMake
, e.g.
---
format: hypermake.v0
targets:
pre-build:
description: my local task before build
before:
- build
cmds:
- do something
settings:
property: my-value
HyperMake
, use relative path for source of the volume,
in *.hmake
files under sub-directories, prefix -/
to a relative path. E.g. targets:
example:
volumes:
- '-/run:/var/run'
Anyway, in volumes
, prefix -/
can always be used to indicate a path
relative to project root. Please read Docker Driver for
details.
Q: Where can I find the output of my target after running hmake
?
A: hmake
creates a hidden folder .hmake
under project root. The output
of a target is saved in .hmake/TARGET.log
.
Q: Does hmake
print logs?
A: Yes. hmake
writes its own debug logs in .hmake/hmake.debug.log
.
Q: What’re the recommended entries in .gitignore
?
A: Put the following entries in .gitignore
:
.hmake
.hmakerc