forked from ArduPilot/ardupilot
-
Notifications
You must be signed in to change notification settings - Fork 24
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
AP_HAL_QURT: Add Debian packaging script and support files
- Loading branch information
Showing
4 changed files
with
201 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
*.deb | ||
pkg/DEB | ||
pkg/data | ||
pkg/control/control | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,149 @@ | ||
#!/bin/bash | ||
|
||
set -e # exit on error to prevent bad ipk from being generated | ||
|
||
# get version numbers | ||
FW_MAJOR=$(grep FW_MAJOR ArduCopter/version.h | cut -d' ' -f3) | ||
FW_MINOR=$(grep FW_MINOR ArduCopter/version.h | cut -d' ' -f3) | ||
FW_PATCH=$(grep FW_PATCH ArduCopter/version.h | cut -d' ' -f3) | ||
GIT_VERSION=$(git rev-parse HEAD | cut -c1-8) | ||
|
||
VERSION="${FW_MAJOR}.${FW_MINOR}.${FW_PATCH}-${GIT_VERSION}" | ||
|
||
echo "Package Name: " $PACKAGE | ||
echo "version Number: " $VERSION | ||
|
||
cd libraries/AP_HAL_QURT/packaging | ||
|
||
cat pkg/control/control.in | sed "s/FW_VERSION/$VERSION/g" > pkg/control/control | ||
|
||
################################################################################ | ||
# Check arguments | ||
################################################################################ | ||
|
||
USETIMESTAMP=false | ||
|
||
print_usage(){ | ||
echo "" | ||
echo " Package the current project into a deb package." | ||
echo " You must build first to produce the binaries" | ||
echo "" | ||
echo " Usage:" | ||
echo " ./make_package.sh" | ||
echo " Build a DEB package" | ||
echo "" | ||
echo " ./make_package.sh timestamp" | ||
echo " Build a DEB package with the current timestamp as a" | ||
echo " suffix in both the package name and deb filename." | ||
echo "" | ||
echo "" | ||
} | ||
|
||
process_argument () { | ||
|
||
if [ "$#" -ne 1 ]; then | ||
echo "ERROR process_argument expected 1 argument" | ||
exit 1 | ||
fi | ||
|
||
## convert argument to lower case for robustness | ||
arg=$(echo "$1" | tr '[:upper:]' '[:lower:]') | ||
case ${arg} in | ||
"") | ||
;; | ||
"-t"|"timestamp"|"--timestamp") | ||
echo "using timestamp suffix" | ||
USETIMESTAMP=true | ||
;; | ||
*) | ||
echo "invalid option" | ||
print_usage | ||
exit 1 | ||
esac | ||
} | ||
|
||
## parse all arguments or run wizard | ||
for var in "$@" | ||
do | ||
process_argument $var | ||
done | ||
|
||
################################################################################ | ||
# variables | ||
################################################################################ | ||
PACKAGE=$(cat pkg/control/control | grep "Package" | cut -d' ' -f 2) | ||
|
||
DATA_DIR=pkg/data | ||
CONTROL_DIR=pkg/control | ||
DEB_DIR=pkg/DEB | ||
|
||
################################################################################ | ||
# start with a little cleanup to remove old files | ||
################################################################################ | ||
# remove data directory where 'make install' installed to | ||
sudo rm -rf $DATA_DIR | ||
mkdir $DATA_DIR | ||
|
||
# remove deb packaging folders | ||
rm -rf $DEB_DIR | ||
|
||
# remove old deb packages | ||
rm -f *.deb | ||
|
||
################################################################################ | ||
## install compiled stuff into data directory | ||
################################################################################ | ||
|
||
if [ -f ../../../build/QURT/ardupilot ] && \ | ||
[ -f ../../../build/QURT/bin/arducopter ]; then | ||
|
||
# Copy the SLPI DSP AP library | ||
sudo mkdir -p $DATA_DIR/usr/lib/rfsa/adsp | ||
sudo cp ../../../build/QURT/bin/arducopter $DATA_DIR/usr/lib/rfsa/adsp/ArduPilot.so | ||
|
||
# Install executables | ||
sudo mkdir -p $DATA_DIR/usr/bin | ||
sudo cp ../../../build/QURT/ardupilot $DATA_DIR/usr/bin | ||
sudo cp ../ap_host/service/voxl-ardupilot $DATA_DIR/usr/bin | ||
sudo chmod a+x $DATA_DIR/usr/bin/ardupilot | ||
sudo chmod a+x $DATA_DIR/usr/bin/voxl-ardupilot | ||
|
||
# Create necessary directories for ArduPilot operation | ||
sudo mkdir -p $DATA_DIR/data/APM | ||
|
||
# Install default parameter files | ||
sudo cp ../../../Tools/Frame_params/ModalAI/*.parm $DATA_DIR/data/APM | ||
|
||
sudo mkdir -p $DATA_DIR/etc/systemd/system/ | ||
sudo cp ../ap_host/service/voxl-ardupilot.service $DATA_DIR/etc/systemd/system/ | ||
|
||
else | ||
echo "Error: Build artifacts not found" | ||
exit 1 | ||
fi | ||
|
||
################################################################################ | ||
# make a DEB package | ||
################################################################################ | ||
|
||
echo "starting building Debian Package" | ||
|
||
## make a folder dedicated to Deb building and copy the requires debian-binary file in | ||
mkdir $DEB_DIR | ||
|
||
## copy the control stuff in | ||
cp -rf $CONTROL_DIR/ $DEB_DIR/DEBIAN | ||
cp -rf $DATA_DIR/* $DEB_DIR | ||
|
||
## update version with timestamp if enabled | ||
if $USETIMESTAMP; then | ||
dts=$(date +"%Y%m%d%H%M") | ||
sed -E -i "s/Version.*/&-$dts/" $DEB_DIR/DEBIAN/control | ||
VERSION="${VERSION}-${dts}" | ||
echo "new version with timestamp: $VERSION" | ||
fi | ||
|
||
DEB_NAME="${PACKAGE}_${VERSION}_arm64.deb" | ||
dpkg-deb --build "${DEB_DIR}" "${DEB_NAME}" | ||
|
||
echo "DONE" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
Package: voxl-ardupilot | ||
Version: FW_VERSION | ||
Section: devel | ||
Priority: optional | ||
Architecture: arm64 | ||
Depends: modalai-slpi(>=1.1.19), libslpi-link | ||
Maintainer: Eric Katzfey <[email protected]> | ||
Description: ModalAI ArduPilot flight controller |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
#!/bin/bash | ||
|
||
# Create directory for APM use | ||
cd /data | ||
mkdir -p APM | ||
chown system:system APM | ||
|
||
# Make sure the run scripts are executable | ||
cd /usr/bin | ||
chmod a+x voxl-ardupilot | ||
|
||
# Check to see if a DSP test signature exists | ||
if /bin/ls /usr/lib/rfsa/adsp/testsig-*.so &> /dev/null; then | ||
/bin/echo "Found DSP signature file" | ||
else | ||
/bin/echo "Could not find DSP signature file" | ||
# Look for the DSP signature generation script | ||
if [ -f /share/modalai/qrb5165-slpi-test-sig/generate-test-sig.sh ]; then | ||
/bin/echo "Attempting to generate the DSP signature file" | ||
# Automatically generate the test signature so that px4 can run on SLPI DSP | ||
/share/modalai/qrb5165-slpi-test-sig/generate-test-sig.sh | ||
else | ||
/bin/echo "Could not find the DSP signature file generation script" | ||
fi | ||
fi | ||
|
||
# Always flush all changes to disk | ||
/bin/sync | ||
|
||
cd - | ||
|
||
# try to reload services, but don't fail if it can't | ||
set +e | ||
if [ -f /bin/systemctl ]; then | ||
systemctl daemon-reload | ||
fi | ||
|
||
# exit 0 even if systemctl failed | ||
exit 0 |