Home | History | Annotate | Download | only in common
      1 @@include@@variables.include
      2 
      3 APT_GET="`which apt-get 2> /dev/null`"
      4 APT_CONFIG="`which apt-config 2> /dev/null`"
      5 
      6 SOURCES_PREAMBLE="### THIS FILE IS AUTOMATICALLY CONFIGURED ###
      7 # You may comment out this entry, but any other modifications may be lost.\n"
      8 
      9 # Parse apt configuration and return requested variable value.
     10 apt_config_val() {
     11   APTVAR="$1"
     12   if [ -x "$APT_CONFIG" ]; then
     13     "$APT_CONFIG" dump | sed -e "/^$APTVAR /"'!d' -e "s/^$APTVAR \"\(.*\)\".*/\1/"
     14   fi
     15 }
     16 
     17 # Install the repository signing key (see also:
     18 # http://www.google.com/linuxrepositories/aboutkey.html)
     19 install_key() {
     20   APT_KEY="`which apt-key 2> /dev/null`"
     21   if [ -x "$APT_KEY" ]; then
     22     "$APT_KEY" add - >/dev/null 2>&1 <<KEYDATA
     23 -----BEGIN PGP PUBLIC KEY BLOCK-----
     24 Version: GnuPG v1.4.2.2 (GNU/Linux)
     25 
     26 mQGiBEXwb0YRBADQva2NLpYXxgjNkbuP0LnPoEXruGmvi3XMIxjEUFuGNCP4Rj/a
     27 kv2E5VixBP1vcQFDRJ+p1puh8NU0XERlhpyZrVMzzS/RdWdyXf7E5S8oqNXsoD1z
     28 fvmI+i9b2EhHAA19Kgw7ifV8vMa4tkwslEmcTiwiw8lyUl28Wh4Et8SxzwCggDcA
     29 feGqtn3PP5YAdD0km4S4XeMEAJjlrqPoPv2Gf//tfznY2UyS9PUqFCPLHgFLe80u
     30 QhI2U5jt6jUKN4fHauvR6z3seSAsh1YyzyZCKxJFEKXCCqnrFSoh4WSJsbFNc4PN
     31 b0V0SqiTCkWADZyLT5wll8sWuQ5ylTf3z1ENoHf+G3um3/wk/+xmEHvj9HCTBEXP
     32 78X0A/0Tqlhc2RBnEf+AqxWvM8sk8LzJI/XGjwBvKfXe+l3rnSR2kEAvGzj5Sg0X
     33 4XmfTg4Jl8BNjWyvm2Wmjfet41LPmYJKsux3g0b8yzQxeOA4pQKKAU3Z4+rgzGmf
     34 HdwCG5MNT2A5XxD/eDd+L4fRx0HbFkIQoAi1J3YWQSiTk15fw7RMR29vZ2xlLCBJ
     35 bmMuIExpbnV4IFBhY2thZ2UgU2lnbmluZyBLZXkgPGxpbnV4LXBhY2thZ2VzLWtl
     36 eW1hc3RlckBnb29nbGUuY29tPohjBBMRAgAjAhsDBgsJCAcDAgQVAggDBBYCAwEC
     37 HgECF4AFAkYVdn8CGQEACgkQoECDD3+sWZHKSgCfdq3HtNYJLv+XZleb6HN4zOcF
     38 AJEAniSFbuv8V5FSHxeRimHx25671az+uQINBEXwb0sQCACuA8HT2nr+FM5y/kzI
     39 A51ZcC46KFtIDgjQJ31Q3OrkYP8LbxOpKMRIzvOZrsjOlFmDVqitiVc7qj3lYp6U
     40 rgNVaFv6Qu4bo2/ctjNHDDBdv6nufmusJUWq/9TwieepM/cwnXd+HMxu1XBKRVk9
     41 XyAZ9SvfcW4EtxVgysI+XlptKFa5JCqFM3qJllVohMmr7lMwO8+sxTWTXqxsptJo
     42 pZeKz+UBEEqPyw7CUIVYGC9ENEtIMFvAvPqnhj1GS96REMpry+5s9WKuLEaclWpd
     43 K3krttbDlY1NaeQUCRvBYZ8iAG9YSLHUHMTuI2oea07Rh4dtIAqPwAX8xn36JAYG
     44 2vgLAAMFB/wKqaycjWAZwIe98Yt0qHsdkpmIbarD9fGiA6kfkK/UxjL/k7tmS4Vm
     45 CljrrDZkPSQ/19mpdRcGXtb0NI9+nyM5trweTvtPw+HPkDiJlTaiCcx+izg79Fj9
     46 KcofuNb3lPdXZb9tzf5oDnmm/B+4vkeTuEZJ//IFty8cmvCpzvY+DAz1Vo9rA+Zn
     47 cpWY1n6z6oSS9AsyT/IFlWWBZZ17SpMHu+h4Bxy62+AbPHKGSujEGQhWq8ZRoJAT
     48 G0KSObnmZ7FwFWu1e9XFoUCt0bSjiJWTIyaObMrWu/LvJ3e9I87HseSJStfw6fki
     49 5og9qFEkMrIrBCp3QGuQWBq/rTdMuwNFiEkEGBECAAkFAkXwb0sCGwwACgkQoECD
     50 D3+sWZF/WACfeNAu1/1hwZtUo1bR+MWiCjpvHtwAnA1R3IHqFLQ2X3xJ40XPuAyY
     51 /FJG
     52 =Quqp
     53 -----END PGP PUBLIC KEY BLOCK-----
     54 KEYDATA
     55   fi
     56 }
     57 
     58 # Set variables for the locations of the apt sources lists.
     59 find_apt_sources() {
     60   APTDIR=$(apt_config_val Dir)
     61   APTETC=$(apt_config_val 'Dir::Etc')
     62   APT_SOURCES="$APTDIR$APTETC$(apt_config_val 'Dir::Etc::sourcelist')"
     63   APT_SOURCESDIR="$APTDIR$APTETC$(apt_config_val 'Dir::Etc::sourceparts')"
     64 }
     65 
     66 # Update the Google repository if it's not set correctly.
     67 # Note: this doesn't necessarily enable the repository, it just makes sure the
     68 # correct settings are available in the sources list.
     69 # Returns:
     70 # 0 - no update necessary
     71 # 2 - error
     72 update_bad_sources() {
     73   if [ ! "$REPOCONFIG" ]; then
     74     return 0
     75   fi
     76 
     77   find_apt_sources
     78 
     79   SOURCELIST="$APT_SOURCESDIR/@@PACKAGE@@.list"
     80   # Don't do anything if the file isn't there, since that probably means the
     81   # user disabled it.
     82   if [ ! -r "$SOURCELIST" ]; then
     83     return 0
     84   fi
     85 
     86   # Basic check for active configurations (non-blank, non-comment lines).
     87   ACTIVECONFIGS=$(grep -v "^[[:space:]]*\(#.*\)\?$" "$SOURCELIST" 2>/dev/null)
     88 
     89   # Check if the correct repository configuration is in there.
     90   REPOMATCH=$(grep "^[[:space:]#]*\b$REPOCONFIG\b" "$SOURCELIST" \
     91     2>/dev/null)
     92 
     93   # Check if the correct repository is disabled.
     94   MATCH_DISABLED=$(echo "$REPOMATCH" | grep "^[[:space:]]*#" 2>/dev/null)
     95 
     96   # Now figure out if we need to fix things.
     97   BADCONFIG=1
     98   if [ "$REPOMATCH" ]; then
     99     # If it's there and active, that's ideal, so nothing to do.
    100     if [ ! "$MATCH_DISABLED" ]; then
    101       BADCONFIG=0
    102     else
    103       # If it's not active, but neither is anything else, that's fine too.
    104       if [ ! "$ACTIVECONFIGS" ]; then
    105         BADCONFIG=0
    106       fi
    107     fi
    108   fi
    109 
    110   if [ $BADCONFIG -eq 0 ]; then
    111     return 0
    112   fi
    113 
    114   # At this point, either the correct configuration is completely missing, or
    115   # the wrong configuration is active. In that case, just abandon the mess and
    116   # recreate the file with the correct configuration. If there were no active
    117   # configurations before, create the new configuration disabled.
    118   DISABLE=""
    119   if [ ! "$ACTIVECONFIGS" ]; then
    120     DISABLE="#"
    121   fi
    122   printf "$SOURCES_PREAMBLE" > "$SOURCELIST"
    123   printf "$DISABLE$REPOCONFIG\n" >> "$SOURCELIST"
    124   if [ $? -eq 0 ]; then
    125     return 0
    126   fi
    127   return 2
    128 }
    129 
    130 # Add the Google repository to the apt sources.
    131 # Returns:
    132 # 0 - sources list was created
    133 # 2 - error
    134 create_sources_lists() {
    135   if [ ! "$REPOCONFIG" ]; then
    136     return 0
    137   fi
    138 
    139   find_apt_sources
    140 
    141   SOURCELIST="$APT_SOURCESDIR/@@PACKAGE@@.list"
    142   if [ -d "$APT_SOURCESDIR" ]; then
    143     printf "$SOURCES_PREAMBLE" > "$SOURCELIST"
    144     printf "$REPOCONFIG\n" >> "$SOURCELIST"
    145     if [ $? -eq 0 ]; then
    146       return 0
    147     fi
    148   fi
    149   return 2
    150 }
    151 
    152 # Remove our custom sources list file.
    153 # Returns:
    154 # 0 - successfully removed, or not configured
    155 # !0 - failed to remove
    156 clean_sources_lists() {
    157   if [ ! "$REPOCONFIG" ]; then
    158     return 0
    159   fi
    160 
    161   find_apt_sources
    162 
    163   rm -f "$APT_SOURCESDIR/@@PACKAGE@@.list" \
    164         "$APT_SOURCESDIR/@@PACKAGE@@-@@CHANNEL@@.list"
    165 }
    166 
    167 # Detect if the repo config was disabled by distro upgrade and enable if
    168 # necessary.
    169 handle_distro_upgrade() {
    170   if [ ! "$REPOCONFIG" ]; then
    171     return 0
    172   fi
    173 
    174   find_apt_sources
    175   SOURCELIST="$APT_SOURCESDIR/@@PACKAGE@@.list"
    176   if [ -r "$SOURCELIST" ]; then
    177     REPOLINE=$(grep -E "^[[:space:]]*#[[:space:]]*$REPOCONFIG[[:space:]]*# disabled on upgrade to .*" "$SOURCELIST")
    178     if [ $? -eq 0 ]; then
    179       sed -i -e "s,^[[:space:]]*#[[:space:]]*\($REPOCONFIG\)[[:space:]]*# disabled on upgrade to .*,\1," \
    180         "$SOURCELIST"
    181       LOGGER=$(which logger 2> /dev/null)
    182       if [ "$LOGGER" ]; then
    183         "$LOGGER" -t "$0" "Reverted repository modification: $REPOLINE."
    184       fi
    185     fi
    186   fi
    187 }
    188 
    189 DEFAULT_ARCH="@@ARCHITECTURE@@"
    190 
    191 get_lib_dir() {
    192   if [ "$DEFAULT_ARCH" = "i386" ]; then
    193     LIBDIR=lib/i386-linux-gnu
    194   elif [ "$DEFAULT_ARCH" = "amd64" ]; then
    195     LIBDIR=lib/x86_64-linux-gnu
    196   else
    197     echo Unknown CPU Architecture: "$DEFAULT_ARCH"
    198     exit 1
    199   fi
    200 }
    201