openpilot is an open source driver assistance system. openpilot performs the functions of Automated Lane Centering and Adaptive Cruise Control for over 200 supported car makes and models.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

136 lines
3.4 KiB

#!/usr/bin/env bash
set -e
mkdir -p /dev/shm
chmod 777 /dev/shm
# Write cpuset
echo $$ > /dev/cpuset/app/tasks
echo $PPID > /dev/cpuset/app/tasks
add_subtree() {
echo "[-] adding $2 subtree T=$SECONDS"
if [ -d "$2" ]; then
if git subtree pull --prefix "$2" https://github.com/commaai/"$1".git "$3" --squash -m "Merge $2 subtree"; then
echo "git subtree pull succeeds"
else
echo "git subtree pull failed, fixing"
git merge --abort || true
git rm -r $2
git commit -m "Remove old $2 subtree"
git subtree add --prefix "$2" https://github.com/commaai/"$1".git "$3" --squash
fi
else
git subtree add --prefix "$2" https://github.com/commaai/"$1".git "$3" --squash
fi
}
SOURCE_DIR=/data/openpilot_source
TARGET_DIR=/data/openpilot
ln -sf $TARGET_DIR /data/pythonpath
export GIT_COMMITTER_NAME="Vehicle Researcher"
export GIT_COMMITTER_EMAIL="user@comma.ai"
export GIT_AUTHOR_NAME="Vehicle Researcher"
export GIT_AUTHOR_EMAIL="user@comma.ai"
export GIT_SSH_COMMAND="ssh -i /tmp/deploy_key"
echo "[-] Setting up repo T=$SECONDS"
if [ ! -d "$TARGET_DIR" ]; then
mkdir -p $TARGET_DIR
cd $TARGET_DIR
git init
git remote add origin git@github.com:commaai/openpilot.git
fi
echo "[-] fetching public T=$SECONDS"
cd $TARGET_DIR
git prune || true
git remote prune origin || true
echo "[-] bringing master-ci and devel in sync T=$SECONDS"
git fetch origin master-ci
git fetch origin devel
git checkout --track origin/master-ci || true
git reset --hard master-ci
git checkout master-ci
git reset --hard origin/devel
git clean -xdf
# subtrees to make updates more reliable. updating them needs a clean tree
add_subtree "cereal" "cereal" master
add_subtree "panda" "panda" master
add_subtree "opendbc" "opendbc" master
# leave .git alone
echo "[-] erasing old openpilot T=$SECONDS"
rm -rf $TARGET_DIR/* $TARGET_DIR/.gitmodules
# delete dotfiles in root
find . -maxdepth 1 -type f -delete
# dont delete our subtrees
git checkout -- cereal panda opendbc
# reset tree and get version
cd $SOURCE_DIR
git clean -xdf
git checkout -- selfdrive/common/version.h
VERSION=$(cat selfdrive/common/version.h | awk -F\" '{print $2}')
echo "#define COMMA_VERSION \"$VERSION-release\"" > selfdrive/common/version.h
# do the files copy
echo "[-] copying files T=$SECONDS"
cd $SOURCE_DIR
cp -pR --parents $(cat release/files_common) $TARGET_DIR/
# in the directory
cd $TARGET_DIR
rm -f panda/board/obj/panda.bin.signed
echo "[-] committing version $VERSION T=$SECONDS"
git add -f .
git status
git commit -a -m "openpilot v$VERSION release"
# Run build
SCONS_CACHE=1 scons -j3
echo "[-] testing openpilot T=$SECONDS"
echo -n "0" > /data/params/d/Passive
echo -n "0.2.0" > /data/params/d/CompletedTrainingVersion
echo -n "1" > /data/params/d/HasCompletedSetup
echo -n "1" > /data/params/d/CommunityFeaturesToggle
PYTHONPATH="$TARGET_DIR:$TARGET_DIR/pyextra" nosetests -s selfdrive/test/test_openpilot.py
PYTHONPATH="$TARGET_DIR:$TARGET_DIR/pyextra" GET_CPU_USAGE=1 selfdrive/manager.py
echo "[-] testing panda build T=$SECONDS"
pushd panda/board/
make bin
popd
echo "[-] testing pedal build T=$SECONDS"
pushd panda/board/pedal
make obj/comma.bin
popd
if [ ! -z "$PUSH" ]; then
echo "[-] Pushing to $PUSH T=$SECONDS"
git push -f origin master-ci:$PUSH
fi
echo "[-] done pushing T=$SECONDS"
# reset version
cd $SOURCE_DIR
git checkout -- selfdrive/common/version.h
echo "[-] done T=$SECONDS"