summaryrefslogtreecommitdiffstats
path: root/development/J-Link
diff options
context:
space:
mode:
Diffstat (limited to 'development/J-Link')
-rw-r--r--development/J-Link/J-Link.SlackBuild85
-rw-r--r--development/J-Link/J-Link.info16
-rw-r--r--development/J-Link/README39
-rw-r--r--development/J-Link/slack-desc8
4 files changed, 92 insertions, 56 deletions
diff --git a/development/J-Link/J-Link.SlackBuild b/development/J-Link/J-Link.SlackBuild
index 5cadb2eff2..d6fad68d2c 100644
--- a/development/J-Link/J-Link.SlackBuild
+++ b/development/J-Link/J-Link.SlackBuild
@@ -1,8 +1,8 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for SEGGER J-Link
-# Copyright 2015 Andrzej Telszewski, Sabadell
+# Copyright 2021 Andrzej Telszewski, Szczecin
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,21 +22,30 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=J-Link
-VERSION=${VERSION:-5.02}
-SRCNAM="JLink_Linux_V"$(echo $VERSION | tr -d .)"_"
+VERSION=${VERSION:-7.00a}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-CWD=$(pwd)
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -47,15 +56,17 @@ else
LIBDIRSUFFIX=""
fi
-if [ "$ARCH" != "i486" ] && [ "$ARCH" != "x86_64" ]; then
+if [ "$ARCH" != "i586" ] && [ "$ARCH" != "x86_64" ]; then
echo -ne "\n\nError: \"${ARCH}\" architecture is not supported.\n\n"
exit 1
fi
-if [ "$ARCH" = "i486" ]; then
- SRCNAM="${SRCNAM}i386"
+SRCNAM="JLink_Linux_V$(echo $VERSION | tr -d .)"
+
+if [ "$ARCH" = "i586" ]; then
+ SRCNAM="${SRCNAM}_i386"
else
- SRCNAM="${SRCNAM}$ARCH"
+ SRCNAM="${SRCNAM}_${ARCH}"
fi
set -e
@@ -68,9 +79,11 @@ tar xvf $CWD/$SRCNAM.tgz
mv $SRCNAM $PRGNAM-$VERSION
cd $PRGNAM-$VERSION
-TREE_MD5=80fa37c7583e6eb366e15c1fc84e630f
-UDEV_MD5=4918ffb129c5691e8f9a01313f975fea
-TREE_MD5_NEW=( $(find . ! -name "libjlinkarm.so.*" ! -name "libedit.so.*" | sort | md5sum) )
+TREE_MD5=bfc46ffdebe4e426f48d2ad74e1aeb33
+UDEV_MD5=048a92be10a5864e558415326001d5e9
+
+TREE_MD5_NEW=( $(find . -not \( -path './x86' -prune \) -not -name 'libjlinkarm.so*' \
+ -not -name 'libjlinkarm_x86.so*' -not -name 'libQt*' | LC_ALL=C sort | md5sum) )
UDEV_MD5_NEW=( $(md5sum 99-jlink.rules) )
if [ $TREE_MD5 != $TREE_MD5_NEW ] || [ $UDEV_MD5 != $UDEV_MD5_NEW ]; then
@@ -90,33 +103,43 @@ if [ $TREE_MD5 != $TREE_MD5_NEW ] || [ $UDEV_MD5 != $UDEV_MD5_NEW ]; then
fi
chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-
-mkdir -p $PKG/etc/udev/rules.d
-fromdos < 99-jlink.rules > $PKG/etc/udev/rules.d/99-jlink.rules
-sed -i 's/BUS!="usb", ACTION!="add", SUBSYSTEM!=="usb_device", GOTO="jlink_rules_end"/ACTION!="add", SUBSYSTEM!="usb", GOTO="jlink_rules_end"/' \
- $PKG/etc/udev/rules.d/99-jlink.rules
-sed -i 's/MODE="666"/MODE="664", GROUP="plugdev"/' $PKG/etc/udev/rules.d/99-jlink.rules
+chmod -R a-st,u+rwX,go-w+rX .
+
+mkdir -p $PKG/opt/J-Link
+cp -a Devices ETC GDBServer JFlash* JLink* JMemExe JRunExe JTAGLoadExe libQt* \
+ $PKG/opt/J-Link
mkdir -p $PKG/usr/bin
-cp -a JFlashSPI_CL JLink{Exe,GDBServer,RemoteServer,RTTClient,STM32,SWOViewer} $PKG/usr/bin
+
+# The official J-Link tarball contains executables and soft links to executables
+# in the _root_ directory of the tarball. This SlackBuild makes _/opt/J-Link_
+# the _root_ directory of the executables and exposes them in _/usr/bin_ with soft links.
+
+find $PKG/opt/J-Link -maxdepth 1 -print0 | xargs -0 file -L | grep -e 'ELF.*executable' | \
+ cut -f1 -d: | rev | cut -f1 -d/ | rev | while IFS= read -r EXENAME; do
+ if [ -L $EXENAME ]; then
+ ln -s /opt/J-Link/$(readlink $EXENAME) $PKG/usr/bin/$EXENAME
+ else
+ ln -s /opt/J-Link/$EXENAME $PKG/usr/bin/$EXENAME
+ fi
+done
mkdir -p $PKG/usr/lib$LIBDIRSUFFIX
-cp -a libjlinkarm.so.* $PKG/usr/lib$LIBDIRSUFFIX
+cp -a libjlinkarm.so* $PKG/usr/lib$LIBDIRSUFFIX
+ln -s /usr/lib$LIBDIRSUFFIX/libjlinkarm.so $PKG/opt/J-Link/libjlinkarm.so
+
+mkdir -p $PKG/lib/udev/rules.d
+fromdos < 99-jlink.rules > $PKG/lib/udev/rules.d/99-jlink.rules
+sed -i 's/SUBSYSTEM!="usb_device"/SUBSYSTEM!="usb"/g' $PKG/lib/udev/rules.d/99-jlink.rules
+sed -i -E 's/MODE="0{0,1}666"(, GROUP="dialout"){0,1}/MODE="0664", GROUP="plugdev"/g' \
+ $PKG/lib/udev/rules.d/99-jlink.rules
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a Doc/{License.txt,UM08001_JLink.pdf,ReleaseNotes/ReleaseJLink.html} \
- $PKG/usr/doc/$PRGNAM-$VERSION
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION/samples
-cp -a Samples/JLink/* $PKG/usr/doc/$PRGNAM-$VERSION/samples
+cp -a Doc/* Samples $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/development/J-Link/J-Link.info b/development/J-Link/J-Link.info
index 59ab609a0d..a0e4723bfa 100644
--- a/development/J-Link/J-Link.info
+++ b/development/J-Link/J-Link.info
@@ -1,10 +1,10 @@
PRGNAM="J-Link"
-VERSION="5.02"
-HOMEPAGE="https://www.segger.com/"
-DOWNLOAD="https://www.segger.com/jlink-software.html?step=1&file=JLinkLinuxTGZ32_502"
-MD5SUM="0f7d058711d62a2837a13f01d41caf8a"
-DOWNLOAD_x86_64="https://www.segger.com/jlink-software.html?step=1&file=JLinkLinuxTGZ64_502"
-MD5SUM_x86_64="1129746191f45657a6e24aa0e3c85b37"
-REQUIRES="libedit"
+VERSION="7.00a"
+HOMEPAGE="https://www.segger.com/products/debug-probes/j-link/"
+DOWNLOAD="https://www.segger.com/downloads/jlink/JLink_Linux_V700a_i386.tgz"
+MD5SUM="ed538976180a520b7931a7643df6e4f3"
+DOWNLOAD_x86_64="https://www.segger.com/downloads/jlink/JLink_Linux_V700a_x86_64.tgz"
+MD5SUM_x86_64="38974c621365e25575486343f12f108f"
+REQUIRES=""
MAINTAINER="Andrzej Telszewski"
-EMAIL="atelszewski@gmail.com"
+EMAIL="andrzej@telszewski.com"
diff --git a/development/J-Link/README b/development/J-Link/README
index 79ad906590..31316b19ad 100644
--- a/development/J-Link/README
+++ b/development/J-Link/README
@@ -1,23 +1,36 @@
-The J-Link software gives you the USB drivers needed for your system,
+J-Link software gives you the USB drivers needed for your system,
a number of utilities as well as a dynamically linkable library used
by most of the IDEs and debuggers using J-Link. Also included are
a number of sample setup scripts for devices needing one as well as
documentation.
NOTES:
-1. This SlackBuild is not sbopkg compatible because source download
+
+1. This SlackBuild is not _sbopkg_ compatible, because source download
requires licence acceptance (the link provided in .info points to
- download site) and the source tarball name is different from the
- resulting package name.
+ the download form). In addition, the source tarball name is
+ different from the resulting package name.
+
+2. This SlackBuild repackages the official J-Link pre-compiled
+ binaries.
+
+3. Remember to reload udev rules after installing this package:
+
+ $ /etc/rc.d/rc.udev reload
+
+ and then to re-plug your J-Link probe.
-2. This SlackBuild repackages the official J-Link binary package.
+4. The upstream _udev_ rules change the device nodes perms to 0666.
+ This SlackBuild updates the rules, so that the permissions are set
+ to 0664 and group is set to _plugdev_. Be sure to make yourself
+ a member of this group to use J-Link probes without _root_.
+ The same perms/group is applied to the J-Link embedded serial ports
+ device nodes as well.
-3. The official binary package bundles libedit, which is also
- available from slackbuilds.org so I decided to go with the one from
- slackbuilds.org and not with the bundled one. BTW, ldd shows that
- libedit is not used at all.
+5. If you're looking for replacing ST-LINK/V2 on ST Discovery or
+ Nucleo boards with J-Link, see [here]. It requires Windows
+ to perform the update, but can be done using QEMU with usbredir.
+ Such a converted board is used for testing the J-Link package
+ on my Slackware machine.
-4. The original udev rules change the device permissions to 0666.
- This SlackBuild modifies the rules, so that the permissions are
- 0664 and the group is plugdev. Make sure to make yourself a member
- of this group.
+[here]: https://www.segger.com/products/debug-probes/j-link/models/other-j-links/st-link-on-board/
diff --git a/development/J-Link/slack-desc b/development/J-Link/slack-desc
index e659599c66..0d45ca26f8 100644
--- a/development/J-Link/slack-desc
+++ b/development/J-Link/slack-desc
@@ -8,12 +8,12 @@
|-----handy-ruler------------------------------------------------------|
J-Link: J-Link (software and documentation for J-Link)
J-Link:
-J-Link: The J-Link software gives you the USB drivers needed for your system,
+J-Link: J-Link software gives you the USB drivers needed for your system,
J-Link: a number of utilities as well as a dynamically linkable library used
-J-Link: by most of the IDEs and debuggers using J-Link. Also included are a
-J-Link: number of sample setup scripts for devices needing one as well as
+J-Link: by most of the IDEs and debuggers using J-Link. Also included are
+J-Link: a number of sample setup scripts for devices needing one as well as
J-Link: documentation.
J-Link:
+J-Link: Homepage: https://www.segger.com/products/debug-probes/j-link/
J-Link:
-J-Link: Homepage: https://www.segger.com/
J-Link: