修改build_execute_package.sh

This commit is contained in:
Tian jianyong 2025-05-09 17:18:24 +08:00
parent 30e9da74bf
commit 12047f50f1
2 changed files with 59 additions and 9 deletions

View File

@ -125,11 +125,16 @@ target_include_directories(${PROJECT_NAME}_lib
target_link_libraries(${PROJECT_NAME}_lib
PUBLIC
Boost::system
Boost::filesystem
Boost::thread
Boost::chrono
Boost::date_time
Boost::atomic
Boost::regex
nlohmann_json::nlohmann_json
CURL::libcurl
Threads::Threads
-pthread # pthread
-pthread
)
#

View File

@ -27,6 +27,7 @@ log_info "Building version: ${VERSION}"
TEMP_DIR="${PROJECT_ROOT}/temp_build"
rm -rf "${TEMP_DIR}"
mkdir -p "${TEMP_DIR}/bin"
mkdir -p "${TEMP_DIR}/lib"
# Build the project
log_info "Building project..."
@ -55,6 +56,45 @@ cp "bin/${PROJECT_NAME}" "${TEMP_DIR}/bin/" || {
exit 1
}
# --- BEGIN: Copy Libraries ---
log_info "Copying required runtime libraries to ${TEMP_DIR}/lib/ ..."
GCC_RUNTIME_LIB_PATH="/usr/local/lib64"
if [ -f "${GCC_RUNTIME_LIB_PATH}/libstdc++.so.6" ]; then
cp -Lv "${GCC_RUNTIME_LIB_PATH}/libstdc++.so.6" "${TEMP_DIR}/lib/"
log_info "Copied libstdc++.so.6 (and its target file)"
else
log_warn "libstdc++.so.6 not found in ${GCC_RUNTIME_LIB_PATH}"
fi
if [ -f "${GCC_RUNTIME_LIB_PATH}/libgcc_s.so.1" ]; then
cp -Lv "${GCC_RUNTIME_LIB_PATH}/libgcc_s.so.1" "${TEMP_DIR}/lib/"
log_info "Copied libgcc_s.so.1 (and its target file)"
else
log_warn "libgcc_s.so.1 not found in ${GCC_RUNTIME_LIB_PATH}"
fi
BOOST_LIB_PATH="/usr/lib64/boost169"
BOOST_LIBS=(
"libboost_system.so.1.69.0"
"libboost_filesystem.so.1.69.0"
"libboost_thread.so.1.69.0"
"libboost_chrono.so.1.69.0"
"libboost_date_time.so.1.69.0"
"libboost_atomic.so.1.69.0"
"libboost_regex.so.1.69.0"
)
for boost_lib in "${BOOST_LIBS[@]}"; do
if [ -f "${BOOST_LIB_PATH}/${boost_lib}" ]; then
cp -Lv "${BOOST_LIB_PATH}/${boost_lib}" "${TEMP_DIR}/lib/"
log_info "Copied ${boost_lib}"
else
log_warn "${boost_lib} not found in ${BOOST_LIB_PATH}"
fi
done
# --- END: Copy Libraries ---
# Generate version file
echo "${VERSION}" > "${TEMP_DIR}/bin/version.txt"
@ -65,7 +105,7 @@ sha256sum "${PROJECT_NAME}" > "${PROJECT_NAME}.sha256"
# Create deployment archive
cd "${TEMP_DIR}"
PACKAGE_NAME="${PROJECT_NAME}_${VERSION}.tar.gz"
tar czf "${PROJECT_ROOT}/${PACKAGE_NAME}" bin/
tar czf "${PROJECT_ROOT}/${PACKAGE_NAME}" bin/ lib/
# Cleanup
cd "${PROJECT_ROOT}"
@ -73,18 +113,23 @@ rm -rf "${TEMP_DIR}"
log_info "Package created: ${PACKAGE_NAME}"
log_info "Package contents:"
log_info " - Executable binary"
log_info " - Version file"
log_info " - Checksum file"
log_info " - Executable binary (in bin/)"
log_info " - Runtime libraries (in lib/)"
log_info " - Version file (in bin/)"
log_info " - Checksum file (in bin/)"
# Print instructions
echo
log_info "To deploy:"
echo "1. Copy ${PACKAGE_NAME} to production environment"
echo "2. Extract: tar xzf ${PACKAGE_NAME}"
echo "3. Verify checksum: sha256sum -c ${PROJECT_NAME}.sha256"
echo " This will create 'bin/' and 'lib/' directories."
echo "3. Verify checksum: cd bin && sha256sum -c ${PROJECT_NAME}.sha256 && cd .."
echo "4. Stop service: systemctl stop collision-avoidance"
echo "5. Backup old binary"
echo "5. Backup old binary and libraries (optional but recommended)"
echo " e.g., mv /opt/collision_avoidance/bin/${PROJECT_NAME} /opt/collision_avoidance/bin/${PROJECT_NAME}.bak"
echo " e.g., rsync -ab /opt/collision_avoidance/lib/ /opt/collision_avoidance/lib_bak/"
echo "6. Copy new binary: cp bin/${PROJECT_NAME} /opt/collision_avoidance/bin/"
echo "7. Start service: systemctl start collision-avoidance"
echo "8. Check status: systemctl status collision-avoidance"
echo "7. Copy new libraries: cp lib/* /opt/collision_avoidance/lib/"
echo "8. Start service: systemctl start collision-avoidance"
echo "9. Check status: systemctl status collision-avoidance"