Proper target dependencies and error checking in the vyos-build makefile
In progress, NormalPublic

Description

Looks like our build scripts are not as user-freiendly as they could have been. Today @Tania ran into T361, an error that experienced developers would shrug off because we know exactly what "lb" is and what to do to fix it, but for someone who's new to this, it's confusing. It would be nice to make the experiences as easy and streamlined for new contributors as possible.

I already moved the build env check for ISO build to ./configure and added safeguards against trying to run "make iso" with non-existend build config file that instruct the user to run ./configure first.
I believe we should do the same for VM image build dependencies. The only issue is that Packer is not in the repos, and not everyone will want to build VM images anyway, so this should be more granular.
I suggest that we add a configure option like --with-vm-image-build that will run these checks, and safeguards against running "make <qemu|vmware|hyperv>" if configure was run without that option (and tell the user what to do of course). @higebu, what do you think?

Also, the targets for VM images have no dependencies, even though they do depend on the ISO, and even each other. To my understanding, qemu depends on ISO, and the other VM targets depend on qemu. @higebu, is this correct?

It would be perfect to make the ISO a non-phony target, but since we have different build architectures, this would likely be more trouble than it's worth. On the other hand, if we make a symlink to the ISO like old build-iso did, maybe we can use it as a make target. Anyone knows if it's going to work?

Details

Difficulty level
Unknown (require assessment)
Version
-
Why the issue appeared?
Will be filled on close
This request is:
Service Request
dmbaturin created this object with visibility "Public (No Login Required)".
dmbaturin created this object with edit policy "Subscribers".
syncer added a subscriber: syncer.Aug 21 2017, 11:55 PM

@dmbaturin I agree with adding a configure option. Dependency of VM targets you wrote is correct.