121 lines
2.9 KiB
Bash
121 lines
2.9 KiB
Bash
#!/bin/bash
|
|
|
|
# Color definitions for output
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# Logging functions
|
|
log_info() {
|
|
echo -e "${GREEN}[INFO]${NC} $1"
|
|
}
|
|
|
|
log_warn() {
|
|
echo -e "${YELLOW}[WARN]${NC} $1"
|
|
}
|
|
|
|
log_error() {
|
|
echo -e "${RED}[ERROR]${NC} $1"
|
|
}
|
|
|
|
# Get script directory and project root
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_ROOT="$(dirname "${SCRIPT_DIR}")"
|
|
PROJECT_NAME="$(basename "${PROJECT_ROOT}")"
|
|
|
|
# Create deploy directory structure
|
|
DEPLOY_DIR="${PROJECT_ROOT}/deploy"
|
|
log_info "Creating deploy directory: ${DEPLOY_DIR}"
|
|
rm -rf "${DEPLOY_DIR}"
|
|
mkdir -p "${DEPLOY_DIR}/bin"
|
|
mkdir -p "${DEPLOY_DIR}/lib"
|
|
mkdir -p "${DEPLOY_DIR}/python"
|
|
mkdir -p "${DEPLOY_DIR}/config"
|
|
mkdir -p "${DEPLOY_DIR}/rpm"
|
|
|
|
# Download Python3 RPM packages
|
|
log_info "Downloading Python3 RPM packages..."
|
|
cd "${DEPLOY_DIR}/rpm"
|
|
|
|
# Install required tools
|
|
log_info "Installing required tools..."
|
|
if ! command -v repotrack &> /dev/null; then
|
|
sudo yum install -y yum-utils
|
|
fi
|
|
|
|
# Install build dependencies
|
|
log_info "Installing build dependencies..."
|
|
sudo yum groupinstall -y "Development Tools"
|
|
sudo yum install -y epel-release
|
|
sudo yum install -y cmake3 boost-devel openssl-devel nlohmann-json-devel python3-devel
|
|
|
|
# Download Python3 and dependencies
|
|
repotrack python3 python3-pip python3-devel
|
|
|
|
# Build the project
|
|
log_info "Building project..."
|
|
cd "${PROJECT_ROOT}"
|
|
rm -rf build
|
|
mkdir build
|
|
cd build
|
|
cmake3 ..
|
|
make -j4
|
|
|
|
if [ $? -ne 0 ]; then
|
|
log_error "Build failed"
|
|
exit 1
|
|
fi
|
|
|
|
# Copy executable
|
|
log_info "Copying executable..."
|
|
cp collision_avoidance "${DEPLOY_DIR}/bin/"
|
|
|
|
# Copy required libraries
|
|
log_info "Copying required libraries..."
|
|
LIBS=(
|
|
"libboost_system.so"
|
|
"libboost_filesystem.so"
|
|
"libboost_thread.so"
|
|
"libssl.so"
|
|
"libcrypto.so"
|
|
)
|
|
|
|
for lib in "${LIBS[@]}"; do
|
|
# Find the library path
|
|
lib_path=$(ldd "${DEPLOY_DIR}/bin/collision_avoidance" | grep "$lib" | awk '{print $3}')
|
|
if [ -n "$lib_path" ]; then
|
|
cp "$lib_path" "${DEPLOY_DIR}/lib/"
|
|
log_info "Copied $lib"
|
|
else
|
|
log_warn "Library $lib not found"
|
|
fi
|
|
done
|
|
|
|
# Copy Python dependencies
|
|
log_info "Copying Python dependencies..."
|
|
pip3 download --no-deps -d "${DEPLOY_DIR}/python" \
|
|
flask==2.0.1 \
|
|
werkzeug==2.0.1 \
|
|
click==8.0.1 \
|
|
itsdangerous==2.0.1 \
|
|
Jinja2==3.0.1 \
|
|
MarkupSafe==2.0.1
|
|
|
|
# Copy configuration files
|
|
log_info "Copying configuration files..."
|
|
cp "${PROJECT_ROOT}/config/system_config.json" "${DEPLOY_DIR}/config/"
|
|
cp "${PROJECT_ROOT}/config/vehicle_control.json" "${DEPLOY_DIR}/config/"
|
|
|
|
# Create deployment archive
|
|
log_info "Creating deployment archive..."
|
|
cd "${PROJECT_ROOT}"
|
|
tar czf "${PROJECT_NAME}_deploy.tar.gz" deploy/
|
|
|
|
log_info "Deployment package created: ${PROJECT_NAME}_deploy.tar.gz"
|
|
echo "Package contents:"
|
|
echo " - Executable binary"
|
|
echo " - Required runtime libraries"
|
|
echo " - Python3 RPM packages"
|
|
echo " - Python dependencies"
|
|
echo " - Configuration files" |