Improve build feature handling with HAIKU_NO_DOWNLOADS=1

* Adjust the respective rules such that with disabled downloads, only
  packages already available in the downloads folder will be considered
  as available build features.

This way, the build system will not for instance try to build
<kdebug>qrencode after a bootstrap, as that package is not yet
available.
This commit is contained in:
Oliver Tappe
2014-05-01 19:45:19 +02:00
parent 1a0cfb112b
commit d1b21b4ad3
+15 -10
View File
@@ -36,12 +36,21 @@ rule AddRepositoryPackage repository : architecture : baseName : version
package = $(package:E=$(baseName):G=package-in-$(repository:G=)) ; package = $(package:E=$(baseName):G=package-in-$(repository:G=)) ;
HAIKU_PACKAGE_REPOSITORY on $(package) = $(repository) ; HAIKU_PACKAGE_REPOSITORY on $(package) = $(repository) ;
HAIKU_PACKAGE_ARCHITECTURE on $(package) = $(architecture) ; HAIKU_PACKAGE_ARCHITECTURE on $(package) = $(architecture) ;
HAIKU_PACKAGE_FILE_NAME on $(package) = $(package:G=)-$(architecture).hpkg ; local packageFileName = $(package:G=)-$(architecture).hpkg ;
HAIKU_PACKAGE_FILE_NAME on $(package) = $(packageFileName) ;
local packageFamily = [ InvokeRepositoryMethod $(repository) : PackageFamily local packageFamily = [ InvokeRepositoryMethod $(repository) : PackageFamily
: $(baseName) ] ; : $(baseName) ] ;
baseName = $(packageFamily:G=) ; baseName = $(packageFamily:G=) ;
if $(HAIKU_NO_DOWNLOADS) = 1 {
# Only add packages to repository that already exist in download
# directory.
if ! [ Glob $(HAIKU_DOWNLOAD_DIR) : $(packageFileName) ] {
return ;
}
}
if ! $(baseName) in $(HAIKU_AVAILABLE_PACKAGES) { if ! $(baseName) in $(HAIKU_AVAILABLE_PACKAGES) {
HAIKU_AVAILABLE_PACKAGES += $(baseName) ; HAIKU_AVAILABLE_PACKAGES += $(baseName) ;
} }
@@ -170,18 +179,14 @@ rule RemotePackageRepository repository : architecture : repositoryUrl
PreprocessPackageOrRepositoryInfo $(repositoryInfo) PreprocessPackageOrRepositoryInfo $(repositoryInfo)
: $(repositoryInfoTemplate) : $(architecture) ; : $(repositoryInfoTemplate) : $(architecture) ;
# build repository file, using only packages available in the download # build repository file
# directory local packageFileNames = [
local allPackageFiles = [
on $(packageListFile) return $(HAIKU_REPOSITORY_PACKAGE_FILE_NAMES) on $(packageListFile) return $(HAIKU_REPOSITORY_PACKAGE_FILE_NAMES)
] ; ] ;
local packageFiles ; local packageFiles ;
for packageFile in $(allPackageFiles) { for packageFile in $(packageFileNames) {
if [ Glob $(HAIKU_DOWNLOAD_DIR) : $(packageFile) ] { MakeLocate $(packageFile) : $(HAIKU_DOWNLOAD_DIR) ;
packageFile = $(packageFile:G=package-file) ; packageFiles += $(packageFile) ;
MakeLocate $(packageFile) : $(HAIKU_DOWNLOAD_DIR) ;
packageFiles += $(packageFile) ;
}
} }
RepositoryCache $(repositoryFile) : $(repositoryInfo) RepositoryCache $(repositoryFile) : $(repositoryInfo)
: $(packageFiles) ; : $(packageFiles) ;