Be more robust when building in parallel

* handling symlinks by doing extra checks
* Reducing the cmake dependency list on targets, not outputs of custom commands
dev-ui
Didier Raboud 2013-10-28 17:28:21 +01:00 committed by Didier 'OdyX' Raboud
parent 1a06bcee23
commit 4757118ff0
2 changed files with 6 additions and 6 deletions

View File

@ -37,7 +37,7 @@ foreach(levelfile ${levelfiles})
add_custom_command(OUTPUT ${_levels_i18n_target}/${_scenedest} add_custom_command(OUTPUT ${_levels_i18n_target}/${_scenedest}
COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/${_levels_i18n_target} COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/${_levels_i18n_target}
COMMAND ${LEVELS_I18N_PATH}/scripts/03_inject_translations.sh ${levelfile} ${CMAKE_CURRENT_BINARY_DIR}/${LEVEL_CODENAME}/${_levelfile} ${PODIR} > ${CMAKE_CURRENT_BINARY_DIR}/${_levels_i18n_target}/${_scenedest} COMMAND ${LEVELS_I18N_PATH}/scripts/03_inject_translations.sh ${levelfile} ${CMAKE_CURRENT_BINARY_DIR}/${LEVEL_CODENAME}/${_levelfile} ${PODIR} > ${CMAKE_CURRENT_BINARY_DIR}/${_levels_i18n_target}/${_scenedest}
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/po4a-ran-${LEVEL_CODENAME} DEPENDS po4a-${LEVEL_CODENAME}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT "${LEVEL_CODENAME}: Inject translation in ${_scenedest}" COMMENT "${LEVEL_CODENAME}: Inject translation in ${_scenedest}"
) )
@ -67,7 +67,7 @@ if(PO4A AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${PODIR}")
add_custom_command(OUTPUT moved-all-${LEVEL_CODENAME}-${_helpfile} add_custom_command(OUTPUT moved-all-${LEVEL_CODENAME}-${_helpfile}
COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/${_help_i18n_target} COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/${_help_i18n_target}
COMMAND ${LEVELS_I18N_PATH}/scripts/04_move_helpfiles_to_paths.sh ${LEVEL_CODENAME} ${LEVEL_CODENAME}-help/${_helpfile} ${_help_i18n_target} '${HELPDIR}' '${HELPDEST}' ${CMAKE_CURRENT_SOURCE_DIR} > moved-all-${LEVEL_CODENAME}-${_helpfile} COMMAND ${LEVELS_I18N_PATH}/scripts/04_move_helpfiles_to_paths.sh ${LEVEL_CODENAME} ${LEVEL_CODENAME}-help/${_helpfile} ${_help_i18n_target} '${HELPDIR}' '${HELPDEST}' ${CMAKE_CURRENT_SOURCE_DIR} > moved-all-${LEVEL_CODENAME}-${_helpfile}
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/po4a-ran-${LEVEL_CODENAME} DEPENDS po4a-${LEVEL_CODENAME}
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMENT "${LEVEL_CODENAME}: Move ${_helpfile} translations around" COMMENT "${LEVEL_CODENAME}: Move ${_helpfile} translations around"
) )

View File

@ -10,8 +10,8 @@ LEVEL_CODENAME=$3 # relative
SCENEFILE=$4 # relative SCENEFILE=$4 # relative
HELPDIR=$5 # relative HELPDIR=$5 # relative
rm -Rf $LEVEL_CODENAME-po [ -h $LEVEL_CODENAME-po ] || rm -f $LEVEL_CODENAME-po
ln -s $srcdir/$PODIR $LEVEL_CODENAME-po ln -sf $srcdir/$PODIR $LEVEL_CODENAME-po
echo "[po_directory] $LEVEL_CODENAME-po" echo "[po_directory] $LEVEL_CODENAME-po"
# Create a pseudo file for the translation of the language code # Create a pseudo file for the translation of the language code
@ -25,7 +25,7 @@ if [ -n "$SCENEFILE" ]; then
# Levels are precompiled, they are already in the current dir # Levels are precompiled, they are already in the current dir
for scene in $(cd $srcdir/; ls $SCENEFILE); do for scene in $(cd $srcdir/; ls $SCENEFILE); do
scene_=$(basename $scene .txt) scene_=$(basename $scene .txt)
$(cd $LEVEL_CODENAME; ln -s $srcdir/$scene $scene_.txt) $(cd $LEVEL_CODENAME; [ -h $scene_.txt ] || rm -f $scene_.txt; ln -sf $srcdir/$scene $scene_.txt)
echo "[type:colobotlevel] $LEVEL_CODENAME/$scene_.txt \$lang:$LEVEL_CODENAME/$scene_.\$lang.txt" echo "[type:colobotlevel] $LEVEL_CODENAME/$scene_.txt \$lang:$LEVEL_CODENAME/$scene_.\$lang.txt"
done done
fi fi
@ -36,7 +36,7 @@ mkdir -p $LEVEL_CODENAME-help
if [ -d $srcdir/$HELPDIR ]; then if [ -d $srcdir/$HELPDIR ]; then
for helpfile in $(cd $srcdir/$HELPDIR; ls *.txt); do for helpfile in $(cd $srcdir/$HELPDIR; ls *.txt); do
helpfile_=$(basename $helpfile .txt) helpfile_=$(basename $helpfile .txt)
$(cd $LEVEL_CODENAME-help; ln -s $srcdir/$HELPDIR/$helpfile $helpfile_.txt) $(cd $LEVEL_CODENAME-help; [ -h $helpfile_.txt ] || rm -f $helpfile_.txt; ln -sf $srcdir/$HELPDIR/$helpfile $helpfile_.txt)
echo "[type:colobothelp] $LEVEL_CODENAME-help/$helpfile_.txt \$lang:$LEVEL_CODENAME-help/$helpfile_.\$lang.txt" echo "[type:colobothelp] $LEVEL_CODENAME-help/$helpfile_.txt \$lang:$LEVEL_CODENAME-help/$helpfile_.\$lang.txt"
done done
fi fi