← Back to team overview

widelands-dev team mailing list archive

Re: [Merge] lp:~widelands-dev/widelands/trimming-compile into lp:widelands

 


Diff comments:

> === modified file 'compile.sh'
> --- compile.sh	2014-06-18 17:11:08 +0000
> +++ compile.sh	2014-07-19 14:18:30 +0000
> @@ -26,15 +26,14 @@
>  # TODO  user interaction and functions for installation including a check
>  # TODO  whether the selected directories are writeable and a password check
>  # TODO  to become root / Administrator if the dirs are not writeable.
> +# TODO(code review): probably no longer needed?
>  
>  
>  
>  ######################################
>  # Definition of some local variables #
>  ######################################
> -var_build=0 # 0 == debug(default), 1 == release
> -var_build_lang=0 # 0 = false 
> -var_updater=0 # 0 = false
> +buildtool="" #Use ninja by default, fall back to make if that is not available.
>  ######################################
>  
>  
> @@ -49,94 +48,51 @@
>        echo "  source code."
>        exit 1
>      fi
> +    #TODO(code review): Are these returns in various methods necessary?
> +    #It doesn't seem like anything ever checks the return, and in case
> +    #of something bad, it just calls exit anyways (see above)
>      return 0
>    }
>  
> -  # Ask the user what parts and how Widelands should be build.
> -  # And save the values
> -  user_interaction () {
> -    local_var_ready=0
> -    while [ $local_var_ready -eq 0 ]
> -    do
> -      echo " "
> -      echo "  Should Widelands be build in [r]elease or [d]ebug mode?"
> -      echo " "
> -      read local_var_choice
> -      echo " "
> -      case $local_var_choice in
> -        r) echo "  -> Release mode selected" ; var_build=1 ; local_var_ready=1 ;;
> -        d) echo "  -> Debug mode selected" ; var_build=0 ; local_var_ready=1 ;;
> -        *) echo "  -> Bad choice. Please try again!" ;;
> -      esac
> -    done
> -    local_var_ready=0
> -    if [ $var_build -eq 0 ] ; then
> -      while [ $local_var_ready -eq 0 ]
> -      do
> -        echo " "
> -        echo "  Should translations be build [y]/[n]?"
> -        echo " "
> -        read local_var_choice
> -        echo " "
> -        case $local_var_choice in
> -          y) echo "  -> Translations will be build" ; var_build_lang=1 ; local_var_ready=1 ;;
> -          n) echo "  -> Translations will not be build" ; var_build_lang=0 ; local_var_ready=1 ;;
> -          *) echo "  -> Bad choice. Please try again!" ;;
> -        esac
> -      done
> +  set_buildtool () {
> +    #Defaults to ninja, but if that is not found, we use make instead
> +    if [ `command -v ninja` ] ; then
> +      buildtool="ninja"
> +    #On some systems (most notably Fedora), the binary is called ninja-build
> +    elif [ `command -v ninja-build` ] ; then
> +      buildtool="ninja-build"
> +    else
> +      buildtool="make"
>      fi
> -    return 0
>    }
>  
>    # Check if directories / links already exists and create / update them if needed.
>    prepare_directories_and_links () {
> -    # remove build/compile directory (this is the old location)
> -    if [ -e build/compile ] ; then
> -      echo " "
> -      echo "  The build directory has changed"
> -      echo "  from ./build/compile to ./build."
> -      echo "  The old directory ./build/compile can be removed."
> -      echo "  Please backup any files you might not want to lose."
> -      echo "  Most users can safely say yes here."
> -      echo "  Do you want to remove the directory ./build/compile? [y]es/[n]o"
> -      echo " "
> -      read local_var_choice
> -      echo " "
> -      case $local_var_choice in
> -        y) echo "  -> Removing directory ./build/compile. This may take a while..."
> -	   rm locale
> -	   rm -r build/compile || true
> -	   if [ -e build/compile ] ; then
> -             echo "  -> Directory could not be removed. This is not fatal, continuing."
> -	   else
> -             echo "  -> Directory removed."
> -	   fi ;;
> -        n) echo "  -> Left the directory untouched." ;;
> -        *) echo "  -> Bad choice. Please try again!" ;;
> -      esac
> -    fi
> -
> -    test -d build || mkdir -p build
>      test -d build/locale || mkdir -p build/locale
>      test -e locale || ln -s build/locale
>  
> -    cd build
> -
>      return 0
>    }
>  
>    # Compile Widelands
>    compile_widelands () {
> -    var_build_type=""
> -    if [ $var_build -eq 0 ] ; then
> -      var_build_type="Debug"
> +    echo "Builds a debug build by default. If you want a Release build, "
> +    echo "you will need to build it manually passing the"
> +    echo "option -DCMAKE_BUILD_TYPE=\"Release\" to cmake"
> +
> +    #TODO(code review): WL_PORTABLE might be going away, see https://bugs.launchpad.net/widelands/+bug/1342228
> +
> +    if [ $buildtool = "ninja" ] || [ $buildtool = "ninja-build" ] ; then
> +      cmake -G Ninja -DWL_PORTABLE=true .. -DCMAKE_BUILD_TYPE="Debug"
>      else
> -      var_build_type="Release"
> +      cmake -DWL_PORTABLE=true .. -DCMAKE_BUILD_TYPE="Debug"
>      fi
>  
> -    echo " "
> -    cmake -DWL_PORTABLE=true .. -DCMAKE_BUILD_TYPE="${var_build_type}"
> -    make ${MAKEOPTS}
> +    #TODO(code review): Do we need to pass in makeopts, is it likely that people running this script will
> +    #have makeopts set? Also, I assume ninja will be able to deal with this, if it is a drop-in replacement
> +    $buildtool ${MAKEOPTS}
> +    #TODO(code review): Ideally lang is always run as just another part of the line above
> +    $buildtool lang
>      return 0
>    }
>  
> @@ -150,22 +106,14 @@
>      return 0
>    }
>  
> -  # Ask the user whether an update script should be created and if yes, create it.
> -  update_script () {
> +  create_update_script () {
>      # First check if this is an bzr checkout at all - only in that case,
>      # creation of a script makes any sense.
>      if ! [ -f .bzr/branch-format ] ; then
> +      echo "You don't appear to be using Bazaar. An update script will not be created"
>        return 0
>      fi

I plan to reduce the indentation used below, though for the moment it is much easier to see the actual changes.

> -    while :
> -    do
> -      echo " "
> -      echo "  Should I create an update script? [y]es/[n]o"
> -      echo " "
> -      read local_var_choice
> -      echo " "
> -      case $local_var_choice in
> -        y) rm -f update.sh || true
> +        rm -f update.sh || true
>             (echo "#!/bin/sh"
>              echo "echo \" \""
>              echo "echo \"################################################\""
> @@ -181,12 +129,10 @@
>              echo "fi"
>              echo " "
>              echo "bzr pull"
> -            echo "touch CMakeLists.txt"
>              echo "cd build"
> -            echo "make ${MAKEOPTS}"
> -            if [ $var_build_lang -eq 1 ] ; then
> -              echo "make lang"
> -            fi
> +            echo "cmake .."
> +            echo "$buildtool ${MAKEOPTS}"
> +            echo "$buildtool lang"
>              echo "rm  ../VERSION || true"
>              echo "rm  ../widelands || true"
>              echo "mv VERSION ../VERSION"
> @@ -201,11 +147,6 @@
>             ) > update.sh
>             chmod +x ./update.sh
>             echo "  -> The update script has successfully been created."
> -           var_updater=1 ; return 0 ;;
> -        n) echo "  -> No update script has been created." ; return 0 ;;
> -        *) echo "  -> Bad choice. Please try again!" ;;
> -      esac
> -    done
>    }
>  ######################################
>  
> @@ -216,24 +157,20 @@
>  ######################################
>  set -e
>  basic_check
> -user_interaction
> +set_buildtool
>  prepare_directories_and_links
> +cd build
>  compile_widelands
> -if [ $var_build_lang -eq 1 ] ; then
> -  make lang
> -fi
>  move_built_files
>  cd ..
> -update_script
> +create_update_script
>  echo " "
>  echo "#####################################################"
>  echo "# Congratulations Widelands was successfully build. #"
>  echo "# You should now be able to run Widelands via       #"
>  echo "# typing ./widelands + ENTER in your terminal       #"
> -if [ $var_updater -eq 1 ] ; then
> -  echo "#                                                   #"
> -  echo "# You can update Widelands via running ./update.sh  #"
> -  echo "# in the same directory you ran this script in.     #"
> -fi
> +echo "#                                                   #"
> +echo "# You can update Widelands via running ./update.sh  #"
> +echo "# in the same directory you ran this script in.     #"
>  echo "#####################################################"
>  ######################################
> 


-- 
https://code.launchpad.net/~widelands-dev/widelands/trimming-compile/+merge/227390
Your team Widelands Developers is requested to review the proposed merge of lp:~widelands-dev/widelands/trimming-compile into lp:widelands.


References