Packages
nerves_system_br
1.12.0-rc.0
1.34.0
1.33.9
1.33.8
1.33.7
1.33.6
1.33.5
1.33.4
1.33.3
1.33.2
1.33.1
1.33.0
1.32.5
1.32.4
1.32.3
1.32.2
1.32.1
1.32.0
1.31.7
1.31.6
1.31.5
1.31.4
1.31.3
1.31.2
1.31.1
1.31.0
1.30.1
1.30.0
1.29.3
1.29.2
1.29.1
1.29.0
1.28.3
1.28.2
1.28.1
1.28.0
1.27.3
1.27.2
1.27.1
1.27.0
1.26.1
1.26.0
1.25.3
1.25.2
1.25.1
1.25.0
1.24.1
1.24.0
1.23.3
1.23.2
1.23.1
1.23.0
1.22.8
1.22.7
1.22.6
1.22.5
1.22.4
1.22.3
1.22.2
1.22.1
1.22.0
1.21.6
1.21.5
1.21.4
1.21.3
1.21.2
1.21.1
1.21.0
1.20.6
1.20.5
1.20.4
1.20.3
1.20.2
1.20.1
1.20.0
1.19.1
1.19.0
1.18.6
1.18.5
1.18.4
1.18.3
1.18.2
1.18.1
1.18.0
1.17.4
1.17.3
1.17.2
1.17.1
1.17.0
1.16.5
1.16.4
1.16.3
1.16.2
1.16.1
1.16.0
1.15.2
1.15.1
1.15.0
1.14.5
1.14.4
1.14.3
1.14.2
1.14.1
1.14.0
1.13.8
1.13.7
1.13.6
1.13.5
1.13.4
1.13.3
1.13.2
1.13.1
1.13.0
1.12.4
1.12.3
1.12.2
1.12.1
1.12.0
1.12.0-rc.0
1.11.4
1.11.3
1.11.2
1.11.1
1.11.0
1.10.3
1.10.2
1.10.1
1.10.0
1.9.5
1.9.4
1.9.3
1.9.2
1.9.1
1.9.0
1.8.6
1.8.5
1.8.4
1.8.3
1.8.2
1.8.1
1.8.0
1.7.3
1.7.2
1.7.1
1.7.0
1.6.8
1.6.7
1.6.6
1.6.5
1.6.4
1.6.3
1.6.2
1.6.1
1.6.0
1.5.6
1.5.5
1.5.4
1.5.3
1.5.2
1.5.1
1.5.0
1.4.5
1.4.4
1.4.3
1.4.2
1.4.1
1.4.0
1.3.2
1.3.1
1.3.0
1.2.2
1.2.1
1.2.0
1.1.0
1.0.1
1.0.0
1.0.0-rc.4
1.0.0-rc.3
1.0.0-rc.2
1.0.0-rc.1
1.0.0-rc.0
0.17.0
0.16.4
0.16.3
0.16.2
0.16.1-2017-11
0.16.0-2017-11
0.15.1
0.15.0
0.14.1
0.14.0
0.13.9
0.13.8
0.13.7
0.13.6
0.13.5
0.13.4
retired
0.13.3
0.13.2
0.13.0
0.12.1
0.12.0
0.11.1
0.11.0
0.10.1
0.10.0
0.9.4
0.9.3
0.9.2
0.9.1
0.9.0
0.8.2
0.8.1
0.8.0
0.7.0
0.6.1
0.6.0
0.5.2
0.5.1
0.5.0
0.4.2
0.4.1
Nerves System BR - Buildroot based build platform for Nerves Systems
Current section
Files
Jump to
Current section
Files
scripts/mksystem.sh
#!/usr/bin/env bash
#
# This script creates a tarball with everything needed to build
# an application image on another system. It is useful to allow
# the parts that require Linux to be built separately from the
# parts that can be built on any system.
# It is intended to be called from Buildroot's Makefiles so that
# the environment is set up properly.
#
# Inputs:
# $1 = the archive name (if not passed, we'll make up a name)
# BASE_DIR = the build directory (aka, the future $NERVES_SYSTEM directory)
# PWD = the buildroot directory
#
# Outputs:
# Archive tarball
#
set -e
# The first parameter is the name of the archive to create. If it's not set
# we'll set it below.
ARCHIVE_NAME=$1
BR2_EXTERNAL_NERVES_PATH=$PWD/..
if [ -z "$ARCHIVE_NAME" ]; then
echo "ERROR: Please specify an archive name"
exit 1
fi
# Check the working directory
if [ ! -f "$PWD/package/pkg-generic.mk" ]; then
echo "ERROR: mksystem.sh must be run from the buildroot directory"
exit 1
fi
# Check BASE_DIR
if [ -z "$BASE_DIR" ]; then
echo "ERROR: BASE_DIR undefined? Script should be called from Buildroot."
exit 1
fi
NERVES_DEFCONFIG=$(grep BR2_DEFCONFIG= "$BASE_DIR/.config" | sed -e 's/BR2_DEFCONFIG=".*\/\(.*\)"/\1/')
WORK_DIR=$BASE_DIR/tmp-system
rm -fr "$WORK_DIR"
mkdir -p "$WORK_DIR/$ARCHIVE_NAME"
# Save the version to the archive in case we need it for debug
VERSION=$(cat ../VERSION)
echo "$VERSION" >"$WORK_DIR/$ARCHIVE_NAME/nerves-system.tag"
# Add some help text for the curious
cat << EOT > "$WORK_DIR/$ARCHIVE_NAME/README.md"
# Nerves system image
This is an automatically generated archive created by \`nerves_system_br\`. It is
useful for building embedded Elixir projects without worrying too much
about the cross-compiler and Linux parts. See http://nerves-project.org
for more information.
## Build information
Configuration: $NERVES_DEFCONFIG
nerves_system_br: $VERSION
EOT
# Copy common nerves shell scripts over
cp "$BR2_EXTERNAL_NERVES_PATH/nerves-env.sh" "$WORK_DIR/$ARCHIVE_NAME"
cp "$BR2_EXTERNAL_NERVES_PATH/nerves.mk" "$WORK_DIR/$ARCHIVE_NAME"
cp -R "$BR2_EXTERNAL_NERVES_PATH/scripts" "$WORK_DIR/$ARCHIVE_NAME"
# Copy the built configuration over
cp "$BASE_DIR/.config" "$WORK_DIR/$ARCHIVE_NAME"
# Copy the staging and images directories over
cp -R "$BASE_DIR/images" "$WORK_DIR/$ARCHIVE_NAME"
cp -HR "$BASE_DIR/staging" "$WORK_DIR/$ARCHIVE_NAME"
# Clean up extra files that were copied over and aren't needed
rm -f "$WORK_DIR/$ARCHIVE_NAME/images"/*.fw
rm -f "$WORK_DIR/$ARCHIVE_NAME/images/$ARCHIVE_NAME.img"
tar c -z -f "$BASE_DIR/$ARCHIVE_NAME.tar.gz" -C "$WORK_DIR" "$ARCHIVE_NAME"
rm -fr "$WORK_DIR"