[haiku-commits] BRANCH HaikuPM-github.package-management [98c6dfa] build/jam src/tools/get_package_dependencies src/build src

  • From: HaikuPM-github.package-management <community@xxxxxxxxxxxx>
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Fri, 5 Jul 2013 11:00:33 +0200 (CEST)

added 4 changesets to branch 'refs/remotes/HaikuPM-github/package-management'
old head: e85334022eac93e41fc48b61784336b25ea2bbc3
new head: 98c6dfa41e20c57edf426197a8d9aab6223a59fd
overview: https://github.com/haiku/HaikuPM/compare/e853340...98c6dfa

----------------------------------------------------------------------------

bf5b4b2: package_repo list: add missing cases
  
  It probably would be better to share code with package's list, since it
  is very similar.

001e906: LibsolvSolver: missing include

43d96d8: haiku package-info: fix some provides/requires

98c6dfa: Switch build system from optional package to repositories
  
  * Build libsolv and the dependency solver part of the package kit for
    the build platform.
  * Add build tool get_package_dependencies. Given a list of package files
    and a list of repository files it determines the additional packages
    that need to be retrieved from the repositories and prints their URLs.
  * Add rules to work with external repositories in the build system
    (build/jam/RepositoryRules):
    - PackageRepository declares an external repository with all its
      packages. The URL of the repository file isn't specified. It is
      computed from a given base URL and the SHA256 hash of the list of
      package files.
    - GeneratedRepositoryPackageList generates a file containing the file
      names of all packages in a repository.
    - IsPackageAvailable returns whether a package is available in any
      repository.
    - PackageURL returns the URL for a package.
  * Declare the HaikuPorts repository for x86_gcc2
    (build/jam/repositories/HaikuPorts/x86_gcc2).
  * Add rule AddHaikuImagePackages to add a package to the image and rule
    IsHaikuImagePackageAdded to determine whether a package has been
    added.
  * OptionalPackages: Remove all entries that just downloaded and
    installed an external package. AddHaikuImagePackages can be used
    instead and is used in the remaining entries. Also move the remaining
    optional package dependency declarations from
    OptionalPackageDependencies here.
  * ExtractBuildFeatureArchives: Instead of the URL parameter a package
    name must be specified now. This allows to simplify BuildFeatures
    significantly, since there's no dealing with URLs anymore. "if" out
    the entries that aren't supported yet.
  * build_haiku_image: For the packages installed in system and common
    resolve their dependencies and download and install them as well.

                                    [ Ingo Weinhold <ingo_weinhold@xxxxxx> ]

----------------------------------------------------------------------------

32 files changed, 1239 insertions(+), 2375 deletions(-)
Jamfile                                          |   20 +-
Jamrules                                         |   14 +
build/jam/BuildFeatures                          |  271 +--
build/jam/BuildSetup                             |    4 +
build/jam/HaikuImage                             |   52 +-
build/jam/ImageRules                             |   38 +
build/jam/MiscRules                              |    2 +-
build/jam/OptionalPackageDependencies            |   52 -
build/jam/OptionalPackages                       | 2288 ++----------------
build/jam/ReleaseBuildProfiles                   |   57 +-
build/jam/RepositoryRules                        |  113 +
build/jam/repositories/HaikuPorts/x86_gcc2       |  167 ++
build/scripts/build_haiku_image                  |   59 +-
headers/build/os/package/solver/Solver.h         |    1 +
headers/build/os/package/solver/SolverPackage.h  |    1 +
.../os/package/solver/SolverPackageSpecifier.h   |    1 +
.../package/solver/SolverPackageSpecifierList.h  |    1 +
headers/build/os/package/solver/SolverProblem.h  |    1 +
.../os/package/solver/SolverProblemSolution.h    |    1 +
.../build/os/package/solver/SolverRepository.h   |    1 +
headers/build/os/package/solver/SolverResult.h   |    1 +
src/bin/package_repo/command_list.cpp            |   67 +
src/build/Jamfile                                |    1 +
src/build/libpackage/Jamfile                     |   13 +
src/build/libpackage/solver/Jamfile              |   29 +
src/build/libsolv/Jamfile                        |  107 +
src/data/package_infos/x86_gcc2/haiku            |    8 +-
src/kits/package/solver/LibsolvSolver.cpp        |   37 +-
src/kits/package/solver/Solver.cpp               |   27 +-
src/tools/Jamfile                                |    1 +
src/tools/get_package_dependencies/Jamfile       |   19 +
.../get_package_dependencies.cpp                 |  160 ++

############################################################################

Commit:      bf5b4b25c89566b65fb92634fd3be32e1755bfcd
Author:      Ingo Weinhold <ingo_weinhold@xxxxxx>
Date:        Fri Jul  5 07:58:37 2013 UTC

package_repo list: add missing cases

It probably would be better to share code with package's list, since it
is very similar.

----------------------------------------------------------------------------

diff --git a/src/bin/package_repo/command_list.cpp 
b/src/bin/package_repo/command_list.cpp
index 5bf2c71..3b95f3e 100644
--- a/src/bin/package_repo/command_list.cpp
+++ b/src/bin/package_repo/command_list.cpp
@@ -69,6 +69,11 @@ struct RepositoryContentListHandler : 
BRepositoryContentHandler {
                                        printf("\tpackager: %s\n", 
value.string);
                                break;
 
+                       case B_PACKAGE_INFO_BASE_PACKAGE:
+                               if (fVerbose)
+                                       printf("\tbase package: %s\n", 
value.string);
+                               break;
+
                        case B_PACKAGE_INFO_FLAGS:
                                if (value.unsignedInt == 0 || !fVerbose)
                                        break;
@@ -183,6 +188,68 @@ struct RepositoryContentListHandler : 
BRepositoryContentHandler {
                                printf("\tchecksum: %s\n", value.string);
                                break;
 
+                       case B_PACKAGE_INFO_GLOBAL_WRITABLE_FILES:
+                               if (!fVerbose)
+                                       break;
+                               printf("\tglobal writable file: %s",
+                                       value.globalWritableFileInfo.path);
+                               if (value.globalWritableFileInfo.isDirectory)
+                                       printf( " directory");
+                               if (value.globalWritableFileInfo.updateType
+                                               < 
B_WRITABLE_FILE_UPDATE_TYPE_ENUM_COUNT) {
+                                       printf(" %s\n",
+                                               
BPackageInfo::kWritableFileUpdateTypes[
+                                                       
value.globalWritableFileInfo.updateType]);
+                               } else
+                                       printf("\n");
+                               break;
+
+                       case B_PACKAGE_INFO_USER_SETTINGS_FILES:
+                               if (!fVerbose)
+                                       break;
+                               printf("\tuser settings file: %s",
+                                       value.userSettingsFileInfo.path);
+                               if (value.globalWritableFileInfo.isDirectory) {
+                                       printf( " directory\n");
+                               } else if 
(value.userSettingsFileInfo.templatePath != NULL) {
+                                       printf(" template %s\n",
+                                               
value.userSettingsFileInfo.templatePath);
+                               } else
+                                       printf("\n");
+                               break;
+
+                       case B_PACKAGE_INFO_USERS:
+                               if (!fVerbose)
+                                       break;
+                               printf("\tuser: %s\n", value.user.name);
+                               if (value.user.realName != NULL)
+                                       printf("\t\treal name: %s\n", 
value.user.realName);
+                               if (value.user.home != NULL)
+                                       printf("\t\thome:      %s\n", 
value.user.home);
+                               if (value.user.shell != NULL)
+                                       printf("\t\tshell:     %s\n", 
value.user.shell);
+                               for (size_t i = 0; i < value.user.groupCount; 
i++)
+                                       printf("\t\tgroup:     %s\n", 
value.user.groups[i]);
+                               break;
+
+                       case B_PACKAGE_INFO_GROUPS:
+                               if (!fVerbose)
+                                       break;
+                               printf("\tgroup: %s\n", value.string);
+                               break;
+
+                       case B_PACKAGE_INFO_POST_INSTALL_SCRIPTS:
+                               if (!fVerbose)
+                                       break;
+                               printf("\tpost install script: %s\n", 
value.string);
+                               break;
+
+                       case B_PACKAGE_INFO_INSTALL_PATH:
+                               if (!fVerbose)
+                                       break;
+                               printf("\tinstall path: %s\n", value.string);
+                               break;
+
                        default:
                                printf(
                                        "*** Invalid package attribute section: 
unexpected "

############################################################################

Commit:      001e9064e047cf92879745e62ef50727af7417d7
Author:      Ingo Weinhold <ingo_weinhold@xxxxxx>
Date:        Fri Jul  5 07:59:34 2013 UTC

LibsolvSolver: missing include

----------------------------------------------------------------------------

diff --git a/src/kits/package/solver/LibsolvSolver.cpp 
b/src/kits/package/solver/LibsolvSolver.cpp
index 6b12780..7febfbb 100644
--- a/src/kits/package/solver/LibsolvSolver.cpp
+++ b/src/kits/package/solver/LibsolvSolver.cpp
@@ -10,6 +10,7 @@
 #include "LibsolvSolver.h"
 
 #include <errno.h>
+#include <sys/utsname.h>
 
 #include <new>
 

############################################################################

Commit:      43d96d8f7a57abfa1af976bdecbe0ef29693a6d1
Author:      Ingo Weinhold <ingo_weinhold@xxxxxx>
Date:        Fri Jul  5 08:09:38 2013 UTC

haiku package-info: fix some provides/requires

----------------------------------------------------------------------------

diff --git a/src/data/package_infos/x86_gcc2/haiku 
b/src/data/package_infos/x86_gcc2/haiku
index 64f1825..fb3ddd3 100644
--- a/src/data/package_infos/x86_gcc2/haiku
+++ b/src/data/package_infos/x86_gcc2/haiku
@@ -182,12 +182,14 @@ provides {
        cmd:zipsplit
        cmd:zmore
        cmd:znew
-       lib:libfreetype = 2.4.4 compat >= 2
-       lib:libjpeg = 8.0
-       lib:libpng = 1.4.4 compat >= 1
        lib:libtiff = 3.9.4 compat >= 3
 }
 
 requires {
+       lib:libfreetype
+       lib:libjpeg
+       lib:libpng
+       lib:libsolv
+       lib:libsolvext
        lib:libz
 }

############################################################################

Commit:      98c6dfa41e20c57edf426197a8d9aab6223a59fd
Author:      Ingo Weinhold <ingo_weinhold@xxxxxx>
Date:        Fri Jul  5 08:51:42 2013 UTC

Switch build system from optional package to repositories

* Build libsolv and the dependency solver part of the package kit for
  the build platform.
* Add build tool get_package_dependencies. Given a list of package files
  and a list of repository files it determines the additional packages
  that need to be retrieved from the repositories and prints their URLs.
* Add rules to work with external repositories in the build system
  (build/jam/RepositoryRules):
  - PackageRepository declares an external repository with all its
    packages. The URL of the repository file isn't specified. It is
    computed from a given base URL and the SHA256 hash of the list of
    package files.
  - GeneratedRepositoryPackageList generates a file containing the file
    names of all packages in a repository.
  - IsPackageAvailable returns whether a package is available in any
    repository.
  - PackageURL returns the URL for a package.
* Declare the HaikuPorts repository for x86_gcc2
  (build/jam/repositories/HaikuPorts/x86_gcc2).
* Add rule AddHaikuImagePackages to add a package to the image and rule
  IsHaikuImagePackageAdded to determine whether a package has been
  added.
* OptionalPackages: Remove all entries that just downloaded and
  installed an external package. AddHaikuImagePackages can be used
  instead and is used in the remaining entries. Also move the remaining
  optional package dependency declarations from
  OptionalPackageDependencies here.
* ExtractBuildFeatureArchives: Instead of the URL parameter a package
  name must be specified now. This allows to simplify BuildFeatures
  significantly, since there's no dealing with URLs anymore. "if" out
  the entries that aren't supported yet.
* build_haiku_image: For the packages installed in system and common
  resolve their dependencies and download and install them as well.

----------------------------------------------------------------------------

diff --git a/Jamfile b/Jamfile
index 79880d0..dcfbf5f 100644
--- a/Jamfile
+++ b/Jamfile
@@ -3,28 +3,22 @@ SubDir HAIKU_TOP ;
 NotFile doc_files ;
 Depends files : doc_files ;
 
-# Add optional packages given via HAIKU_ADD_OPTIONAL_PACKAGES.
-if $(HAIKU_ADD_OPTIONAL_PACKAGES) {
-       AddOptionalHaikuImagePackages
-               [ FSplitString $(HAIKU_ADD_OPTIONAL_PACKAGES) : / ] ;
-}
-
 # Prepare the optional build features before parsing the Jamfile tree.
 include [ FDirName $(HAIKU_BUILD_RULES_DIR) BuildFeatures ] ;
 
 # Include packages that are required by all images.
-AddOptionalHaikuImagePackages MandatoryPackages ;
+AddHaikuImagePackages
+       bzip2 ctags ffmpeg freetype glu grep icu jpeg libpng libsolv mesa sed 
tar
+       zlib
+       :
+       system
+       ;
 
 # If enabled, make sure that OpenSSL is added to the image.
 if $(HAIKU_BUILD_FEATURE_OPENSSL_ENABLED) {
-       AddOptionalHaikuImagePackages OpenSSL ;
+       AddHaikuImagePackages openssl ;
 }
 
-AddOptionalHaikuImagePackages ICU ;
-
-# Evaluate optional package dependencies
-include [ FDirName $(HAIKU_BUILD_RULES_DIR) OptionalPackageDependencies ] ;
-
 # Optionally we allow not to include the "src" subdirectory.
 if $(HAIKU_DONT_INCLUDE_SRC) {
        # Don't include "src", but at least include the stuff needed for the
diff --git a/Jamrules b/Jamrules
index 711d802..5c47a6a 100644
--- a/Jamrules
+++ b/Jamrules
@@ -51,9 +51,23 @@ include [ FDirName $(HAIKU_BUILD_RULES_DIR) MainBuildRules ] 
;
 include [ FDirName $(HAIKU_BUILD_RULES_DIR) MiscRules ] ;
 include [ FDirName $(HAIKU_BUILD_RULES_DIR) OverriddenJamRules ] ;
 include [ FDirName $(HAIKU_BUILD_RULES_DIR) PackageRules ] ;
+include [ FDirName $(HAIKU_BUILD_RULES_DIR) RepositoryRules ] ;
 include [ FDirName $(HAIKU_BUILD_RULES_DIR) TestsRules ] ;
 include [ FDirName $(HAIKU_BUILD_RULES_DIR) BuildSetup ] ;
 
+# Include the repositories for this architecture.
+local repositoriesDirectory
+       = [ FDirName $(HAIKU_BUILD_RULES_DIR) repositories ] ;
+local repository ;
+for repository in HaikuPorts {
+       local repositoryDirectory
+               = [ FDirName $(repositoriesDirectory) $(repository) ] ;
+       local file = [ Glob $(repositoryDirectory) : $(HAIKU_PACKAGING_ARCH) ] ;
+       if $(file) {
+               include $(file) ;
+       }
+}
+
 # Declare no-op user-overridable build rules.
 rule UserBuildConfigRulePostBuildTargets       { }
 rule UserBuildConfigRulePreImage                       { }
diff --git a/build/jam/BuildFeatures b/build/jam/BuildFeatures
index 0201dd4..b2a15f3 100644
--- a/build/jam/BuildFeatures
+++ b/build/jam/BuildFeatures
@@ -18,34 +18,17 @@ local hpkgBaseURL = http://haiku-files.org/files/hpkg ;
 
 # SSL
 
-# Automatically enable the SSL feature, when the optional OpenSSL optional
-# package is enabled.
-if [ IsOptionalHaikuImagePackageAdded OpenSSL ] {
+# Automatically enable the SSL feature, when the OpenSSL package is enabled.
+if [ IsHaikuImagePackageAdded openssl ] {
        HAIKU_BUILD_FEATURE_SSL = 1 ;
 }
 
 if $(HAIKU_BUILD_FEATURE_SSL) {
-       if $(TARGET_ARCH) in x86 x86_64 {
-               if $(HAIKU_GCC_VERSION[1]) >= 4 {
-                       if $(TARGET_ARCH) = x86_64 {
-                               HAIKU_OPENSSL_PACKAGE = 
openssl-1.0.0j-x86_64-2012-12-18.zip ;
-                       } else {
-                               HAIKU_OPENSSL_PACKAGE
-                                       = 
openssl-1.0.0j-r1a4-x86-gcc4-2012-08-29.zip ;
-                       }
-               } else {
-                       HAIKU_OPENSSL_PACKAGE = openssl-1.0.0j-2-x86_gcc2.hpkg ;
-                       HAIKU_OPENSSL_DEVEL_PACKAGE = 
openssl_devel-1.0.0j-2-x86_gcc2.hpkg ;
-               }
-
-               HAIKU_OPENSSL_URL = $(hpkgBaseURL)/$(HAIKU_OPENSSL_PACKAGE) ;
-               HAIKU_OPENSSL_DEVEL_URL
-                       = $(hpkgBaseURL)/$(HAIKU_OPENSSL_DEVEL_PACKAGE) ;
-
+       if [ IsPackageAvailable openssl_devel ] {
                ExtractBuildFeatureArchives openssl :
-                       file: base $(HAIKU_OPENSSL_URL)
+                       file: base openssl
                                runtime: lib
-                       file: devel $(HAIKU_OPENSSL_DEVEL_URL)
+                       file: devel openssl_devel
                                depends: base
                                libraries: develop/lib/libcrypto.so 
develop/lib/libssl.so
                                headers: develop/headers
@@ -61,31 +44,11 @@ if $(HAIKU_BUILD_FEATURE_SSL) {
 # ICU
 
 # Note ICU isn't actually optional, but is still an external package
-if $(TARGET_ARCH) in arm ppc x86 x86_64 {
-       if $(TARGET_ARCH) = ppc {
-               HAIKU_ICU_PACKAGE = icu-4.8.1-ppc-2011-08-20.zip ;
-               HAIKU_ICU_DEVEL_PACKAGE = icu-devel-4.8.1-ppc-2011-12-19.zip ;
-       } else if $(TARGET_ARCH) = arm {
-               HAIKU_ICU_PACKAGE = icu-4.8.1.1-arm-2012-11-21.zip ;
-               HAIKU_ICU_DEVEL_PACKAGE = icu-devel-4.8.1.1-arm-2012-11-21.zip ;
-       } else if $(TARGET_ARCH) = x86_64 {
-               HAIKU_ICU_PACKAGE = icu-4.8.1.1-x86_64-2012-07-30.zip ;
-               HAIKU_ICU_DEVEL_PACKAGE = 
icu-devel-4.8.1.1-x86_64-2012-07-30.zip ;
-       } else if $(HAIKU_GCC_VERSION[1]) = 2 {
-               HAIKU_ICU_PACKAGE = icu-4.8.1.1-3-x86_gcc2.hpkg ;
-               HAIKU_ICU_DEVEL_PACKAGE = icu_devel-4.8.1.1-3-x86_gcc2.hpkg ;
-       } else {
-               HAIKU_ICU_PACKAGE = icu-4.8.1.1-r1a4-x86-gcc4-2012-08-29.zip ;
-               HAIKU_ICU_DEVEL_PACKAGE = 
icu-devel-4.8.1.1-x86-gcc4-2011-12-20.zip ;
-       }
-
-       HAIKU_ICU_URL = $(hpkgBaseURL)/$(HAIKU_ICU_PACKAGE) ;
-       HAIKU_ICU_DEVEL_URL = $(hpkgBaseURL)/$(HAIKU_ICU_DEVEL_PACKAGE) ;
-
+if [ IsPackageAvailable icu_devel ] {
        ExtractBuildFeatureArchives icu :
-               file: base $(HAIKU_ICU_URL)
+               file: base icu
                        runtime: lib
-               file: devel $(HAIKU_ICU_DEVEL_URL)
+               file: devel icu_devel
                        depends: base
                        libraries:
                                develop/lib/libicudata.so
@@ -106,9 +69,12 @@ if $(TARGET_ARCH) in arm ppc x86 x86_64 {
 
 # CLucene
 
-# Automatically install the CLucene feature, when the optional CLucene optional
-# package is enabled.
-if [ IsOptionalHaikuImagePackageAdded CLucene ] {
+# TODO: Update to packages!
+if ! 1 {
+
+# Automatically install the CLucene feature, when the CLucene package is
+# enabled.
+if [ IsHaikuImagePackageAdded clucene ] {
        HAIKU_BUILD_FEATURE_CLUCENE = 1 ;
 }
 
@@ -148,6 +114,11 @@ if $(HAIKU_BUILD_FEATURE_CLUCENE) {
        }
 }
 
+} # ! 1
+
+
+# TODO: Update to packages!
+if ! 1 {
 
 # LLVM
 if $(TARGET_ARCH) = x86 {
@@ -260,24 +231,15 @@ if $(TARGET_ARCH) = x86 {
        Echo "LLVM not yet available on $(TARGET_ARCH)" ;
 }
 
+} # ! 1
 
-# GLU (GL Utilities)
-if $(TARGET_ARCH) = x86 {
-       if $(HAIKU_GCC_VERSION[1]) >= 4 {
-               # TODO:...
-               HAIKU_GLU_PACKAGE = glu-9.0-x86-gcc4-2012-11-13.zip ;
-       } else {
-               HAIKU_GLU_PACKAGE = glu-9.0.0-1-x86_gcc2.hpkg ;
-               HAIKU_GLU_DEVEL_PACKAGE = glu_devel-9.0.0-1-x86_gcc2.hpkg ;
-       }
-
-       HAIKU_GLU_URL = $(hpkgBaseURL)/$(HAIKU_GLU_PACKAGE) ;
-       HAIKU_GLU_DEVEL_URL = $(hpkgBaseURL)/$(HAIKU_GLU_DEVEL_PACKAGE) ;
 
+# GLU (GL Utilities)
+if [ IsPackageAvailable glu_devel ] {
        ExtractBuildFeatureArchives glu :
-               file: base $(HAIKU_GLU_URL)
+               file: base glu
                        runtime: lib
-               file: devel $(HAIKU_GLU_DEVEL_URL)
+               file: devel glu_devel
                        depends: base
                        library: develop/lib/libGLU.so
                        headers: develop/headers
@@ -290,21 +252,9 @@ if $(TARGET_ARCH) = x86 {
 
 
 # Mesa
-if $(TARGET_ARCH) = x86 {
-       local zipFile ;
-       if $(HAIKU_GCC_VERSION[1]) >= 4 {
-               # TODO:...
-               HAIKU_MESA_PACKAGE = mesa-9.1.1-x86-gcc4-2013-04-27.zip ;
-       } else {
-               HAIKU_MESA_PACKAGE = mesa-7.8.2-3-x86_gcc2.hpkg ;
-               HAIKU_MESA_DEVEL_PACKAGE = mesa_devel-7.8.2-3-x86_gcc2.hpkg ;
-       }
-
-       HAIKU_MESA_URL = $(hpkgBaseURL)/$(HAIKU_MESA_PACKAGE) ;
-       HAIKU_MESA_DEVEL_URL = $(hpkgBaseURL)/$(HAIKU_MESA_DEVEL_PACKAGE) ;
-
+if [ IsPackageAvailable mesa_devel ] {
        ExtractBuildFeatureArchives mesa : [ FFilterByBuildFeatures
-               file: devel $(HAIKU_MESA_DEVEL_URL)
+               file: devel mesa_devel
                        mesaLibrary: develop/lib/libmesa.a
                        glapiLibrary: develop/lib/libglapi.a
                        headers: develop/headers
@@ -332,31 +282,7 @@ if $(TARGET_ARCH) = x86 {
 
 
 # FFmpeg
-local ffmpegBaseURL = $(baseURL)/lib ;
-if $(TARGET_ARCH) = x86 {
-       if $(HAIKU_GCC_VERSION[1]) >= 4 {
-               # TODO:...
-               HAIKU_FFMPEG_PACKAGE = 
ffmpeg-0.10.2-r1a4-x86-gcc4-2012-09-02.zip ;
-               HAIKU_SPEEX_PACKAGE = speex-1.2rc1-r1a4-x86-gcc4-2012-09-02.zip 
;
-               HAIKU_LIBTHEORA_PACKAGE = 
libtheora-1.1.1-r1a4-x86-gcc4-2012-09-02.zip ;
-               HAIKU_LIBVORBIS_PACKAGE = 
libvorbis-1.3.2-r1a4-x86-gcc4-2012-09-02.zip ;
-               HAIKU_LIBOGG_PACKAGE = 
libogg-1.3.0-r1a4-x86-gcc4-2012-09-02.zip ;
-               HAIKU_LIBVPX_PACKAGE = 
libvpx-1.0.0-r1a4-x86-gcc4-2012-09-02.zip ;
-       } else {
-               HAIKU_FFMPEG_PACKAGE = ffmpeg-0.10.2-2-x86_gcc2.hpkg ;
-               HAIKU_FFMPEG_DEVEL_PACKAGE = 
ffmpeg_devel-0.10.2-2-x86_gcc2.hpkg ;
-               HAIKU_SPEEX_PACKAGE = speex-1.2~rc1-1-x86_gcc2.hpkg ;
-               HAIKU_SPEEX_DEVEL_PACKAGE = speex_devel-1.2~rc1-1-x86_gcc2.hpkg 
;
-               HAIKU_LIBTHEORA_PACKAGE = libtheora-1.1.1-1-x86_gcc2.hpkg ;
-               HAIKU_LIBTHEORA_DEVEL_PACKAGE = 
libtheora_devel-1.1.1-1-x86_gcc2.hpkg ;
-               HAIKU_LIBVORBIS_PACKAGE = libvorbis-1.3.2-1-x86_gcc2.hpkg ;
-               HAIKU_LIBVORBIS_DEVEL_PACKAGE = 
libvorbis_devel-1.3.2-1-x86_gcc2.hpkg ;
-               HAIKU_LIBOGG_PACKAGE = libogg-1.3.0-1-x86_gcc2.hpkg ;
-               HAIKU_LIBOGG_DEVEL_PACKAGE = libogg_devel-1.3.0-1-x86_gcc2.hpkg 
;
-               HAIKU_LIBVPX_PACKAGE = libvpx-1.0.0-1-x86_gcc2.hpkg ;
-               HAIKU_LIBVPX_DEVEL_PACKAGE = libvpx_devel-1.0.0-1-x86_gcc2.hpkg 
;
-       }
-
+if [ IsPackageAvailable ffmpeg_devel ] {
        local ffmpegLibs = libavformat.so libavcodec.so libavdevice.so
                libavfilter.so libswscale.so libavutil.so ;
        local speexLibs = libspeex.so ;
@@ -367,14 +293,10 @@ if $(TARGET_ARCH) = x86 {
 
        local feature ;
        for feature in ffmpeg speex libtheora libvorbis libogg libvpx {
-               HAIKU_$(feature:U)_URL = 
$(hpkgBaseURL)/$(HAIKU_$(feature:U)_PACKAGE) ;
-               HAIKU_$(feature:U)_DEVEL_URL
-                       = $(hpkgBaseURL)/$(HAIKU_$(feature:U)_DEVEL_PACKAGE) ;
-
                ExtractBuildFeatureArchives $(feature) :
-                       file: base $(HAIKU_$(feature:U)_URL)
+                       file: base $(feature)
                                runtime: lib
-                       file: devel $(HAIKU_$(feature:U)_DEVEL_URL)
+                       file: devel $(feature)_devel
                                depends: base
                                libraries: develop/lib/$($(feature)Libs)
                                headers: develop/headers
@@ -388,28 +310,11 @@ if $(TARGET_ARCH) = x86 {
 
 
 # Freetype
-local freetypeBaseURL = $(baseURL)/lib ;
-if $(TARGET_ARCH) in arm ppc x86 x86_64 {
-       if $(TARGET_ARCH) = arm {
-               HAIKU_FREETYPE_PACKAGE = freetype-2.4.9-arm-2012-11-21.zip ;
-       } else if $(TARGET_ARCH) = ppc {
-               HAIKU_FREETYPE_PACKAGE = freetype-2.4.9-ppc-gcc4-2012-06-26.zip 
;
-       } else if $(TARGET_ARCH) = x86_64 {
-               HAIKU_FREETYPE_PACKAGE = freetype-2.4.9-x86_64-2012-08-04.zip ;
-       } else if $(HAIKU_GCC_VERSION[1]) >= 4 {
-               HAIKU_FREETYPE_PACKAGE = 
freetype-2.4.9-r1a4-x86-gcc4-2012-09-02.zip ;
-       } else {
-               HAIKU_FREETYPE_PACKAGE = freetype-2.4.9-2-x86_gcc2.hpkg ;
-               HAIKU_FREETYPE_DEVEL_PACKAGE = 
freetype_devel-2.4.9-2-x86_gcc2.hpkg ;
-       }
-
-       HAIKU_FREETYPE_URL = $(hpkgBaseURL)/$(HAIKU_FREETYPE_PACKAGE) ;
-       HAIKU_FREETYPE_DEVEL_URL = 
$(hpkgBaseURL)/$(HAIKU_FREETYPE_DEVEL_PACKAGE) ;
-
+if [ IsPackageAvailable freetype_devel ] {
        ExtractBuildFeatureArchives freetype :
-               file: base $(HAIKU_FREETYPE_URL)
+               file: base freetype
                        runtime: lib
-               file: devel $(HAIKU_FREETYPE_DEVEL_URL)
+               file: devel freetype_devel
                        depends: base
                        library: develop/lib/libfreetype.so
                        headers: develop/headers develop/headers/freetype2
@@ -423,9 +328,12 @@ if $(TARGET_ARCH) in arm ppc x86 x86_64 {
 
 # TagLib
 
+# TODO: Update to packages!
+if ! 1 {
+
 # Automatically install the TagLib feature, when the optional TagLib optional
 # package is enabled.
-if [ IsOptionalHaikuImagePackageAdded TagLib ] {
+if [ IsHaikuImagePackageAdded taglib ] {
        HAIKU_BUILD_FEATURE_TAGLIB = 1 ;
 }
 
@@ -465,8 +373,14 @@ if $(HAIKU_BUILD_FEATURE_TAGLIB) {
        }
 }
 
+} # ! 1
+
 
 # WebKit
+
+# TODO: Update to packages!
+if ! 1 {
+
 # Automatically install the WebKit feature, when the optional WebPositive
 # optional package is enabled.
 if [ IsOptionalHaikuImagePackageAdded WebPositive ] {
@@ -513,29 +427,15 @@ if $(HAIKU_BUILD_FEATURE_WEBKIT) {
        }
 }
 
-# libpng
-local libpngBaseURL = $(baseURL)/lib ;
-if $(TARGET_ARCH) in arm ppc x86 x86_64 {
-       if $(TARGET_ARCH) = arm {
-               HAIKU_LIBPNG_PACKAGE = libpng-1.5.12-arm-2012-11-21.zip ;
-       } else if $(TARGET_ARCH) = ppc {
-               HAIKU_LIBPNG_PACKAGE = libpng-1.5.12-ppc-gcc4-2012-08-27.zip ;
-       } else if $(TARGET_ARCH) = x86_64 {
-               HAIKU_LIBPNG_PACKAGE = libpng-1.5.12-x86_64-2012-11-18.zip ;
-       } else if $(HAIKU_GCC_VERSION[1]) >= 4 {
-               HAIKU_LIBPNG_PACKAGE = libpng-1.5.12-x86-gcc4-2012-08-23.zip ;
-       } else {
-               HAIKU_LIBPNG_PACKAGE = libpng-1.5.12-2-x86_gcc2.hpkg ;
-               HAIKU_LIBPNG_DEVEL_PACKAGE = 
libpng_devel-1.5.12-2-x86_gcc2.hpkg ;
-       }
+} # ! 1
 
-       HAIKU_LIBPNG_URL = $(hpkgBaseURL)/$(HAIKU_LIBPNG_PACKAGE) ;
-       HAIKU_LIBPNG_DEVEL_URL = $(hpkgBaseURL)/$(HAIKU_LIBPNG_DEVEL_PACKAGE) ;
 
+# libpng
+if [ IsPackageAvailable libpng_devel ] {
        ExtractBuildFeatureArchives libpng :
-               file: base $(HAIKU_LIBPNG_URL)
+               file: base libpng
                        runtime: lib
-               file: devel $(HAIKU_LIBPNG_DEVEL_URL)
+               file: devel libpng_devel
                        depends: base
                        library: develop/lib/libpng.so
                        headers: develop/headers
@@ -546,29 +446,13 @@ if $(TARGET_ARCH) in arm ppc x86 x86_64 {
        Echo "libpng support not available on $(TARGET_ARCH)" ;
 }
 
-# jpeg
-local jpegBaseURL = $(baseURL)/lib ;
-if $(TARGET_ARCH) in arm ppc x86 x86_64 {
-       if $(TARGET_ARCH) = arm {
-               HAIKU_JPEG_PACKAGE = jpeg-8d-arm-2012-11-21.zip ;
-       } else if $(TARGET_ARCH) = ppc {
-               HAIKU_JPEG_PACKAGE = jpeg-8d-ppc-gcc4-2012-08-27.zip ;
-       } else if $(TARGET_ARCH) = x86_64 {
-               HAIKU_JPEG_PACKAGE = jpeg-8d-x86_64-2012-11-18.zip ;
-       } else if $(HAIKU_GCC_VERSION[1]) >= 4 {
-               HAIKU_JPEG_PACKAGE = jpeg-8d-x86-gcc4-2012-08-23.zip ;
-       } else {
-               HAIKU_JPEG_PACKAGE = jpeg-9-2-x86_gcc2.hpkg ;
-               HAIKU_JPEG_DEVEL_PACKAGE = jpeg_devel-9-2-x86_gcc2.hpkg ;
-       }
-
-       HAIKU_JPEG_URL = $(hpkgBaseURL)/$(HAIKU_JPEG_PACKAGE) ;
-       HAIKU_JPEG_DEVEL_URL = $(hpkgBaseURL)/$(HAIKU_JPEG_DEVEL_PACKAGE) ;
 
+# jpeg
+if [ IsPackageAvailable jpeg_devel ] {
        ExtractBuildFeatureArchives jpeg :
-               file: base $(HAIKU_JPEG_URL)
+               file: base jpeg
                        runtime: lib
-               file: devel $(HAIKU_JPEG_DEVEL_URL)
+               file: devel jpeg_devel
                        depends: base
                        library: develop/lib/libjpeg.so
                        headers: develop/headers
@@ -581,33 +465,15 @@ if $(TARGET_ARCH) in arm ppc x86 x86_64 {
 
 
 # zlib
-if $(TARGET_ARCH) in arm ppc x86 x86_64 {
-       if $(TARGET_ARCH) = arm {
-               HAIKU_ZLIB_PACKAGE = zlib-1.2.7-arm-2012-11-21.zip ;
-       } else if $(TARGET_ARCH) = ppc {
-               HAIKU_ZLIB_PACKAGE = zlib-1.2.7-ppc-gcc4-2012-10-30.zip ;
-       } else if $(TARGET_ARCH) = x86_64 {
-               HAIKU_ZLIB_PACKAGE = zlib-1.2.7-x86_64-2012-11-18.zip ;
-       } else if $(HAIKU_GCC_VERSION[1]) >= 4 {
-               HAIKU_ZLIB_PACKAGE = zlib-1.2.7-x86-gcc4-2012-10-30.zip ;
-       } else {
-               HAIKU_ZLIB_PACKAGE = zlib-1.2.8-2-x86_gcc2.hpkg ;
-               HAIKU_ZLIB_DEVEL_PACKAGE = zlib_devel-1.2.8-2-x86_gcc2.hpkg ;
-       }
-       HAIKU_ZLIB_SOURCE_PACKAGE = zlib_source-1.2.8-2-source.hpkg ;
-
-       HAIKU_ZLIB_URL = $(hpkgBaseURL)/$(HAIKU_ZLIB_PACKAGE) ;
-       HAIKU_ZLIB_DEVEL_URL = $(hpkgBaseURL)/$(HAIKU_ZLIB_DEVEL_PACKAGE) ;
-       HAIKU_ZLIB_SOURCE_URL = $(hpkgBaseURL)/$(HAIKU_ZLIB_SOURCE_PACKAGE) ;
-
+if [ IsPackageAvailable zlib_devel ] {
        ExtractBuildFeatureArchives zlib :
-               file: base $(HAIKU_ZLIB_URL)
+               file: base zlib
                        runtime: lib
-               file: devel $(HAIKU_ZLIB_DEVEL_URL)
+               file: devel zlib_devel
                        depends: base
                        library: develop/lib/libz.so
                        headers: develop/headers
-               file: source $(HAIKU_ZLIB_SOURCE_URL)
+               file: source zlib_source
                        sources: develop/sources/zlib-1.2.8-2/source
                ;
 
@@ -617,33 +483,22 @@ if $(TARGET_ARCH) in arm ppc x86 x86_64 {
 }
 
 
-# LibSolv
-
-if $(TARGET_ARCH) != x86 {
-       Echo "Libsolv not available for $(TARGET_ARCH)." ;
-} else if $(HAIKU_GCC_VERSION[1]) = 2 {
-       HAIKU_LIBSOLV_PACKAGE
-               = libsolv-0.3.0_haiku_2013_06_16-1-x86_gcc2.hpkg ;
-       HAIKU_LIBSOLV_DEVEL_PACKAGE
-               = libsolv_devel-0.3.0_haiku_2013_06_16-1-x86_gcc2.hpkg ;
-} else {
-       Echo "Libsolv not available for gcc4." ;
-}
-
-if $(HAIKU_LIBSOLV_PACKAGE) {
-       HAIKU_LIBSOLV_URL = $(hpkgBaseURL)/$(HAIKU_LIBSOLV_PACKAGE) ;
-       HAIKU_LIBSOLV_DEVEL_URL = $(hpkgBaseURL)/$(HAIKU_LIBSOLV_DEVEL_PACKAGE) 
;
-
+# libsolv
+if [ IsPackageAvailable libsolv_devel ] {
        ExtractBuildFeatureArchives libsolv :
-               file: base $(HAIKU_LIBSOLV_URL)
+               file: base libsolv
                        runtime: lib
-               file: devel $(HAIKU_LIBSOLV_DEVEL_URL)
+               file: devel libsolv_devel
                        depends: base
                        libraries: develop/lib/libsolv.so 
develop/lib/libsolvext.so
                        headers: develop/headers
+               file: source libsolv_source
+                       sources: 
develop/sources/libsolv-0.3.0_haiku_2013_06_16-1/source
                ;
 
        EnableBuildFeatures libsolv ;
+} else {
+       Echo "libsolv package not available for $(TARGET_ARCH)" ;
 }
 
 
diff --git a/build/jam/BuildSetup b/build/jam/BuildSetup
index a12fdde..4770510 100644
--- a/build/jam/BuildSetup
+++ b/build/jam/BuildSetup
@@ -1120,6 +1120,10 @@ if $(HOST_PLATFORM_IS_64_BIT) {
        HOST_DEFINES += HAIKU_HOST_PLATFORM_64_BIT ;
 }
 
+# define Haiku packaging architecture macro for host build
+HOST_DEFINES += HAIKU_PACKAGING_ARCH=\\\"$(HAIKU_PACKAGING_ARCH)\\\" ;
+
+
 #pragma mark -
 
 # In case we build for a BeOS compatible platform, but not for Haiku, we
diff --git a/build/jam/HaikuImage b/build/jam/HaikuImage
index 4a53e69..df1fc22 100644
--- a/build/jam/HaikuImage
+++ b/build/jam/HaikuImage
@@ -393,6 +393,7 @@ Always $(script) ;
 AddVariableToScript $(script) : sourceDir : $(HAIKU_TOP) ;
 AddVariableToScript $(script) : outputDir : $(HAIKU_OUTPUT_DIR) ;
 AddVariableToScript $(script) : tmpDir : $(HAIKU_TMP_DIR) ;
+AddVariableToScript $(script) : downloadDir : $(HAIKU_DOWNLOAD_DIR) ;
 AddVariableToScript $(script) : installDir : $(HAIKU_INSTALL_DIR) ;
 #AddVariableToScript $(script) : isImage : 1 ;
 AddVariableToScript $(script) : imageSize : $(HAIKU_IMAGE_SIZE) ;
@@ -410,6 +411,8 @@ AddTargetVariableToScript $(script) : <build>makebootable ;
 AddTargetVariableToScript $(script) : <build>package ;
 AddTargetVariableToScript $(script) : <build>rc ;
 AddTargetVariableToScript $(script) : <build>resattr ;
+AddTargetVariableToScript $(script) : <build>get_package_dependencies
+       : getPackageDependencies ;
 AddTargetVariableToScript $(script) : <build>unzip ;
 AddTargetVariableToScript $(script) : <build>vmdkimage ;
 AddVariableToScript $(script) : stripCommand : $(HAIKU_STRIP) ;
@@ -423,16 +426,57 @@ if $(optionalPackageDescriptions) {
                : optionalPackageDescriptions ;
 }
 
-# add a variable "packages" with the packages copied/updated
+# Add a variable to indicate whether packages dependencies shall be resolved. 
We
+# always want to do that in non-update mode, but also in update mode when all
+# packages are updated.
+local resolvePackageDependencies ;
+if ! [ IsUpdateHaikuImageOnly ] || $(HAIKU_UPDATE_ALL_PACKAGES) {
+       resolvePackageDependencies = 1 ;
+}
+AddVariableToScript $(script) : resolvePackageDependencies
+       : $(resolvePackageDependencies) ;
+
+# Add variables "systemPackages" and "commonPackages" with the packages
+# copied/updated.
 local container = $(HAIKU_IMAGE_CONTAINER_NAME) ;
-local packages = [ on $(container) return $(HAIKU_PACKAGES_IN_IMAGE) ] ;
+local allPackages = [ on $(container) return $(HAIKU_PACKAGES_IN_IMAGE) ] ;
 if [ on $(container) return $(HAIKU_CONTAINER_UPDATE_ONLY) ]
        && ! [ IncludeAllTargetsInContainer $(container) ] {
-       packages = [ FilterContainerUpdateTargets $(packages)
+       allPackages = [ FilterContainerUpdateTargets $(allPackages)
                : HAIKU_INCLUDE_IN_IMAGE ] ;
 }
 
-AddTargetVariableToScript $(script) : $(packages) : packages ;
+local systemPackages ;
+local commonPackages ;
+local package ;
+for package in $(allPackages) {
+       if [ on $(package) return $(HAIKU_PACKAGE_INSTALLATION_LOCATION) ]
+                       = system {
+               systemPackages += $(package) ;
+       } else {
+               commonPackages += $(package) ;
+       }
+}
+
+AddTargetVariableToScript $(script) : $(systemPackages) : systemPackages ;
+AddTargetVariableToScript $(script) : $(commonPackages) : commonPackages ;
+
+# Generate the repository package lists and add variables for the repositories.
+local repository ;
+for repository in $(HAIKU_REPOSITORIES) {
+       local packageListFile = $(repository:G=repository-package-list) ;
+       MakeLocate $(packageListFile)
+               : [ FDirName $(TARGET_OBJECT_BASE_DIR) $(HAIKU_PACKAGING_ARCH) 
] ;
+       Always $(packageListFile) ;
+       GeneratedRepositoryPackageList $(packageListFile) : $(repository) ;
+
+       AddTargetVariableToScript $(script) : $(packageListFile)
+               : repositoryPackageList_$(repository:G=) ;
+       AddVariableToScript $(script) : repositoryUrl_$(repository:G=)
+               : [ on $(repository) return $(HAIKU_REPOSITORY_URL) ] ;
+}
+
+AddVariableToScript $(script) : repositories : $(HAIKU_REPOSITORIES:G=) ;
 
 # create the other scripts
 HAIKU_IMAGE_MAKE_DIRS_SCRIPT = <HaikuImage>haiku.image-make-dirs ;
diff --git a/build/jam/ImageRules b/build/jam/ImageRules
index e73b731..2faabf4 100644
--- a/build/jam/ImageRules
+++ b/build/jam/ImageRules
@@ -947,6 +947,7 @@ rule AddPackageFilesToHaikuImage location : packages
        HAIKU_PACKAGES_IN_IMAGE on $(HAIKU_IMAGE_CONTAINER_NAME)
                = [ on $(HAIKU_IMAGE_CONTAINER_NAME) return 
$(HAIKU_PACKAGES_IN_IMAGE) ]
                        $(packages) ;
+       HAIKU_PACKAGE_INSTALLATION_LOCATION on $(packages) = $(location) ;
        AddFilesToHaikuImage $(location) packages : $(packages) ;
 }
 
@@ -997,6 +998,43 @@ rule OptionalPackageDependencies package : dependencies
        }
 }
 
+
+rule AddHaikuImagePackages packages : installationLocation
+{
+       # AddHaikuImagePackages <packages> [ : <installationLocation> ] ;
+        # Adds the given package <packages>s to the image. 
<installationLocation>
+        # is either "system" or "common" (the default) and specifies where the
+        # packages shall be installed.
+
+       local package ;
+       for package in $(packages) {
+               if ! [ on $(package) return $(HAIKU_PACKAGE_ADDED) ] {
+                       if ! [ IsPackageAvailable $(package) ] {
+                               Echo "AddHaikuImagePackages: package" $(package)
+                                       "not available!" ;
+                               continue ;
+                       }
+
+                       HAIKU_PACKAGE_ADDED on $(package) = 1 ;
+                       HAIKU_ADDED_PACKAGES += $(package) ;
+
+                       InstallOptionalHaikuImagePackage [ PackageURL 
$(package) ]
+                               : $(installationLocation) ;
+               }
+       }
+}
+
+
+rule IsHaikuImagePackageAdded package
+{
+       if [ on $(package) return $(HAIKU_PACKAGE_ADDED) ] {
+               return 1 ;
+       }
+
+       return ;
+}
+
+
 rule InstallSourceArchive file : url
 {
        if $(HAIKU_INCLUDE_SOURCES) = 1 {
diff --git a/build/jam/MiscRules b/build/jam/MiscRules
index 10108ad..dc2a185 100644
--- a/build/jam/MiscRules
+++ b/build/jam/MiscRules
@@ -695,7 +695,7 @@ rule ExtractBuildFeatureArchives feature : list
                }
 
                local package = $(list[2]) ;
-               local url = $(list[3]) ;
+               local url = [ PackageURL $(list[3]) ] ;
                local fileName = $(url:BS) ;
                list = $(list[4-]) ;
 
diff --git a/build/jam/OptionalPackageDependencies 
b/build/jam/OptionalPackageDependencies
deleted file mode 100644
index 74873df..0000000
--- a/build/jam/OptionalPackageDependencies
+++ /dev/null
@@ -1,52 +0,0 @@
-
-# package dependencies
-
-OptionalPackageDependencies APR-util : APR Expat ;
-OptionalPackageDependencies AllegroLibs : XiphLibs ;
-OptionalPackageDependencies ArmyKnife : TagLib ;
-OptionalPackageDependencies Beam : LibIconv LibLayout OpenSSL PCRE ;
-OptionalPackageDependencies BeHappy : BeBook NetSurf ;
-OptionalPackageDependencies BurnItNow : CDRecord ;
-OptionalPackageDependencies Caya : Expat ;
-OptionalPackageDependencies CDRecord : GetTextLibintl LibIconv ;
-OptionalPackageDependencies Curl : OpenSSL ;
-OptionalPackageDependencies DevelopmentBase : CDRecord DevelopmentMin Yasm ;
-OptionalPackageDependencies Development :
-       DevelopmentBase FFMpeg-devel FreeType-devel GLU-devel Jpeg Libpng-devel 
Perl
-       Zlib-devel
-       ;
-OptionalPackageDependencies DevelopmentPowerPC : DevelopmentMin ;
-OptionalPackageDependencies GetText : GetTextLibintl ;
-OptionalPackageDependencies GetTextLibintl : LibIconv ;
-OptionalPackageDependencies Git : Expat Curl LibIconv Man OpenSSL Perl Python ;
-OptionalPackageDependencies ICU-devel : DevelopmentBase ;
-OptionalPackageDependencies LibEdit : NCurses ;
-OptionalPackageDependencies LibLayout : DevelopmentBase ;
-OptionalPackageDependencies LibSolv : Expat ;
-OptionalPackageDependencies LibXML2 : XZ-Utils ;
-OptionalPackageDependencies Man : Groff ;
-OptionalPackageDependencies Tar : LibIconv ;
-OptionalPackageDependencies Python : Bzip OpenSSL SQLite Readline ;
-OptionalPackageDependencies Mercurial : Python ;
-OptionalPackageDependencies Nano : NCurses ;
-OptionalPackageDependencies Neon : LibXML2 ;
-OptionalPackageDependencies NetFS : UserlandFS ;
-OptionalPackageDependencies NetSurf : OpenSSL Curl LibXML2 LibIconv Libmng ;
-OptionalPackageDependencies OpenSSH : LibEdit OpenSSL ;
-OptionalPackageDependencies OpenSSL : CARootCertificates ;
-OptionalPackageDependencies Paladin : CCache Fastdep PCRE ;
-OptionalPackageDependencies Pe : PCRE ;
-OptionalPackageDependencies Readline : NCurses ;
-OptionalPackageDependencies SDLLibs : XiphLibs libmad libmikmod Libmng 
libmodplug physfs ;
-OptionalPackageDependencies Subversion : APR-util Neon LibIconv LibXML2 
OpenSSL SQLite ;
-OptionalPackageDependencies Transmission : LibEvent Curl OpenSSL LibIconv ;
-OptionalPackageDependencies Vim : GetTextLibintl LibIconv ;
-OptionalPackageDependencies WebPositive : Curl LibXML2 SQLite WebKit 
WebPositiveBookmarks ;
-OptionalPackageDependencies wpa_supplicant : OpenSSL ;
-OptionalPackageDependencies XZ-Utils : Tar ;
-OptionalPackageDependencies Zlib-devel : Zlib ;
-
-OptionalPackageDependencies MandatoryPackages :
-       Bzip Ctags FFMpeg FreeType GLU Grep ICU Jpeg Libpng LibSolv Mesa Sed Tar
-       Zlib
-       ;
diff --git a/build/jam/OptionalPackages b/build/jam/OptionalPackages
index d829184..895cc2a 100644
--- a/build/jam/OptionalPackages
+++ b/build/jam/OptionalPackages
@@ -1,279 +1,58 @@
 # This file defines the optional packages that can be added to the Haiku image.
 # It is directly included from HaikuImage -- all variables defined there can
-# be used
-
+# be used.
 
 # Available Optional Packages:
-#      ABI-compliance-checker  - tool for checking ABI compatibility between 
libs
-#      APR                                             - support libraries 
used for example by Subversion
-#      APR-util                                - Apache portable runtime 
utility library
-#      ArmyKnife                               - tool for editing audio file 
metadata and attributes
-#      Bazaar                                  - the distributed version 
control system
-#      BeAE                                    - open source Audio Editor
-#      Beam                                    - powerful native e-mail client
-#      BeBook                                  - the classic BeOS API 
documentation
-#      BeHappy                                 - special documentation (i.e. 
BeBook) browser
 #      BeOSCompatibility               - creates links within the system to 
support old apps
-#      BePDF                                   - native PDF reader
-#      BeZillaBrowser                  - fork of Mozilla's 1.8 branch.
 #      Bluetooth                               - experimental Haiku components 
for Bluetooth
-#      BurnItNow                               - CD burning app
-#      Bzip                                    - file archiving utility
-#      CARootCertificates              - bundle with trusted CA root 
certificates
-#      Caya                                    - a multiprotocol im client
-#      CCache                                  - fast compiler cache
-#      CDRecord                                - the command line CD writing 
tools
-#      Clang                                   - the LLVM C and C++ compiler 
(llvm, libs, headers)
-#      Clockwerk                               - native audio/video compositing
-#      CLucene                                 - indexed file search
-#      CMake                                   - cross platform make
-#      Colors!                                 - color picker application
-#      Ctags                                   - exuberant ctags (source files 
indexing)
-#      Curl                                    - a client that groks URLs
-#      CVS                                             - the version control 
system
-#      DemoPackage_Audio               - a collection of audio files suitable 
for demonstrations
-#      DemoPackage_Data                - a collection of data files suitable 
for demonstrations
-#      DemoPackage_Image               - a collection of image files suitable 
for demonstrations
-#      DemoPackage_Video               - a collection of video files suitable 
for demonstrations
 #      Development                             - more complete dev environment 
(including autotools)
 #      DevelopmentBase                 - basic development environment (gcc, 
headers, libs,...)
 #      DevelopmentJava                 - JamVM, a Java Virtual machine, GNU 
Classpath, ECJ
 #      DevelopmentMin                  - development headers, libs, tools, 
from sources only
 #      DevelopmentPowerPC              - Cross compiling environment for 
PowerPC
-#      Doxygen                                 - Generate documentation from 
source code
-#      Droid                                   - Font family from Google's 
Android project
-#      Expat                                   - XML parsing libraries
-#      Fastdep                                 - fast dependency generator for 
C/C++ files
 #      FFMpeg                                  - audio/video library
 #      FFMpeg-devel                    - FFMpeg development files
-#      FreeType                                - A Free, High-Quality, and 
Portable Font Engine
-#      FreeType-devel                  - FreeType development files
-#      friss                                   - RSS/ATOM/... feeds reader
-#      GetText                                 - a framework to help produce 
multi-lingual messages.
-#      GetTextLibintl                  - GetText's libintl
 #      Git                                             - the distributed 
version control system
-#      GLU                                             - OpenGL Utilities
-#      GLU-devel                               - GLU development files
-#      GPerf                                   - the perfect hash function 
generator.
-#      Grep                                    - program to search for strings 
inside a file
-#      Groff                                   - text formatter used for man 
pages
-#      HGrep                                   - header grep tool
-#      ICU-devel                               - the headers and lib-links for 
ICU (for development)
-#      Jpeg                                    - JPEG image compression 
library and tools
-#      Jpeg-devel                              - the Jpeg development files
-#      KeymapSwitcher                  - Easy to use keymap switcher
-#      LGrep                                   - Library Grep tool
-#      LibEdit                                 - A BSD licensed replacement 
for GNU readline
-#      LibEvent                                - An event notification library
-#      LibIconv                                - text encoding conversion 
library
-#      LibLayout                               - GCC2 package needed by some 
BeOS apps to compile
-#      Libmng                                  - mng support library
-#      Libpng                                  - Portable Network Graphics 
library
-#      Libpng-devel                    - Libpng development files
-#      LibSolv                                 - package dependency solver 
library
-#      LibXML2                                 - the XML support library
-#      LibXSLT                                 - xslt library and utility
-#      Links                                   - the web browser
-#      Lua                                             - the scripting language
-#      Man                                             - standard commands to 
read man pages
-#      Mercurial                               - the distributed version 
control system
-#      Nano                                    - the command line text editor
-#      Nanumfont                               - Korean monospace font
-#      NCurses                                 - the new curses library
-#      Neon                                    - support libraries used for 
example by SVN
 #      NetFS                                   - the native networked file 
system components
-#      NetSurf                                 - the web browser
-#      OCaml                                   - the Objective Caml language
-#      OpenSound                               - additional audio driver 
package
-#      OpenSSH                                 - the secure shell
-#      OpenSSL                                 - secure sockets library
-#      P7zip                                   - file archiving utility
-#      Paladin                                 - a Haiku IDE
-#      PCRE                                    - the (Perl-compatible) regex 
engine
-#      Pe                                              - the powerful native 
Programmer's Editor
-#      Perl                                    - the scripting language
-#      Python                                  - the scripting language
-#      Puri                                    - chess game
-#      Readline                                - the GNU Readline library
-#      Rsync                                   - remote directory 
synchronization
-#      Ruby                                    - the programming language
-#      Sed                                             - the ultimate stream 
editor
-#      SQLite                                  - the database implementation
-#      Subversion                              - the version control system
-#      System-sounds                   - a collection of system sounds
-#      TagLib                                  - id3 tag library
-#      Tar                                             - archiving utility
-#      TimGMSoundFont                  - a good quality General MIDI Sound Font
-#      Transmission                    - a fast, easy, and free BitTorrent 
Client
-#      UnRAR                                   - utility to list, test and 
extract RAR archives
 #      UserlandFS                              - aids native file system 
development (like FUSE)
-#      Vim                                             - Vi IMproved. Highly 
configurable text editor
-#      Vision                                  - powerful native IRC client
 #      WebPositive                             - native, WebKit-based web 
browser
 #      WebPositiveBookmarks    - bookmarks for WebPositive
 #      Welcome                                 - introductory documentation to 
Haiku
 #      WifiFirmwareScriptData  - data files needed by install-wifi-firmwares.sh
-#      WonderBrush                             - native graphics application
-#      wpa_supplicant                  - a WPA Supplicant with support for WPA 
and WPA2
-#      WQY-MicroHei                    - Chinese font
-#      XZ-Utils                                - file archiving utility
-#      Yasm                                    - the assembler utility
-#      Zlib                                    - the zlib library
-#      Zlib-devel                              - the zlib library development 
files
-
-local baseURL = http://haiku-files.org/files/optional-packages ;
-local hpkgBaseURL = http://haiku-files.org/files/hpkg ;
-local baseSourceURL = http://haiku-files.org/files/sources ;
-
-# ABI-compliance-checker
-if [ IsOptionalHaikuImagePackageAdded ABI-compliance-checker ] {
-       if $(HAIKU_GCC_VERSION[1]) < 4 {
-               Echo "No optional package ABI-compliance-checker for gcc2" ;
-       } else {
-               InstallOptionalHaikuImagePackage
-                       
$(baseURL)/ABI-compliance-checker-1.12-noarch-gcc4-2010-02-01.zip ;
-       }
-}
-
-
-# APR
-if [ IsOptionalHaikuImagePackageAdded APR ] {
-       if $(TARGET_ARCH) = x86 {
-               if $(HAIKU_GCC_VERSION[1]) >= 4 {
-                       InstallOptionalHaikuImagePackage
-                               
$(baseURL)/apr-1.4.6-r1a4-x86-gcc4-2012-08-30.zip
-                               : : cdPackage ;
-               } else {
-                       InstallOptionalHaikuImagePackage
-                               $(hpkgBaseURL)/apr-1.4.6-7-x86_gcc2.hpkg ;
-               }
-       } else if $(TARGET_ARCH) = x86_64 {
-               InstallOptionalHaikuImagePackage
-                       $(baseURL)/apr-1.4.6-x86_64-2012-12-08.zip
-                       : : cdPackage ;
-       } else {
-               Echo "No optional package APR available for $(TARGET_ARCH)" ;
-       }
-}
-
-
-# APR-util
-if [ IsOptionalHaikuImagePackageAdded APR-util ] {
-       if $(TARGET_ARCH) = x86 {
-               if $(HAIKU_GCC_VERSION[1]) >= 4 {
-                       InstallOptionalHaikuImagePackage
-                               
$(baseURL)/apr-util-1.4.1-r1a4-x86-gcc4-2012-08-30.zip
-                               : : cdPackage ;
-               } else {
-                       InstallOptionalHaikuImagePackage
-                               $(hpkgBaseURL)/apr_util-1.4.1-3-x86_gcc2.hpkg ;
-               }
-       } else if $(TARGET_ARCH) = x86_64 {
-               InstallOptionalHaikuImagePackage
-                       $(baseURL)/apr-util-1.4.1-x86_64-2012-12-08.zip
-                       : : cdPackage ;
-       } else {
-               Echo "No optional package APR-util available for 
$(TARGET_ARCH)" ;
-       }
-}
-
-
-# ArmyKnife
-if [ IsOptionalHaikuImagePackageAdded ArmyKnife ] {
-       if $(TARGET_ARCH) != x86 {
-               Echo "No optional package ArmyKnife available for 
$(TARGET_ARCH)" ;
-       } else if $(HAIKU_GCC_VERSION[1]) >= 4 {
-               Echo "No optional package ArmyKnife for gcc4" ;
-       } else {
-               InstallOptionalHaikuImagePackage
-                       $(baseURL)/armyknife-63-r1a4-x86-gcc2-2012-08-30.zip ;
-               AddSymlinkToHaikuImage home config settings deskbar menu 
Applications
-                       : /boot/common/apps/ArmyKnife/ArmyKnife ;
-       }
-}
-
-
-# Bazaar
-if [ IsOptionalHaikuImagePackageAdded Bazaar ] {
-       if $(TARGET_ARCH) != x86 {
-               Echo "No optional package Bazaar available for $(TARGET_ARCH)" ;
-       } else if $(HAIKU_GCC_VERSION[1]) >= 4 {
-               InstallOptionalHaikuImagePackage
-                       $(baseURL)/bzr-2.6b1-r1a4-x86-gcc4-2012-08-30.zip ;
-       } else {
-               InstallOptionalHaikuImagePackage
-                       $(baseURL)/bzr-2.5.1-r1a4-x86-gcc2-2012-08-27.zip ;
-       }
-}
 
 
-# BeAE
-if [ IsOptionalHaikuImagePackageAdded BeAE ] {
-       if $(TARGET_ARCH) != x86 {
-               Echo "No optional package BeAE available for $(TARGET_ARCH)" ;
-       } else {
-               if $(HAIKU_GCC_VERSION[1]) >= 4 {
-                       InstallOptionalHaikuImagePackage
-                               $(baseURL)/beae-22-r1a4-x86-gcc4-2012-08-30.zip 
;
-               } else {
-                       InstallOptionalHaikuImagePackage
-                               $(baseURL)/beae-22-r1a4-x86-gcc2-2012-08-27.zip 
;
-               }
-               AddSymlinkToHaikuImage home config settings deskbar menu 
Applications
-                       : /boot/common/apps/BeAE/BeAE ;
-       }
-}
+# dependencies between optional packages
+OptionalPackageDependencies Development : DevelopmentBase ;
+OptionalPackageDependencies DevelopmentBase : DevelopmentMin ;
+OptionalPackageDependencies DevelopmentPowerPC : DevelopmentMin ;
+OptionalPackageDependencies NetFS : UserlandFS ;
+OptionalPackageDependencies WebPositive : WebPositiveBookmarks ;
 
 
-# Beam
-if [ IsOptionalHaikuImagePackageAdded Beam ] {
-       if $(TARGET_ARCH) != x86 {
-               Echo "No optional package Beam available for $(TARGET_ARCH)" ;
-       } else {
-               if $(HAIKU_GCC_VERSION[1]) >= 4 {
-                       InstallOptionalHaikuImagePackage
-                               
$(baseURL)/beam-1.2alpha-r1a4-x86-gcc4-2012-09-12.zip ;
-               } else {
-                       InstallOptionalHaikuImagePackage
-                               
$(baseURL)/beam-1.2alpha-r1a4-x86-gcc2-2012-08-29.zip ;
-               }
-               AddSymlinkToHaikuImage home config settings deskbar menu 
Applications
-                       : /boot/common/apps/Beam/Beam ;
-       }
-}
+local baseURL = http://haiku-files.org/files/optional-packages ;
+local hpkgBaseURL = http://haiku-files.org/files/hpkg ;
+local baseSourceURL = http://haiku-files.org/files/sources ;
 
 
 # BeBook
 if [ IsOptionalHaikuImagePackageAdded BeBook ] {
-       InstallOptionalHaikuImagePackage
-               $(hpkgBaseURL)/be_book-2008_10_26-1-any.hpkg
-               : system ;
+       AddHaikuImagePackages be_book ;
        AddSymlinkToHaikuImage home Desktop
                : /boot/system/documentation/BeBook/index.html
                : BeBook ;
 }
 
 
-# BeHappy
-if [ IsOptionalHaikuImagePackageAdded BeHappy ] {
-       if $(TARGET_ARCH) != x86 {
-               Echo "No optional package BeHappy available for $(TARGET_ARCH)" 
;
-       } else if $(HAIKU_GCC_VERSION[1]) >= 4 {
-               Echo "No optional package BeHappy available for gcc4" ;
-       } else {
-               Echo "No optional package BeHappy available for gcc2" ;
-       }
-}
-
-
 # BeOSCompatibility
 if [ IsOptionalHaikuImagePackageAdded BeOSCompatibility ] {
        if $(TARGET_ARCH) != x86 {
-               Echo "No optional package BeOSCompatibility available for 
$(TARGET_ARCH)" ;
+               Echo "No optional package BeOSCompatibility available for"
+                       "$(TARGET_ARCH)" ;
        } else if $(HAIKU_GCC_VERSION[1]) >= 4 {
                Echo "No optional package BeOSCompatibility available for gcc4" 
;
        } else {
-               Echo "Warning: Adding BeOS compatibility symlinks. This will go 
away. Please fix your apps!" ;
+               Echo "Warning: Adding BeOS compatibility symlinks. This will go 
away."
+                       "Please fix your apps!" ;
                AddSymlinkToHaikuImage beos : ../system/apps ;
                AddSymlinkToHaikuImage beos : ../system/bin ;
                AddSymlinkToHaikuImage beos
@@ -288,479 +67,69 @@ if [ IsOptionalHaikuImagePackageAdded BeOSCompatibility ] 
{
 }
 
 
-# BePDF
-if [ IsOptionalHaikuImagePackageAdded BePDF ] {
-       if $(TARGET_ARCH) != x86 {
-               Echo "No optional package BePDF available for $(TARGET_ARCH)" ;
-       } else {
-               if $(HAIKU_GCC_VERSION[1]) >= 4 {
-                       InstallOptionalHaikuImagePackage
-                               
$(baseURL)/bepdf-1.1.1b4-x86-gcc4-2012-08-11.zip ;
-               } else {
-                       InstallOptionalHaikuImagePackage
-                               
$(hpkgBaseURL)/bepdf-1.1.1~beta5_2013_04_28-1-x86_gcc2.hpkg ;
-               }
-       }
-}
-
-
-# BeZillaBrowser
-if [ IsOptionalHaikuImagePackageAdded BeZillaBrowser ] {
-       if $(TARGET_ARCH) != x86 {
-               Echo "No optional package BeZillaBrowser available for 
$(TARGET_ARCH)" ;
-       } else {
-               if $(HAIKU_GCC_VERSION[1]) >= 4 {
-                       InstallOptionalHaikuImagePackage
-                               
$(baseURL)/BeZillaBrowser-2.0.0.22pre-x86-gcc4-2012-09-21.zip ;
-               } else {
-                       InstallOptionalHaikuImagePackage
-                               
$(hpkgBaseURL)/bezillabrowser-2.0.0.22pre_2010_05_02-1-x86_gcc2.hpkg ;
-               }
-       }
-}
-
-
 # Bluetooth stack
 if [ IsOptionalHaikuImagePackageAdded Bluetooth ] {
-       local bluetoothDrivers = h2generic ;
-       AddDriversToHaikuImage bluetooth : $(bluetoothDrivers) ;
-       AddFilesToHaikuImage system servers : bluetooth_server ;
-       AddFilesToHaikuImage system lib : libbluetooth.so ;
-       AddFilesToHaikuImage
-               system add-ons kernel network protocols : l2cap ;
-       AddFilesToHaikuImage system add-ons kernel bluetooth
-               : btCoreData hci ;
-       AddFilesToHaikuImage system preferences : Bluetooth ;
-       AddFilesToHaikuImage system bin : bt_dev_info bt_discovery ;
-       AddSymlinkToHaikuImage home config settings deskbar menu Preferences
-               : /boot/system/preferences/Bluetooth ;
-       if [ IsOptionalHaikuImagePackageAdded DevelopmentMin ]
-               && $(HAIKU_GCC_VERSION[1]) in 2 4 {
-               local arch = $(TARGET_ARCH) ;
-               local abi = gcc$(HAIKU_GCC_VERSION[1]) ;
-               AddSymlinkToHaikuImage system develop lib
-                       : /system/lib libbluetooth.so ;
-       }
-}
-
-
-# BurnItNow
-if [ IsOptionalHaikuImagePackageAdded BurnItNow ] {
-       if $(TARGET_ARCH) != x86 {
-               Echo "No optional package BurnItNow available for 
$(TARGET_ARCH)" ;
-       } else {
-               if $(HAIKU_GCC_VERSION[1]) >= 4 {
-                       InstallOptionalHaikuImagePackage
-                               
$(baseURL)/burnitnow-39-r1a4-x86-gcc4-2012-08-30.zip ;
-               } else {
-                       InstallOptionalHaikuImagePackage
-                               
$(baseURL)/burnitnow-39-r1a4-x86-gcc2-2012-08-27.zip ;
-               }
-               AddSymlinkToHaikuImage home config settings deskbar menu 
Applications
-                       : /boot/common/apps/BurnItNow/BurnItNow ;
-       }
-}
-
-
-# Bzip
-if [ IsOptionalHaikuImagePackageAdded Bzip ] {
-       if $(TARGET_ARCH) = x86 {
-               if $(HAIKU_GCC_VERSION[1]) >= 4 {
-                       InstallOptionalHaikuImagePackage
-                               
$(baseURL)/bzip2-1.0.6-r1a4-x86-gcc4-2012-08-30.zip
-                               : : cdPackage ;
-               } else {
-                       InstallOptionalHaikuImagePackage
-                               $(hpkgBaseURL)/bzip2-1.0.6-3-x86_gcc2.hpkg ;
-               }
-       } else if $(TARGET_ARCH) = x86_64 {
-               InstallOptionalHaikuImagePackage
-                       $(baseURL)/bzip2-1.0.6-x86_64-2012-08-16.zip
-                       : : cdPackage ;
-       } else {
-               Echo "No optional package Bzip available for $(TARGET_ARCH)" ;
-       }
-}
-
-
-# CARootCertificates
-if [ IsOptionalHaikuImagePackageAdded CARootCertificates ] {
-       if $(HAIKU_GCC_VERSION[1]) >= 4 {
-               InstallOptionalHaikuImagePackage
-                       $(baseURL)/cert-2012-07-04.zip
-                       : common data ssl ;
-       } else {
-               InstallOptionalHaikuImagePackage
-                       
$(hpkgBaseURL)/ca_root_certificates-2012_12_29-1-any.hpkg ;
-       }
-}
-
-
-# Caya
-if [ IsOptionalHaikuImagePackageAdded Caya ] {
-       if $(TARGET_ARCH) != x86 {
-               Echo "No optional package Caya available for $(TARGET_ARCH)" ;
-       } else {
-               if $(HAIKU_GCC_VERSION[1]) >= 4 {
-                       InstallOptionalHaikuImagePackage
-                               $(baseURL)/caya-279-r1a4-x86-gcc4-2012-10-02.zip
-                               : : cdPackage ;
-                       InstallOptionalHaikuImagePackage
-                               
$(baseURL)/caya-gpl-protocols-36-r1a4-x86-gcc4-2012-10-01.zip
-                               : : cdPackage ;
-                       AddSymlinkToHaikuImage home config be Applications
-                               : /boot/common/apps/Caya/Caya ;
-               } else {
-                       Echo "No optional package Caya available for 
$(TARGET_ARCH)-gcc2" ;
-               }
-       }
-}
-
-# CCache
-if [ IsOptionalHaikuImagePackageAdded CCache ] {
-       if $(TARGET_ARCH) = x86 {
-               if $(HAIKU_GCC_VERSION[1]) >= 4 {
-                       InstallOptionalHaikuImagePackage
-                               
$(baseURL)/ccache-3.0.1-r1a4-x86-gcc4-2012-08-30.zip ;
-               } else {
-                       InstallOptionalHaikuImagePackage
-                               
$(baseURL)/ccache-3.0.1-r1a4-x86-gcc2-2012-08-27.zip ;
-               }
-       } else if $(TARGET_ARCH) = x86_64 {
-               InstallOptionalHaikuImagePackage
-                       $(baseURL)/ccache-3.0.1-x86_64-2012-12-08.zip ;
-       } else {
-               Echo "No optional package CCache available for $(TARGET_ARCH)" ;
-       }
-}
-
-
-# CDRecord
-if [ IsOptionalHaikuImagePackageAdded CDRecord ] {
-       if $(TARGET_ARCH) = x86 {
-               if $(HAIKU_GCC_VERSION[1]) >= 4 {
-                       InstallOptionalHaikuImagePackage
-                               
$(baseURL)/cdrtools-3.01a07-r1a4-x86-gcc4-2012-08-30.zip ;
-               } else {
-                       InstallOptionalHaikuImagePackage
-                               
$(hpkgBaseURL)/cdrtools-3.01~a07-3-x86_gcc2.hpkg ;
-               }
-       } else if $(TARGET_ARCH) = x86_64 {
-               InstallOptionalHaikuImagePackage
-                       $(baseURL)/cdrtools-3.01a07-x86_64-2012-12-17.zip ;
-       } else {
-               Echo "No optional package CDRecord available for 
$(TARGET_ARCH)" ;
-       }
-}
-
-
-# Clang
-if [ IsOptionalHaikuImagePackageAdded Clang ] {
-       if $(TARGET_ARCH) != x86 {
-               Echo "No optional package Clang available for $(TARGET_ARCH)" ;
-       } else if $(HAIKU_GCC_VERSION[1]) < 4 {
-               Echo "No optional package Clang available for GCC2" ;
-       } else {
-               InstallOptionalHaikuImagePackage
-                       $(baseURL)/clang-3.0-x86-gcc4-2012-03-09.zip ;
-       }
-}
-
-
-# Clockwerk
-if [ IsOptionalHaikuImagePackageAdded Clockwerk ] {
-       if $(TARGET_ARCH) != x86 {
-               Echo "No optional package Clockwerk available for 
$(TARGET_ARCH)" ;
-       } else {
-               if $(HAIKU_GCC_VERSION[1]) >= 4 {
-                       InstallOptionalHaikuImagePackage
-                               
$(baseURL)/Clockwerk-0.0.2-x86-gcc4-2012-02-25.zip ;
-               } else {
-                       InstallOptionalHaikuImagePackage
-                               
$(baseURL)/Clockwerk-0.0.2-x86-gcc2-2012-03-04.zip ;
-               }
-               AddSymlinkToHaikuImage home config settings deskbar menu 
Applications
-                       : /boot/common/apps/Clockwerk/Clockwerk ;
-       }
-}
-
-
-# CLucene
-if [ IsOptionalHaikuImagePackageAdded CLucene ] {
-       if $(TARGET_ARCH) != x86 {
-               Echo "No optional package CLucene available for $(TARGET_ARCH)" 
;
-       } else if $(HAIKU_GCC_VERSION[1]) < 4 {
-               Echo "No optional package CLucene available for GCC2" ;
-       } else {
-               InstallOptionalHaikuImagePackage
-                       $(baseURL)/clucene-0.9.21-x86-gcc4-haiku-2009-08-11.zip
-                       : : cdPackage ;
-       }
-}
-
-
-# CMake
-if [ IsOptionalHaikuImagePackageAdded CMake ] {
-       if $(TARGET_ARCH) != x86 {
-               Echo "No optional package CMake available for $(TARGET_ARCH)" ;
-       } else {
-               if $(HAIKU_GCC_VERSION[1]) >= 4 {
-                       InstallOptionalHaikuImagePackage
-                               
$(baseURL)/cmake-2.8.5-r1a4-x86-gcc4-2012-08-28.zip
-                               : : cdPackage ;
-               } else {
-                       InstallOptionalHaikuImagePackage
-                               $(hpkgBaseURL)/cmake-2.8.5-5-x86_gcc2.hpkg ;
-               }
-       }
-}
-
-
-# Colors!
-if [ IsOptionalHaikuImagePackageAdded Colors! ] {
-       if $(TARGET_ARCH) != x86 {
-               Echo "No optional package Colors! available for $(TARGET_ARCH)" 
;
-       } else {
-               if $(HAIKU_GCC_VERSION[1]) >= 4 {
-                       InstallOptionalHaikuImagePackage
-                               
$(baseURL)/Colors\!-2.1-r1a4-x86-gcc4-2012-08-30.zip ;
-               } else {
-                       InstallOptionalHaikuImagePackage
-                               
$(baseURL)/Colors\!-2.1-r1a4-x86-gcc2-2012-08-30.zip ;
-               }
-               AddSymlinkToHaikuImage home config settings deskbar menu 
Applications
-                       : /boot/common/apps/Colors\!/Colors\! ;
-       }
-}
-
-
-# Ctags
-if [ IsOptionalHaikuImagePackageAdded Ctags ] {
-       if $(TARGET_ARCH) = x86 {
-               if $(HAIKU_GCC_VERSION[1]) >= 4 {
-                       InstallOptionalHaikuImagePackage
-                               
$(baseURL)/ctags-5.8-r1a4-x86-gcc4-2012-08-30.zip
-                               : : cdPackage ;
-               } else {
-                       InstallOptionalHaikuImagePackage
-                               $(hpkgBaseURL)/ctags-5.8-3-x86_gcc2.hpkg ;
-               }
-       } else if $(TARGET_ARCH) = x86_64 {
-               InstallOptionalHaikuImagePackage
-                       $(baseURL)/ctags-5.8-x86_64-2012-12-08.zip
-                       : : cdPackage ;
-       } else {
-               Echo "No optional package Ctags available for $(TARGET_ARCH)" ;
-       }
-}
-
-
-# Curl
-if [ IsOptionalHaikuImagePackageAdded Curl ] {
-       if $(TARGET_ARCH) = x86 {
-               if $(HAIKU_GCC_VERSION[1]) >= 4 {
-                       InstallOptionalHaikuImagePackage
-                               
$(baseURL)/curl-7.26.0-r1a4-x86-gcc4-2012-08-29.zip ;
-               } else {
-                       InstallOptionalHaikuImagePackage
-                               $(hpkgBaseURL)/curl-7.26.0-4-x86_gcc2.hpkg ;
-               }
-       } else if $(TARGET_ARCH) = x86_64 {
-               InstallOptionalHaikuImagePackage
-                       $(baseURL)/curl-7.28.1-x86_64-2012-12-18.zip ;
-       } else {
-               Echo "No optional package Curl available for $(TARGET_ARCH)" ;
-       }
-}
-
-
-# CVS
-if [ IsOptionalHaikuImagePackageAdded CVS ] {
-       if $(TARGET_ARCH) = x86 {
-               if $(HAIKU_GCC_VERSION[1]) >= 4 {
-                       InstallOptionalHaikuImagePackage
-                               
$(baseURL)/cvs-1.12.13.1-r1a4-x86-gcc4-2012-08-30.zip
-                               : : cdPackage ;
-               } else {
-                       InstallOptionalHaikuImagePackage
-                               $(hpkgBaseURL)/cvs-1.12.13.1-5-x86_gcc2.hpkg ;
-               }
-       } else if $(TARGET_ARCH) = x86_64 {
-               InstallOptionalHaikuImagePackage
-                       $(baseURL)/cvs-1.12.13.1-x86_64-2012-12-18.zip
-                       : : cdPackage ;
-       } else {
-               Echo "No optional package CVS available for $(TARGET_ARCH)" ;
-       }
-}
-
-
-# DemoPackage_Audio
-if [ IsOptionalHaikuImagePackageAdded DemoPackage_Audio ] {
-       InstallOptionalHaikuImagePackage
-               $(baseURL)/DemoPackage_Audio-0.1-2012-02-19.zip ;
-}
-
-
-# DemoPackage_Data
-if [ IsOptionalHaikuImagePackageAdded DemoPackage_Data ] {
-       InstallOptionalHaikuImagePackage
-               $(baseURL)/DemoPackage_Data-0.1-2012-02-19.zip ;
-}
-
-
-# DemoPackage_Image
-if [ IsOptionalHaikuImagePackageAdded DemoPackage_Image ] {
-       InstallOptionalHaikuImagePackage
-               $(baseURL)/DemoPackage_Image-0.2-2012-09-22.zip ;
-}
-
-
-# DemoPackage_Video
-if [ IsOptionalHaikuImagePackageAdded DemoPackage_Video ] {
-       InstallOptionalHaikuImagePackage
-               $(baseURL)/DemoPackage_Video-0.1-2012-02-19.zip ;
+# TODO: Make this an actual package!
+#      local bluetoothDrivers = h2generic ;
+#      AddDriversToHaikuImage bluetooth : $(bluetoothDrivers) ;
+#      AddFilesToHaikuImage system servers : bluetooth_server ;
+#      AddFilesToHaikuImage system lib : libbluetooth.so ;
+#      AddFilesToHaikuImage
+#              system add-ons kernel network protocols : l2cap ;
+#      AddFilesToHaikuImage system add-ons kernel bluetooth
+#              : btCoreData hci ;
+#      AddFilesToHaikuImage system preferences : Bluetooth ;
+#      AddFilesToHaikuImage system bin : bt_dev_info bt_discovery ;
+#      AddSymlinkToHaikuImage home config settings deskbar menu Preferences
+#              : /boot/system/preferences/Bluetooth ;
+#      if [ IsOptionalHaikuImagePackageAdded DevelopmentMin ]
+#              && $(HAIKU_GCC_VERSION[1]) in 2 4 {
+#              local arch = $(TARGET_ARCH) ;
+#              local abi = gcc$(HAIKU_GCC_VERSION[1]) ;
+#              AddSymlinkToHaikuImage system develop lib
+#                      : /system/lib libbluetooth.so ;
+#      }
 }
 
 
 # Development
 if [ IsOptionalHaikuImagePackageAdded Development ] {
-       if $(TARGET_ARCH) = x86 {
-               # autotools
-               if $(HAIKU_GCC_VERSION[1]) >= 4 {
-                       InstallOptionalHaikuImagePackage
-                               $(baseURL)/autoconf-2.69-x86-gcc4-2013-02-16.zip
-                               : : cdPackage ;
-                       InstallOptionalHaikuImagePackage
-                               
$(baseURL)/automake-1.13.1-x86-gcc4-2013-02-16.zip
-                               : : cdPackage ;
-                       InstallOptionalHaikuImagePackage
-                               
$(baseURL)/libtool-2.4-r1a4-x86-gcc4-2012-08-28.zip
-                               : : cdPackage ;
-                       InstallOptionalHaikuImagePackage
-                               
$(baseURL)/texinfo-4.13a-r1a4-x86-gcc4-2012-08-30.zip
-                               : : cdPackage ;
-               } else {
-                       InstallOptionalHaikuImagePackage
-                               $(hpkgBaseURL)/autoconf-2.69-4-x86_gcc2.hpkg ;
-                       InstallOptionalHaikuImagePackage
-                               $(hpkgBaseURL)/automake-1.13.1-4-x86_gcc2.hpkg ;
-                       InstallOptionalHaikuImagePackage
-                               $(hpkgBaseURL)/libtool-2.4-8-x86_gcc2.hpkg ;
-                       InstallOptionalHaikuImagePackage
-                               $(hpkgBaseURL)/texinfo-4.13a-7-x86_gcc2.hpkg ;
-               }
-       } else if $(TARGET_ARCH) = x86_64 {
-               AddSymlinkToHaikuImage home config settings deskbar menu 
Applications
-                       : /boot/system/apps/Debugger : Debugger ;
-               InstallOptionalHaikuImagePackage
-                       $(baseURL)/autoconf-2.69-x86_64-2013-02-16.zip
-                       : : cdPackage ;
-               InstallOptionalHaikuImagePackage
-                       $(baseURL)/automake-1.13.1-x86_64-2013-02-16.zip
-                       : : cdPackage ;
-               InstallOptionalHaikuImagePackage
-                       $(baseURL)/libtool-2.4.2-x86_64-2012-08-17.zip
-                       : : cdPackage ;
-               InstallOptionalHaikuImagePackage
-                       $(baseURL)/texinfo-4.13a-x86_64-2012-08-17.zip
-                       : : cdPackage ;
-       }
+       # auto tools and perl
+       AddHaikuImagePackages autoconf automake libtool perl texinfo ;
+
+       # devel packages for mandatory packages
+       AddHaikuImagePackages ffmpeg_devel freetype_devel glu_devel jpeg_devel
+               libpng_devel zlib_devel ;
 }
 
 
 # DevelopmentBase
 if [ IsOptionalHaikuImagePackageAdded DevelopmentBase ] {
-       if $(TARGET_ARCH) = x86 {
-               # gcc and binutils
-               if $(HAIKU_GCC_VERSION[1]) = 2 {
-                       InstallOptionalHaikuImagePackage
-                               
$(hpkgBaseURL)/binutils-2.17_130421-2-x86_gcc2.hpkg ;
-                       InstallOptionalHaikuImagePackage
-                               
$(hpkgBaseURL)/gcc-2.95.3_130425-2-x86_gcc2.hpkg ;
-               }
-
-               if $(HAIKU_GCC_VERSION[1]) = 4 {
-                       InstallOptionalHaikuImagePackage
-                               
$(baseURL)/gcc-4.6.3-r1a4-x86-gcc4-2012-11-01.zip ;
-               }
+       # gcc and binutils
+       AddHaikuImagePackages binutils gcc ;
 
-               # other commonly used tools
-               if $(HAIKU_GCC_VERSION[1]) >= 4 {
-                       InstallOptionalHaikuImagePackage
-                               
$(baseURL)/bison-2.4.3-r1a4-x86-gcc4-2012-08-28.zip ;
-                       InstallOptionalHaikuImagePackage
-                               
$(baseURL)/m4-1.4.16-r1a4-x86-gcc4-2012-08-28.zip ;
-                       InstallOptionalHaikuImagePackage
-                               
$(baseURL)/flex-2.5.35-r1a4-x86-gcc4-2012-08-28.zip ;
-                       InstallOptionalHaikuImagePackage
-                               $(baseURL)/jam-2.5-r1a4-x86-gcc4-2012-08-28.zip 
;
-                       InstallOptionalHaikuImagePackage
-                               
$(baseURL)/mkdepend-1.7-r1a4-x86-gcc4-2012-08-28.zip ;
-                       InstallOptionalHaikuImagePackage
-                               
$(baseURL)/make-3.82-r1a4-x86-gcc4-2012-08-28.zip ;
-               } else {
-                       InstallOptionalHaikuImagePackage
-                               $(hpkgBaseURL)/bison-2.4.3-5-x86_gcc2.hpkg ;
-                       InstallOptionalHaikuImagePackage
-                               $(hpkgBaseURL)/m4-1.4.16-5-x86_gcc2.hpkg ;
-                       InstallOptionalHaikuImagePackage
-                               $(hpkgBaseURL)/flex-2.5.35-6-x86_gcc2.hpkg ;
-                       InstallOptionalHaikuImagePackage
-                               
$(hpkgBaseURL)/jam-2.5_2012_10_12-1-x86_gcc2.hpkg ;
-                       InstallOptionalHaikuImagePackage
-                               $(hpkgBaseURL)/mkdepend-1.7-3-x86_gcc2.hpkg ;
-                       InstallOptionalHaikuImagePackage
-                               $(hpkgBaseURL)/make-3.82-5-x86_gcc2.hpkg ;
-               }
-       } else if $(TARGET_ARCH) = x86_64 {
-               # gcc and binutils
-               InstallOptionalHaikuImagePackage
-                       $(baseURL)/gcc-4.6.2-x86_64-2012-08-16.zip ;
-
-               InstallOptionalHaikuImagePackage
-                       $(baseURL)/bison-2.5-x86_64-2012-08-12.zip ;
-               InstallOptionalHaikuImagePackage
-                       $(baseURL)/m4-1.4.16-x86_64-2012-08-12.zip ;
-               InstallOptionalHaikuImagePackage
-                       $(baseURL)/flex-2.5.35-x86_64-2012-08-18.zip ;
-               InstallOptionalHaikuImagePackage
-                       $(baseURL)/jam-2.5-x86_64-2012-08-12.zip ;
-               InstallOptionalHaikuImagePackage
-                       $(baseURL)/mkdepend-1.7-x86_64-2012-08-14.zip ;
-               InstallOptionalHaikuImagePackage
-                       $(baseURL)/make-3.82-x86_64-2012-08-11.zip ;
-       }
+       # other commonly used tools
+       AddHaikuImagePackages bison cdrtools flex jam m4 make mkdepend yasm ;
 }
 
 
 # DevelopmentJava
 if [ IsOptionalHaikuImagePackageAdded DevelopmentJava ] {
-       if $(TARGET_ARCH) != x86 {
-               Echo "No optional package DevelopmentJava available for 
$(TARGET_ARCH)" ;
-       } else if $(HAIKU_GCC_VERSION[1]) < 4 {
-               Echo "No optional package DevelopmentJava available for gcc2" ;
-       } else {
-               InstallOptionalHaikuImagePackage
-                       
$(baseURL)/gnu-classpath-0.98-r1a3-x86-gcc4-2011-06-08.zip ;
-               InstallOptionalHaikuImagePackage
-                       $(baseURL)/jamvm-1.5.4-r1a3-x86-gcc4-2011-06-08.zip ;
-               AddSymlinkToHaikuImage common bin
-                       : /boot/common/bin/jamvm : java ;
-               InstallOptionalHaikuImagePackage
-                       $(baseURL)/ecj-3.6.2-haiku-2011-06-08.zip ;
-       }
+# TODO: Build actual packages!
+#      InstallOptionalHaikuImagePackage
+#              $(baseURL)/gnu-classpath-0.98-r1a3-x86-gcc4-2011-06-08.zip ;
+#      InstallOptionalHaikuImagePackage
+#              $(baseURL)/jamvm-1.5.4-r1a3-x86-gcc4-2011-06-08.zip ;
+#      AddSymlinkToHaikuImage common bin
+#              : /boot/common/bin/jamvm : java ;
+#      InstallOptionalHaikuImagePackage
+#              $(baseURL)/ecj-3.6.2-haiku-2011-06-08.zip ;
 }
 
 
 # DevelopmentMin
 if [ IsOptionalHaikuImagePackageAdded DevelopmentMin ]
                && ( $(TARGET_ARCH) = x86 || $(TARGET_ARCH) = x86_64 ) {
-       if ! ( $(HAIKU_GCC_VERSION[1]) in 2 4 ) {
-               Exit "Optional package DevelopmentMin: Unsupported GCC version:"
-                       $(HAIKU_GCC_VERSION[1]) ;
-       }
-
        AddPackageFilesToHaikuImage system : haiku_devel.hpkg ;
        AddPackageFilesToHaikuImage common : makefile_engine.hpkg ;
 }
@@ -768,1291 +137,157 @@ if [ IsOptionalHaikuImagePackageAdded DevelopmentMin ]
 
 # DevelopmentPowerPC
 if [ IsOptionalHaikuImagePackageAdded DevelopmentPowerPC ] {
-       if $(TARGET_ARCH) != x86 {
-               Echo "No optional package DevelopmentPowerPC available for 
$(TARGET_ARCH)" ;
-       } else if $(HAIKU_GCC_VERSION[1]) < 4 {
-               Echo "No optional package DevelopmentPowerPC available for 
gcc2" ;
-       } else {
-               InstallOptionalHaikuImagePackage
-                       $(baseURL)/gcc-ppc-4.6.2-x86-gcc4-2012-03-17.zip ;
-               InstallOptionalHaikuImagePackage
-                       $(baseURL)/haiku-devlibs-ppc-gcc4-2012-03-18.zip ;
-       }
-}
-
-
-# DMIDecode
-if [ IsOptionalHaikuImagePackageAdded DMIDecode ] {
-       if $(TARGET_ARCH) != x86 {
-               Echo "No optional package DMIDecode available for 
$(TARGET_ARCH)" ;
-       } else if $(HAIKU_GCC_VERSION[1]) >= 4 {
-               InstallOptionalHaikuImagePackage
-                       $(baseURL)/dmidecode-2.11-r1a4-x86-gcc4-2012-09-04.zip ;
-       } else {
-               InstallOptionalHaikuImagePackage
-                       $(baseURL)/dmidecode-2.11-r1a4-x86-gcc2-2012-09-03.zip ;
-       }
-}
-
-
-# Doxygen
-if [ IsOptionalHaikuImagePackageAdded Doxygen ] {
-       if $(TARGET_ARCH) != x86 {
-               Echo "No optional package Doxygen available for $(TARGET_ARCH)" 
;
-       } else {
-               if $(HAIKU_GCC_VERSION[1]) >= 4 {
-                       InstallOptionalHaikuImagePackage
-                               
$(baseURL)/doxygen-1.6.3-r1a4-x86-gcc4-2012-09-04.zip
-                               : : cdPackage ;
-               } else {
-                       InstallOptionalHaikuImagePackage
-                               $(hpkgBaseURL)/doxygen-1.6.3-3-x86_gcc2.hpkg ;
-               }
-       }
-}
-
-
-# Droid
-if [ IsOptionalHaikuImagePackageAdded Droid ] {
-       InstallOptionalHaikuImagePackage
-               $(baseURL)/droid-113-r1a4-x86-gcc2-2012-08-27.zip ;
-}
-
-
-# Expat
-if [ IsOptionalHaikuImagePackageAdded Expat ] {
-       if $(TARGET_ARCH) = x86 {
-               if $(HAIKU_GCC_VERSION[1]) >= 4 {
-                       InstallOptionalHaikuImagePackage
-                               
$(baseURL)/expat-2.0.1-r1a4-x86-gcc4-2012-08-30.zip
-                               : : cdPackage ;
-               } else {
-                       InstallOptionalHaikuImagePackage
-                               $(hpkgBaseURL)/expat-2.0.1-6-x86_gcc2.hpkg ;
-               }
-       } else if $(TARGET_ARCH) = x86_64 {
-               InstallOptionalHaikuImagePackage
-                       $(baseURL)/expat-2.0.1-x86_64-2012-12-08.zip
-                       : : cdPackage ;
-       } else {
-               Echo "No optional package Expat available for $(TARGET_ARCH)" ;
-       }
-}
-
-
-# Fastdep
-if [ IsOptionalHaikuImagePackageAdded Fastdep ] {
-       if $(TARGET_ARCH) = x86 {
-               if $(HAIKU_GCC_VERSION[1]) >= 4 {
-                       InstallOptionalHaikuImagePackage
-                               
$(baseURL)/fastdep-0.16-r1a4-x86-gcc4-2012-08-30.zip ;
-               } else {
-                       InstallOptionalHaikuImagePackage
-                               
$(baseURL)/fastdep-0.16-r1a4-x86-gcc2-2012-08-28.zip ;
-               }
-       } else if $(TARGET_ARCH) = x86_64 {
-               InstallOptionalHaikuImagePackage
-                       $(baseURL)/fastdep-0.16-x86_64-2012-12-08.zip ;
-       } else {
-               Echo "No optional package Fastdep available for $(TARGET_ARCH)" 
;
-       }
+# TODO: Build actual packages!
+#      InstallOptionalHaikuImagePackage
+#              $(baseURL)/gcc-ppc-4.6.2-x86-gcc4-2012-03-17.zip ;
+#      InstallOptionalHaikuImagePackage
+#              $(baseURL)/haiku-devlibs-ppc-gcc4-2012-03-18.zip ;
 }
 
 
 # FFMpeg
 if [ IsOptionalHaikuImagePackageAdded FFMpeg ] {
-       if $(TARGET_ARCH) = x86 {
-               local feature ;
-               for feature in ffmpeg speex libtheora libvorbis libogg libvpx {
-                       InstallOptionalHaikuImagePackage 
$(HAIKU_$(feature:U)_URL)
-                               : system ;
-               }
-       } else {
-               Echo "No optional package FFMpeg available for $(TARGET_ARCH)" ;
-       }
+       local packages = ffmpeg speex libtheora libvorbis libogg libvpx ;
+       AddHaikuImagePackages $(packages) ;
 }
 
 
 # FFMpeg-devel
 if [ IsOptionalHaikuImagePackageAdded FFMpeg-devel ] {
-       if $(TARGET_ARCH) = x86 {
-               local feature ;
-               for feature in ffmpeg speex libtheora libvorbis libogg libvpx {
-                       InstallOptionalHaikuImagePackage 
$(HAIKU_$(feature:U)_DEVEL_URL)
-                               : system ;
-               }
-       } else {
-               Echo "No optional package FFMpeg-devel available for 
$(TARGET_ARCH)" ;
-       }
-}
-
-
-# FreeType
-if [ IsOptionalHaikuImagePackageAdded FreeType ] {
-       if $(TARGET_ARCH) in arm ppc x86 x86_64 {
-               InstallOptionalHaikuImagePackage $(HAIKU_FREETYPE_URL) : system 
;
-       } else {
-               Echo "No optional package FreeType available for 
$(TARGET_ARCH)" ;
-       }
-}
-
-
-# FreeType-devel
-if [ IsOptionalHaikuImagePackageAdded FreeType-devel ] {
-       if $(TARGET_ARCH) in arm ppc x86 x86_64 {
-               InstallOptionalHaikuImagePackage $(HAIKU_FREETYPE_DEVEL_URL) : 
system ;
-       } else {
-               Echo "No optional package FreeType-devel available for 
$(TARGET_ARCH)" ;
-       }
+       local packages = ffmpeg speex libtheora libvorbis libogg libvpx ;
+       AddHaikuImagePackages $(packages)_devel ;
 }
 
 
-# friss
-if [ IsOptionalHaikuImagePackageAdded friss ] {
-       if $(TARGET_ARCH) != x86 {
-               Echo "No optional package friss available for $(TARGET_ARCH)" ;
-       } else {
-               if $(HAIKU_GCC_VERSION[1]) >= 4 {
-                       InstallOptionalHaikuImagePackage
-                               
$(baseURL)/friss-33-r1a4-x86-gcc4-2012-11-06.zip ;
-               } else {
-                       InstallOptionalHaikuImagePackage
-                               
$(baseURL)/friss-33-r1a4-x86-gcc2-2012-11-06.zip ;
-               }
-#              AddSymlinkToHaikuImage home config settings deskbar menu 
Desktop\ applets
-#                      : /boot/common/apps/FRiSS/FRiSS ;
-       }
+# Git
+if [ IsOptionalHaikuImagePackageAdded Git ] {
+       AddHaikuImagePackages git git_arch git_cvs git_daemon git_email git_svn 
;
 }
 
 
-# GetText
-if [ IsOptionalHaikuImagePackageAdded GetText ] {
-       if $(TARGET_ARCH) = x86 {
-               if $(HAIKU_GCC_VERSION[1]) >= 4 {
-                       InstallOptionalHaikuImagePackage
-                               
$(baseURL)/gettext-0.18.1.1-r1a4-x86-gcc4-2012-08-30.zip
-                               : : cdPackage ;
-               } else {
-                       InstallOptionalHaikuImagePackage
-                               $(hpkgBaseURL)/gettext-0.18.1.1-4-x86_gcc2.hpkg 
;
-               }
-       } else if $(TARGET_ARCH) = x86_64 {
-               InstallOptionalHaikuImagePackage
-                       $(baseURL)/gettext-0.18.1.1-x86_64-2012-08-17.zip
-                       : : cdPackage ;
-       } else {
-               Echo "No optional package GetText available for $(TARGET_ARCH)" 
;
-       }
+# NetFS network file system
+if [ IsOptionalHaikuImagePackageAdded NetFS ] {
+# TODO: Make this an actual package!
+#      # userlandfs module
+#      AddFilesToHaikuImage home config add-ons userlandfs
+#              : netfs ;
+# 
+#      # servers
+#      AddFilesToHaikuImage system servers : netfs_server ;
+#      AddFilesToHaikuImage system servers
+#              : authentication_server ;
+# 
+#      # tools
+#      AddFilesToHaikuImage system bin : netfs_config ;
+#      AddFilesToHaikuImage system bin : netfs_server_prefs ;
+# 
+#      #example settings for netfs_server
+#      local netfsServerSettingsFiles = <driver-settings>netfs-server ;
+#      SEARCH on $(netfsServerSettingsFiles)
+#              = [ FDirName $(HAIKU_TOP) src add-ons kernel file_systems netfs 
] ;
+#      AddFilesToHaikuImage home config settings kernel drivers
+#      : $(netfsServerSettingsFiles) ;
+# 
+#      #userlandfs settings are needed for netfs_config to work (ioctls)
+#      local userlandfsServerSettingsFiles = <driver-settings>userlandfs ;
+#      SEARCH on $(userlandfsServerSettingsFiles)
+#              = [ FDirName $(HAIKU_TOP) src add-ons kernel file_systems 
userlandfs ] ;
+#      AddFilesToHaikuImage home config settings kernel drivers
+#              : $(userlandfsServerSettingsFiles) ;
 }
 
 
-# GetTextLibintl
-if [ IsOptionalHaikuImagePackageAdded GetTextLibintl ] {
-       if $(TARGET_ARCH) = x86 {
-               if $(HAIKU_GCC_VERSION[1]) >= 4 {
-#                      InstallOptionalHaikuImagePackage
-#                              
$(baseURL)/gettext-0.18.1.1-r1a4-x86-gcc4-2012-08-30.zip
-#                              : : cdPackage ;
-               } else {
-                       InstallOptionalHaikuImagePackage
-                               
$(hpkgBaseURL)/gettext_libintl-0.18.1.1-4-x86_gcc2.hpkg ;
-               }
-       } else if $(TARGET_ARCH) = x86_64 {
-#              InstallOptionalHaikuImagePackage
-#                      $(baseURL)/gettext-0.18.1.1-x86_64-2012-08-17.zip
-#                      : : cdPackage ;
-       } else {
-               Echo "No optional package GetText available for $(TARGET_ARCH)" 
;
-       }
+# UserlandFS
+if [ IsOptionalHaikuImagePackageAdded UserlandFS ] {
+# TODO: Make this an actual package!
+#      local arch = $(TARGET_ARCH) ;
+#      local abi = gcc$(HAIKU_GCC_VERSION[1]) ;
+# 
+#      # kernel module
+#      AddFilesToHaikuImage system add-ons kernel file_systems
+#              : userlandfs ;
+# 
+#      # server
+#      AddFilesToHaikuImage system servers : userlandfs_server ;
+# 
+#      # libs
+#      local userlandfsLibs =
+#              libuserlandfs_beos_kernel.so
+#              libuserlandfs_haiku_kernel.so
+#              libuserlandfs_fuse.so
+#      ;
+#      AddFilesToHaikuImage system lib : $(userlandfsLibs) ;
+# 
+#      # development goodies
+#      if [ IsOptionalHaikuImagePackageAdded DevelopmentMin ] {
+#              if ! ( $(HAIKU_GCC_VERSION[1]) in 2 4 ) {
+#                      Exit "Optional package UserlandFS: Unsupported GCC 
version:"
+#                              $(HAIKU_GCC_VERSION[1]) ;
+#              }
+# 
+#              # library symlinks
+#              local lib ;
+#              for lib in $(userlandfsLibs) {
+#                      AddSymlinkToHaikuImage develop abi $(arch) $(abi) lib
+#                              : /system/lib/$(lib:BS) ;
+#              }
+# 
+#              # FUSE headers
+#              local fuseHeaders =
+#                      fuse_common_compat.h
+#                      fuse_common.h
+#                      fuse_compat.h
+#                      fuse.h
+#                      fuse_lowlevel_compat.h
+#                      fuse_lowlevel.h
+#                      fuse_opt.h
+#              ;
+#              fuseHeaders = $(fuseHeaders:G=userlandfs!fuse) ;
+#              SEARCH on $(fuseHeaders)
+#                      = [ FDirName $(HAIKU_TOP) headers private userlandfs 
fuse ] ;
+#              AddFilesToHaikuImage develop headers userlandfs fuse : 
$(fuseHeaders) ;
+#      }
 }
 
 
-# Git
-if [ IsOptionalHaikuImagePackageAdded Git ] {
-       if $(TARGET_ARCH) = x86 {
-               if $(HAIKU_GCC_VERSION[1]) >= 4 {
-                       InstallOptionalHaikuImagePackage
-                               
$(baseURL)/git-1.7.10.2-r1a4-x86-gcc4-2012-08-30.zip
-                               : : cdPackage ;
-               } else {
-                       InstallOptionalHaikuImagePackage
-                               $(hpkgBaseURL)/git-1.7.10.2-2-x86_gcc2.hpkg ;
-                       InstallOptionalHaikuImagePackage
-                               
$(hpkgBaseURL)/git_arch-1.7.10.2-2-x86_gcc2.hpkg ;
-                       InstallOptionalHaikuImagePackage
-                               $(hpkgBaseURL)/git_cvs-1.7.10.2-2-x86_gcc2.hpkg 
;
-                       InstallOptionalHaikuImagePackage
-                               
$(hpkgBaseURL)/git_daemon-1.7.10.2-2-x86_gcc2.hpkg ;
-                       InstallOptionalHaikuImagePackage
-                               
$(hpkgBaseURL)/git_email-1.7.10.2-2-x86_gcc2.hpkg ;
-                       InstallOptionalHaikuImagePackage
-                               $(hpkgBaseURL)/git_svn-1.7.10.2-2-x86_gcc2.hpkg 
;
-               }
-       } else if $(TARGET_ARCH) = x86_64 {
-               InstallOptionalHaikuImagePackage
-                       $(baseURL)/git-1.8.0-x86_64-2012-12-29.zip
-                       : : cdPackage ;
-       } else {
-               Echo "No optional package Git available for $(TARGET_ARCH)" ;
-       }
+# WebPositive
+if [ IsOptionalHaikuImagePackageAdded WebPositive ] {
+# TODO: Make this an actual package!
+#      if $(TARGET_ARCH) != x86  && $(TARGET_ARCH) != x86_64 {
+#              Echo "No optional package WebPositive available for 
$(TARGET_ARCH)" ;
+#      } else if $(HAIKU_GCC_VERSION[1]) < 4 {
+#              Echo "No optional package WebPositive available for gcc2" ;
+#      } else if $(HAIKU_GCC_VERSION[1]) >= 4 {
+#              # TODO: Either we build a separate package for WebPositive or we
+#              # incorporate it in haiku.hpkg.
+#              AddFilesToHaikuHybridImage apps : WebPositive ;
+#              AddSymlinkToHaikuHybridImage
+#                      home config settings deskbar menu Applications
+#                      : /boot/common/apps/WebPositive ;
+#      }
+#
+# AddHaikuImagePackages curl libxml2 sqlite webkit ;
+       # TODO: Should be properly declared requires in the webpositive package.
 }
 
 
-# GLU
-if [ IsOptionalHaikuImagePackageAdded GLU ] {
-       if $(TARGET_ARCH) = x86 {
-               InstallOptionalHaikuImagePackage
-                       $(hpkgBaseURL)/$(HAIKU_GLU_URL)
-                       : system ;
-       } else {
-               Echo "No optional package GLU available for $(TARGET_ARCH)" ;
-       }
+# WebPositiveBookmarks
+if [ IsOptionalHaikuImagePackageAdded WebPositiveBookmarks ] {
+       InstallOptionalHaikuImagePackage
+               $(baseURL)/WebPositiveBookmarks-2012-02-18.zip
+               : home config settings WebPositive ;
 }
 
 
-# GLU-devel
-if [ IsOptionalHaikuImagePackageAdded GLU-devel ] {
-       if $(TARGET_ARCH) = x86 {
-               InstallOptionalHaikuImagePackage
-                       $(hpkgBaseURL)/$(HAIKU_GLU_DEVEL_PACKAGE)
-                       : system ;
-       } else {
-               Echo "No optional package GLU-devel available for 
$(TARGET_ARCH)" ;
-       }
-}
-
+# Welcome
+if [ IsOptionalHaikuImagePackageAdded Welcome ] {
+       AddPackageFilesToHaikuImage system : haiku_userguide.hpkg ;
+       AddPackageFilesToHaikuImage system : haiku_welcome.hpkg ;
 
-# GPerf
-if [ IsOptionalHaikuImagePackageAdded GPerf ] {
-       if $(TARGET_ARCH) = x86 {
-               if $(HAIKU_GCC_VERSION[1]) >= 4 {
-                       InstallOptionalHaikuImagePackage
-                               
$(baseURL)/gperf-3.0.4-r1a4-x86-gcc4-2012-08-30.zip
-                               : : cdPackage ;
-               } else {
-                       InstallOptionalHaikuImagePackage
-                               
$(baseURL)/gperf-3.0.4-r1a4-x86-gcc2-2012-08-28.zip
-                               : : cdPackage ;
-               }
-       } else if $(TARGET_ARCH) = x86_64 {
-               InstallOptionalHaikuImagePackage
-                       $(baseURL)/gperf-3.0.4-x86_64-2012-12-08.zip
-                       : : cdPackage ;
-       } else {
-               Echo "No optional package GPerf available for $(TARGET_ARCH)" ;
-       }
-}
-
-
-# Grep
-if [ IsOptionalHaikuImagePackageAdded Grep ] {
-       if $(TARGET_ARCH) = x86 {
-               if $(HAIKU_GCC_VERSION[1]) >= 4 {
-                       InstallOptionalHaikuImagePackage
-                               $(baseURL)/grep-2.14-x86-gcc4-2012-12-28.zip ;
-               } else {
-                       InstallOptionalHaikuImagePackage
-                               $(hpkgBaseURL)/grep-2.14-4-x86_gcc2.hpkg ;
-               }
-       } else if $(TARGET_ARCH) = x86_64 {
-               InstallOptionalHaikuImagePackage
-                       $(baseURL)/grep-2.14-x86_64-2012-12-28.zip
-                       : : cdPackage ;
-       } else {
-               Echo "No optional package Grep available for $(TARGET_ARCH)" ;
-       }
-}
-
-# Groff
-if [ IsOptionalHaikuImagePackageAdded Groff ] {
-       if $(TARGET_ARCH) = x86 {
-               if $(HAIKU_GCC_VERSION[1]) >= 4 {
-                       InstallOptionalHaikuImagePackage
-                               
$(baseURL)/groff-1.20.1-r1a4-x86-gcc4-2012-08-30.zip
-                               : : cdPackage ;
-               } else {
-                       InstallOptionalHaikuImagePackage
-                               $(hpkgBaseURL)/groff-1.20.1-2-x86_gcc2.hpkg ;
-               }
-       } else if $(TARGET_ARCH) = x86_64 {
-               InstallOptionalHaikuImagePackage
-                       $(baseURL)/groff-1.20.1-x86_64-2012-12-08.zip
-                       : : cdPackage ;
-       } else {
-               Echo "No optional package Groff available for $(TARGET_ARCH)" ;
-       }
-}
-
-# HGgrep
-if [ IsOptionalHaikuImagePackageAdded HGrep ] {
-       if $(TARGET_ARCH) != x86 {
-               Echo "No optional package HGrep available for $(TARGET_ARCH)" ;
-       } else {
-               InstallOptionalHaikuImagePackage
-                       $(baseURL)/hgrep-1.0.1-x86-gcc2-2012-07-23.zip ;
-       }
-}
-
-
-# ICU
-if [ IsOptionalHaikuImagePackageAdded ICU ] {
-       if $(TARGET_ARCH) in arm ppc x86 x86_64 {
-               InstallOptionalHaikuImagePackage
-                       $(hpkgBaseURL)/$(HAIKU_ICU_URL)
-                       : system ;
-       } else {
-               Echo "No optional package ICU available for $(TARGET_ARCH)" ;
-       }
-}
-
-
-# ICU-devel
-if [ IsOptionalHaikuImagePackageAdded ICU-devel ] {
-       InstallOptionalHaikuImagePackage
-               $(hpkgBaseURL)/$(HAIKU_ICU_DEVEL_PACKAGE)
-               : system ;
-}
-
-
-# Jpeg
-if [ IsOptionalHaikuImagePackageAdded Jpeg ] {
-       if $(TARGET_ARCH) in arm ppc x86 x86_64 {
-               InstallOptionalHaikuImagePackage $(HAIKU_JPEG_URL) : system ;
-       } else {
-               Echo "No optional package Jpeg available for $(TARGET_ARCH)" ;
-       }
-}
-
-
-# Jpeg-devel
-if [ IsOptionalHaikuImagePackageAdded Jpeg-devel ] {
-       if $(TARGET_ARCH) in arm ppc x86 x86_64 {
-               InstallOptionalHaikuImagePackage $(HAIKU_JPEG_DEVEL_URL) : 
system ;
-       } else {
-               Echo "No optional package Jpeg-devel available for 
$(TARGET_ARCH)" ;
-       }
-}
-
-
-# KeymapSwitcher
-if [ IsOptionalHaikuImagePackageAdded KeymapSwitcher ] {
-       if $(TARGET_ARCH) = x86 {
-               if $(HAIKU_GCC_VERSION[1]) >= 4 {
-                       InstallOptionalHaikuImagePackage
-                               
$(baseURL)/KeymapSwitcher-1.2.7-x86-gcc4-2013-01-08.zip
-                               : : !stripDebugSymbols ;
-               } else {
-                       InstallOptionalHaikuImagePackage
-                               
$(hpkgBaseURL)/keymapswitcher-1.2.7.10-1-x86_gcc2.hpkg ;
-               }
-       } else if $(TARGET_ARCH) = x86_64 {
-               InstallOptionalHaikuImagePackage
-                       $(baseURL)/KeymapSwitcher-1.2.7-x86_64-2013-01-08.zip
-                       : : cdPackage ;
-               AddSymlinkToHaikuImage home config settings deskbar menu 
Preferences
-                       : /boot/common/bin/KeymapSwitcher ;
-       } else {
-               Echo "No optional package KeymapSwitcher available for 
$(TARGET_ARCH)" ;
-       }
-}
-
-
-# LGrep
-if [ IsOptionalHaikuImagePackageAdded LGrep ] {
-       if $(TARGET_ARCH) != x86 {
-               Echo "No optional package LGrep available for $(TARGET_ARCH)" ;
-       } else {
-               InstallOptionalHaikuImagePackage
-                       $(baseURL)/lgrep-1.0-x86-gcc2-2012-07-23.zip ;
-       }
-}
-
-
-# LibEdit
-if [ IsOptionalHaikuImagePackageAdded LibEdit ] {
-       if $(TARGET_ARCH) != x86 {
-               Echo "No optional package LibEdit available for $(TARGET_ARCH)" 
;
-       } else {
-               if $(HAIKU_GCC_VERSION[1]) >= 4 {
-                       Echo "No optional package LibEdit available for gcc 4" ;
-               } else {
-                       InstallOptionalHaikuImagePackage
-                               
$(hpkgBaseURL)/libedit-2012_06_01_3.0-1-x86_gcc2.hpkg ;
-               }
-       }
-}
-
-
-# LibEvent
-if [ IsOptionalHaikuImagePackageAdded LibEvent ] {
-       if $(TARGET_ARCH) = x86 {
-               if $(HAIKU_GCC_VERSION[1]) >= 4 {
-                       InstallOptionalHaikuImagePackage
-                               
$(baseURL)/libevent-2.0.10-r1a4-x86-gcc4-2012-08-30.zip
-                               : : cdPackage ;
-               } else {
-                       InstallOptionalHaikuImagePackage
-                               
$(baseURL)/libevent-2.0.10-r1a4-x86-gcc2-2012-08-28.zip
-                               : : cdPackage ;
-               }
-       } else if $(TARGET_ARCH) = x86_64 {
-               InstallOptionalHaikuImagePackage
-                       $(baseURL)/libevent-2.0.10-x86_64-2012-12-08.zip
-                       : : cdPackage ;
-       } else {
-               Echo "No optional package LibEvent available for 
$(TARGET_ARCH)" ;
-       }
-}
-
-
-# LibIconv
-if [ IsOptionalHaikuImagePackageAdded LibIconv ] {
-       if $(TARGET_ARCH) = x86 {
-               if $(HAIKU_GCC_VERSION[1]) >= 4 {
-                       InstallOptionalHaikuImagePackage
-                               
$(baseURL)/libiconv-1.13.1-r1a4-x86-gcc4-2012-08-30.zip ;
-               } else {
-                       InstallOptionalHaikuImagePackage
-                               $(hpkgBaseURL)/libiconv-1.13.1-5-x86_gcc2.hpkg ;
-               }
-       } else if $(TARGET_ARCH) = x86_64 {
-               InstallOptionalHaikuImagePackage
-                       $(baseURL)/libiconv-1.13.1-x86_64-2012-12-18.zip ;
-       } else {
-               Echo "No optional package LibIconv available for 
$(TARGET_ARCH)" ;
-       }
-}
-
-
-# LibLayout library
-if [ IsOptionalHaikuImagePackageAdded LibLayout ] {
-       if $(TARGET_ARCH) != x86 {
-               Echo "No optional package LibLayout available for 
$(TARGET_ARCH)" ;
-       } else if $(HAIKU_GCC_VERSION[1]) >= 4 {
-               InstallOptionalHaikuImagePackage
-                       : 
$(baseURL)/liblayout-1.4.1-r1a4-x86-gcc4-2012-08-30.zip ;
-       } else {
-               InstallOptionalHaikuImagePackage
-                       $(baseURL)/liblayout-1.4.0-gcc2-2009-03-08.zip ;
-       }
-}
-
-
-# Libmng library
-if [ IsOptionalHaikuImagePackageAdded Libmng ] {
-       if $(TARGET_ARCH) != x86 {
-               Echo "No optional package Libmng available for $(TARGET_ARCH)" ;
-       } else if $(HAIKU_GCC_VERSION[1]) >= 4 {
-               InstallOptionalHaikuImagePackage
-                       
$(baseURL)/lib/libmng-1.0.10-r1a4-x86-gcc4-2012-09-02.zip ;
-       } else {
-               InstallOptionalHaikuImagePackage
-                       
$(baseURL)/lib/libmng-1.0.10-r1a4-x86-gcc2-2012-08-28.zip ;
-       }
-}
-
-
-# Libpng
-if [ IsOptionalHaikuImagePackageAdded Libpng ] {
-       if $(TARGET_ARCH) in arm ppc x86 x86_64 {
-               InstallOptionalHaikuImagePackage $(HAIKU_LIBPNG_URL) : system ;
-       } else {
-               Echo "No optional package Libpng available for $(TARGET_ARCH)" ;
-       }
-}
-
-
-# Libpng-devel
-if [ IsOptionalHaikuImagePackageAdded Libpng-devel ] {
-       if $(TARGET_ARCH) in arm ppc x86 x86_64 {
-               InstallOptionalHaikuImagePackage $(HAIKU_LIBPNG_DEVEL_URL) : 
system ;
-       } else {
-               Echo "No optional package Libpng-devel available for 
$(TARGET_ARCH)" ;
-       }
-}
-
-
-# LibSolv
-if [ IsOptionalHaikuImagePackageAdded LibSolv ] {
-       if ! $(HAIKU_LIBSOLV_URL) {
-               Echo "No optional package LibSolv available for $(TARGET_ARCH)" 
;
-       } else {
-               InstallOptionalHaikuImagePackage
-                       $(HAIKU_LIBSOLV_URL)
-                       : system ;
-       }
-}
-
-
-# LibXML2
-if [ IsOptionalHaikuImagePackageAdded LibXML2 ] {
-       if $(TARGET_ARCH) = x86 {
-               if $(HAIKU_GCC_VERSION[1]) >= 4 {
-                       InstallOptionalHaikuImagePackage
-                               
$(baseURL)/libxml2-2.8.0-r1a4-x86-gcc4-2012-08-28.zip ;
-               } else {
-                       InstallOptionalHaikuImagePackage
-                               $(hpkgBaseURL)/libxml2-2.8.0-3-x86_gcc2.hpkg ;
-               }
-       } else if $(TARGET_ARCH) = x86_64 {
-               InstallOptionalHaikuImagePackage
-                       $(baseURL)/libxml2-2.8.0-x86_64-2012-12-08.zip ;
-       } else {
-               Echo "No optional package LibXML2 available for $(TARGET_ARCH)" 
;
-       }
-}
-
-
-# LibXSLT
-if [ IsOptionalHaikuImagePackageAdded LibXSLT ] {
-       if $(TARGET_ARCH) != x86 {
-               Echo "No optional package LibXSLT available for $(TARGET_ARCH)" 
;
-       } else if $(HAIKU_GCC_VERSION[1]) >= 4 {
-               InstallOptionalHaikuImagePackage
-                       $(baseURL)/libxslt-1.1.26-r1a4-x86-gcc4-2012-08-29.zip ;
-       } else {
-               InstallOptionalHaikuImagePackage
-                       $(baseURL)/libxslt-1.1.26-r1a4-x86-gcc2-2012-08-28.zip
-                       : : cdPackage ;
-       }
-}
-
-
-# Links web browser
-if [ IsOptionalHaikuImagePackageAdded Links ] {
-       if $(TARGET_ARCH) != x86 {
-               Echo "No optional package Links available for $(TARGET_ARCH)" ;
-       } else if $(HAIKU_GCC_VERSION[1]) >= 4 {
-               InstallOptionalHaikuImagePackage
-                       $(baseURL)/links-2.3pre2-r1a4-x86-gcc4-2012-09-09.zip ;
-               AddSymlinkToHaikuImage home config settings deskbar menu 
Applications
-                       : /boot/home/config/bin/links ;
-       } else {
-               InstallOptionalHaikuImagePackage
-                       $(baseURL)/links-2.3pre2-r1a4-x86-gcc2-2012-08-30.zip ;
-               AddSymlinkToHaikuImage home config settings deskbar menu 
Applications
-                       : /boot/home/config/bin/links ;
-       }
-}
-
-
-# Lua
-if [ IsOptionalHaikuImagePackageAdded Lua ] {
-       if $(TARGET_ARCH) != x86 {
-               Echo "No optional package Lua available for $(TARGET_ARCH)" ;
-       } else {
-               if $(HAIKU_GCC_VERSION[1]) >= 4 {
-                       InstallOptionalHaikuImagePackage
-                               
$(baseURL)/lua-5.1.4-3-r1a4-x86-gcc4-2012-09-01.zip
-                               : : cdPackage ;
-               } else {
-                       InstallOptionalHaikuImagePackage
-                               
$(baseURL)/lua-5.1.4-3-r1a4-x86-gcc2-2012-09-01.zip
-                               : : cdPackage ;
-               }
-       }
-}
-
-
-# Man
-if [ IsOptionalHaikuImagePackageAdded Man ] {
-       if $(TARGET_ARCH) != x86 {
-               Echo "No optional package Man available for $(TARGET_ARCH)" ;
-       } else if $(HAIKU_GCC_VERSION[1]) >= 4 {
-               InstallOptionalHaikuImagePackage
-                       $(baseURL)/man-1.6g-r1a4-x86-gcc4-2012-08-30.zip ;
-       } else {
-               InstallOptionalHaikuImagePackage
-                       $(hpkgBaseURL)/man-1.6g-2-x86_gcc2.hpkg ;
-       }
-}
-
-
-# MandatoryPackages
-if [ IsOptionalHaikuImagePackageAdded MandatoryPackages ] {
-       # Pseudo package for grouping packages, which are added to all images.
-}
-
-
-# Mercurial
-if [ IsOptionalHaikuImagePackageAdded Mercurial ] {
-       if $(TARGET_ARCH) = x86 {
-               if $(HAIKU_GCC_VERSION[1]) >= 4 {
-                       InstallOptionalHaikuImagePackage
-                               
$(baseURL)/mercurial-2.2.2-r1a4-x86-gcc4-2012-08-30.zip
-                               : : cdPackage ;
-               } else {
-                       InstallOptionalHaikuImagePackage
-                               $(hpkgBaseURL)/mercurial-2.2.2-3-x86_gcc2.hpkg ;
-               }
-       } else if $(TARGET_ARCH) = x86_64 {
-               InstallOptionalHaikuImagePackage
-                       $(baseURL)/mercurial-2.4-x86_64-2012-12-18.zip
-                       : : cdPackage ;
-       } else {
-               Echo "No optional package Mercurial available for 
$(TARGET_ARCH)" ;
-       }
-}
-
-
-# Mesa
-if [ IsOptionalHaikuImagePackageAdded Mesa ] {
-       if $(TARGET_ARCH) = x86 {
-               InstallOptionalHaikuImagePackage $(HAIKU_MESA_URL) : system ;
-       } else {
-               Echo "No optional package Mesa available for $(TARGET_ARCH)" ;
-       }
-}
-
-
-# Nano
-if [ IsOptionalHaikuImagePackageAdded Nano ] {
-       if $(TARGET_ARCH) = x86 {
-               if $(HAIKU_GCC_VERSION[1]) >= 4 {
-                       InstallOptionalHaikuImagePackage
-                               
$(baseURL)/nano-2.2.6-r1a4-x86-gcc4-2012-08-30.zip ;
-               } else {
-                       InstallOptionalHaikuImagePackage
-                               $(hpkgBaseURL)/nano-2.2.6-3-x86_gcc2.hpkg ;
-               }
-       } else if $(TARGET_ARCH) = x86_64 {
-               InstallOptionalHaikuImagePackage
-                       $(baseURL)/nano-2.3.1-x86_64-2012-08-17.zip ;
-       } else {
-               Echo "No optional package Nano available for $(TARGET_ARCH)" ;
-       }
-}
-
-
-# Nanumfont
-if [ IsOptionalHaikuImagePackageAdded Nanumfont ] {
-       InstallOptionalHaikuImagePackage
-               $(baseURL)/nanumfont-2.0-r1a4-x86-gcc2-2012-09-12.zip ;
-}
-
-
-# NCurses
-if [ IsOptionalHaikuImagePackageAdded NCurses ] {
-       if $(TARGET_ARCH) != x86 {
-               Echo "No optional package NCurses available for $(TARGET_ARCH)" 
;
-       } else {
-               if $(HAIKU_GCC_VERSION[1]) >= 4 {
-                       Echo "No optional package NCurses available for gcc 4" ;
-               } else {
-                       InstallOptionalHaikuImagePackage
-                               $(hpkgBaseURL)/ncurses-5.9-7-x86_gcc2.hpkg ;
-               }
-       }
-}
-
-
-# Neon
-if [ IsOptionalHaikuImagePackageAdded Neon ] {
-       if $(TARGET_ARCH) = x86 {
-               if $(HAIKU_GCC_VERSION[1]) >= 4 {
-                       InstallOptionalHaikuImagePackage
-                               
$(baseURL)/neon-0.29.6-r1a4-x86-gcc4-2012-08-29.zip ;
-               } else {
-                       InstallOptionalHaikuImagePackage
-                               $(hpkgBaseURL)/neon-0.29.6-6-x86_gcc2.hpkg ;
-               }
-       } else if $(TARGET_ARCH) = x86_64 {
-               InstallOptionalHaikuImagePackage
-                       $(baseURL)/neon-0.29.6-x86_64-2012-12-18.zip ;
-       } else {
-               Echo "No optional package Neon available for $(TARGET_ARCH)" ;
-       }
-}
-
-
-# NetFS network file system
-if [ IsOptionalHaikuImagePackageAdded NetFS ] {
-       # userlandfs module
-       AddFilesToHaikuImage home config add-ons userlandfs
-               : netfs ;
-
-       # servers
-       AddFilesToHaikuImage system servers : netfs_server ;
-       AddFilesToHaikuImage system servers
-               : authentication_server ;
-
-       # tools
-       AddFilesToHaikuImage system bin : netfs_config ;
-       AddFilesToHaikuImage system bin : netfs_server_prefs ;
-
-       #example settings for netfs_server
-       local netfsServerSettingsFiles = <driver-settings>netfs-server ;
-       SEARCH on $(netfsServerSettingsFiles)
-               = [ FDirName $(HAIKU_TOP) src add-ons kernel file_systems netfs 
] ;
-       AddFilesToHaikuImage home config settings kernel drivers
-       : $(netfsServerSettingsFiles) ;
-
-       #userlandfs settings are needed for netfs_config to work (ioctls)
-       local userlandfsServerSettingsFiles = <driver-settings>userlandfs ;
-       SEARCH on $(userlandfsServerSettingsFiles)
-               = [ FDirName $(HAIKU_TOP) src add-ons kernel file_systems 
userlandfs ] ;
-       AddFilesToHaikuImage home config settings kernel drivers
-       : $(userlandfsServerSettingsFiles) ;
-}
-

[ *** diff truncated: 1774 lines dropped *** ]



Other related posts:

  • » [haiku-commits] BRANCH HaikuPM-github.package-management [98c6dfa] build/jam src/tools/get_package_dependencies src/build src - HaikuPM-github . package-management