~baltix-members/baltix-default-settings/ubuntu

« back to all changes in this revision

Viewing changes to usr/sbin/add-baltix-repositories

  • Committer: Mantas Kriaučiūnas
  • Date: 2011-09-06 05:19:53 UTC
  • Revision ID: mantas@akl.lt-20110906051953-jiog60k1ti4e9c0r
Reorganized additional software repositories installation: moved apt sources from /etc/apt/sources.list.d/ to /usr/share/app-install/channels/, implemented checking for duplicated repositories, see sbin/add-baltix-repositories, modified postinst script to run add-baltix-repositories; Wrote baltix-default-settings.TODO.txt; For detailed changes see debian/changelog

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/bin/sh
 
2
#
 
3
# Copyright (c) 2011 Mantas Kriaučiūnas. All rights reserved.
 
4
# Copyright (c) 2009 The Chromium Authors. All rights reserved.
 
5
# Use of this source code is governed by a BSD-style license.
 
6
#
 
7
# This script is part of the baltix-default-settings package.
 
8
#
 
9
# It copies software repositories from baltix-default-settings package's 
 
10
# /usr/share/app-install/channels/ folder to default APT repositories folder 
 
11
# (apt-config value 'Dir::Etc::sourceparts'
 
12
# TODO: monitor that config to see if it has been disabled by the overly aggressive
 
13
# distro upgrade process (e.g.  intrepid -> jaunty). When this situation is
 
14
# detected, the respository will be re-enabled. If the respository is disabled
 
15
# for any other reason, this won't re-enable it.
 
16
# This functionality can be controlled by creating the $DEFAULTS_FILE and
 
17
# setting "repo_add_once" and/or "repo_reenable_on_distupgrade" to "true" or
 
18
# "false" as desired. An empty $DEFAULTS_FILE is the same as setting both values
 
19
# to "false".
 
20
# System-wide package configuration.
 
21
#DEFAULTS_FILE="/etc/default/google-talkplugin"
 
22
 
 
23
# sources.list setting for google-talkplugin updates.
 
24
REPOCONFIG="deb http://dl.google.com/linux/talkplugin/deb/ stable main"
 
25
 
 
26
BALTIXREPOSLOCATION="/usr/share/app-install/channels/"
 
27
 
 
28
#APT_GET="`which apt-get 2> /dev/null`"
 
29
APT_CONFIG="`which apt-config 2> /dev/null`"
 
30
 
 
31
SOURCES_PREAMBLE="### THIS FILE IS AUTOMATICALLY CONFIGURED ###
 
32
# You may comment out this entry, but any other modifications may be lost.\n"
 
33
 
 
34
# Parse apt configuration and return requested variable value.
 
35
apt_config_val() {
 
36
  APTVAR="$1"
 
37
  if [ -x "$APT_CONFIG" ]; then
 
38
    "$APT_CONFIG" dump | sed -e "/^$APTVAR /"'!d' -e "s/^$APTVAR \"\(.*\)\".*/\1/"
 
39
  fi
 
40
}
 
41
 
 
42
# Install the repository signing key
 
43
#install_key() {
 
44
#  APT_KEY="`which apt-key 2> /dev/null`"
 
45
#  if [ -x "$APT_KEY" ]; then
 
46
#    "$APT_KEY" add - >/dev/null 2>&1 << ...
 
47
#  fi
 
48
#}
 
49
 
 
50
# Set variables for the locations of the apt sources lists.
 
51
find_apt_sources() {
 
52
  APTDIR=$(apt_config_val Dir)
 
53
  APTETC=$(apt_config_val 'Dir::Etc')
 
54
  APT_SOURCES="$APTDIR$APTETC$(apt_config_val 'Dir::Etc::sourcelist')"
 
55
  APT_SOURCESDIR="$APTDIR$APTETC$(apt_config_val 'Dir::Etc::sourceparts')"
 
56
}
 
57
 
 
58
# Note: this doesn't necessarily enable the repositories, it just makes sure the
 
59
# correct settings are available in the sources.list.d folder.
 
60
# Returns:
 
61
# 0 - no update necessary
 
62
# 2 - error
 
63
update_bad_sources() {
 
64
#  if [ ! "$REPOCONFIG" ]; then
 
65
#    return 0
 
66
#  fi
 
67
 
 
68
  find_apt_sources
 
69
  BALTIXSOURCES=$(dpkg -L baltix-default-settings |grep "$BALTIXREPOSLOCATION.*\.list$")
 
70
  BALTIXSOURCESNAMES=$(dpkg -L baltix-default-settings |grep "$BALTIXREPOSLOCATION.*\.list$"|sed -e "s/\/usr\/share\/app-install\/channels\///")
 
71
  USERSOURCES=$(find $APT_SOURCESDIR -name '*.list' -type f |grep -v -F "$BALTIXSOURCESNAMES")
 
72
#  SOURCELIST="$APT_SOURCESDIR/google-talkplugin.list"
 
73
  # Don't do anything if the file isn't there, since that probably means the
 
74
  # user disabled it.
 
75
#  if [ ! -r "$SOURCELIST" ]; then
 
76
#    return 0
 
77
#  fi
 
78
 
 
79
  # Basic check for active configurations (non-blank, non-comment lines).
 
80
  ACTIVECONFIGS=$(grep --no-filename -v "^[[:space:]]*\(#.*\)\?$" $BALTIXSOURCES|sed -e "s/[[:space:]]*#.*$//")
 
81
 
 
82
  TMPFOLDER=$(mktemp -t --directory baltix-software-repos.XXXX)
 
83
 
 
84
  # Removes duplicated repositories
 
85
  for repo in $USERSOURCES $APT_SOURCES
 
86
  do
 
87
    grep -v -F "$ACTIVECONFIGS" $repo > $TMPFOLDER/sources.list.d-repo
 
88
    mv -f $TMPFOLDER/sources.list.d-repo $repo
 
89
#   grep -l "^deb \+http://ppa\.launchpad\.net/baltix-members/ppa/ubuntu[/ ]\+natty" $APT_SOURCES $USERSOURCES
 
90
  done
 
91
 
 
92
  cp -b -f $BALTIXSOURCES $APT_SOURCESDIR
 
93
 
 
94
  return 0
 
95
 
 
96
#--code bellow is from google chrome or talkplugin, should remove unneeded parts--
 
97
  # Check if the correct repository configuration is in there.
 
98
  REPOMATCH=$(grep "^[[:space:]#]*\b$REPOCONFIG\b" "$SOURCELIST" \
 
99
    2>/dev/null)
 
100
 
 
101
  # Check if the correct repository is disabled.
 
102
  MATCH_DISABLED=$(echo "$REPOMATCH" | grep "^[[:space:]]*#" 2>/dev/null)
 
103
 
 
104
  # Now figure out if we need to fix things.
 
105
  BADCONFIG=1
 
106
  if [ "$REPOMATCH" ]; then
 
107
    # If it's there and active, that's ideal, so nothing to do.
 
108
    if [ ! "$MATCH_DISABLED" ]; then
 
109
      BADCONFIG=0
 
110
    else
 
111
      # If it's not active, but neither is anything else, that's fine too.
 
112
      if [ ! "$ACTIVECONFIGS" ]; then
 
113
        BADCONFIG=0
 
114
      fi
 
115
    fi
 
116
  fi
 
117
 
 
118
  if [ $BADCONFIG -eq 0 ]; then
 
119
    return 0
 
120
  fi
 
121
 
 
122
  # At this point, either the correct configuration is completely missing, or
 
123
  # the wrong configuration is active. In that case, just abandon the mess and
 
124
  # recreate the file with the correct configuration. If there were no active
 
125
  # configurations before, create the new configuration disabled.
 
126
  DISABLE=""
 
127
  if [ ! "$ACTIVECONFIGS" ]; then
 
128
    DISABLE="#"
 
129
  fi
 
130
  printf "$SOURCES_PREAMBLE" > "$SOURCELIST"
 
131
  printf "$DISABLE$REPOCONFIG\n" >> "$SOURCELIST"
 
132
  if [ $? -eq 0 ]; then
 
133
    return 0
 
134
  fi
 
135
  return 2
 
136
}
 
137
 
 
138
# Add the Google repository to the apt sources.
 
139
# Returns:
 
140
# 0 - sources list was created
 
141
# 2 - error
 
142
create_sources_lists() {
 
143
  if [ ! "$REPOCONFIG" ]; then
 
144
    return 0
 
145
  fi
 
146
 
 
147
  find_apt_sources
 
148
 
 
149
  SOURCELIST="$APT_SOURCESDIR/google-talkplugin.list"
 
150
  if [ -d "$APT_SOURCESDIR" ]; then
 
151
    printf "$SOURCES_PREAMBLE" > "$SOURCELIST"
 
152
    printf "$REPOCONFIG\n" >> "$SOURCELIST"
 
153
    if [ $? -eq 0 ]; then
 
154
      return 0
 
155
    fi
 
156
  fi
 
157
  return 2
 
158
}
 
159
 
 
160
# Remove our custom sources list file.
 
161
# Returns:
 
162
# 0 - successfully removed, or not configured
 
163
# !0 - failed to remove
 
164
clean_sources_lists() {
 
165
  if [ ! "$REPOCONFIG" ]; then
 
166
    return 0
 
167
  fi
 
168
 
 
169
  find_apt_sources
 
170
 
 
171
  rm -f "$APT_SOURCESDIR/google-talkplugin.list" \
 
172
        "$APT_SOURCESDIR/google-talkplugin-.list"
 
173
}
 
174
 
 
175
# Detect if the repo config was disabled by distro upgrade and enable if
 
176
# necessary.
 
177
handle_distro_upgrade() {
 
178
  if [ ! "$REPOCONFIG" ]; then
 
179
    return 0
 
180
  fi
 
181
 
 
182
  find_apt_sources
 
183
  SOURCELIST="$APT_SOURCESDIR/google-talkplugin.list"
 
184
  if [ -r "$SOURCELIST" ]; then
 
185
    REPOLINE=$(grep -E "^[[:space:]]*#[[:space:]]*$REPOCONFIG[[:space:]]*# disabled on upgrade to .*" "$SOURCELIST")
 
186
    if [ $? -eq 0 ]; then
 
187
      sed -i -e "s,^[[:space:]]*#[[:space:]]*\($REPOCONFIG\)[[:space:]]*# disabled on upgrade to .*,\1," \
 
188
        "$SOURCELIST"
 
189
      LOGGER=$(which logger 2> /dev/null)
 
190
      if [ "$LOGGER" ]; then
 
191
        "$LOGGER" -t "$0" "Reverted repository modification: $REPOLINE."
 
192
      fi
 
193
    fi
 
194
  fi
 
195
}
 
196
 
 
197
 
 
198
## MAIN ##
 
199
#DEFAULTS_FILE="/etc/default/google-talkplugin"
 
200
#if [ -r "$DEFAULTS_FILE" ]; then
 
201
#  . "$DEFAULTS_FILE"
 
202
#fi
 
203
 
 
204
#if [ "$repo_add_once" = "true" ]; then
 
205
#  install_key
 
206
#  create_sources_lists
 
207
#  RES=$?
 
208
#  # Sources creation succeeded, so stop trying.
 
209
#  if [ $RES -ne 2 ]; then
 
210
#    sed -i -e 's/[[:space:]]*repo_add_once=.*/repo_add_once="false"/' "$DEFAULTS_FILE"
 
211
#  fi
 
212
#else
 
213
update_bad_sources
 
214
#fi
 
215
 
 
216
#if [ "$repo_reenable_on_distupgrade" = "true" ]; then
 
217
#  handle_distro_upgrade
 
218
#fi