<div dir="ltr">Hi,<div><br></div><div>I ran into a few issues when trying to build the extension packs that come with the VirtualBox codebase.</div><div><br></div><div><b>First issue:</b></div><div><br></div><div>In an attempt to minimize the build time of the VirtualBox source code for the sake of extension pack development, I tried setting the VBOX_ONLY_EXTPACKS environment variable to 1.<br></div><div><br></div><div>This caused the build to fail with the following error message:</div><div><br></div><div><font face="monospace">/vbox_src/src/VBox/Devices/Makefile.kmk:34: /vbox_src/src/VBox/Devices/PC/PXE/Makefile.kmk: No such file or directory</font><br></div><div><br></div><div>The line that the error message refers to is the following:</div><div><br></div><div><font face="monospace">if defined(VBOX_WITH_INTEL_PXE) || defined(VBOX_ONLY_EXTPACKS)</font></div><div><br></div><div>Apparently, this check blindly assumes that the makefile for Intel PXE is always available if either of those build flags is set. And since Intel PXE is a PUEL feature, this causes the open source code to fail.</div><div><br></div><div>I assume that this line should be changed to the following:</div><div><br></div><div><font face="monospace">if defined(VBOX_WITH_INTEL_PXE) || ( defined(VBOX_ONLY_EXTPACKS) && defined(VBOX_WITH_EXTPACK_PUEL) )</font></div><div><br></div><div>The parentheses around the entire part on the right side of the || operator is technically redundant, since &&  takes precedence over it, but this seems more readable and less error-prone to me.</div><div><br></div><div>Here is a single-line patch command using Perl, which I'm using in a Dockerfile to work around this issue:</div><div><br></div><div><font face="monospace">perl -i -pe 's/\Qif defined(VBOX_WITH_INTEL_PXE) || defined(VBOX_ONLY_EXTPACKS)\E/if defined(VBOX_WITH_INTEL_PXE) || ( defined(VBOX_ONLY_EXTPACKS) && defined(VBOX_WITH_EXTPACK_PUEL) )/g' src/VBox/Devices/Makefile.kmk</font><br></div><div><br></div><div>If my assumptions are incorrect and this is somehow intended behavior, I would appreciate it if someone could steer me in the right direction.</div><div><br></div><div>After applying my suggested workaround, the build seems to go well.</div><div><br></div><div><b>Second issue:</b></div><div><br></div><div>It would be nice if the build could be sped up even further, since it's still taking quite a few minutes to build. So far, I've specified every supported "--ignore-x" argument behind the ./configure command, as well as the "--build-headless" argument. In addition to that, I've set VBOX_ONLY_EXTPACKS to 1 and applied the aforementioned workaround, but judging from the output, I have the suspicion that the build script is still building a lot of unnecessary stuff that is not required to build the extension packs.</div><div><br></div><div>Any idea on how to speed this up faster?</div><div><br></div><div><b>Third issue:</b></div><div><br></div><div>It would appear that there is something wrong with the makefiles of the extpacks BusMouse and Skeleton. The resulting .vbox-extpack files are very small and only appear to contain the metadata files ExtPack.manifest, ExtPack.signature and ExtPack.xml and nothing else. No binary code. I didn't actually notice this until I tried to install those extpacks in VirtualBox, which caused it to complain with the error "Failed to locate the main module". (Also, the license window for these extpacks was empty, presumably due to a missing ExtPack-SourceCodeLicense.txt file in the packaged extpack files. The extpack VBoxDTrace does contain a ExtPack-SourceCodeLicense.txt once packaged. Presumably this is because VBoxDTrace has a CDDL-only license. However, that extpack also lacks binary code. The only extpack in the codebase that seems to be packaged properly is VNC. Perhaps I did something wrong here? Again, any help here would be appreciated.</div><div><br></div><div>Thanks.</div><div><br></div><div><br></div><div><br></div></div>