Commit Graph

63 Commits

Author SHA1 Message Date
Glen Barber
6052b0ac86 Fix creating directories within DESTDIR.
Sponsored by:	The FreeBSD Foundation
2015-05-07 19:10:08 +00:00
Glen Barber
51aa8af2cc Fix a copy/paste mistake.
Sponsored by:	The FreeBSD Foundation
2015-05-07 18:53:48 +00:00
Glen Barber
5287f5496e Add entries to uenv.txt.
Obtained from:	Crochet
Sponsored by:	The FreeBSD Foundation
2015-05-07 18:51:59 +00:00
Glen Barber
77d9ac1703 Set NODOC=1 to avoid building the reldoc target.
Sponsored by:	The FreeBSD Foundation
2015-05-07 18:48:47 +00:00
Glen Barber
b36739d1ea Add initial native suppor for RPI-B:
- Set UBLDR_LOADADDR.
 - Include files to install to the FAT partition.

Obtained from:	Crochet
Sponsored by:	The FreeBSD Foundation
2015-05-07 18:47:59 +00:00
Glen Barber
8c61607444 Remove FDT_DIR definition, which is no longer needed.
Sponsored by:	The FreeBSD Foundation
2015-05-07 18:41:23 +00:00
Glen Barber
91ea0e63de Reduce the number of files copied onto the FAT partition.
The DTB files are loaded from /boot/dtb on the UFS filesystem.

Submitted by:	loos
Sponsored by:	The FreeBSD Foundation
2015-05-07 18:32:11 +00:00
Glen Barber
6bd844ae0d In arm_install_uboot(), mount both FAT and UFS partitions
in the empty DESTDIR, and update path names.
Copy the ubldr to the FAT partition. [1]

Spotted by:	andrew [1]
Sponsored by:	The FreeBSD Foundation
2015-05-07 18:00:12 +00:00
Glen Barber
ab44589d80 Set UBLDR_LOADADDR for the BEAGLEBONE image.
Sponsored by:	The FreeBSD Foundation
2015-05-07 17:50:24 +00:00
Glen Barber
c2b4ad660a Do not rename u-boot.img file when copying to the FAT partition.
Sponsored by:	The FreeBSD Foundation
2015-05-07 17:48:19 +00:00
Glen Barber
379d8dca37 Fix file/directory paths.
Sponsored by:	The FreeBSD Foundation
2015-05-07 17:33:21 +00:00
Glen Barber
4ad8b75d53 Add tools/arm.subr to contain common subroutines used for
building arm images.  This is similar to tools/vmimage.subr
used for building virtual machine disk images.  By default,
only arm_create_disk() and arm_install_base() contain real
functionality here, and arm_install_uboot() must be overridden
in the arm/KERNEL.conf file.

In release.sh, make create_arm_armv6_build_release() do
something now.

In arm/BEAGLEBONE.conf, set IMAGE_SIZE, PART_SCHEME, FAT_SIZE,
FAT_TYPE, and MD_ARGS, as well as make arm_install_uboot()
functional.

Parts of this were taken from disecting a previous BEAGLEBONE
image, and other parts obtained from Crochet sources.

Sponsored by:	The FreeBSD Foundation
2015-05-06 19:58:12 +00:00
Glen Barber
cf582ac56f Update the arm/*.conf configuration files to only set
EMBEDDEDBUILD, EMBEDDED_TARGET, EMBEDDED_TARGET_ARCH,
EMBEDDEDPORTS, and KERNEL.

In release.sh, set TARGET and TARGET_ARCH to the
EMBEDDED_* variants from the configuration file.

Sponsored by:	The FreeBSD Foundation
2015-05-06 15:58:21 +00:00
Glen Barber
a03128832c In extra_chroot_setup(), use 'uname -U' to determine OSVERSION.
Move the port build for EMBEDDEDPORTS (if set) from arm/release.sh
to release.sh.

Remove arm/release.sh.

Sponsored by:	The FreeBSD Foundation
2015-05-06 15:41:43 +00:00
Glen Barber
2252f43bdc MFH: r282315-r282534
Sponsored by:	The FreeBSD Foundation
2015-05-06 11:50:30 +00:00
Glen Barber
ace79aa796 Fix building BEAGLEBONE images with Crochet using the
sysutils/u-boot-beaglebone port:

 - In arm/BEAGLEBONE.conf, set EMBEDDEDPORTS to the
   sysutils/u-boot-beaglebone port.
 - In arm/release.sh, remove BEAGLEBONE from setting WANT_UBOOT
 - In tools/arm/crochet-BEAGLEBONE.conf, override the
   beaglebone_check_uboot(), and set BEAGLEBONE_UBOOT to
   /tmp/external/u-boot-beaglebone, and create symlinks to the
   u-boot files in /usr/local/share/u-boot-beaglebone and the
   uEnv.txt file in crochet/board/Beaglebone/files.

Sponsored by:	The FreeBSD Foundation
2015-05-05 21:08:50 +00:00
Glen Barber
86be889b61 Remove buildenv_setup(), and set EMBEDDEDPORTS to the
sysutils/u-boot-rpi2 port, since these cases are already
handled by arm/release.sh.

Sponsored by:	The FreeBSD Foundation
2015-05-05 16:37:59 +00:00
Glen Barber
20a67b0520 Add initial support for building RPI2 images.
In release.sh, allow overriding buildenv_setup() before
the handoff to arm/release.sh.

Copy arm/RPI-B.conf -> arm/RPI2.conf, set UBOOT_PORT and
the correct KERNEL, and add the buildenv_setup() override
to install the sysutils/u-boot-rpi2 port/package.

Copy tools/arm/crochet-RPI-B.conf -> tools/arm/crochet-RPI2.conf,
and set the correct entries for the RaspberryPi2 board.

Thanks to:	loos@
Sponsored by:	The FreeBSD Foundation
2015-05-05 16:28:04 +00:00
Glen Barber
de7df74b48 MFH: r281855-r282312
Sponsored by:	The FreeBSD Foundation
2015-05-01 18:07:18 +00:00
Glen Barber
a3d1b9c24a Fix CROCHETBRANCH, forgotten in r280640.
Submitted by:	ruben.kerkhof@gmail.com
PR:		199760
MFC after:	3 days
Sponsored by:	The FreeBSD Foundation
2015-04-28 15:32:59 +00:00
Glen Barber
6d81f38c6a Attempt to create the final image (though not nearly ready
for it yet).

This is probably very broken and/or wrong, but that's why
we have projects branches.

Sponsored by:	The FreeBSD Foundation
2015-03-26 03:05:07 +00:00
Glen Barber
e6e746bfb0 MFH: r278968-r280640
Sponsored by:	The FreeBSD Foundation
2015-03-25 22:35:08 +00:00
Glen Barber
6fb3faab63 Crochet sources moved to a new home; update accordingly.
MFC after:	3 days
Sponsored by:	The FreeBSD Foundation
2015-03-25 22:08:02 +00:00
Glen Barber
ff9b6b61e6 Properly evaluate XZ_CMD from the chroot.
Sponsored by:	The FreeBSD Foundation
2015-03-02 18:10:58 +00:00
Glen Barber
e37709dbab Use xz(1) to compress FreeBSD/arm images.
Sponsored by:	The FreeBSD Foundation
2015-03-02 18:04:57 +00:00
Glen Barber
11a5d9d33b Add a ROADMAP file for FreeBSD/arm release builds, which
will make final documentation much easier when done.

Sponsored by:	The FreeBSD Foundation
2015-02-12 00:50:54 +00:00
Glen Barber
5860267369 Fix build-arm-ports target for WANDBOARD-QUAD.
Sponsored by:	The FreeBSD Foundation
2015-02-11 20:51:58 +00:00
Glen Barber
879c1339e2 Add CROSS_TOOLCHAIN for arm builds.
Remove a BOARDS entry left in while testing.
Add build-arm-ports${BOARD} target as a prerequisite when
ARMPORTS is set.
Add build-arm-KERNCONF and build-arm-ports to CLEANFILES.

Sponsored by:	The FreeBSD Foundation
2015-02-11 20:50:25 +00:00
Glen Barber
d8d0f3dc20 Initial restructure for FreeBSD/arm release builds.
Sponsored by:	The FreeBSD Foundation
2015-02-11 20:25:21 +00:00
Ed Maste
04fef9c446 Build gperf before gcc
The ARM image builds build the in-tree gcc in order to build u-boot
and gperf is needed to build gcc, but is no longer installed on archs
that use clang.

Invoking the make targets as separate steps is done to work around
a build failure which is not yet fully understood.

Reviewed by:	gjb, imp
Sponsored by:	The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D1317
2014-12-24 18:51:25 +00:00
Glen Barber
41ab81a556 Set a static revision of the Crochet checkout to avoid
surprise build failures.

MFC after:	3 days
X-10.1-MFC:	yes
X-MFC-With:	r271676, r271677
Sponsored by:	The FreeBSD Foundation
2014-09-16 15:35:13 +00:00
Glen Barber
094be940b6 Catch up with Crochet changes to fix the WANDBOARD-QUAD
build.

Tested on:	stable/10@r271618
MFC after:	3 days
X-10.1-MFC:	yes
X-MFC-With:	r271676
Sponsored by:	The FreeBSD Foundation
2014-09-16 15:31:50 +00:00
Glen Barber
98e600cc4a Catch up with Crochet changes to fix the BEAGLEBONE
build.

Tested on:	stable/10@r271618
MFC after:	3 days
X-10.1-MFC:	yes
Sponsored by:	The FreeBSD Foundation
2014-09-16 15:31:12 +00:00
Glen Barber
ce470233d4 Also export UNAME_r to fix arm builds.
MFC after:	3 days
X-MFC-with:	r270417
Sponsored by:	The FreeBSD Foundation
2014-08-23 16:15:16 +00:00
Glen Barber
f64f30c974 Fix arm build breakage when building stable/10 on
head/.

MFC after:	3 days
Sponsored by:	The FreeBSD Foundation
2014-08-23 15:59:31 +00:00
Glen Barber
2f40fb9ce2 In arm/release.sh, continue if 'xdev-links' target fails
where the target is not valid (stable/10), instead of doing
per-branch evaluation on if xdev-links needs to be invoked.

Sponsored by:	The FreeBSD Foundation
2014-08-11 16:31:28 +00:00
Glen Barber
95d901dba9 Merge the following from ^/projects/release-noxdev:
r269549, r269551, r269552, r269553, r269554, r269555, r269558, r269559,
r269560, r269561, r269628, r269629, r269630, r269635, r269637:

r269549:
  Create a new project branch, release-noxdev, for
  a sandbox workspace outside of head/ to update the
  release bits for arm builds since the deprecation of
  the XDEV and XDEV_ARCH make(1) variables.

r269551:
  Define load_chroot_env() and load_target_env()
  prototypes.

r269552:
  Call load_chroot_env() and load_target_env() where
  they can be mutually conflicting with regard to
  TARGET, TARGET_ARCH, XDEV, and XDEV_ARCH.

r269553:
  Add shebang line to arm/*.conf files since these
  should be considered to be executable (albeit not
  on their own) shell scripts.

r269554:
  Redefine load_chroot_env() and load_target_env() in
  the arm/*.conf files, and reindent.

r269555:
  Simplify where load_chroot_env() and load_target_env() are
  called.

r269558:
  Provide example in release.conf.sample for overriding the
  load_chroot_env() and load_target_env() prototypes.

r269559:
  Remove a gratuitous newline.

r269560:
  Unset potentially conflicting variables in load_chroot_env()
  and load_target_env().

r269561:
  Make global variables global, and accessible outside of
  the functions within which they were once defined.

r269628:
  Remove XDEV/XDEV_ARCH evaluation if EMBEDDEDBUILD is set.

r269629:
  In arm/release.sh, switch TARGET/TARGET_ARCH back to the
  original XDEV/XDEV_ARCH make(1) variables.

  In theory, this should have been a no-op, but the TARGET and
  TARGET_ARCH are now unset in load_target_env() to avoid
  collision with the chroot userland.

r269630:
  Export variables in the arm/*.conf files because they
  need to be passed through release.sh to arm/release.sh.

  Set MK_TESTS=no for the xdev target.

r269635:
  As part of the XDEV/XDEV_ARCH deprecation, the
  'xdev-links' target was intentionally no longer
  invoked automatically.

  Invoke the xdev-links target after xdev, which
  creates, for example, /usr/bin/armv6-freebsd-cc
  symlink to /usr/armv6-freebsd/usr/bin/cc.

r269637:
  Set TARGET and TARGET_ARCH to the XDEV and XDEV_ARCH
  counterparts for the xdev and xdev-links make(1)
  targets.

Sponsored by:	The FreeBSD Foundation
2014-08-06 19:04:05 +00:00
Glen Barber
9b4b426a62 Fake out the deprecation of XDEV and XDEV_ARCH by
continuing to use the variables in the configuration
file, but switch XDEV= and XDEV_ARCH= to TARGET= and
TARGET_ARCH= appropriately.

Sponsored by:	The FreeBSD Foundation
2014-07-23 22:35:23 +00:00
Glen Barber
13c36b4884 The u-boot tarball needed for some boards, BEAGLEBONE for
example, explicitly hard-code gcc(1) as the compiler.

Partially revert r264703, which did a post-chroot install
of gcc(1).  This was initially removed because gcc(1) fails
to build usr.bin/dtc/ causing the xdev target to fail.  So
this time, move the gcc(1) installation after xdev is built.

This change is likely applicable to stable/10 arm build
failures, as well.

MFC after:	3 days
Sponsored by:	The FreeBSD Foundation
2014-07-03 19:37:25 +00:00
Glen Barber
192daa5d18 Move xdev knobs from release/arm/release.sh and into an
XDEV_FLAGS variable in ${KERNCONF}.conf file.

MFC after:	3 days
X-MFC-Note:	fix stable/10 XDEV_FLAGS local for branch
Sponsored by:	The FreeBSD Foundation
2014-04-23 02:01:22 +00:00
Glen Barber
70ba1fc251 Play musical-KNOBS a bit more with release/arm/release.sh.
For stable/10, r264703 sets the correct WITH/WITHOUT
knobs to get xdev built with the arm-freebsd-gcc binary
installed.  Unfortunately, the same fix does not work on
head/.

Also, quite to my amazement, WITH_GCC=1 and WITH_GNUCXX=1
causes xdev to fail spectactularly at least on r264791.

The situation as it stands is:

 - gcc(1) is needed for the u-boot build.
 - cc(1) *cannot* be clang(1)

To shoe-horn the toolchain to make 'xdev' give what is
needed, remove WITH_GNUCXX=1 and add WITH_GCC_BOOTSTRAP=1.

MFC After:	1 week
X-MFC-To:	stable/10 only
X-MFC-Note:	after stable/10 is broken in this way...
Sponsored by:	The FreeBSD Foundation
2014-04-23 01:47:07 +00:00
Glen Barber
4f52dde357 Apply a slightly different color hammer to arm/release.sh:
- gcc(1) fails to build usr.bin/dtc
 - lack of WITH_GNUCXX=1 causes cc1plus(1) calls to fail
 - u-boot fails to build with clang (hard-coded gcc(1) calls)

Implement the proper incantation of WITH_/WITHOUT_ knobs
to get arm snapshot builds working again.

Since the cc(1) binary is no longer expected to be clang(1),
remove the chroot(8) post-install cc(1) overwrite.

MFC After:	3 days
X-MFC-With:	r264518,r264697,r264698
Tested on:	stable/10@r264677 RPI-B
Sponsored by:	The FreeBSD Foundation
2014-04-20 20:46:06 +00:00
Glen Barber
3654a9b190 Fix EOL escape.
MFC after:	3 days
X-MFC-With:	r264697
Sponsored by:	The FreeBSD Foundation
2014-04-20 16:34:10 +00:00
Glen Barber
2093b3b701 When building the 'xdev' target when WITH_GCC=1 and
WITHOUT_CLANG_IS_CC=1, it appears WITHOUT_CLANG=1 must
also be set.

While here, reorder the lines to put the WITH_* and
WITHOUT_* entries on the same line.

MFC After:	3 days
X-MFC-With:	r264518
Tested on:	stable/10@r264677
Sponsored by:	The FreeBSD Foundation
2014-04-20 16:33:28 +00:00
Glen Barber
f83d85861b Fix armv6 build failure: "armv6-freebsd-gcc: not found"
Help from:	imp
Sponsored by:	The FreeBSD Foundation
2014-04-15 23:27:14 +00:00
Glen Barber
67aa0eff2f Merge r262906 from ^/projects/release-embedded:
Remove only-works-on-amd64 restriction.

Sponsored by:	The FreeBSD Foundation
2014-04-04 07:42:12 +00:00
Glen Barber
fde4d9a822 Merge r262907 from ^/projects/release-embedded:
Add ZEDBOARD support for release builds.

Sponsored by:	The FreeBSD Foundation
2014-04-04 07:02:38 +00:00
Glen Barber
a193d6a320 Add ZEDBOARD.
Tested against:	stable/10@r262905 (build only)
Sponsored by:	The FreeBSD Foundation
2014-03-07 22:14:39 +00:00
Glen Barber
e7e17a891a Remove only-works-on-amd64 restriction.
Sponsored by:	The FreeBSD Foundation
2014-03-07 22:10:40 +00:00
Glen Barber
e0436612a9 Merge ^/projects/release-embedded into ^/head.
After several months of testing and fixing (and breaking)
various parts of release/release.sh changes, it is now
possible to build FreeBSD/arm images as part of the release
process.

When EMBEDDEDBUILD is set in the release.conf file, release.sh
will create the build environment, then run a separate script
in release/${XDEV}/release.sh [1].  Currently, only arm is
supported.

The release/${XDEV}/release.sh configures the build environment
specific for the target image, such as installing gcc(1),
installing additional third-party software from the ports tree,
and fetching external sources.

Once the build environment is set up, release/${XDEV}/release.sh
runs Crochet, written by Tim Kientzle, which builds the userland
and kernel, and creates an image that can be written to an SD
card with dd(1).  Many thanks to Tim for his work on Crochet.

Sample configurations for FreeBSD/arm boards are in the
release/arm/ directory, and Crochet configuration files for each
board are located in release/tools/arm/.  Supported boards at this
time are: BEAGLEBONE, PANDABOARD, RPI-B, and WANDBOARD-QUAD.

Adding support for additional boards will continue in the
projects/release-embedded/ branch, and incrementally merged back
to head/.

Many thanks to the FreeBSD Foundation for the support and
sponsorship of this project.

[1] XDEV is used in order to keep the various configurations
    organized by architecture, but since TARGET and TARGET_ARCH
    are used to build the chroot, the values of those variables
    cannot be used.

MFC after:	1 month
Sponsored by:	The FreeBSD Foundation
2014-03-05 23:17:53 +00:00