Commit Graph

168 Commits

Author SHA1 Message Date
Augustin Cavalier
dd419e59dc build_haiku_image: Distinguish between system (activated) and unactivated packages.
Previously, all packages on the image, both activated and unactivated,
were in $systemPackages, so if a package actually in /system/packages
had a dependency in the Installer optional package area, the dependency
checking would see no problem but the generated image would be broken.

Now, packages going into /system/packages are treated separately
from those going elsewhere, and error checks added so the above
condition will not occur.

(I ran into this while working on the build-package upgrade
in the following commits.)
2020-04-19 17:53:10 -04:00
Adrien Destugues
4f44282c3b Move source and development packages out of /system/packages on release images
Activating all these packages on live boot (especially live DVD where we
also have the write overlay eating up RAM) significantly increases
memory requirements for running Haiku, to the point that Installer may
fail to run. Move them outside the packages/ directory so they are not
activated.

Installer already skips the _sources_ directory when installing, and
lists the contents of _packages_ with checkbox to decide what to include
in the install (they are put in system/packages on the target disk).

Fix from previous version: the Haiku package was installed to /system
instead of /system/packages.

Fixes #15621.
2020-03-16 10:32:00 +01:00
Augustin Cavalier
c31d8dad23 Revert "Move source and development packages out of /system/packages on release images"
This reverts commit 0ab9c3c538.

It broke booting.
2020-03-15 19:30:08 -04:00
Adrien Destugues
0ab9c3c538 Move source and development packages out of /system/packages on release images
Activating all these packages on live boot (especially live DVD where we
also have the write overlay eating up RAM) significantly increases
memory requirements for running Haiku, to the point that Installer may
fail to run. Move them outside the packages/ directory so they are not
activated.

Installer already skips the _sources_ directory when installing, and
lists the contents of _packages_ with checkbox to decide what to include
in the install (they are put in system/packages on the target disk).

Fixes #15621.

Change-Id: Ibfac14c43dbe708316a0d82ca1c9d49b5cba2aef
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2157
Reviewed-by: Sergei Reznikov <diver@gelios.net>
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2020-03-14 18:31:23 +00:00
Alexander von Gluck IV
55213e3edb jam/efi: Improve our knowledge of EFI default loader names
Change-Id: I7ae941426a10ceac6771ef0a2a53f81d3c3c39d0
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2338
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
2020-03-10 14:58:43 +00:00
Alexander von Gluck IV
b9db31f649 EFI: Add VolumeIcon to EFI system partition
Change-Id: Idc50cfee16db5f7c0dbea625a7739ad42b2d7bf0
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2249
Reviewed-by: Alex von Gluck IV <kallisti5@unixzen.com>
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
2020-02-17 14:31:59 +00:00
Alexander von Gluck IV
987f40eb8f build/jam/ppc: Fix PowerPC boot after hrev53614
* "xorriso doesn't support much of the mkisofs options"
* Dropping the hfs map made our bootloader no-longer get
  mapped as :tbxi which means qemu + Apple devices refused
  to boot it.
* Switch to genisoimage which can generate the correct image.
  (xorriso -as genisoimage doesn't work either)

Change-Id: Id71b97796f5004f6ddf6244644c51a5787f9bf8e
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2241
Reviewed-by: Alex von Gluck IV <kallisti5@unixzen.com>
2020-02-17 02:37:37 +00:00
Augustin Cavalier
5be6527a63 ImageRules: Use mformat's -f argument.
Should not be a functional change, but reading the docs, I'm not sure
our arguments were valid here, so this should be more correct.
2020-02-08 15:45:18 -05:00
Ynoga
09b40d1634 ppc: Minor tweaks to get the arch compile again (WIP)
- Factor in types changes (introduction of intptr_t)
- Align JamFiles syntax with in progress architectures (arm/sparc)
- Xorriso doesn't support much of the mkisofs options (anymore ?)
- (After a correct bootstrap) one should be able to build @minimum-raw and haiku-boot-cd again
Change-Id: I4f779ad8f2210389fa9b7f7c0a98c3652a64c257
Reviewed-on: https://review.haiku-os.org/c/haiku/+/1983
Reviewed-by: François Revol <revol@free.fr>
2019-12-04 18:34:31 +00:00
Fabiano Fidêncio
768957dca1 ImageRules: Ensure nightly builds will have a stable volume-id
Let's make the nightly builds consistent in a way that they would always
be recognized by libosinfo (and, consequently, by GNOME Boxes,
 virt-manager, virt-install, ...) by explictly using "nightly" instead
of the $(HAIKU_VERSION) when generating nightly builds.

Signed-off-by: Fabiano Fidêncio <fabiano@fidencio.org>

Change-Id: I6fc4f15be1e8e9244abf14e75308fc825f37b2e8
Reviewed-on: https://review.haiku-os.org/c/1053
Reviewed-by: Alex von Gluck IV <kallisti5@unixzen.com>
2019-02-19 19:03:25 +00:00
Fabiano Fidêncio
4e29847d38 ImageRules: Use a less generic name as volume-id
The current volume-id is "bootimg", does not matter which version of
haiku nor to which architecture the ISO is targetting.

Having a "too generic" name as volume-id directly affects the ISO's
recognition by libosinfo.

From now on, let's use:
haiku-$(HAIKU_VERSION)-$(TARGET_ARCH)

Which would generate an ISO with volume-id as:
Volume id: haiku-default-r1~beta1-x86_64

Fixes: #14695

Signed-off-by: Fabiano Fidêncio <fabiano@fidencio.org>

Change-Id: I25e2f5338403058a363872abd196d698764cc3c1
Reviewed-on: https://review.haiku-os.org/c/1034
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2019-02-13 20:06:13 +00:00
Augustin Cavalier
b3dc16eecb build: Use xorriso instead of mkisofs or genisoimage.
It seems that not all Linux distributions ship an EFI-enabled
cdrtools (i.e. mkisofs takes -e option), Arch being one that
does not.

So instead, we now use xorriso universally, which is
as (or more, in most cases) widely available, and supports
emulating mkisofs with the EFI commands universally.

This also has the added benefit that we can drop genisoimage
support altogether.
2019-01-08 19:31:15 -05:00
Augustin Cavalier
9283f47bec ImageRules: Fix adding directory attrs.
There is no variable "dir" in this rule, only "directory".
2018-11-15 22:23:06 -05:00
Augustin Cavalier
795f1571b3 Move data/image_directories to src/data/directory_attrs.
These data files are used in the generation of build targets,
so moving them to src/data alongside the package_infos & etc.
makes more sense.

They don't seem to be activated properly though (I added some tracing
to try and figure out why they aren't used but haven't gotten to the
bottom of that yet.)
2018-11-15 21:20:24 -05:00
Augustin Cavalier
4ee3f16d6a build: Use the absolute path on more instances of build_* scripts. 2018-11-02 23:26:11 -04:00
Augustin Cavalier
68191643b8 build: Add HAIKU_ABSOLUTE_TOP and use it to root BootArchive.
Strictly POSIX-compliant shells (like dash) do not allow sourcing
files in the present directory without "./". The script really should
not know or care about what directory the passed files are in,
so now we add a jam grist to make the passed paths absolute.

Fixes the build on all systems where /bin/sh is dash or a similarly
POSIX-compliant-no-extensions shell (i.e. virtually all Linux.)
2018-11-02 21:46:22 -04:00
Augustin Cavalier
80abc9a907 build: Restore a mechanism to build EFI-less anyboots and CDs.
This fixes the 32-bit build following the merge of multiple bootloaders
support.

Fixes #14656.
2018-10-27 16:57:35 -04:00
Jessica Hamilton
1f96a3cbde system/boot: Add support for multiple bootloaders 2018-10-17 14:47:46 -05:00
Augustin Cavalier
8547d09e97 build: Rework InstallSourceArchive into AddHaikuImageSourcePackages.
Also add AddHaikuImageSourcePackages invocations for all relevant
(i.e. [L]GPL'ed) packages.

Doesn't truly fix #9990 as PackageKit cannot be used to install source
packages, but this is enough for creating a redistributable image,
so that ticket can be moved out of the beta1 milestone now.
2018-07-01 14:25:10 -04:00
Augustin Cavalier
0a23d1fb23 jam: Remove InstallOptionalHaikuImagePackage; unused following previous commit. 2018-06-19 23:15:34 -04:00
Jessica Hamilton
74bfec3b96 build/jam: whitespace cleanup.
Change-Id: I80c9a51417631b1f283923451f5bb530097b74f3
2018-05-07 13:12:16 +12:00
Alexander von Gluck IV
36ea34060a build/ImageRules: rm_attrs doesn't know -R
Change-Id: I3dcd8a1fe117b6b0c2b741fc383df048de8dac8f
2018-03-13 15:51:38 -05:00
Adrien Destugues
fda0bf77fb Revert "repo rework: Re-add compatibility url field"
Revert "repo rework: Remove stubs; Breaks repo compat."
Revert "repo rework: Remove need for repos to be self-aware"

This reverts commit a2b2f4d642.
This reverts commit 602076ef82.
This reverts commit 5ffaf72c8a.

These changes break the build on Haiku and the ability to create repo
mirrors, for the lack of a replacement for the URL (an UUID was evoked
on the mailing lists, but not implemented).

We are due for a release soon, please don't break the build.
2016-12-10 12:55:56 +01:00
Alexander von Gluck IV
5ffaf72c8a repo rework: Remove need for repos to be self-aware
* See #12917 for details.
* Squashed to one commit to make revert easy if we
  run into any issues.
* pkgman is now pre-attached to the 'current' repo
  version within nightly images so they can be updated
  by default.
* This shouldn't impact us keeping older sets of package
  versions by commit hash for building older hrevs.
* There are XXX stubs with "Kill me". These will need
  to be dropped after users are given sufficent time to
  upgrade. We're dropping a previously required field (url)
  so making this a slowish roll out.
* Makes the repos a lot less restrictive which should
  help PM package building automation be a bit easier.
* Once this stuff smooths out, we'll add UUID's to the
  repo definitions for duplicate repo detection.
2016-12-02 00:41:06 -06:00
Oliver Tappe
87e8603d9f Merge branch 'gcc_syslibs'
* From now on, the gcc-specific system libraries (libgcc, libsupc++ and
  libstdc++) are provided by separate packages built along with gcc:
  - gcc_syslibs contains the shared libraries (libgcc_s.so, libsupc++.so and
    libstdc++.so)
  - gcc_syslibs_devel contains the static libraries and both c++ and gcc
    headers
  The shared libraries now make proper use of symbol versioning and there
  are version-specific symlinks
* The buildsystem has been adjusted to no longer use the libraries and
  headers from the cross-compiler, but use the ones provided by the
  above-mentioned packages. The only exception is that the 32-bit libraries
  required for the bootloader of the x86_64 architecture are still taken
  from the cross-compiler.
2014-08-13 13:50:29 +02:00
Oliver Tappe
938bf9fad2 Add more missing 'local's to variable declarations. 2014-08-13 13:32:43 +02:00
Ingo Weinhold
cd8a7df77d ImageRules: Fix issues where file names may contain parens
Parentheses in target names are considered by Jam to mean an archive
member. We have to explicitly use the M selector to keep that part.

Fixes #10378 (certain keymaps missing on image).
2014-08-10 10:17:26 +02:00
Oliver Tappe
590b95e96e Add variable noDownloads to build_haiku_image.
* If noDownloads is set, show an error when a download is requested.
2014-05-01 19:45:19 +02:00
Jérôme Duval
9225185b65 AddHeaderDirectoryToContainer: filters backup files.
* also leaves out .svn, now useless.
2014-04-26 11:47:34 +02:00
Oliver Tappe
a8c098a3ba Replace HAIKU_{BOOTSTRAP,MINIMUM}_BUILD with HAIKU_BUILD_TYPE.
* Instead of separate variables, HAIKU_BUILD_TYPE is set to one of
  'bootstrap', 'minimum' or 'regular'.
* Adjust uses of HAIKU_BOOTSTRAP_BUILD accordingly.
2014-03-22 20:24:07 +01:00
Oliver Tappe
bef384b058 Don't copy over package versions into package-list for bootstrap.
* This decouples the versions referenced by the architecture-specific
  repository file from the actual versions available in the haikuports
  branch that happens to be used for the bootstrap build.
2014-03-16 01:17:54 +01:00
Matt Madia
0d9151c9ff Add genisoimage support to actions BuildCDBootImage1. 2013-11-30 08:27:48 -05:00
Ingo Weinhold
5328a58455 AddNewDriversToHaikuImage rule: Support alwaysUpdate flag
* Support alwaysUpdate flag in AddFilesToContainer.
* Add flags arguments to AddNewDriversTo{Container,HaikuImage} and
  support alwaysUpdate flag.
2013-11-13 01:47:35 +01:00
Ingo Weinhold
3010e4f4ea AddFilesToContainer: Strip executables, if requested
Variable HAIKU_CONTAINER_STRIP_EXECUTABLES can be set on the container
to trigger that.
2013-10-12 17:23:56 +02:00
Ingo Weinhold
19f94028f6 Revert "Allow stripping binaries when copying to image containers"
This reverts commit d6de84de66.
2013-10-12 16:01:02 +02:00
Ingo Weinhold
cc5c6133d2 Revert "Rework stripping binaries when copying to containers"
This reverts commit e2332987bc.
2013-10-12 16:00:02 +02:00
Ingo Weinhold
d05822f18b Revert "Preserve resources and attributes when copying stripped binaries"
This reverts commit a427aa2f4a.
2013-10-12 15:59:19 +02:00
François Revol
a427aa2f4a Preserve resources and attributes when copying stripped binaries
When asked to strip binaries when copying to containers we now
strip to a temporary file, copy over resources to it, copy it
to the container, then copy the attributes from the original
source.

This should allow stripping binaries while preserving attributes
and resources even when copying to images.
2013-10-12 02:37:20 +02:00
François Revol
e2332987bc Rework stripping binaries when copying to containers
We now only attempt to strip binaries, by detecting the
LINKFLAGS variable on the targets.

CopySetHaikuRevision now also forwards LINKFLAGS
to revisioned binaries.

Introduce separate AppendToContainerCopyFilesScriptStripFile actions
which are used for copying and stripping, and avoids many useless
shell tests.

When asked to strip binaries, they are detected and handled
individually for simplicity.

Note we still don't keep resources and attributes when stripping.
2013-10-12 01:41:46 +02:00
François Revol
d6de84de66 Allow stripping binaries when copying to image containers
Currently only needed for boot floppy on some platforms.

Disabled for now.

Note we do not have a mean of knowing which file is a binary
or not so we just try to strip, and silently continue when
strip fails (like on the kernel settings file).

Also note strip actually replaces the file, which means it looses
both the resources and attributes, which shouldn't be a problem
for the boot floppy drivers archive, but is not wanted for other
images, so it's not usable elsewhere as such. Patch wanted.
2013-10-09 22:04:36 +02:00
Ingo Weinhold
a27d687e2a Name the generated HPKG files properly
* rule AddPackageFilesToHaikuImage: Add "flags" parameter. The only
  supported flag is "nameFromMetaInfo". It causes the packages to be
  copied under their canonical file name onto the image.
* Use the new flag for all generated packages save haiku_loader.hpkg.
2013-10-09 03:48:26 +02:00
Ingo Weinhold
40c9cb7b47 rule AddFilesToContainer: Support naming files later
* Add "flags" parameter and only supported flag "computeName". When
  specified the "destName" argument is the name of a shell command
  or function that will be called to determine the destination file
  name when the container is built.
* AddFilesToHaikuImage: Pass flags to AddFilesToContainer.
2013-10-09 03:48:25 +02:00
Ingo Weinhold
50ffb21291 update-{all,packages} build profile action: empty packages dir
... before copying the new contents to the image. This caters to the
typical use case of updating an existing Haiku, making manual
intervention to get the new packages activated unnecessary. The downside
is that manually added packages will be removed as well.
2013-10-05 22:49:48 +02:00
Ingo Weinhold
f73f5d4c42 Initial changes to remove /boot/common
* find_directory() and hard-coded paths use /boot/system instead of
  /boot/common.
* The build system creates the writable directories in /boot/system
  instead of /boot/common.
* The build system no longer installs any packages in /boot/common.
2013-10-03 21:52:25 +02:00
François Revol
58c82e4fb7 Make sure the boot driver tgz doesn't overflow the boot floppy
At least on 68k it does. Seems to be ok on x86, for now...
2013-09-30 04:38:50 +02:00
Ingo Weinhold
76cd5b091e Move stuff from HaikuImageCommon to new rule
... AddPackagesAndRepositoryVariablesToContainerScript.
2013-09-13 00:06:21 +02:00
Ingo Weinhold
dee358f0ec AddBootModuleSymlinksToContainer: Fix symlink target
The symlink was only correct, if the container was a package. For
containers with a non-empty path to the system directory the link would
duplicate the system directory path.
2013-09-13 00:06:20 +02:00
Ingo Weinhold
a94f6aab7b Image rules: filter packages list via FFilterByBuildFeatures
AddPackageFilesToHaikuImage, AddHaikuImagePackages: For convenience
filter the given package file/package list through
FFilterByBuildFeatures.
2013-08-10 14:55:29 +02:00
Ingo Weinhold
47fd9e6dc6 rule AddLibrariesToContainer: fix for gristed libraries 2013-08-10 09:52:10 +02:00
Ingo Weinhold
c965ee60b5 bootstrap image: build needed source packages and add them
* IsPackageAvailable, FetchPackage: Add flags parameter. The only
  flag supported ATM is nameResolved, indicating that the specified
  package name does not need to be resolved with respect to a secondary
  architecture anymore.
* Add build profile action "build-package-list". As an argument the
  file to which the list of all packages needed for the image is
  written. The rule BuildHaikuImagePackageList implements the action.
* BuildBootstrapRepositoryConfig: Does now require the variable
  HAIKU_REPOSITORY_TREE_PATH to be set on the config file target instead
  of hard-coding the path. Allows reuse of the actions.
* Add rules BuildHaikuPortsSourcePackageDirectory and
  BuildHaikuPortsRepositoryConfig. The former builds all HaikuPorts
  source packages needed to build the packages for an alpha image. The
  latter generates a haikuports.conf file for use on the bootstrap
  Haiku.
* HaikuImageBootstrap: Add directory /boot/home/haikuports which
  contains a subdirectory with the source packages and a
  haikuports.conf.
2013-08-06 23:02:10 +02:00