|  |  | @ -1,15 +1,37 @@ | 
			
		
	
		
			
				
					|  |  |  | #!/bin/sh -e | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | # Configuration | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | # Build/install-time directories | 
			
		
	
		
			
				
					|  |  |  | dir_build="/tmp/astronaut/build"  # Temporary directory to build packages | 
			
		
	
		
			
				
					|  |  |  | dir_source="/tmp/astronaut/source"  # Directory where the package sources will be placed | 
			
		
	
		
			
				
					|  |  |  | dir_install="/tmp/astronaut/install"  # Directory where the package will be installed | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | # Runtime directories | 
			
		
	
		
			
				
					|  |  |  | dir_sysroot=""  # The root directory of the system | 
			
		
	
		
			
				
					|  |  |  | dir_prefix="/usr"  # Prefix directory (for /bin, /lib, /share and such) | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | # Default commands | 
			
		
	
		
			
				
					|  |  |  | cmd_download="curl -# -L -o {dst} {src}"  # Command to execute to download files | 
			
		
	
		
			
				
					|  |  |  | cmd_extract="tar -x -C {dst} -f {src}"  # Command to execute to extract files | 
			
		
	
		
			
				
					|  |  |  | unset dir_satellites  # Directory where the satellite files are placed. | 
			
		
	
		
			
				
					|  |  |  | unset options | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | # If we can't find the satellite file,  we'll look in this directory for it. | 
			
		
	
		
			
				
					|  |  |  | unset dir_satellites | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | # Options are comma-separated and parsed from front to back. | 
			
		
	
		
			
				
					|  |  |  | # This means that in "!opt,someotheropt,opt", opt is disabled. | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | unset options  # The least-priority global options | 
			
		
	
		
			
				
					|  |  |  | package_options() { :; }  # Per-package options function. | 
			
		
	
		
			
				
					|  |  |  | # Example for package_options: | 
			
		
	
		
			
				
					|  |  |  | # package_options() { | 
			
		
	
		
			
				
					|  |  |  | #     case "$1" in | 
			
		
	
		
			
				
					|  |  |  | #         package1) echo "opt1,opt2,opt3" ;; | 
			
		
	
		
			
				
					|  |  |  | #         package2) echo "someotheropts" ;; | 
			
		
	
		
			
				
					|  |  |  | #     esac | 
			
		
	
		
			
				
					|  |  |  | # } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | # Load any user configuration | 
			
		
	
		
			
				
					|  |  |  | [ -f /etc/astronaut.conf ] && . /etc/astronaut.conf | 
			
		
	
		
			
				
					|  |  |  | [ -f "$HOME/.astronaut.conf" ] && . "$HOME/.astronaut.conf" | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  | @ -17,6 +39,7 @@ unset options | 
			
		
	
		
			
				
					|  |  |  | _download_only=false | 
			
		
	
		
			
				
					|  |  |  | _vcs_only=false | 
			
		
	
		
			
				
					|  |  |  | vcs_compile=false | 
			
		
	
		
			
				
					|  |  |  | unset _user_options  # Options specified in the command line get the highest priority | 
			
		
	
		
			
				
					|  |  |  | #_nuke_dir_install (This can be set from wrappers) | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | # Some printing functions | 
			
		
	
	
		
			
				
					|  |  | @ -34,7 +57,14 @@ Usage: $0 [-sbipr <dir>] [-Id] [-o <options>] <satellite> | 
			
		
	
		
			
				
					|  |  |  | -I   Nuke install directory before build [WARNING: You will not be prompted] | 
			
		
	
		
			
				
					|  |  |  | -d   Only download package files | 
			
		
	
		
			
				
					|  |  |  | -v   Only build vcs package if any updates have been made to it | 
			
		
	
		
			
				
					|  |  |  | -o   Set package options (comma-separated)" | 
			
		
	
		
			
				
					|  |  |  | -o   Set package options (comma-separated) | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | Tips: | 
			
		
	
		
			
				
					|  |  |  | - Use \`head -n 32 $0 > astronaut.conf.example\` to generate a default configuration file. | 
			
		
	
		
			
				
					|  |  |  | - Keep in mind that when specifying options on the command line in a string, the first always takes priority. | 
			
		
	
		
			
				
					|  |  |  |     For example, in \"opt,someotheropt,!opt\", opt is enabled, due to it being the first occurrence. | 
			
		
	
		
			
				
					|  |  |  | - If you have set \$dir_satellites in the config, you can omit the .sat suffix. | 
			
		
	
		
			
				
					|  |  |  | " | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | _msg() { | 
			
		
	
	
		
			
				
					|  |  | @ -78,7 +108,7 @@ while getopts "h?s:b:i:r:p:IcCdvo:" opt; do | 
			
		
	
		
			
				
					|  |  |  |             _vcs_only=true | 
			
		
	
		
			
				
					|  |  |  |             ;; | 
			
		
	
		
			
				
					|  |  |  |         o) | 
			
		
	
		
			
				
					|  |  |  |             options="$options,$OPTARG" | 
			
		
	
		
			
				
					|  |  |  |             _user_options="$OPTARG,$_user_options" | 
			
		
	
		
			
				
					|  |  |  |             ;; | 
			
		
	
		
			
				
					|  |  |  |     esac | 
			
		
	
		
			
				
					|  |  |  | done | 
			
		
	
	
		
			
				
					|  |  | @ -164,15 +194,19 @@ option() { | 
			
		
	
		
			
				
					|  |  |  |     local enabled=false | 
			
		
	
		
			
				
					|  |  |  |     local opt | 
			
		
	
		
			
				
					|  |  |  |     local IFS=','; for option in $options; do | 
			
		
	
		
			
				
					|  |  |  |         local option_negate=false | 
			
		
	
		
			
				
					|  |  |  |         case "$option" in | 
			
		
	
		
			
				
					|  |  |  |             *=*) | 
			
		
	
		
			
				
					|  |  |  |                 local value="$(echo "$option" | cut -d '=' -f 2)" | 
			
		
	
		
			
				
					|  |  |  |                 local option="$(echo "$option" | cut -d '=' -f 1)" | 
			
		
	
		
			
				
					|  |  |  |                 ;; | 
			
		
	
		
			
				
					|  |  |  |             !*) | 
			
		
	
		
			
				
					|  |  |  |                 local option="$(echo "$option" | cut -c 2-)" | 
			
		
	
		
			
				
					|  |  |  |                 local option_negate=true | 
			
		
	
		
			
				
					|  |  |  |         esac | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         if [ "$option" = "$check" ]; then | 
			
		
	
		
			
				
					|  |  |  |             local enabled=true | 
			
		
	
		
			
				
					|  |  |  |             [ "$option_negate" = true ] && local enabled=false || local enabled=true | 
			
		
	
		
			
				
					|  |  |  |             break | 
			
		
	
		
			
				
					|  |  |  |         fi | 
			
		
	
		
			
				
					|  |  |  |     done | 
			
		
	
	
		
			
				
					|  |  | @ -243,6 +277,9 @@ if [ ! -f "$_satellite" ]; then | 
			
		
	
		
			
				
					|  |  |  |     fi | 
			
		
	
		
			
				
					|  |  |  | fi | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | # Build the definitive options list | 
			
		
	
		
			
				
					|  |  |  | options="$_user_options$(package_options "$_satname"),$options" | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | # Create the directories | 
			
		
	
		
			
				
					|  |  |  | if [ "$_download_only" = false ]; then | 
			
		
	
		
			
				
					|  |  |  |     # This variable can be set by a wrapper script in need to nuke the install dir. | 
			
		
	
	
		
			
				
					|  |  | 
 |