Merge pull request #26584 from pjones/pjones/blackmagic

blackmagic init at 1.6.1
This commit is contained in:
Michael Raskin 2017-07-05 23:35:16 +02:00 committed by GitHub
commit 8dee8d5f5c
3 changed files with 110 additions and 0 deletions

View File

@ -0,0 +1,59 @@
{ stdenv, lib, fetchFromGitHub
, gcc-arm-embedded, bash, libftdi
, python, pythonPackages
}:
with lib;
stdenv.mkDerivation rec {
name = "blackmagic-${version}";
version = "1.6.1";
src = fetchFromGitHub {
owner = "blacksphere";
repo = "blackmagic";
rev = "d3a8f27fdbf952194e8fc5ce9b2fc9bcef7c545c";
sha256 = "0c3l7cfqag3g7zrfn4mmikkx7076hb1r856ybhhdh0f6zji2j6jx";
fetchSubmodules = true;
};
buildInputs = [
gcc-arm-embedded
libftdi
python
pythonPackages.intelhex
];
postPatch = ''
# Prevent calling out to `git' to generate a version number:
substituteInPlace src/Makefile \
--replace '`git describe --always --dirty`' '${version}'
# Fix scripts that generate headers:
for f in $(find scripts libopencm3/scripts -type f); do
patchShebangs "$f"
done
'';
buildPhase = "${stdenv.shell} ${./helper.sh}";
installPhase = ":"; # buildPhase does this.
meta = {
description = "In-application debugger for ARM Cortex microcontrollers";
longDescription = ''
The Black Magic Probe is a modern, in-application debugging tool
for embedded microprocessors. It allows you to see what is going
on "inside" an application running on an embedded microprocessor
while it executes.
This package builds the firmware for all supported platforms,
placing them in separate directories under the firmware
directory. It also places the FTDI version of the blackmagic
executable in the bin directory.
'';
homepage = https://github.com/blacksphere/blackmagic;
license = licenses.gpl3Plus;
maintainers = with maintainers; [ pjones ];
platforms = platforms.unix;
};
}

View File

@ -0,0 +1,49 @@
################################################################################
# Build all of the platforms manually since the `all_platforms' target
# doesn't preserve all of the build outputs and overrides CFLAGS.
set -e
set -u
################################################################################
# Prevent a warning from shellcheck:
out=${out:-/tmp}
################################################################################
export CFLAGS=$NIX_CFLAGS_COMPILE
################################################################################
PRODUCTS="blackmagic.bin blackmagic.hex blackmagic_dfu.bin blackmagic_dfu.hex"
################################################################################
make_platform() {
echo "Building for hardware platform $1"
make clean
make PROBE_HOST="$1"
if [ "$1" = libftdi ]; then
mkdir -p "$out/bin"
install -m 0555 blackmagic "$out/bin"
fi
for f in $PRODUCTS; do
if [ -r "$f" ]; then
mkdir -p "$out/firmware/$1"
install -m 0444 "$f" "$out/firmware/$1"
fi
done
}
################################################################################
# Start by building libopencm3:
make -C libopencm3
################################################################################
# And now all of the platforms:
cd src
for platform in platforms/*/Makefile.inc; do
probe=$(basename "$(dirname "$platform")")
make_platform "$probe"
done

View File

@ -6546,6 +6546,8 @@ with pkgs;
bison3 = callPackage ../development/tools/parsing/bison/3.x.nix { };
bison = bison3;
blackmagic = callPackage ../development/tools/misc/blackmagic { };
bloaty = callPackage ../development/tools/bloaty { };
bossa = callPackage ../development/tools/misc/bossa {