summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorScott Moser <smoser@brickies.net>2017-01-10 11:25:25 -0500
committerScott Moser <smoser@brickies.net>2017-01-10 11:25:25 -0500
commitdb8018ba7eed69c5a6fdbfdac7e69272e16db3c0 (patch)
tree053ff96595846cfe3a88151f1f2308b75410ec7f
parent5d9726742c22f4c80ce2f386d09c1bbcf4b67164 (diff)
downloadcloud-init-git-db8018ba7eed69c5a6fdbfdac7e69272e16db3c0.tar.gz
Import version 0.7.5-0ubuntu1ubuntu/0.7.5-0ubuntu1
Imported using git-import-dsc
-rw-r--r--debian/README.source50
-rw-r--r--debian/changelog1664
-rwxr-xr-xdebian/cherry-pick-rev44
-rw-r--r--debian/cloud-init.config78
-rw-r--r--debian/cloud-init.install9
-rw-r--r--debian/cloud-init.lintian-overrides3
-rw-r--r--debian/cloud-init.postinst155
-rw-r--r--debian/cloud-init.postrm17
-rw-r--r--debian/cloud-init.preinst170
-rw-r--r--debian/cloud-init.prerm6
-rw-r--r--debian/cloud-init.templates12
-rw-r--r--debian/compat1
-rw-r--r--debian/control61
-rw-r--r--debian/copyright51
-rw-r--r--debian/dirs5
-rw-r--r--debian/grub-legacy-ec2.install5
-rwxr-xr-xdebian/grub-legacy-ec2.kernel-postinst18
-rwxr-xr-xdebian/grub-legacy-ec2.kernel-postrm18
-rw-r--r--debian/grub-legacy-ec2.lintian-overrides6
-rw-r--r--debian/grub-legacy-ec2.postinst10
-rw-r--r--debian/grub-legacy-ec2.postrm17
-rw-r--r--debian/grub-legacy-ec2.preinst9
-rw-r--r--debian/grub-legacy-ec2.templates9
-rwxr-xr-xdebian/grub-set-default38
-rw-r--r--debian/grub-set-default-legacy-ec2141
-rw-r--r--debian/po/POTFILES.in1
-rw-r--r--debian/po/ca.po80
-rw-r--r--debian/po/cs.po89
-rw-r--r--debian/po/da.po86
-rw-r--r--debian/po/de.po92
-rw-r--r--debian/po/es.po105
-rw-r--r--debian/po/eu.po83
-rw-r--r--debian/po/fi.po79
-rw-r--r--debian/po/fr.po78
-rw-r--r--debian/po/gl.po80
-rw-r--r--debian/po/it.po81
-rw-r--r--debian/po/ja.po90
-rw-r--r--debian/po/nl.po95
-rw-r--r--debian/po/pl.po100
-rw-r--r--debian/po/pt.po82
-rw-r--r--debian/po/pt_BR.po89
-rw-r--r--debian/po/ru.po85
-rw-r--r--debian/po/sv.po82
-rw-r--r--debian/po/templates.pot80
-rw-r--r--debian/po/vi.po91
-rw-r--r--debian/pycompat1
-rwxr-xr-xdebian/rules31
-rw-r--r--debian/source/format1
-rwxr-xr-xdebian/update-grub-legacy-ec21598
-rw-r--r--debian/watch2
50 files changed, 5878 insertions, 0 deletions
diff --git a/debian/README.source b/debian/README.source
new file mode 100644
index 00000000..e6ea6fc5
--- /dev/null
+++ b/debian/README.source
@@ -0,0 +1,50 @@
+=== General Info ===
+Development packaging branch is at
+ lp:ubuntu/<suite>/cloud-init
+alternatively, if you're on the development release:
+ lp:ubuntu/cloud-init
+
+Patches in debian/patches are also stored applied in bzr.
+
+To cherry pick revisions 391 to tip from from trunk, do something like:
+ s=391; e=;
+ b=../trunk;
+ [ -n "${e}" ] || e=$(cd ${b} && bzr revno)
+ pfile=catchup-${s}${e:+-${e}}.patch
+ [ "$s" = "$e" ] && pfile=catchup-${s}.patch
+ ( cd ../trunk && bzr log -r$s..$e &&
+ bzr diff -p1 -r$(($s-1))..$e ) > ../$pfile.full
+ mkdir -p debian/patches
+ filterdiff --exclude "*/ChangeLog" < ../$pfile.full > debian/patches/$pfile
+ echo "$pfile" >> debian/patches/series
+ quilt push
+ quilt refresh
+ files="$(quilt files ${pfile}) debian/patches/series debian/patches/${pfile}"
+ files="$files .pc/${pfile} .pc/applied-patches"
+ bzr add $files
+
+ # now add an entry
+ dch --append "${pfile} (sync to $e)"
+ dch --edit # improve the entry
+ debcommit $files
+
+ ../$pfile.full will have the full diff. See 'ChangeLog' entries there
+ and debian/patches/$pfile for help writing debian/changelog entry
+
+You can set 'e' (end) to not go to tip.
+
+== Cherry pick single patch ==
+There is a utility in debian/patches named 'cherry-pick-revno' that will
+help to cherry pick a single commit from trunk.
+
+== New snapshot ==
+To import a new snapshot, do:
+
+ trunk="../trunk"
+ uver=$(cd "$trunk" && ./tools/read-version) # the *next* upstream version
+ revno=$(cd "$trunk" && bzr revno)
+ version=${uver}~bzr${revno}
+ tarball=cloud-init-${version}.tar.gz
+ bzr export --format=tgz --revision=${revno} "$tarball" "${trunk}"
+ bzr merge-upstream "$tarball" --version=${version}
+
diff --git a/debian/changelog b/debian/changelog
new file mode 100644
index 00000000..d2c71ba2
--- /dev/null
+++ b/debian/changelog
@@ -0,0 +1,1664 @@
+cloud-init (0.7.5-0ubuntu1) trusty; urgency=medium
+
+ * New upstream release.
+ * support base64 encoded user-data in OpenNebula, required
+ to allow arbitrary content in user-data (LP: #1300941)
+ * pep8 and pylint fixes
+
+ -- Scott Moser <smoser@ubuntu.com> Tue, 01 Apr 2014 14:39:03 -0400
+
+cloud-init (0.7.5~bzr970-0ubuntu1) trusty; urgency=medium
+
+ * New upstream snapshot.
+ * fix NoCloud and seedfrom on the kernel command line (LP: #1295223)
+
+ -- Scott Moser <smoser@ubuntu.com> Thu, 20 Mar 2014 12:35:58 -0400
+
+cloud-init (0.7.5~bzr969-0ubuntu1) trusty; urgency=medium
+
+ * New upstream snapshot.
+ * Azure: Reformat ephemeral disk if it got re-provisioned
+ by the cloud on any reboot (LP: #1292648)
+ * final_message: fix replacement of upper case keynames (LP: #1286164)
+ * seed_random: do not capture output. Correctly provide
+ environment variable RANDOM_SEED_FILE to command.
+ * CloudSigma: support base64 encoded user-data
+
+ -- Scott Moser <smoser@ubuntu.com> Wed, 19 Mar 2014 14:04:34 -0400
+
+cloud-init (0.7.5~bzr964-0ubuntu1) trusty; urgency=medium
+
+ * New upstream snapshot.
+ * SmartOS, AltCloud: disable running on arm systems due to bug
+ (LP: #1243287, #1285686) [Oleg Strikov]
+ * Allow running a command to seed random, default is 'pollinate -q'
+ (LP: #1286316) [Dustin Kirkland]
+ * Write status to /run/cloud-init/status.json for consumption by
+ other programs (LP: #1284439)
+ * fix output of network information to not include 'addr:' (LP: #1285185)
+
+ -- Scott Moser <smoser@ubuntu.com> Mon, 03 Mar 2014 16:59:27 -0500
+
+cloud-init (0.7.5~bzr952-0ubuntu1) trusty; urgency=medium
+
+ * New upstream snapshot.
+ * fix broken seed of DAtaSourceNoCloud via external disk.
+
+ -- Scott Moser <smoser@ubuntu.com> Tue, 18 Feb 2014 14:10:52 -0500
+
+cloud-init (0.7.5~bzr950-0ubuntu1) trusty; urgency=medium
+
+ * New upstream snapshot.
+ * support for vendor-data in NoCloud
+ * fix in is_ipv4 to accept IP addresses with a '0' in them.
+ * Azure: fix issue when stale data in /var/lib/waagent (LP: #1269626)
+ * skip config_modules that declare themselves only verified on a set of
+ distros. Add them to 'unverified_modules' list to run anyway.
+ * Add CloudSigma datasource [Kiril Vladimiroff]
+ * Add initial support for Gentoo and Arch distributions [Nate House]
+ * Add GCE datasource [Vaidas Jablonskis]
+ * Add native Openstack datasource which reads openstack metadata
+ rather than relying on EC2 data in openstack metadata service.
+
+ -- Scott Moser <smoser@ubuntu.com> Fri, 14 Feb 2014 14:39:56 -0500
+
+cloud-init (0.7.5~bzr933-0ubuntu1) trusty; urgency=medium
+
+ * debian/control: bump Standards-Version to 3.9.5
+ * debian/control: drop boto dependency no longer required in trunk.
+ * New upstream snapshot.
+ * ConfigDrive: consider partitions labelled correctly as possible sources.
+ * find root filesystem for resizing in cases where there is no initramfs
+ * removal of dependency on python-boto
+ * vendor-data support, and usage of that in Joyent datasource.
+ * change default output to be logged to /var/log/cloud-init-output.log
+ * SeLinuxGuard: Cast file path to string. (LP: #1260072)
+ * drop support for resizing via parted (LP: #1212492)
+ * SmartOS: changes to address changes in platform (LP: #1272115)
+ * FreeBSD support.
+
+ -- Scott Moser <smoser@ubuntu.com> Fri, 24 Jan 2014 22:41:57 -0500
+
+cloud-init (0.7.5~bzr902-0ubuntu1) trusty; urgency=medium
+
+ * debian/control: Build-Depend on python-jsonpatch as #717916 is now fixed.
+ * debian/control: Recommend eatmydata (LP: #1236531)
+ * New upstream snapshot.
+ * support invoking apt with 'eatmydata' (LP: #1236531)
+ * add a message in log about dynamic import failures
+ * New in '0.7.4' release.
+ * fix reading of mount information on kernels < 2.6.26 (LP: #1248625)
+ * SmartOS: change 'region' to 'datacenter_name' to address change
+ in data provided to instance (LP: #1249124)
+ * support calling 'add-apt-repository' for 'cloud-archive:' entries
+ (LP: #1244355)
+ * DataSourceAzure: fix incompatibility with python 2.6 (LP: #1232175)
+ * fix bug mounting first partition of a alias'd name. (LP: #1236594)
+ * SmartOS: fix bug with hostname due to trailing whitespace (LP: #1236445)
+ * fix creation of partitions on Azure (LP: #1233698)
+ * cc_growpart: respect /etc/growroot-disabled (LP: #1234331)
+ * ubuntu config: add default user to 'sudo' group (LP: #1228228)
+ * Fix usage of libselinux-python when selinux is disabled
+ * add OpenNebula datasource
+
+ -- Scott Moser <smoser@ubuntu.com> Tue, 17 Dec 2013 16:51:30 -0500
+
+cloud-init (0.7.3-0ubuntu2) saucy; urgency=low
+
+ * fix bug where a mount entry of 'ephemeral0' would only consider
+ the unpartitioned device, not also the first partition (LP: #1236594)
+
+ -- Scott Moser <smoser@ubuntu.com> Mon, 07 Oct 2013 20:16:02 -0400
+
+cloud-init (0.7.3-0ubuntu1) saucy; urgency=low
+
+ * New upstream release.
+ * Fix for SmartOS datasource when hostname is provided via dmi
+ data (LP: #1236445)
+
+ -- Scott Moser <smoser@ubuntu.com> Mon, 07 Oct 2013 14:49:56 -0400
+
+cloud-init (0.7.3~bzr884-0ubuntu1) saucy; urgency=low
+
+ * New upstream snapshot.
+ * allow disabling of growpart via file /etc/growroot-disabled
+ (LP: #1234331)
+ * add default user to sudo group (LP: #1228228)
+ * fix disk creation on azure (LP: #1233698)
+ * DatasourceSmartOS: allow availabiltity-zone to be fed from the
+ datasource via 'region' (which allows 'mirrors' and other things
+ to make use of it).
+
+ -- Scott Moser <smoser@ubuntu.com> Fri, 04 Oct 2013 21:08:07 -0400
+
+cloud-init (0.7.3~bzr879-0ubuntu1) saucy; urgency=low
+
+ * New upstream snapshot.
+ * fixes to disk_setup config module and enabling of partition
+ creation and filesystem creation on Azure.
+
+ -- Scott Moser <smoser@ubuntu.com> Fri, 27 Sep 2013 19:47:37 -0400
+
+cloud-init (0.7.3~bzr871-0ubuntu1) saucy; urgency=low
+
+ * New upstream snapshot.
+ * add 'disk_setup' config module for partitioning disks and
+ creating filesystems. (LP: #1218506)
+
+ -- Scott Moser <smoser@ubuntu.com> Fri, 20 Sep 2013 20:46:08 -0400
+
+cloud-init (0.7.3~bzr869-0ubuntu1) saucy; urgency=low
+
+ * depend on cloud-utils or cloud-guest-utils (LP: #1224003)
+ * New upstream snapshot.
+ * Add OpenNebula datasource.
+ * Support reading 'random_seed' from metadata and writing to /dev/urandom
+ * fix for bug in log_time.
+
+ -- Scott Moser <smoser@ubuntu.com> Wed, 11 Sep 2013 17:04:45 -0400
+
+cloud-init (0.7.3~bzr862-0ubuntu1) saucy; urgency=low
+
+ * New upstream snapshot.
+ * support base64 encoded data in the smart os datasource
+
+ -- Scott Moser <smoser@ubuntu.com> Thu, 29 Aug 2013 04:54:39 -0400
+
+cloud-init (0.7.3~bzr861-0ubuntu1) saucy; urgency=low
+
+ * New upstream snapshot.
+ * fix publishing hostname on azure (LP: #1214541)
+
+ -- Scott Moser <smoser@ubuntu.com> Tue, 20 Aug 2013 16:06:22 -0400
+
+cloud-init (0.7.3~bzr860-0ubuntu1) saucy; urgency=low
+
+ * New upstream snapshot.
+ * fix setting of password for a user on azure. (LP: #1212723)
+
+ -- Scott Moser <smoser@ubuntu.com> Thu, 15 Aug 2013 16:01:40 -0400
+
+cloud-init (0.7.3~bzr858-0ubuntu1) saucy; urgency=low
+
+ * New upstream snapshot.
+ * fix resizing of root partition by preferring the functional 'growpart'
+ support over the broken 'parted resizepart' support (LP: #1212444)
+ * add options for apt_ftp_proxy, apt_https_proxy and apt_config
+ (LP: #1057195)
+
+ -- Scott Moser <smoser@ubuntu.com> Wed, 14 Aug 2013 21:44:22 -0400
+
+cloud-init (0.7.3~bzr851-0ubuntu1) saucy; urgency=low
+
+ * New upstream snapshot.
+ * azure: do not wait for output of bouncing interface (ifdown; ifup)
+ as that waits on output of all ifupdown scripts to close all file
+ descriptors.
+
+ -- Scott Moser <smoser@ubuntu.com> Mon, 29 Jul 2013 12:21:08 -0400
+
+cloud-init (0.7.3~bzr850-0ubuntu1) saucy; urgency=low
+
+ * New upstream snapshot.
+ * fix bouncing of interface. environment was not being modified
+ so command invoked did not have access to 'interface'.
+ * debian/README.source: update to read upstream version from trunk
+
+ -- Scott Moser <smoser@ubuntu.com> Fri, 26 Jul 2013 14:34:02 -0400
+
+cloud-init (0.7.3~bzr849-0ubuntu2) saucy; urgency=low
+
+ * debian/control: fix bad dependency on python-jsonpatch
+ by build-depending on python-json-patch, so dh_python2
+ can find the right package (LP: #1205358).
+
+ -- Scott Moser <smoser@ubuntu.com> Fri, 26 Jul 2013 10:47:59 -0400
+
+cloud-init (0.7.3~bzr849-0ubuntu1) saucy; urgency=low
+
+ * New upstream snapshot.
+ * azure: support publishing hostname via bouncing interface (LP: #1202758)
+
+ -- Scott Moser <smoser@ubuntu.com> Thu, 25 Jul 2013 17:08:30 -0400
+
+cloud-init (0.7.3~bzr845-0ubuntu2) saucy; urgency=low
+
+ * debian/control: fix dependency python-json-patch.
+
+ -- Scott Moser <smoser@ubuntu.com> Wed, 24 Jul 2013 15:01:24 -0400
+
+cloud-init (0.7.3~bzr845-0ubuntu1) saucy; urgency=low
+
+ * Reads the currently set value in /etc/cloud/cloud.cfg.d/90_dpkg.cfg to
+ db_set the value of cloud-init/datasources. (Closes: #709773)
+ * New upstream snapshot.
+ * azure: use deployment-id rather than static instance-id (LP: #1204190)
+ * config-drive: make 'availability_zone' available. (LP: #1190431)
+ * finalize handlers even on error (LP: #1203368)
+ * azure: fix password based access (LP: #1201969)
+ * add smartos (Joyent cloud) datasource
+ * support patching cloud-config via jsonp (LP: #1200476)
+ * debian/control: add dependency on python-jsonp
+
+ -- Scott Moser <smoser@ubuntu.com> Wed, 24 Jul 2013 13:47:53 -0400
+
+cloud-init (0.7.3~bzr829-0ubuntu1) saucy; urgency=low
+
+ * New upstream snapshot.
+ * fix to upstart_job handler if version upstart is version 1.8.
+ * Azure datasource: allow userdata to be found in node named
+ 'UserData' or 'CustomData'
+
+ -- Scott Moser <smoser@ubuntu.com> Thu, 11 Jul 2013 10:20:03 -0400
+
+cloud-init (0.7.3~bzr826-0ubuntu2) saucy; urgency=low
+
+ * debian/cloud-init.templates: add 'Azure' datasource to list
+ of available datasources.
+
+ -- Scott Moser <smoser@ubuntu.com> Wed, 10 Jul 2013 16:31:48 -0400
+
+cloud-init (0.7.3~bzr826-0ubuntu1) saucy; urgency=low
+
+ * New upstream snapshot.
+ * Fix omnibus support (LP: #1182265)
+ * invoke 'initctl reload-configuration' on upstart jobs again
+ (LP: #1124384)
+ * Remove unowned files in /etc/apt/apt.conf.d/ after purge. (Closes #674237)
+
+ -- Scott Moser <smoser@ubuntu.com> Wed, 10 Jul 2013 13:35:59 -0400
+
+cloud-init (0.7.2-0ubuntu1) saucy; urgency=low
+
+ * New upstream release.
+ * fix merging routines to be backwards compatible (LP: #1180867)
+ * fix for python 2.6
+
+ -- Scott Moser <smoser@ubuntu.com> Wed, 05 Jun 2013 11:12:46 -0400
+
+cloud-init (0.7.2~bzr812-0ubuntu1) saucy; urgency=low
+
+ * New upstream snapshot.
+ * catch up with upstream, which is hopefully 0.7.2
+ * straighten out the merging routines
+ * fix a bug in Maas datasource
+
+ -- Scott Moser <smoser@ubuntu.com> Fri, 10 May 2013 17:53:49 -0400
+
+cloud-init (0.7.2~bzr809-0ubuntu1) raring; urgency=low
+
+ * New upstream snapshot.
+ * make apt-get invoke 'dist-upgrade' rather than 'upgrade' for
+ package_upgrade. (LP: #1164147)
+ * workaround 2.6 kernel issue that stopped blkid from showing /dev/sr0
+
+ -- Scott Moser <smoser@ubuntu.com> Thu, 11 Apr 2013 12:55:51 -0400
+
+cloud-init (0.7.2~bzr804-0ubuntu1) raring; urgency=low
+
+ * New upstream snapshot.
+ * use python-requests rather than urllib2 for http (LP: #1067888)
+ * handle failure of resizefs better. Specifically, do not show
+ warnings or stack trace in lxc (LP: #1160462)
+
+ -- Scott Moser <smoser@ubuntu.com> Wed, 27 Mar 2013 10:04:41 -0400
+
+cloud-init (0.7.2~bzr795-0ubuntu1) raring; urgency=low
+
+ * New upstream snapshot.
+ * documentation on write-files module (LP: #1111205)
+ * support for specifying package versions in package installs
+ * DataSourceNoCloud: allow specifyin user-data and meta-data in
+ the datasource config (LP: #1115833)
+ * work around bug in upstart for now (1124384)
+ * support resizing btrfs fileystems
+ * parse ssh keys more correctly (LP: #1136343)
+ * upstart/cloud-init-nonet.conf: handle sigterm gracefully (LP: #1015223)
+ * support growing partitions (LP: #1136936)
+ * use --force-unsafe-io for dpkg installations to improve speed
+ This is sane as it happens on instance initialization.
+ * more powerful and user-suppliable cloud-config merge mechanisms
+ (LP: #1023179)
+
+ -- Scott Moser <smoser@ubuntu.com> Thu, 07 Mar 2013 17:33:59 -0500
+
+cloud-init (0.7.1-0ubuntu5) raring; urgency=low
+
+ * catchup-751-760.patch (sync to 760)
+ * DataSourceConfigDrive: allow config-drive data to come from a
+ CD-ROM (LP: #1100545)
+ * Allow 'sr0' to be used as a source for mount config [Vlastimil Holer]
+ * do not log passwords provided via config (LP: #1096417)
+ * DataSourceCloudStack: Attempt to find the 'virtual router' as provided
+ from dhcp responses, rather than assuming it is the default route
+ (LP: #1089989) [Gerard Dethier]
+ in the CloudStack environment use virtual router rather than default route
+ * notify upstart after writing upstart jobs to support filesystems that
+ do not support inotify such as overlayfs (LP: #1080841)
+ * fix cloud-config 'lock_password' user setup (LP: #1096423)
+ * debian/README.source: minor improvements.
+
+ -- Scott Moser <smoser@ubuntu.com> Fri, 18 Jan 2013 10:12:34 -0500
+
+cloud-init (0.7.1-0ubuntu4) raring; urgency=low
+
+ * cherry pick relevant patches from trunk up to revision 750
+ * use short form of '--stderr' argument to logger for better cross
+ distro support (LP: #1083715)
+ * puppet: make installation configurable (LP: #1090205)
+ * chef: add omnibus installation method
+ * fix allowing cloud-config input via user-data to affect the
+ apt mirror selection (LP: #090482)
+
+ -- Scott Moser <smoser@ubuntu.com> Mon, 17 Dec 2012 10:48:23 -0500
+
+cloud-init (0.7.1-0ubuntu3) raring; urgency=low
+
+ * cherry pick relevant patches from trunk up to revision 745
+ * fix writing of sudoers when suders rule is a string rather than
+ an array (LP: #1079002)
+ * add trailing slash to sudoers files that are written
+ * fix resizefs module when 'noblock' was provided (LP: #1080985)
+ * make sure there is no blank line before cloud-init entry in
+ there are no blank lines in /etc/ca-certificates.conf (LP: #1077020)
+
+ -- Scott Moser <smoser@ubuntu.com> Mon, 03 Dec 2012 21:45:48 -0500
+
+cloud-init (0.7.1-0ubuntu2) raring; urgency=low
+
+ * debian/watch: add watch file
+ * add 'ubuntu' user to sudoers (LP: #1080717)
+ * set 'ubuntu' user shell to bash
+
+ -- Scott Moser <smoser@ubuntu.com> Mon, 19 Nov 2012 09:38:29 -0500
+
+cloud-init (0.7.1-0ubuntu1) raring; urgency=low
+
+ * New upstream release.
+ * landscape: install landscape-client package if not installed.
+ only take action if cloud-config is present (LP: #1066115)
+ * landscape: restart landscape after install or config (LP: #1070345)
+ * multipart/archive: do not fail on unknown headers in multipart
+ mime or cloud-archive config (LP: #1065116).
+ * tools/Z99-cloud-locale-test.sh: avoid warning when user's shell is
+ zsh (LP: #1073077)
+ * fix stack trace when unknown user-data input had unicode (LP: #1075756)
+ * split 'apt-update-upgrade' config module into 'apt-configure' and
+ 'package-update-upgrade-install'. The 'package-update-upgrade-install'
+ will be a cross distro module.
+ * fix bug where cloud-config from user-data could not affect system_info
+ settings (LP: #1076811)
+ * add yum_add_repo configuration module for adding additional yum repos
+ * fix public key importing with config-drive-v2 datasource (LP: #1077700)
+ * handle renaming and fixing up of marker names (LP: #1075980)
+ this relieves that burden from the distro/packaging.
+ * group config: fix how group members weren't being translated correctly
+ when the group: [member, member...] format was used (LP: #1077245)
+ * work around an issue with boto > 0.6.0 that lazy loaded the return from
+ get_instance_metadata(). This resulted in failure for cloud-init to
+ install ssh keys. (LP: #1068801)
+ * add power_state_change config module for shutting down stystem after
+ cloud-init finishes. (LP: #1064665)
+
+
+ -- Scott Moser <smoser@ubuntu.com> Wed, 14 Nov 2012 15:18:50 -0500
+
+cloud-init (0.7.0-0ubuntu2) quantal; urgency=low
+
+ * config-drive: copy metadata entry 'hostname' to 'local-hostname' to fix
+ config modules (set_hostname) will function as expected (LP: #1061964)
+
+ -- Scott Moser <smoser@ubuntu.com> Fri, 05 Oct 2012 11:45:15 -0400
+
+cloud-init (0.7.0-0ubuntu1) quantal; urgency=low
+
+ * New upstream release.
+ * minor change to oauth header fix (LP: #978127).
+ * incorporation of 0.7.0 upstream release.
+
+ -- Scott Moser <smoser@ubuntu.com> Mon, 01 Oct 2012 14:19:46 -0400
+
+cloud-init (0.7.0~bzr677-0ubuntu1) quantal; urgency=low
+
+ * add CloudStack to DataSources listed by dpkg-reconfigure (LP: #1002155)
+ * New upstream snapshot.
+ * 0440 permissions on /etc/sudoers.d files rather than 0644
+ * get host ssh keys to the console (LP: #1055688)
+ * MAAS DataSource adjust timestamp in oauth header to one based on the
+ timestamp in the response of a 403. This accounts for a bad local
+ clock. (LP: #978127)
+ * re-start the salt daemon rather than start to ensure config changes
+ are taken.
+ * allow for python unicode types in yaml that is loaded.
+ * cleanup in how config modules get at users and groups.
+
+ -- Scott Moser <smoser@ubuntu.com> Sun, 30 Sep 2012 14:29:04 -0400
+
+cloud-init (0.7.0~bzr659-0ubuntu2) quantal; urgency=low
+
+ * debian/cloud-init.templates: fix bad template file (LP: #1053239)
+
+ -- Scott Moser <smoser@ubuntu.com> Thu, 20 Sep 2012 09:18:20 -0400
+
+cloud-init (0.7.0~bzr659-0ubuntu1) quantal; urgency=low
+
+ * New upstream snapshot.
+ * add signal handlers to more cleanly exit
+ * add logging fallback in case logging fails
+ * documentation fix for landscape config (LP: #1042764)
+ * do not write a comment in /etc/hostname (LP: #1052664)
+ * fix incorrect ubuntu mirrors for 'ports' arches [Robbie Basak]
+ * fix generation of hostname based on ip address in datasource
+ (LP: #1050962) [Andy Grimm]
+ * remove 'start networking' from cloud-init-nonet and replace it
+ with container specific fixes (LP: #1031065)
+ * fix landscape configuration so client will run (LP: #1042758)
+ * enable all available datasources (adding AltCloud and None)
+ * fix bug where user data scripts re-ran on upgrade from 10.04 versions
+ (LP: #1049146)
+
+ -- Scott Moser <smoser@ubuntu.com> Wed, 19 Sep 2012 22:08:51 -0400
+
+cloud-init (0.7.0~bzr644-0ubuntu1) quantal; urgency=low
+
+ * New upstream snapshot.
+ * fix cloud-archives (LP: #1044594)
+ * fix set_passwords for usergroups as a list (LP: #1044553)
+ * fix 'failed to setup apt-pipelining' warning on install due to
+ old 0.6 style usage of cloud-init.
+
+ -- Scott Moser <smoser@ubuntu.com> Sat, 01 Sep 2012 20:11:34 -0400
+
+cloud-init (0.7.0~bzr642-0ubuntu1) quantal; urgency=low
+
+ * New upstream snapshot.
+ * support using launch-index (ami-launch-index) (LP: #1023177)
+ * usergroup related fixes (LP: #1041384, #1044044, #1044508)
+
+ -- Scott Moser <smoser@ubuntu.com> Fri, 31 Aug 2012 17:04:06 -0400
+
+cloud-init (0.7.0~bzr639-0ubuntu1) quantal; urgency=low
+
+ * New upstream snapshot.
+ * fix broken ssh_import_id, which would give stack trace
+
+ -- Scott Moser <smoser@ubuntu.com> Tue, 28 Aug 2012 14:09:47 -0400
+
+cloud-init (0.7.0~bzr637-0ubuntu1) quantal; urgency=low
+
+ * New upstream snapshot.
+ * fix issue with public keys not being added to 'ubuntu' user
+ since the user was not created yet. (LP: #1042459)
+ * only search the top level domain 'instance-data' for the EC2
+ metadata service, to avoid misconfiguration or unexpected results
+ by searching search entries in /etc/resolv.conf (LP: #1040200)
+
+ -- Scott Moser <smoser@ubuntu.com> Mon, 27 Aug 2012 20:27:06 -0400
+
+cloud-init (0.7.0~bzr634-0ubuntu1) quantal; urgency=low
+
+ * New upstream snapshot.
+ * support for datasource from config-drive-v2 (LP: #1037567)
+
+ -- Scott Moser <smoser@ubuntu.com> Fri, 24 Aug 2012 17:24:26 -0400
+
+cloud-init (0.7.0~bzr633-0ubuntu1) quantal; urgency=low
+
+ * New upstream snapshot.
+ * support creating users on boot. remove requirement for a 'ubuntu'
+ user to be previously present in image. (LP: #1028503)
+ * add experimental apt_reboot_if_required flag to reboot if necessary
+ after upgrade or package install (LP: #1038108)
+ * improve mirror selection for a distro:
+ * support arm mirrors (LP: #1028501)
+ * support seeding security mirror (LP: #1006963)
+ * support dns mirrors including availability-zone reference
+ (LP: #1037727)
+ * include a "None" datasource so items like ssh host key generation
+ occur if there is no other metadata service. (LP: #906669)
+ * print authorized_keys for users to the console (LP: #1010582)
+ * Add RHEVm and vSphere support as datasource AltCloud [Joseph VLcek]
+
+ -- Scott Moser <smoser@ubuntu.com> Thu, 23 Aug 2012 01:06:34 -0400
+
+cloud-init (0.7.0~bzr614-0ubuntu1) quantal; urgency=low
+
+ * New upstream snapshot.
+ * disable searching for 'ubuntu-mirror' in local dns to find a
+ local mirror (LP: #974509)
+ * emit the cloud-config event (LP: #1028674)
+ * write timestamps to console on reboot and shutdown (LP: #1018554)
+
+ -- Scott Moser <smoser@ubuntu.com> Fri, 03 Aug 2012 14:55:37 -0400
+
+cloud-init (0.7.0~bzr608-0ubuntu1) quantal; urgency=low
+
+ * New upstream snapshot.
+ * fix issue with EC2 datasource that prevented /mnt from being mounted.
+
+ -- Scott Moser <smoser@ubuntu.com> Mon, 16 Jul 2012 16:49:55 -0400
+
+cloud-init (0.7.0~bzr604-0ubuntu1) quantal; urgency=low
+
+ * New upstream snapshot.
+ * add cc_write_file for injecting files via cloud-config (LP: #1012854)
+ * fix issue with empty user data
+ * remove some un-needed warnings to console output in DataSourceOVF
+ * allow user-data scripts output through to the console
+
+ -- Scott Moser <smoser@ubuntu.com> Thu, 12 Jul 2012 16:11:01 -0400
+
+cloud-init (0.7.0~bzr583-0ubuntu1) quantal; urgency=low
+
+ * New upstream snapshot.
+ * debian/control: wrap-and-sort
+ * debian/control: actually depend on software-properties-common
+ * debian/control: depend on python-cheetah again instead of python-tempita
+
+ -- Scott Moser <smoser@ubuntu.com> Mon, 09 Jul 2012 17:41:22 -0400
+
+cloud-init (0.7.0~bzr564-0ubuntu2) quantal; urgency=low
+
+ * debian/control: Build-Depends on python-setuptools (LP: #1022101)
+
+ -- Angel Abad <angelabad@ubuntu.com> Sat, 07 Jul 2012 18:43:05 +0200
+
+cloud-init (0.7.0~bzr564-0ubuntu1) quantal; urgency=low
+
+ * New upstream snapshot.
+ Thanks to Joshua Harlow for hard work.
+ * depend on software-properties-common rather than
+ python-software-properties (LP: #1021418)
+
+ -- Scott Moser <smoser@ubuntu.com> Fri, 06 Jul 2012 17:31:01 -0400
+
+cloud-init (0.6.3-0ubuntu3) quantal; urgency=low
+
+ * grub-legacy-ec2: add missing dependency on ucf (LP: #960336).
+
+ -- Robie Basak <robie.basak@ubuntu.com> Sun, 24 Jun 2012 05:10:13 +0100
+
+cloud-init (0.6.3-0ubuntu2) quantal; urgency=high
+
+ * Added -generic to Xen kernels list since -virtual has been dropped with
+ Quantal. (LP: #1005551)
+
+ -- Ben Howard <ben.howard@ubuntu.com> Tue, 29 May 2012 12:59:01 -0600
+
+cloud-init (0.6.3-0ubuntu1) precise; urgency=low
+
+ * New upstream release.
+ * improve chef examples for working configurations on 11.10 and 12.04
+ [Lorin Hochstein] (LP: #960564)
+ * fix bug in landscape module if /etc/landscape did not exist
+ (LP: #978329)
+
+ -- Scott Moser <smoser@ubuntu.com> Wed, 11 Apr 2012 00:05:00 -0400
+
+cloud-init (0.6.3~bzr554-0ubuntu1) precise; urgency=low
+
+ * New upstream snapshot.
+ * Fix bug in Chef support that required 'validation_cert' (LP: #960547)
+ * Provide user-friendly message when a user ssh's in with an invalid
+ locale (LP: #960547)
+ * Support reading a url reference to cloud-config from the kernel
+ command line.
+
+ -- Scott Moser <smoser@ubuntu.com> Thu, 05 Apr 2012 01:24:42 -0400
+
+cloud-init (0.6.3~bzr551-0ubuntu1) precise; urgency=low
+
+ * New upstream snapshot.
+ * support running resize2fs in the background (default=off) (LP: #961226)
+
+ -- Scott Moser <smoser@ubuntu.com> Thu, 22 Mar 2012 14:33:59 -0400
+
+cloud-init (0.6.3~bzr548-0ubuntu1) precise; urgency=low
+
+ * New upstream snapshot.
+ * If public-keys is a string, split it into multiple keys on newline
+ This specifically helps the MAAS data source, and should not negatively
+ affect others.
+
+ -- Scott Moser <smoser@ubuntu.com> Mon, 19 Mar 2012 13:50:50 -0400
+
+cloud-init (0.6.3~bzr547-0ubuntu1) precise; urgency=low
+
+ * New upstream snapshot.
+ * rename DataSourceMaaS to DataSourceMAAS.
+ * support public-keys in DataSourceMAAS
+ * Warn in user-data processing on non-multipart, non-handled data
+ * CloudStack data source added (not enabled by default)
+ * fix bug in cloud-init.postinst where the name used was wrong
+ causing config-apt-pipelining to run more than intended
+
+ -- Scott Moser <smoser@ubuntu.com> Fri, 16 Mar 2012 14:12:38 -0400
+
+cloud-init (0.6.3~bzr539-0ubuntu3) precise; urgency=low
+
+ * make maas config file only readable by root (LP: #954721)
+
+ -- Scott Moser <smoser@ubuntu.com> Wed, 14 Mar 2012 01:19:32 -0400
+
+cloud-init (0.6.3~bzr539-0ubuntu2) precise; urgency=low
+
+ [Cosmin Luta]
+ * add dependency on python-oauth (LP: #953915)
+
+ -- Scott Moser <smoser@ubuntu.com> Tue, 13 Mar 2012 11:36:11 -0400
+
+cloud-init (0.6.3~bzr539-0ubuntu1) precise; urgency=low
+
+ * New upstream snapshot.
+ * add ability to configure Acquire::http::Pipeline-Depth via
+ cloud-config setting 'apt_pipelining' (LP: #942061)
+ * if cloud-config settings removed default certificats
+ (remove-defaults), then seed package ca-certificates to not
+ install new ones on upgrade.
+ * run-parts now uses internal implementation rather than
+ separate command.
+ * add MaaS datasource (LP: #942061)
+ * debian/cloud-init.postinst: address population of apt_pipeline
+ setting on installation.
+ * debian/cloud-init.postinst: support configuring cloud-init
+ maas datasource via preseed values cloud-init/maas-metadata-url and
+ cloud-init/maas-credentials. (LP: #942061)
+ * debian/cloud-init.postinst: support for (LP: #924375)
+
+ -- Scott Moser <smoser@ubuntu.com> Fri, 09 Mar 2012 16:37:01 -0500
+
+cloud-init (0.6.3~bzr530-0ubuntu1) precise; urgency=low
+
+ * New upstream snapshot.
+ - fix DataSourceNoCloud seeded from local or cmdline (LP: #942695)
+ - change 'islxc' to 'iscontainer' and use 'running-in-container' utility
+ from upstart rather than 'lxc-is-container' (LP: #941955)
+ - Do not fail on bad part handlers, instead catch error and log
+
+ -- Scott Moser <smoser@ubuntu.com> Tue, 28 Feb 2012 19:15:19 -0500
+
+cloud-init (0.6.3~bzr527-0ubuntu1) precise; urgency=low
+
+ * New upstream snapshot.
+ - exit 0 in cloud-init if no metadata is found (nothing to do)
+ - documentation improvements
+ - support network config in DataSourceNoCloud
+
+ -- Scott Moser <smoser@ubuntu.com> Fri, 17 Feb 2012 17:11:50 -0500
+
+cloud-init (0.6.3~bzr519-0ubuntu1) precise; urgency=low
+
+ * New upstream snapshot.
+ - [Mike Milner] add support for managing CA Certificates (LP: #915232)
+ - in ci-info lines, use '.' to for empty field for easier machine reading
+ - support empty lines in "#include" files (LP: #923043)
+ - [Jef Baeur] support configuration of salt minions Bauer) (LP: #927795)
+ - DataSourceOVF: only search for OVF data on ISO9660 filesystems (LP: #898373)
+ - DataSourceConfigDrive: support getting data from openstack config drive
+ (LP: #857378)
+ - [Juerg Haefliger] formating and pylint cleanups
+ * increase timeouts for initial config check for metadata service
+ to address slow metadata service in openstack
+ * add awareness of ConfigDrive data source
+
+ -- Scott Moser <smoser@ubuntu.com> Thu, 16 Feb 2012 17:27:05 -0500
+
+cloud-init (0.6.3~bzr502-0ubuntu1) precise; urgency=low
+
+ * New upstream snapshot.
+ - [Mike Milner] add test case framework (LP: #890851)
+ - [Juerg Haefliger] fix pylint warnings (LP: #914739)
+ - fix regression where ec2 mirrors were not selected (LP: #915282)
+
+ -- Scott Moser <smoser@ubuntu.com> Thu, 12 Jan 2012 17:56:52 +0100
+
+cloud-init (0.6.3~bzr497-0ubuntu1) precise; urgency=low
+
+ * New upstream snapshot.
+ - cloud-config support for configuring apt-proxy
+ - selection of local mirror based on presense of 'ubuntu-mirror' dns
+ entry in local domain. (LP: #897688)
+ - DataSourceEc2: more resilliant to slow metadata service (LP: #894279)
+ - close stdin in all programs launched by cloud-init (LP: #903993)
+ - revert management of /etc/hosts to 0.6.1 style (LP: #890501, LP: #871966)
+ - write full ssh keys to console for easy machine consumption (LP: #893400)
+ - put INSTANCE_ID environment variable in bootcmd scripts
+ - add 'cloud-init-per' script for easily running things with a given freq
+ (this replaced cloud-init-run-module)
+ - support configuration of landscape-client via cloud-config (LP: #857366)
+ - part-handlers now get base64 decoded content rather than 2xbase64 encoded
+ in the payload parameter. (LP: #874342)
+
+ -- Scott Moser <smoser@ubuntu.com> Thu, 22 Dec 2011 04:07:38 -0500
+
+cloud-init (0.6.2-0ubuntu2) precise; urgency=low
+
+ * Build using dh_python2. LP: #904248.
+ * debian/rules: Explicitly set DEB_PYTHON2_MODULE_PACKAGES = cloud-init.
+
+ -- Matthias Klose <doko@ubuntu.com> Sat, 17 Dec 2011 21:08:23 +0000
+
+cloud-init (0.6.2-0ubuntu1) precise; urgency=low
+
+ * New upstream release
+
+ -- Scott Moser <smoser@ubuntu.com> Thu, 27 Oct 2011 23:05:15 -0400
+
+cloud-init (0.6.1-0ubuntu20) oneiric; urgency=low
+
+ * fix broken path if local-hostname was not in metadata (LP: #857380)
+ * redirect output of 'start networking' in 'cloud-init-nonet' to /dev/null
+ * include GPLv3 in source tree
+
+ -- Scott Moser <smoser@ubuntu.com> Fri, 23 Sep 2011 09:24:27 -0400
+
+cloud-init (0.6.1-0ubuntu19) oneiric; urgency=low
+
+ * If local-hostname is not in meta-data, attempt to look up hostname in
+ an alias in /etc/hosts. This will avoid setting domain portion of fqdn
+ to 'localdomain' in some cases (LP: #850206).
+
+ -- Scott Moser <smoser@ubuntu.com> Wed, 14 Sep 2011 15:15:00 -0400
+
+cloud-init (0.6.1-0ubuntu18) oneiric; urgency=low
+
+ * minor documentation improvement.
+
+ [Mike Moulton, Avishai Ish-Shalom]
+ * Chef support fixes. support for environment and initial attr (LP: #845208)
+
+ -- Scott Moser <smoser@ubuntu.com> Tue, 13 Sep 2011 17:02:48 -0400
+
+cloud-init (0.6.1-0ubuntu17) oneiric; urgency=low
+
+ * fix issues with chef (LP: #845161)
+ * be more forgiving on metadata for public-keys (LP: #845155)
+
+ -- Scott Moser <smoser@ubuntu.com> Fri, 09 Sep 2011 14:19:03 -0700
+
+cloud-init (0.6.1-0ubuntu16) oneiric; urgency=low
+
+ * catch up with trunk at revision 439
+ * warn on failure to set hostname (LP: #832175)
+ * properly wait for all static interfaces to be up before
+ cloud-init runs (depends on fix in LP:# 838968).
+ * in DataSources NoCloud and OVF, do not set hostname to the
+ static value 'ubuntuhost' if local-hostname is not in metadata
+ (LP: #838280)
+ * improve the way ssh_authorized_keys is updated, so that the
+ values given will be used. (LP: #434076, LP: #833499)
+ * cloud-init-notnet.conf: minor changes to config
+
+ -- Scott Moser <smoser@ubuntu.com> Thu, 01 Sep 2011 21:14:09 -0400
+
+cloud-init (0.6.1-0ubuntu15) oneiric; urgency=low
+
+ * catch up with trunk at revision 431
+ * add network debug info to console when cloud-init runs (LP: #828186)
+ * fix issue where subprocesses (apt-add-repository) where given
+ the console and would attempt to prompt user and hang boot (LP: #831505)
+ * add awareness of ecdsa to cc_ssh
+
+ -- Scott Moser <smoser@ubuntu.com> Tue, 23 Aug 2011 00:01:01 -0400
+
+cloud-init (0.6.1-0ubuntu14) oneiric; urgency=low
+
+ * change the handling of user-data (LP: #810044)
+ * boothooks will now run more than once as they were intended
+ * cloud-config and user-scripts will be updated from user data every boot
+ * Add a second type of part-handler that will be called on every boot
+ * fix bad handling of /etc/hosts if manage_etc_hosts was false
+
+ -- Scott Moser <smoser@ubuntu.com> Mon, 08 Aug 2011 12:46:56 -0500
+
+cloud-init (0.6.1-0ubuntu13) oneiric; urgency=low
+
+ * do not install 92-uec-upgrade-available as a motd hook. This file was
+ installed but did not do anything since updates-check was removed.
+ * support multiple staticly configured network devices, as long as
+ all of them come up early (LP: #810044)
+
+ [Marc Cluet]
+ * add support for passing mcollective keys via cloud-config
+ * add support for 'include-once' type. include-once urls are only
+ retrieved once-per-instance rather than on every boot.
+
+ -- Scott Moser <smoser@ubuntu.com> Mon, 01 Aug 2011 16:45:40 -0400
+
+cloud-init (0.6.1-0ubuntu12) oneiric; urgency=low
+
+ * do not give trace on failure to resize in lxc container (LP: #800856)
+ * increase the timeout on url gets for "seedfrom" values (LP: #812646)
+ * do not write entries for ephemeral0 on t1.micro (LP: #744019)
+
+ [Adam Gandalman]
+ * improve the updating of /etc/hosts with correct fqdn when possible
+ (LP: #812539)
+
+ [Avishai Ish-Shalom]
+ * add chef support (cloudinit/CloudConfig/cc_chef.py) (LP: #798844)
+
+ -- Scott Moser <smoser@ubuntu.com> Thu, 21 Jul 2011 05:51:03 -0400
+
+cloud-init (0.6.1-0ubuntu11) oneiric; urgency=low
+
+ [Marc Cluet]
+ * sanitize hosts file for system's hostname to 127.0.1.1 (LP: #802637)
+
+ -- Scott Moser <smoser@ubuntu.com> Thu, 30 Jun 2011 14:12:47 -0400
+
+cloud-init (0.6.1-0ubuntu10) oneiric; urgency=low
+
+ * sync with trunk (rev 405)
+ * fix cloud-init in ubuntu lxc containers (LP: #800824)
+
+ -- Scott Moser <smoser@ubuntu.com> Tue, 28 Jun 2011 06:42:45 -0400
+
+cloud-init (0.6.1-0ubuntu9) oneiric; urgency=low
+
+ * sync with trunk (rev 404)
+ * make metadata urls configurable, to support eucalyptus in
+ STATIC or SYSTEM modes (LP: #761847)
+ * support disabling byobu in cloud-config (LP: #797336)
+ * guarantee that ssh_config runs before sshd starts (LP: #781101)
+ * make prefix for keys added to /root/.ssh/authorized_keys configurable
+ and add 'no-port-forwarding,no-agent-forwarding,no-X11-forwarding'
+ to the default (LP: #798505)
+ * make 'cloud-config ready' command configurable (LP: #785551)
+ * make fstab fields used to 'fill in' shorthand mount entries configurable
+ (LP: #785542)
+ * read sshd_config to properly get path for authorized_keys (LP: #731849)
+
+ -- Scott Moser <smoser@ubuntu.com> Fri, 17 Jun 2011 12:18:34 -0400
+
+cloud-init (0.6.1-0ubuntu8) natty; urgency=low
+
+ * instead of including /boot/grub, create it in postinst
+ of grub-legacy-ec2.
+
+ -- Scott Moser <smoser@ubuntu.com> Fri, 15 Apr 2011 13:01:17 -0400
+
+cloud-init (0.6.1-0ubuntu7) natty; urgency=low
+
+ * grub-legacy-ec2: add /boot/grub directory so installation does
+ not depend on it already existing (LP: #759885)
+
+ -- Scott Moser <smoser@ubuntu.com> Wed, 13 Apr 2011 11:03:04 -0400
+
+cloud-init (0.6.1-0ubuntu6) natty; urgency=low
+
+ * avoid upgrade prompt for grub-pc when devices are named xvdX (LP: #752361)
+ * catchup to trunk cloud-init (rev 395)
+
+ -- Scott Moser <smoser@ubuntu.com> Wed, 06 Apr 2011 06:46:55 -0400
+
+cloud-init (0.6.1-0ubuntu5) natty; urgency=low
+
+ * fix --purge of grub-legacy-ec2 package (LP: #749444)
+ * catchup to trunk cloud-init (rev 394)
+ * support user-data formated in dos format by converting to unix for
+ user-scripts, boothooks, and upstart jobs (LP: #744965)
+ * removal of some debug code, minor documentation fix
+
+ -- Scott Moser <smoser@ubuntu.com> Mon, 04 Apr 2011 13:20:27 -0400
+
+cloud-init (0.6.1-0ubuntu4) natty; urgency=low
+
+ * catch up to trunk cloud-init (rev 389).
+ * fix bug in part-handler code, that broke part handlers (LP: #739694)
+ * fix sporadic resizefs failure (LP: #726938)
+
+ -- Scott Moser <smoser@ubuntu.com> Mon, 21 Mar 2011 22:06:59 -0400
+
+cloud-init (0.6.1-0ubuntu3) natty; urgency=low
+
+ * catch up to trunk cloud-init (rev 385).
+ * attempt to install packages on failed apt-get update (LP: #728167)
+ * enabled timezone and mcollective cloud-config plugins
+
+ -- Scott Moser <smoser@ubuntu.com> Fri, 04 Mar 2011 21:17:21 -0500
+
+cloud-init (0.6.1-0ubuntu2) natty; urgency=low
+
+ * grub-legacy-ec2: Use dpkg-query --control-path instead of hard-coding a
+ path to debconf templates file, for compatibility with multiarch.
+
+ -- Scott Moser <smoser@ubuntu.com> Tue, 01 Mar 2011 23:23:55 -0500
+
+cloud-init (0.6.1-0ubuntu1) natty; urgency=low
+
+ * New upstream release.
+ * fix for puppet configuration options (LP: #709946) [Ryan Lane]
+ * fix pickling of DataSource, which broke seeding.
+ * turn resize_rootfs default to True
+ * avoid mounts in DataSourceOVF if 'read' on device fails
+ 'mount /dev/sr0' for an empty virtual cdrom device was taking 18 seconds
+ * add 'manual_cache_clean' option to select manual cleaning of
+ the /var/lib/cloud/instance/ link, for a data source that might
+ not be present on every boot
+ * make DataSourceEc2 retries and timeout configurable
+ * add 'bootcmd' like 'runcmd' to cloud-config syntax for running things early
+ * move from '#opt_include' in config file format to conf_d.
+ now local config files should live in /etc/cloud/cloud.cfg.d/
+ * move /etc/cloud/distro.cfg to /etc/cloud/cloud.cfg.d/90_dpkg.cfg
+ * allow /etc/hosts to be written from hosts.tmpl. which allows
+ getting local-hostname into /etc/hosts (LP: #720440)
+ * better handle startup if there is no eth0 (LP: #714807)
+ * update rather than append in puppet config [Marc Cluet]
+ * add cloud-config for mcollective [Marc Cluet]
+
+ -- Scott Moser <smoser@ubuntu.com> Sat, 19 Feb 2011 01:16:10 -0500
+
+cloud-init (0.6.0-0ubuntu4) natty; urgency=low
+
+ * fix running of user scripts (LP: #711480) (cherry pick 344)
+ * fix 2 lintian warnings
+
+ -- Scott Moser <smoser@ubuntu.com> Tue, 01 Feb 2011 16:15:30 -0500
+
+cloud-init (0.6.0-0ubuntu3) natty; urgency=low
+
+ * make a better attempt at deciding if DataSourceEc2 should be used
+ on first install or upgrade
+ * fix behavior if def_log_file is empty in cloud-config (cherry pick 333)
+ * improve comment strings in rsyslog config (cherry pick 334)
+ * do not package cloud-init query (cherry pick 335)
+ * add previous-instance-id and previous-datasource to cloud/data
+ and cloud/instance/datasource files (cherry pick 337)
+ * allow setting of passwords and enabling/disabling ssh password auth
+ via cloud-config (cherry pick 338)
+
+ -- Scott Moser <smoser@ubuntu.com> Mon, 31 Jan 2011 12:48:39 -0500
+
+cloud-init (0.6.0-0ubuntu2) natty; urgency=low
+
+ * add a debian/README.source file
+ * fix bug in fixing permission on /var/log/cloud-init.log (cherry pick)
+ * remove dependency on update-motd as updates-check was removed
+ * fix failure on cloud-init package purge
+ * add configuration of DataSources via debconf. Default to not searching
+ Ec2. (LP: #635188)
+ * fix naming of pre-processed (now user-data.txt.i) (cherry pick)
+ * upgrade existing content in /var/lib/cloud to 0.6.x format
+
+ -- Scott Moser <smoser@ubuntu.com> Thu, 27 Jan 2011 16:32:44 -0500
+
+cloud-init (0.6.0-0ubuntu1) natty; urgency=low
+
+ * New upstream release.
+ * fix permissions on cloud-init.log so syslog can write to it (LP: ##704509)
+ * rework of /var/lib/cloud layout
+ * remove updates-check (LP: #653220)
+ * support resizing root partition on first boot (enabled by default)
+ * added cloud-config options for setting hostname, phone_home
+ * indicate "all the way up" with message to console and file creation
+ in /var/lib/cloud/instance/ (LP: #653271)
+ * write ssh keys to console late in boot to ensure they're in console buffer
+ * add support for redirecting output of cloud-init, cloud-config,
+ cloud-final via the config file, or user data config file
+ * add support for posting data about the instance to a url (phone_home)
+ * add minimal OVF transport (iso) support
+ * make DataSources that are attempted dynamic and configurable from
+ config. config option 'cloud_type' replaced by 'datasource_list'
+ * add 'timezone' option to cloud-config (LP: #645458)
+ * Added an additional archive format, that can be used for multi-part
+ input to cloud-init. This may be more user friendly then mime-multipart
+ (LP: #641504)
+ * add support for reading Rightscale style user data (LP: #668400)
+ * make the message on 'disable_root' more clear (LP: #672417)
+ * do not require public key if private is given in ssh cloud-config
+ (LP: #648905)
+
+ -- Scott Moser <smoser@ubuntu.com> Wed, 26 Jan 2011 17:28:36 -0500
+
+cloud-init (0.5.15-0ubuntu4) natty; urgency=low
+
+ * Rebuild with python 2.7 as the python default.
+
+ -- Matthias Klose <doko@ubuntu.com> Wed, 08 Dec 2010 15:01:36 +0000
+
+cloud-init (0.5.15-0ubuntu3) maverick; urgency=low
+
+ * do not use ec2 ubuntu archive if instance is VPC (LP: #615545)
+
+ -- Scott Moser <smoser@ubuntu.com> Thu, 16 Sep 2010 04:28:55 -0400
+
+cloud-init (0.5.15-0ubuntu2) maverick; urgency=low
+
+ * grub-legacy-ec2: boot with console=hvc0 (LP: #606373)
+
+ -- Scott Moser <smoser@ubuntu.com> Wed, 15 Sep 2010 16:41:48 -0400
+
+cloud-init (0.5.15-0ubuntu1) maverick; urgency=low
+
+ * New upstream release.
+ * fix /etc/fstab cloudconfig entries for t1.micro and
+ change default fstab values for ephemeral0 to nobootwait (LP: #634102)
+ * grub-legacy-ec2: do not write chainload for grub2 to menu.lst
+ (LP: #627451)
+ * seed grub-pc correctly so update-grub runs on ec2 or uec(LP: #623609)
+
+ -- Scott Moser <smoser@ubuntu.com> Sun, 12 Sep 2010 15:23:39 -0400
+
+cloud-init (0.5.14-0ubuntu5) maverick; urgency=low
+
+ * add missing imports for cc_puppet (LP: #632744)
+ * append to apt_sources files rather than truncating (LP: #627597)
+ * get double commented lines into sources.list (LP: #627439)
+
+ -- Scott Moser <smoser@ubuntu.com> Wed, 08 Sep 2010 10:31:58 -0400
+
+cloud-init (0.5.14-0ubuntu4) maverick; urgency=low
+
+ * add commented out entries for partner, backports, and multiverse
+ (LP: #620572)
+
+ -- Scott Moser <smoser@ubuntu.com> Thu, 26 Aug 2010 16:44:48 -0400
+
+cloud-init (0.5.14-0ubuntu3) maverick; urgency=low
+
+ * fix syntax error in cloudinit/util.py (failed installation)
+
+ -- Scott Moser <smoser@ubuntu.com> Tue, 17 Aug 2010 22:22:06 -0400
+
+cloud-init (0.5.14-0ubuntu2) maverick; urgency=low
+
+ * fix bug preventing 'seedfrom' from working (LP:617400)
+
+ -- Scott Moser <smoser@ubuntu.com> Tue, 17 Aug 2010 15:49:13 -0400
+
+cloud-init (0.5.14-0ubuntu1) maverick; urgency=low
+
+ * New upstream release.
+ - support for reading metadata and userdata from filesystem
+ - support for boot without metadata at all
+
+ -- Scott Moser <smoser@ubuntu.com> Thu, 12 Aug 2010 14:45:28 -0400
+
+cloud-init (0.5.13-0ubuntu3) maverick; urgency=low
+
+ * grub-legacy-ec2: fix 'apt-get --reinstall' and dpkg-divert (LP: #611812)
+ * enable -virtual kernels as "xen" kernels (pv_ops now functional)
+ * fix bad syntax in cloud-init-run-module.py
+
+ -- Scott Moser <smoser@ubuntu.com> Mon, 02 Aug 2010 16:26:48 -0400
+
+cloud-init (0.5.13-0ubuntu2) maverick; urgency=low
+
+ * debian/control: drop ssh-import as a recommends, as this has been
+ subsumed by openssh-server
+
+ -- Dustin Kirkland <kirkland@ubuntu.com> Sat, 24 Jul 2010 21:02:40 +0200
+
+cloud-init (0.5.13-0ubuntu1) maverick; urgency=low
+
+ * New upstream release.
+ * invoke dpkg with --force-confold (LP: #607642)
+
+ -- Scott Moser <smoser@ubuntu.com> Wed, 21 Jul 2010 11:58:53 -0400
+
+cloud-init (0.5.12-0ubuntu8) maverick; urgency=low
+
+ * update-grub-legacy-ec2:
+ - add code to stop use of 'uuid' grub syntax
+ - change fallback grub device from (hd0,0) to (hd0)
+ - change timeout in menu.lst to 0
+ * grub-legacy-ec2: add grub-set-default functionality (LP: #605961)
+
+ -- Scott Moser <smoser@ubuntu.com> Thu, 15 Jul 2010 13:07:01 -0400
+
+cloud-init (0.5.12-0ubuntu7) maverick; urgency=low
+
+ * update-grub-legacy-ec2:
+ - force setting of indomU so output of build process has
+ a menu.lst with -ec2 kernels listed.
+ - remove 'quite splash' from kernel options
+ - make sure grub_root_device is set to hd0 in image build
+
+ -- Scott Moser <smoser@ubuntu.com> Tue, 13 Jul 2010 16:33:51 -0400
+
+cloud-init (0.5.12-0ubuntu6) maverick; urgency=low
+
+ * fix installation error
+ * add quilt-setup rule for package development
+
+ -- Scott Moser <smoser@ubuntu.com> Tue, 13 Jul 2010 12:04:21 -0400
+
+cloud-init (0.5.12-0ubuntu5) maverick; urgency=low
+
+ * sync with upstream r226.
+ * fix bug where nfs/network mounts could not be specified (LP: #603329)
+ * manage hostname setting better (LP: #596993)
+ * add legacy-grub-ec2 package.
+
+ -- Scott Moser <smoser@ubuntu.com> Thu, 08 Jul 2010 22:24:59 -0400
+
+cloud-init (0.5.12-0ubuntu4) maverick; urgency=low
+
+ * handle hostname managing better with ebs root. (LP: #596993)
+
+ -- Scott Moser <smoser@ubuntu.com> Wed, 07 Jul 2010 11:54:10 -0400
+
+cloud-init (0.5.12-0ubuntu3) maverick; urgency=low
+
+ * fix cloud-boothook input type (LP: #600799)
+ * sync with upstream.
+
+ -- Scott Moser <smoser@ubuntu.com> Thu, 01 Jul 2010 21:19:13 -0400
+
+cloud-init (0.5.12-0ubuntu2) maverick; urgency=low
+
+ * fix cloud config 'apt-update-upgrade' failure due to missing import
+
+ -- Scott Moser <smoser@ubuntu.com> Mon, 21 Jun 2010 15:08:32 -0400
+
+cloud-init (0.5.12-0ubuntu1) maverick; urgency=low
+
+ * New upstream release.
+ * fix cloud-init-run-module to allow 'always' (LP: #568139)
+ * add support for setting debconf selections
+ * add cloud-config support for debconf selections (LP: #582667),
+ byobu enablement, and ssh-import-lp-id
+
+ -- Scott Moser <smoser@ubuntu.com> Fri, 18 Jun 2010 15:48:14 -0400
+
+cloud-init (0.5.11-0ubuntu2) maverick; urgency=low
+
+ * handle renaming sem/markers for config items to avoid
+ running per-instance again after package upgrade
+ * pull 'config-' prefix on sem/ items for cloud-config modules from
+ 0.5.12
+
+ -- Scott Moser <smoser@ubuntu.com> Fri, 18 Jun 2010 12:52:10 -0400
+
+cloud-init (0.5.11-0ubuntu1) maverick; urgency=low
+
+ * New upstream release.
+ * remove ec2-get-info. It is replaced by cloudutils ec2metadata
+ * use python logging
+ * reduce number of upstart jobs
+ * add "boothook" user data type
+ * Switch to dpkg-source 3.0 (quilt) format
+
+ -- Scott Moser <smoser@ubuntu.com> Fri, 18 Jun 2010 01:04:58 -0400
+
+cloud-init (0.5.10-0ubuntu1) lucid; urgency=low
+
+ * New upstream release.
+ * ec2-get-info: fix for python traceback
+ * ephemeral mount will show up in /etc/mtab or df on first boot
+ LP: #527825
+
+ -- Scott Moser <smoser@ubuntu.com> Fri, 26 Mar 2010 00:57:28 -0400
+
+cloud-init (0.5.9-0ubuntu1) lucid; urgency=low
+
+ * New upstream release.
+ * rename apt list files. 'ubuntu-bug' now works without update (LP: #513060)
+ * replace 'cloudconfig' entries in fstab rather than appending (LP: #524562)
+ * fix to fstab writing on ebs-root instances
+
+ -- Scott Moser <smoser@ubuntu.com> Mon, 08 Mar 2010 13:07:02 -0500
+
+cloud-init (0.5.8-0ubuntu1) lucid; urgency=low
+
+ * New upstream release.
+ * cache data from metadata service, LP: #527364
+ * fix format of cron entry in cron.d/cloudinit-updates
+ * package egg-info file
+
+ -- Scott Moser <smoser@ubuntu.com> Tue, 02 Mar 2010 15:48:04 -0500
+
+cloud-init (0.5.7-0ubuntu4) lucid; urgency=low
+
+ * fix empty package previous package was emptpy for cloud-init
+ due to adding the ec2-init package
+
+ -- Scott Moser <smoser@ubuntu.com> Fri, 26 Feb 2010 17:06:05 -0500
+
+cloud-init (0.5.7-0ubuntu3) lucid; urgency=low
+
+ * debian/control:
+ - recommend ssh-import, such that the ssh-import-lp-id
+ utility is available in UEC images for convenient importing of
+ ssh public keys stored in Launchpad, LP: #524101
+ - build a transitional ec2-init package to handle the rename
+ gracefully on upgrades, LP: #527187
+
+ -- Dustin Kirkland <kirkland@ubuntu.com> Thu, 25 Feb 2010 16:22:10 -0600
+
+cloud-init (0.5.7-0ubuntu2) lucid; urgency=low
+
+ * fix packaging but that put the message-of-the-day hook file
+ into a subdir of etc/update-motd.d, remove old file (LP: #524999)
+
+ -- Scott Moser <smoser@ubuntu.com> Fri, 19 Feb 2010 21:02:10 -0500
+
+cloud-init (0.5.7-0ubuntu1) lucid; urgency=low
+
+ * New upstream release.
+ * run cloud-init early in boot process (LP: #504883, #524516)
+
+ -- Scott Moser <smoser@ubuntu.com> Fri, 19 Feb 2010 18:27:45 -0500
+
+cloud-init (0.5.6-0ubuntu1) lucid; urgency=low
+
+ * New upstream release.
+ * supports 'runcmd' in cloud-config
+ * enable the update check code (LP: #524258)
+ * fix retry_url in boto_utils.py when metadata service not around
+ (LP: #523832)
+ * run cloud-config-puppet.conf later (LP: #523625)
+ [ Scott Moser 0.5.5 ]
+ * New upstream release, supports checking for updates
+
+ -- Scott Moser <smoser@ubuntu.com> Fri, 19 Feb 2010 03:13:22 -0500
+
+cloud-init (0.5.4-0ubuntu1) lucid; urgency=low
+
+ * New upstream release.
+ * fix broken user-data scripts
+ * merge mathiaz work for cloud-config-puppet
+ * fix bug causing apt update to fail
+ * rename EC2Init class to CloudInit
+ * only set hostname once per instance. (LP: #514492)
+
+ -- Scott Moser <smoser@ubuntu.com> Wed, 17 Feb 2010 09:40:30 -0500
+
+cloud-init (0.5.3-0ubuntu2) lucid; urgency=low
+
+ * divert ureadahead.conf in postinst (LP: #499520)
+ * lintian cleanups
+
+ -- Scott Moser <smoser@ubuntu.com> Fri, 05 Feb 2010 15:48:21 -0500
+
+cloud-init (0.5.3-0ubuntu1) lucid; urgency=low
+
+ * Rename ec2-init to cloud-init. New upstream release.
+ * set hostname to ip-u.x.y.z if local-hostname provides a ip addr
+ (LP: #475354)
+
+ -- Scott Moser <smoser@ubuntu.com> Thu, 04 Feb 2010 03:00:05 -0500
+
+ec2-init (0.5.2-0ubuntu1) lucid; urgency=low
+
+ * new upstream release
+
+ -- Scott Moser <smoser@ubuntu.com> Fri, 29 Jan 2010 13:30:52 -0500
+
+ec2-init (0.5.1-0ubuntu1) lucid; urgency=low
+
+ * new upstream release
+
+ -- Scott Moser <smoser@ubuntu.com> Fri, 22 Jan 2010 16:19:30 -0500
+
+ec2-init (0.5.0-0ubuntu4) lucid; urgency=low
+
+ * add an upstart job to get ssh keys regenerated and written
+ to console (LP: #506599, LP: #507070)
+
+ -- Scott Moser <smoser@ubuntu.com> Thu, 14 Jan 2010 13:10:55 -0500
+
+ec2-init (0.5.0-0ubuntu3) lucid; urgency=low
+
+ * work around difference in uec/ec2 metadata service (LP:506332)
+
+ -- Scott Moser <smoser@ubuntu.com> Tue, 12 Jan 2010 11:33:11 -0500
+
+ec2-init (0.5.0-0ubuntu2) lucid; urgency=low
+
+ * pull changes from devel branch to get functional on ec2
+
+ -- Scott Moser <smoser@ubuntu.com> Mon, 11 Jan 2010 12:03:45 -0500
+
+ec2-init (0.5.0-0ubuntu2) lucid; urgency=low
+
+ * new upstream release
+
+ -- Scott Moser <smoser@ubuntu.com> Thu, 07 Jan 2010 22:00:38 -0500
+
+ec2-init (0.4.999-0ubuntu8) lucid; urgency=low
+
+ * fix mirror selection for us-west-1 (LP: #494185)
+
+ -- Scott Moser <smoser@ubuntu.com> Fri, 11 Dec 2009 15:12:19 -0500
+
+ec2-init (0.4.999-0ubuntu7) karmic; urgency=low
+
+ * work around differences in eucalyptus ephemeral mounts (LP: #458850)
+ * get 'ec2:' prefix on ssh public key fingerprint (LP: #458576)
+
+ -- Scott Moser <smoser@ubuntu.com> Mon, 26 Oct 2009 16:18:06 -0400
+
+ec2-init (0.4.999-0ubuntu6) karmic; urgency=low
+
+ * make sources.list components for 'karmic-security' the same as
+ 'karmic' and 'karmic-updates' (main, restricted) (LP: #457866)
+
+ -- Scott Moser <smoser@ubuntu.com> Thu, 22 Oct 2009 08:55:58 -0400
+
+ec2-init (0.4.999-0ubuntu5) karmic; urgency=low
+
+ * write regenerate_ssh_host_keys output directly to /dev/console
+ to ensure that it gets there. (LP: #451881)
+
+ -- Scott Moser <smoser@ubuntu.com> Wed, 21 Oct 2009 17:23:38 -0400
+
+ec2-init (0.4.999-0ubuntu4) karmic; urgency=low
+
+ * set locale to en_US.UTF-8 if get_location_from_availability_zone
+ doesn't have a match (LP: #407949)
+
+ -- Scott Moser <smoser@ubuntu.com> Tue, 20 Oct 2009 09:57:49 -0400
+
+ec2-init (0.4.999-0ubuntu3) karmic; urgency=low
+
+ * split running of user-data out of ec2-init into ec2-init-user-data
+ run this at S99. (LP : #431255)
+
+ -- Scott Moser <smoser@ubuntu.com> Fri, 25 Sep 2009 14:17:17 -0400
+
+ec2-init (0.4.999-0ubuntu2) karmic; urgency=low
+
+ * remove rightscale-init from package (see LP: #434181, LP: #434693)
+ * fix lintian warning, specify path to GPL-3
+ * replace multiple '| logger' in regenerate_ssh_host_keys single one
+ * add ec2-is-compat-env, and disable init script by default. it can be
+ enabled by setting 'compat=1' in /etc/ec2-init/is-compat-env
+
+ -- Scott Moser <smoser@ubuntu.com> Thu, 24 Sep 2009 16:32:42 -0400
+
+ec2-init (0.4.999-0ubuntu1) karmic; urgency=low
+
+ * New upstream release
+
+ -- Soren Hansen <soren@ubuntu.com> Wed, 26 Aug 2009 01:23:52 +0200
+
+ec2-init (0.4.99-0ubuntu3) karmic; urgency=low
+
+ * Also update /etc/default/locale when setting the locale based on
+ locality.
+
+ -- Soren Hansen <soren@ubuntu.com> Tue, 11 Aug 2009 21:49:33 +0200
+
+ec2-init (0.4.99-0ubuntu2) karmic; urgency=low
+
+ * Consolidate build-dependencies a bit.
+ * Sync default configuration with code.
+ * Create /var/lib/ec2 in package.
+ * Make ec2-get-info more robust in testing environments.
+ * Handle missing public keys more gracefully.
+ * Set proper ownership of user's authorized_keys.
+
+ -- Soren Hansen <soren@ubuntu.com> Tue, 11 Aug 2009 09:54:16 +0200
+
+ec2-init (0.4.99-0ubuntu1) karmic; urgency=low
+
+ * Massive rewrite. (LP: #407871, #407919, #308530, #407949, #407950, #407892
+ and probably many others)
+ * First Ubuntu version with the upstream tarball split out.
+ * Switch to arch: all. There is no arch specific code here.
+
+ -- Soren Hansen <soren@ubuntu.com> Tue, 11 Aug 2009 08:33:33 +0200
+
+ec2-init (0.3.4ubuntu9) karmic; urgency=low
+
+ * Really include the action id in the semaphore filename.
+
+ -- Soren Hansen <soren@ubuntu.com> Sat, 11 Jul 2009 09:50:31 +0200
+
+ec2-init (0.3.4ubuntu8) karmic; urgency=low
+
+ * Add Vcs-Bzr header to debian/control.
+ * Include the action id in the semaphore filename.
+
+ -- Soren Hansen <soren@ubuntu.com> Sat, 11 Jul 2009 02:35:43 +0200
+
+ec2-init (0.3.4ubuntu7) karmic; urgency=low
+
+ * Re-add accidentally removed locale template.
+ * Fix indentation in init script.
+
+ -- Soren Hansen <soren@ubuntu.com> Fri, 10 Jul 2009 23:47:27 +0200
+
+ec2-init (0.3.4ubuntu6) karmic; urgency=low
+
+ * Replace calls to ec2-get-data with calls to ec2-get-info.
+ * Make this package arch: all.
+
+ -- Soren Hansen <soren@ubuntu.com> Fri, 10 Jul 2009 23:16:35 +0200
+
+ec2-init (0.3.4ubuntu5) karmic; urgency=low
+
+ * debian/init: Move instance reboot detection out of python
+ scripts and move them to the init script.
+ * debian/ec2-set-defaults.py:
+ - Point to the right location for locate (LP: #387611)
+ - Default to UTC (LP: #341060)
+ * debian/ec2-set-apt-sources.py: If you cant contact EC2 then use the
+ regular archive (LP: #387027)
+ * debian/ec2-setup-hostname.py: Use the local hostname in /etc/hosts
+ and dont change once rebooted. (LP: #352745)
+
+ -- Chuck Short <zulcss@ubuntu.com> Wed, 08 Jul 2009 09:48:49 -0400
+
+ec2-init (0.3.4ubuntu4) karmic; urgency=low
+
+ * debian/init: Run update-motd regardless whether its a firstboot or not.
+ * debian/init: Fix comments (LP: #373057)
+ * debian/control: Add update-motd as a depends.
+ * ec2-set-defaults.py: Wait for network to become available. (LP: #308530)
+
+ -- Chuck Short <zulcss@ubuntu.com> Thu, 28 May 2009 05:04:31 -0400
+
+ec2-init (0.3.4ubuntu3) karmic; urgency=low
+
+ * debian/init: Move init script to run before ssh and regenerate the ssh
+ host kes in the init script rather than /etc/rc.local (LP: #370628)
+ * ec2-set-apt-sources.py:
+ - Move sources.list to /var/ec2 so it doesnt get removed after user
+ reboots.
+ * ec2-set-defaults.py:
+ - Move locale to /var/ec2/ so it doesnt get remove after user reboots.
+ * ec2-set-hostname.py
+ - Create an /etc/hostname as well.
+
+ -- Chuck Short <zulcss@ubuntu.com> Thu, 14 May 2009 11:11:49 -0400
+
+ec2-init (0.3.4ubuntu2) karmic; urgency=low
+
+ * Really change the locale when setting up an instance. (LP: #341066)
+ * Run ec2-run-user-data script last. (LP: #373055)
+ * Minor comment tweaks. (LP: #373057)
+
+ -- Chuck Short <zulcss@ubuntu.com> Wed, 13 May 2009 13:41:35 -0400
+
+ec2-init (0.3.4ubuntu1) karmic; urgency=low
+
+ * Add more smarts to ec2 instance bring up. (LP: #371936)
+
+ -- Chuck Short <zulcss@ubuntu.com> Tue, 05 May 2009 08:59:54 -0400
+
+ec2-init (0.3.3ubuntu12) jaunty; urgency=low
+
+ * ec2-run-user-data.py: Fix error.
+
+ -- Chuck Short <zulcss@ubuntu.com> Tue, 07 Apr 2009 08:14:07 -0400
+
+ec2-init (0.3.3ubuntu11) jaunty; urgency=low
+
+ * debian/control:
+ - Add python-cheetah and python-apt as a dependency.
+ * debian/ec2-config.cfg:
+ - Remove distro due to the change in ec2-set-apt-sources.py
+ * debian/inistall
+ - Install the templates in the right place.
+ * ec2-set-apt-sources.py:
+ - Use python-apt to update the sources.list.
+
+ -- Chuck Short <zulcss@ubuntu.com> Wed, 01 Apr 2009 13:58:43 -0400
+
+ec2-init (0.3.3ubuntu10) jaunty; urgency=low
+
+ * ec2-set-hostname.py:
+ - Use template for /etc/hosts creation.
+ - Dont use public_hostname in /etc/hosts. (LP: #352745)
+
+ -- Chuck Short <zulcss@ubuntu.com> Wed, 01 Apr 2009 08:48:05 -0400
+
+ec2-init (0.3.3ubuntu9) jaunty; urgency=low
+
+ * ec2-set-apt-sources.py:
+ - Use a template to generate the sources.list and generate it based on the lsb_release.
+
+ -- Chuck Short <zulcss@ubuntu.com> Tue, 31 Mar 2009 15:15:55 -0400
+
+ec2-init (0.3.3ubuntu8) jaunty; urgency=low
+
+ * ec2-set-apt-sources.py:
+ - Add the ubuntu-on-ec2 ppa.
+
+ -- Chuck Short <zulcss@ubuntu.com> Tue, 31 Mar 2009 09:37:13 -0400
+
+ec2-init (0.3.3ubuntu7) jaunty; urgency=low
+
+ * debian/rules: Fix typo.
+
+ -- Chuck Short <zulcss@ubuntu.com> Sun, 22 Mar 2009 17:14:16 -0400
+
+ec2-init (0.3.3ubuntu6) jaunty; urgency=low
+
+ * Set the configuration file to jaunty.
+ * ec2-fetch-credentials: Fix typo.
+ * ec2-set-defaults.py:
+ - Remove timezone change when booting the instance.
+ - Redirect output to /dev/null.
+ * ec2-set-apt-sources.py:
+ - Run apt-get update after the /etc/apt/sources.list and
+ redirect the output to /dev/null.
+ * rightscale-init: Updated rightscale-init
+
+ -- Chuck Short <zulcss@ubuntu.com> Thu, 19 Mar 2009 20:52:59 -0400
+
+ec2-init (0.3.3ubuntu5) jaunty; urgency=low
+
+ * debian/ec2-config.cfg:
+ - Add disable root option.
+ * debian/ec2-init.rightscale-init.init:
+ - Add rightscale detection script.
+ * ec2-get-info.py:
+ - Display the information about an AMI instance.
+
+ -- Chuck Short <zulcss@ubuntu.com> Mon, 16 Mar 2009 08:54:49 -0400
+
+ec2-init (0.3.3ubuntu4) jaunty; urgency=low
+
+ * ec2-fetch-credentials.py:
+ - Allow user to choose which user they wish to configure for.
+ - Allow user to disable root user if they wish to.
+ * ec2-set-defaults.py:
+ - Set default timezone to UTC.
+ - Set locale depending on zone.
+ * debian/init:
+ - Removed nash plugin.
+ - Add ec2-set-defaults.
+
+ -- Chuck Short <zulcss@ubuntu.com> Wed, 04 Mar 2009 08:33:01 -0500
+
+ec2-init (0.3.3ubuntu3~intrepid4) intrepid; urgency=low
+
+ * set distro to intrepid.
+
+ -- Chuck Short <zulcss@ubuntu.com> Thu, 26 Feb 2009 10:28:06 -0500
+
+ec2-init (0.3.3ubuntu3) jaunty; urgency=low
+
+ * debian/ec2-init: Log results of ec2-run-user-data to syslog.
+ * ec2-run-user-data.py :Dont leave files around and log the
+ output to syslog.
+
+ -- Chuck Short <zulcss@ubuntu.com> Thu, 26 Feb 2009 10:24:35 -0500
+
+ec2-init (0.3.3ubuntu2) jaunty; urgency=low
+
+ * ec2-set-apt-sources.py:
+ - Use the ec2 mirrors. (LP: #317065, #333897)
+ - Update the /etc/apt/sources.list (LP: #333904)
+ * ec2-fetch-credentials.py:
+ - Better error checking (LP: #325067)
+
+ -- Chuck Short <zulcss@ubuntu.com> Tue, 24 Feb 2009 14:02:37 -0500
+
+ec2-init (0.3.3ubuntu1) jaunty; urgency=low
+
+ * debian/init: Fix init script.
+
+ -- Chuck Short <zulcss@ubuntu.com> Fri, 20 Feb 2009 09:22:54 -0500
+
+ec2-init (0.3.3) jaunty; urgency=low
+
+ * ec2-set-apt-sources.py
+ - Determine the zone that the user is in and generate
+ a /etc/apt/sources.list.d/ based on that.
+ * debian/init:
+ - Check to see if there is an /var/run/ec2 and create
+ it if it doesnt exist.
+ - Start ec2-set-apt-sources at first bootup.
+ * debian/rules:
+ - Install ec2-set-apt-sources.
+ * debian/control:
+ - Add python-configobj as a dependency.
+ * debian/{install,dirs}
+ - Create an /etc/ec2-init to read the configuration file and install it.
+
+ -- Chuck Short <zulcss@ubuntu.com> Mon, 09 Feb 2009 10:35:56 -0500
+
+ec2-init (0.3.2) jaunty; urgency=low
+
+ * debian/init:
+ - Remove already ran detection
+ - Log the running of ec2-run-user-data to /var/log/ec2-user-data.log
+ * ec2-set-hostname.py:
+ - set hostname to the Ec2 local-hostname
+ - Update the /etc/hosts to change the ubuntu hostname to the
+ public hostname.
+ * ec2-fetch-credentials:
+ - Copy the ssh keys to the ubuntu user.
+ - Setup authorized keys for root to tell the user to login as the
+ ubuntu user when they try to connect.
+ * ec2-run-user-data:
+ - Create an .already-ran file to check to see if ec2-run-user-data
+ already ran.
+ - Save the ec2-run-user-data script in /var/ec2.
+
+ -- Chuck Short <zulcss@ubuntu.com> Wed, 04 Feb 2009 09:32:08 -0500
+
+ec2-init (0.3.1) jaunty; urgency=low
+
+ * debian/dir: Install /var/ec2 to save user-data scripts.
+ * debian/rules: Start ec2-init after ssh.
+ * ec2-run-user-data.py: Save run-user-data script with ami-id.
+
+ -- Chuck Short <zulcss@ubuntu.com> Mon, 26 Jan 2009 10:40:52 -0500
+
+ec2-init (0.3) jaunty; urgency=low
+
+ * ec2-run-user-data: Fix python error when writing a file to the disk.
+
+ -- Chuck Short <zulcss@ubuntu.com> Thu, 15 Jan 2009 11:49:08 -0500
+
+ec2-init (0.2) jaunty; urgency=low
+
+ * debian/init: Run fetch-credentials before anything else.
+ (LP: #308533)
+ * Add ec2-set-hostname.py: Queries ec2 metdada for public-hostname
+ and then sets it (LP: #316201)
+
+ -- Chuck Short <zulcss@ubuntu.com> Tue, 13 Jan 2009 15:20:21 -0500
+
+ec2-init (0.1) intrepid; urgency=low
+
+ * Initial release (LP: #269434).
+
+ -- Soren Hansen <soren@ubuntu.com> Fri, 12 Sep 2008 15:30:32 +0200
+
diff --git a/debian/cherry-pick-rev b/debian/cherry-pick-rev
new file mode 100755
index 00000000..954e4f03
--- /dev/null
+++ b/debian/cherry-pick-rev
@@ -0,0 +1,44 @@
+#!/bin/sh
+Usage() {
+ cat <<EOF
+Usage: ${0##*/} repo revno name
+ cherry pick revno from trunk branch
+
+ This takes care of getting the patch and pulling it into the local
+ directory.
+
+ End result is modified:
+ debian/patches/\${revno}-\${name}
+ debian/patches/series
+EOF
+}
+
+[ $# -eq 3 ] || { Usage 1>&2; exit 1; }
+[ "$1" = "--help" -o "$1" = "-h" ] && { Usage; exit 0; }
+
+repo=${1}
+revno=${2}
+name=${3}
+
+name=${name%.patch}
+name=${name%.diff}
+
+fname="${revno}-${name}.patch"
+
+( cd "${repo}" && bzr log -r${revno}..${revno} &&
+ bzr diff -p1 -r$((${revno}-1))..${revno} ) |
+ filterdiff --exclude "*/ChangeLog" |
+ quilt import -P "${fname}" /dev/stdin
+
+[ $? -eq 0 ] || { echo "failed"; exit 1; }
+
+cat <<EOF
+now,
+ quilt push
+ quilt refresh
+ files="\$(quilt files ${fname}) debian/patches/series debian/patches/${fname} .pc/${fname} .pc/applied-patches)"
+ bzr add $files
+ dch --append "${name} (cherry pick $revno)"
+ dch --edit # improve the entry
+ debcommit $files
+EOF
diff --git a/debian/cloud-init.config b/debian/cloud-init.config
new file mode 100644
index 00000000..6e9c6f73
--- /dev/null
+++ b/debian/cloud-init.config
@@ -0,0 +1,78 @@
+#!/bin/sh -e
+
+. /usr/share/debconf/confmodule
+
+hasEc2Md() {
+ local d=/var/lib/cloud i=/var/lib/cloud/instance/ f=""
+ local flist="${i}/datasource ${i}/obj.pkl ${d}/cache/obj.pkl"
+ # search current instance data source information
+ for f in ${flist}; do
+ [ -f "${f}" ] || continue
+ grep -q DataSourceEc2 "${f}" 2>/dev/null && return 0
+ done
+
+
+ # there was no data above found that would have been indicated
+ # by a upgrade. lets just see if we can't find the metadata
+ # service. if wget is not present (it is not 'essential')
+ # then we will quietly return 1
+ local url="http://169.254.169.254/2009-04-04/meta-data/instance-id"
+ i=""
+ if command -v wget >/dev/null 2>&1; then
+ local tout="--connect-timeout 5 --read-timeout 5 --tries 1"
+ i=$(wget "${url}" ${tout} -O - 2>/dev/null) || :
+ elif command -v curl >/dev/null 2>&1; then
+ i=$(curl "${url}" --max-time 1) || :
+ fi
+ # if instance-id starts with 'i-' then in all likelyhood its good
+ [ "${i#i-}" != "${i}" ] && return 0
+ return 1
+}
+
+get_yaml_list() {
+ # get_yaml_list(file, key, def): return a comma delimited list with the value
+ # for the yaml array defined in 'key' from 'file'. if not found , return 'def'
+ # only really supports 'key: [en1, en2 ]' format.
+ local file="$1" key="$2" default="$3"
+ [ -f "$file" ] || return 1
+ # any thing that didn't match the key is deleted so the final 'p' only
+ # prints things that matched.
+ RET=$(sed -n -e "/^$key:/"'!'d -e "s/$key:[ \[]*//"\
+ -e "s, \]$,," -e p "$file")
+ [ -n "$RET" ] || RET="$default"
+}
+
+# old_dpkg_cfg is very old file that is no longer read by cloud-init.
+# it gets re-named to cloud.cfg.d/90_dpkg.cfg in the preinst.
+dpkg_cfg="/etc/cloud/cloud.cfg.d/90_dpkg.cfg"
+old_dpkg_cfg="/etc/cloud/distro.cfg"
+if [ -f "${old_dpkg_cfg}" -a ! -f "$dpkg_cfg" ]; then
+ dpkg_cfg="${old_dpkg_cfg}"
+ echo "WARN: reading value from ${old_dpkg_cfg}" 1>&2
+fi
+if [ -f "$dpkg_cfg" ]; then
+ if get_yaml_list "$dpkg_cfg" datasource_list NOTFOUND &&
+ val="$RET" && [ "$val" != "NOTFOUND" ]; then
+ db_set cloud-init/datasources $val
+ else
+ echo "WARN: failed to read datasource_list from $dpkg_cfg" 1>&2
+ fi
+elif { db_fget cloud-init/datasources seen || : ; } &&
+ [ "${RET}" = "false" ]; then
+ # this is the first time this we've run (installation or re-install after
+ # purge). try to determine if the Ec2 datasource is there.
+ # if it is, and Ec2 was not in the default list, then add it.
+ db_get cloud-init/datasources
+ def="${RET}"
+ case " ${def}," in
+ *\ Ec2,*) :;;
+ *) hasEc2Md &&
+ db_set cloud-init/datasources "${def:+${def}, }Ec2";;
+ esac
+fi
+
+db_input low cloud-init/datasources || true
+db_go
+
+exit 0
+# vi: ts=4 noexpandtab
diff --git a/debian/cloud-init.install b/debian/cloud-init.install
new file mode 100644
index 00000000..9f4c0dfe
--- /dev/null
+++ b/debian/cloud-init.install
@@ -0,0 +1,9 @@
+etc/cloud
+etc/init/*.conf
+etc/profile.d/*
+etc/rsyslog.d/*
+usr/bin
+usr/lib/cloud-init
+usr/lib/python*/*-packages/*egg-info
+usr/lib/python*/*-packages/cloudinit
+usr/share/doc/cloud-init
diff --git a/debian/cloud-init.lintian-overrides b/debian/cloud-init.lintian-overrides
new file mode 100644
index 00000000..591b651e
--- /dev/null
+++ b/debian/cloud-init.lintian-overrides
@@ -0,0 +1,3 @@
+# this explicitly diverts ureadahead.conf in ureadahead package
+# see LP: #499520 for more discussion
+cloud-init binary: diversion-for-unknown-file
diff --git a/debian/cloud-init.postinst b/debian/cloud-init.postinst
new file mode 100644
index 00000000..e14537df
--- /dev/null
+++ b/debian/cloud-init.postinst
@@ -0,0 +1,155 @@
+#!/bin/sh -e
+
+. /usr/share/debconf/confmodule
+
+set -f # disable pathname expansion
+db_capb escape # to support carriage return / multi-line values
+
+update_cfg() {
+ # takes filename, header, new object (in yaml), optionally 'remover'
+ # and merges new into existing object in filename, and then updates file
+ # remover a string that means "delete existing entry"
+ python -c '
+import sys, yaml
+
+def update(src, cand):
+ if not (isinstance(src, dict) and isinstance(cand, dict)):
+ return cand
+ for k, v in cand.iteritems():
+ # if the candidate has _ as value, delete source
+ if v == REMOVER:
+ if k in src:
+ del src[k]
+ continue
+ if k not in src:
+ src[k] = v
+ else:
+ src[k] = update(src[k], v)
+ return src
+
+(fname, header, newyaml) = sys.argv[1:4]
+REMOVER = object
+if len(sys.argv) == 5:
+ REMOVER = sys.argv[4]
+newcfg = yaml.load(newyaml)
+
+with open(fname, "r") as fp:
+ cfg = yaml.load(fp)
+if not cfg: cfg = {}
+
+cfg = update(cfg, newcfg)
+
+with open(fname, "w") as fp:
+ fp.write(header + "\n")
+ fp.write(yaml.dump(cfg))' "$@"
+}
+
+handle_preseed_maas() {
+ local cfg_file="/etc/cloud/cloud.cfg.d/90_dpkg_maas.cfg"
+ local md_url="" creds_all="" c_key="" t_key="" t_sec="" c_sec="";
+
+ db_get "cloud-init/maas-metadata-url" && md_url="$RET" || :
+ db_get "cloud-init/maas-metadata-credentials" && creds_all="$RET" || :
+
+ # nothing to do
+ [ -n "$md_url" -o -n "$creds_all" ] || return 0
+
+ # change a url query string format into : delimited
+ if [ -n "$creds_all" -a "${creds_all#*&}" != "${creds_all}" ]; then
+ creds_all=$(python -c 'from urlparse import parse_qs; import sys;
+keys = parse_qs(sys.argv[1])
+for k in sys.argv[2:]:
+ sys.stdout.write("%s:" % keys.get(k,[""])[0])' "$creds_all" \
+ oauth_consumer_key oauth_token_key oauth_token_secret
+)
+ fi
+
+ # now, if non-empty creds_all is: consumer_key:token_key:token_secret
+ if [ -n "$creds_all" ]; then
+ OIFS="$IFS"; IFS=:; set -- $creds_all; IFS="$OIFS"
+ c_key=$1; t_key=$2; t_sec=$3
+ fi
+
+ if [ "$md_url" = "_" -a "${c_key}:${t_key}:${t_sec}" = "_:_:_" ]; then
+ # if all these values were '_', the delete value, just delete the file.
+ rm -f "$cfg_file"
+ else
+ local header="# written by cloud-init debian package per preseed entries
+# cloud-init/{maas-metadata-url,/maas-metadata-credentials}"
+
+ local pair="" k="" v="" pload="" orig_umask=""
+ for pair in "metadata_url:$md_url" "consumer_key:${c_key}" \
+ "token_key:${t_key}" "token_secret:$t_sec"; do
+ k=${pair%%:*}
+ v=${pair#${k}:}
+ [ -n "$v" ] && pload="${pload} $k: \"$v\","
+ done
+
+ # '_' would indicate "delete", otherwise, existing entries are left
+ orig_umask=$(umask)
+ umask 066
+ : >> "$cfg_file" && chmod 600 "$cfg_file"
+ update_cfg "$cfg_file" "$header" "datasource: { MAAS: { ${pload%,} } }" _
+ umask ${orig_umask}
+ fi
+
+ # now clear the database of the values, as they've been consumed
+ db_unregister "cloud-init/maas-metadata-url" || :
+ db_unregister "cloud-init/maas-metadata-credentials" || :
+}
+
+handle_preseed_local_cloud_config() {
+ local ccfg="" debconf_name="cloud-init/local-cloud-config"
+ local cfg_file="/etc/cloud/cloud.cfg.d/90_dpkg_local_cloud_config.cfg"
+ local header="# written by cloud-init debian package per preseed entry
+# $debconf_name"
+
+ db_get "${debconf_name}" && ccfg="$RET" || :
+
+ if [ "$ccfg" = "_" ]; then
+ rm -f "$cfg_file"
+ elif [ -n "$ccfg" ]; then
+ { echo "$header"; echo "$ccfg"; } > "$cfg_file"
+ fi
+ db_unregister "${debconf_name}" || :
+}
+
+if [ "$1" = "configure" ]; then
+ # disable ureadahead (LP: #499520)
+ dpkg-divert --package cloud-init --rename --divert \
+ /etc/init/ureadahead.conf.disabled --add /etc/init/ureadahead.conf
+ if db_get cloud-init/datasources; then
+ values="$RET"
+ if [ "${values#*MaaS}" != "${values}" ]; then
+ # if db had old MAAS spelling, fix it.
+ values=$(echo "$values" | sed 's,MaaS,MAAS,g')
+ db_set cloud-init/datasources "$values"
+ fi
+ cat > /etc/cloud/cloud.cfg.d/90_dpkg.cfg <<EOF
+# to update this file, run dpkg-reconfigure cloud-init
+datasource_list: [ $values ]
+EOF
+ fi
+
+ # we want to affect apt_pipelining on install, not wait for
+ # cloud-init to run it on next boot.
+ pipeline_f="/etc/apt/apt.conf.d/90cloud-init-pipelining"
+ if [ -f /var/lib/cloud/instance/obj.pkl ]; then
+ cloud-init single --name apt-pipelining --frequency once >/dev/null 2>&1 ||
+ echo "Warning: failed to setup apt-pipelining" 1>&2
+ elif [ ! -f "$pipeline_f" ]; then
+ # there was no cloud available, so populate it ourselves.
+ cat > "$pipeline_f" <<EOF
+//Written by cloud-init per 'apt_pipelining'
+Acquire::http::Pipeline-Depth "0";
+EOF
+ fi
+
+ # if there are maas settings pre-seeded apply them
+ handle_preseed_maas
+
+ # if there is generic cloud-config preseed, apply them
+ handle_preseed_local_cloud_config
+fi
+
+#DEBHELPER#
diff --git a/debian/cloud-init.postrm b/debian/cloud-init.postrm
new file mode 100644
index 00000000..81b66812
--- /dev/null
+++ b/debian/cloud-init.postrm
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+set -e
+
+case "$1" in
+ purge)
+ rm -f /etc/cloud/cloud.cfg.d/90_dpkg.cfg
+ rm -f /etc/apt/apt.conf.d/90cloud-init-pipelining
+ ;;
+ remove)
+ dpkg-divert --package cloud-init --remove --rename --divert \
+ /etc/init/ureadahead.conf.disabled /etc/init/ureadahead.conf
+ rm -f /etc/cloud/cloud.cfg.d/90cloud-init-pipelining
+ ;;
+esac
+
+#DEBHELPER#
diff --git a/debian/cloud-init.preinst b/debian/cloud-init.preinst
new file mode 100644
index 00000000..e5c7755f
--- /dev/null
+++ b/debian/cloud-init.preinst
@@ -0,0 +1,170 @@
+#!/bin/sh
+set -e
+
+#DEBHELPER#
+# Remove a no-longer used conffile
+rm_conffile() {
+ local PKGNAME="$1"
+ local CONFFILE="$2"
+
+ [ -e "$CONFFILE" ] || return 0
+
+ local md5sum="$(md5sum $CONFFILE | sed -e 's/ .*//')"
+ local old_md5sum="$(dpkg-query -W -f='${Conffiles}' $PKGNAME | \
+ sed -n -e "\' $CONFFILE ' { s/ obsolete$//; s/.* //; p }")"
+ if [ "$md5sum" != "$old_md5sum" ]; then
+ echo "Obsolete conffile $CONFFILE has been modified by you."
+ echo "Saving as $CONFFILE.dpkg-bak ..."
+ mv -f "$CONFFILE" "$CONFFILE".dpkg-bak
+ else
+ echo "Removing obsolete conffile $CONFFILE ..."
+ rm -f "$CONFFILE"
+ fi
+}
+
+# move_sem(src,targets)
+# rename sem/* items named $src to $targets
+# (with hard links if more than one)
+move_sem() {
+ local src=$1 f="" targ="" freqid="" dir=/var/lib/cloud/sem
+ shift
+ # link the remaining targets to src, if it exists
+ for f in "${dir}/${src}."*; do
+ # if there were no src entries, nothing to do
+ [ -f "${f}" ] || return 0
+ freqid=${f#${dir}/${src}.} # 'i-abcdefg' or 'always'
+ for targ in "$@"; do
+ [ -e "${dir}/${targ}.${freqid}" ] && continue
+ ln -f "${f}" "${dir}/${targ}.${freqid}"
+ done
+ rm "${f}"
+ done
+ return 0
+}
+
+fix_ephemeral0_micro() {
+ # make ephemeral0 entries in /etc/fstab written by cloudconfig
+ # 'nobootwait', so they do not block subsequent boots (LP: #634102)
+ local out="" oldver=$1 dev="" adop="nobootwait"
+ local s="[[:space:]]" ns="[^[:space:]]" # space and "not space"
+ local remain="${s}\+.*" first4=""
+ for dev in /dev/sda2 /dev/sdb; do
+ first4="${dev}$s\+$ns\+$s\+$ns\+$s\+$ns\+"
+ out=$(awk '$1 == dev && $4 ~ /cloudconfig/ && $4 !~ op { print $1 ; }' \
+ dev="${dev}" "op=${adop}" /etc/fstab) || return 0
+ [ -n "${out}" ] || continue
+ echo "making ephemeral ${dev} in /etc/fstab ${adop} (LP: #634102)" 1>&2
+ sed -i "s|^\(${first4}\)\(${remain}\)|\1,${adop}\2|" /etc/fstab
+ done
+}
+
+convert_varlib_05x_06x() {
+ local url="http://169.254.169.254/2009-04-04/meta-data/instance-id"
+ local tout="--connect-timeout .5 --read-timeout .5"
+ local iid="" f="" uptime="" bn=""
+ iid=$(wget "${url}" ${tout} --tries 1 -O - 2>/dev/null) || iid=""
+
+ [ -n "${iid}" -a -d /var/lib/cloud ] || return 0
+ cd /var/lib/cloud
+ mkdir -p "instances/${iid}" "instances/${iid}/sem"
+ [ -e instance ] || ln -sf "instances/${iid}" instance
+ for f in data/*; do
+ [ -f "$f" ] || continue
+ case "${f#*/}" in
+ user-data.txt.i|user-data.txt|cloud-config.txt)
+ mv "${f}" instance/
+ ;;
+ esac
+ done
+ [ -f data/cache/obj.pkl ] && mv data/cache/obj.pkl instance/
+ for f in sem/*.${iid}; do
+ [ -f "${f}" ] || continue
+ bn=${f#*/}; bn=${bn%.${iid}}
+ case "${bn}" in
+ set_defaults) mv "${f}" "instance/sem/config-locale";;
+ set_hostname) mv "${f}" "instance/sem/config-set_hostname";;
+ *) mv "${f}" "instance/sem/${bn}";;
+ esac
+ done
+ [ ! -f sem/update_hostname.always ] ||
+ mv sem/update_hostname.always sem/config-update_hostname.always
+ rmdir data/cache 2>/dev/null || :
+ rm -f data/available.build
+
+ mkdir -p instance/scripts
+ if [ -d data/scripts ]; then
+ mv data/scripts/* instance/scripts || :
+ rmdir data/scripts || :
+ fi
+ [ -d data/scripts/* ] && mv data/scripts instance/
+
+ [ ! -e instance/boot-finished ] &&
+ [ -f /proc/uptime ] && read uptime other </proc/uptime &&
+ echo "${uptime}" > instance/boot-finished || :
+
+ return 0
+}
+
+case "$1" in
+ install|upgrade)
+ # removing obsolete conffiles from the 'ec2-init' package
+ if dpkg --compare-versions "$2" le "0.5.1"; then
+ rm_conffile ec2-init "/etc/init/cloud-ssh-keygen.conf"
+ fi
+ if dpkg --compare-versions "$2" lt "0.5.3"; then
+ rm_conffile ec2-init "/etc/init/ec2init.conf"
+ fi
+ if [ "$2" = "0.5.7-0ubuntu1" ]; then
+ bad_d=/etc/update-motd.d/92-ec2-upgrade-available
+ rm_conffile cloud-init "${bad_d}/motd-hook"
+ # the dir for this file is almost certainly empty, but
+ # if the file above was only moved, or other files there
+ # then leave it be
+ rmdir "${bad_d}" 2>/dev/null || true
+ fi
+
+ if dpkg --compare-versions "$2" le "0.5.10-0ubuntu2"; then
+ old_confs="cloud-apt-update-upgrade cloud-config-misc
+ cloud-config-mounts cloud-config-puppet
+ cloud-config-ssh cloud-disable-ec2-metadata"
+ for f in ${old_confs}; do
+ rm_conffile cloud-init "/etc/init/${f}.conf"
+ done
+ fi
+
+ if dpkg --compare-versions "$2" le "0.5.11-0ubuntu1"; then
+ # rename the config entries in sem/ so they're not run again
+
+ # transition names in 0.5.11 had only short name (no config- prefix)
+ # so create config- entries for each
+ for name in apt-update-upgrade disable-ec2-metadata mounts \
+ puppet runcmd ssh updates-check; do
+ move_sem ${name} config-${name}
+ done
+
+ # 0.5.11 split 'config-misc' into 'updates-check' and 'runcmd'
+ move_sem config-misc config-updates-check config-runcmd
+ fi
+
+ if dpkg --compare-versions "$2" le "0.5.14-0ubuntu5"; then
+ fix_ephemeral0_micro
+ fi
+
+ if dpkg --compare-versions "$2" le 0.6.0-0ubuntu1; then
+ # convert /var/lib/cloud from 0.5.x layout to 0.6.x
+ convert_varlib_05x_06x
+ fi
+
+ # 0.6.0 changed 'user-scripts' to config-scripts-user (LP: #1049146)
+ if [ -e /var/lib/cloud/instance/sem/user-scripts ]; then
+ ln -sf user-scripts /var/lib/cloud/instance/sem/config-scripts-user
+ fi
+
+
+ d=/etc/cloud/
+ if [ -f "$d/distro.cfg" ] && [ ! -f "$d/cloud.cfg.d/90_dpkg.cfg" ]; then
+ echo "moving $d/distro.cfg -> $d/cloud.cfg.d/90_dpkg.cfg"
+ [ -d "${d}/cloud.cfg.d" ] || mkdir "${d}/cloud.cfg.d"
+ mv "$d/distro.cfg" "$d/cloud.cfg.d/90_dpkg.cfg"
+ fi
+esac
diff --git a/debian/cloud-init.prerm b/debian/cloud-init.prerm
new file mode 100644
index 00000000..8954fa4d
--- /dev/null
+++ b/debian/cloud-init.prerm
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+set -e
+rm -f /etc/cron.d/cloudinit-updates
+
+#DEBHELPER#
diff --git a/debian/cloud-init.templates b/debian/cloud-init.templates
new file mode 100644
index 00000000..30e1a6a7
--- /dev/null
+++ b/debian/cloud-init.templates
@@ -0,0 +1,12 @@
+Template: cloud-init/datasources
+Type: multiselect
+Default: NoCloud, ConfigDrive, OpenNebula, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, Ec2, CloudStack, None
+Choices-C: NoCloud, ConfigDrive, OpenNebula, Azure, AltCloud, OVF, MAAS, Ec2, CloudStack, None
+Choices: NoCloud: Reads info from /var/lib/cloud/seed only, ConfigDrive: Reads data from Openstack Config Drive, OpenNebula: read from OpenNebula context disk, Azure: read from MS Azure cdrom. Requires walinux-agent, AltCloud: config disks for RHEVm and vSphere, OVF: Reads data from OVF Transports, MAAS: Reads data from Ubuntu MAAS, GCE: google compute metadata service, OpenStack: native openstack metadata service, CloudSigma: metadata over serial for cloudsigma.com, Ec2: reads data from EC2 Metadata service, CloudStack: Read from CloudStack metadata service, None: Failsafe datasource
+Description: Which data sources should be searched?
+ Cloud-init supports searching different "Data Sources" for information
+ that it uses to configure a cloud instance.
+ .
+ Warning: Only select 'Ec2' if this system will be run on a system with
+ the EC2 metadata service present. Doing so incorrectly will result in
+ a substantial timeout on boot.
diff --git a/debian/compat b/debian/compat
new file mode 100644
index 00000000..7ed6ff82
--- /dev/null
+++ b/debian/compat
@@ -0,0 +1 @@
+5
diff --git a/debian/control b/debian/control
new file mode 100644
index 00000000..d4a6e189
--- /dev/null
+++ b/debian/control
@@ -0,0 +1,61 @@
+Source: cloud-init
+Section: admin
+Priority: extra
+Maintainer: Scott Moser <smoser@ubuntu.com>
+Build-Depends: cdbs,
+ debhelper (>= 5.0.38),
+ po-debconf,
+ pyflakes,
+ pylint,
+ python (>= 2.6.6-3~),
+ python-argparse,
+ python-cheetah,
+ python-configobj,
+ python-jsonpatch | python-json-patch,
+ python-mocker,
+ python-nose,
+ python-oauth,
+ python-prettytable,
+ python-setuptools,
+ python-requests,
+ python-yaml
+XS-Python-Version: all
+Standards-Version: 3.9.5
+
+Package: cloud-init
+Architecture: all
+Depends: cloud-guest-utils | cloud-utils,
+ ifupdown (>= 0.6.10ubuntu5),
+ procps,
+ python,
+ python-requests (>= 0.8.2),
+ software-properties-common,
+ ${misc:Depends},
+ ${python:Depends}
+Recommends: eatmydata
+Provides: ec2-init
+Replaces: ec2-init (<<0.5.3)
+Conflicts: ec2-init (<<0.5.3)
+XB-Python-Version: ${python:Versions}
+Description: Init scripts for cloud instances
+ Cloud instances need special scripts to run during initialisation
+ to retrieve and install ssh keys and to let the user run various scripts.
+
+Package: grub-legacy-ec2
+Depends: debconf (>= 1.5.19) | cdebconf,
+ ucf,
+ util-linux (>= 2.15-1),
+ ${misc:Depends}
+Conflicts: grub
+Suggests: grub-legacy-doc
+Architecture: all
+Description: Handles update-grub for ec2 instances
+ EC2 instances that use grub-legacy as a bootloader need a way to keep
+ /boot/grub/menu.lst up to date while not conflicting with grub-pc.
+ This package provides that.
+
+Package: ec2-init
+Depends: cloud-init, ${misc:Depends}
+Architecture: all
+Description: package renamed -> cloud-init
+ This package has been renamed to 'cloud-init'.
diff --git a/debian/copyright b/debian/copyright
new file mode 100644
index 00000000..40dabac1
--- /dev/null
+++ b/debian/copyright
@@ -0,0 +1,51 @@
+Format-Specification: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=135
+Name: cloud-init
+Maintainer: Scott Moser <scott.moser@canonical.com>
+Source: https://launchpad.net/cloud-init
+
+This package was debianized by Soren Hansen <soren@ubuntu.com> on
+Thu, 04 Sep 2008 12:49:15 +0200 as ec2-init. It was later renamed to
+cloud-utils by Scott Moser <scott.moser@canonical.com>
+
+Upstream Author: Scott Moser <smoser@canonical.com>
+ Soren Hansen <soren@canonical.com>
+ Chuck Short <chuck.short@canonical.com>
+
+Copyright: 2010, Canonical Ltd.
+License: GPL-3
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 3, as
+ published by the Free Software Foundation.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+ The complete text of the GPL version 3 can be seen in
+ /usr/share/common-licenses/GPL-3.
+
+Files: cloudinit/boto_utils.py
+Copyright: 2006,2007, Mitch Garnaat http://garnaat.org/
+License: MIT
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish, dis-
+ tribute, sublicense, and/or sell copies of the Software, and to permit
+ persons to whom the Software is furnished to do so, subject to the fol-
+ lowing conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
+ ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+ SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ IN THE SOFTWARE.
diff --git a/debian/dirs b/debian/dirs
new file mode 100644
index 00000000..f3de468d
--- /dev/null
+++ b/debian/dirs
@@ -0,0 +1,5 @@
+var/lib/cloud
+usr/bin
+etc/init
+usr/share/doc/cloud
+etc/cloud
diff --git a/debian/grub-legacy-ec2.install b/debian/grub-legacy-ec2.install
new file mode 100644
index 00000000..7355af09
--- /dev/null
+++ b/debian/grub-legacy-ec2.install
@@ -0,0 +1,5 @@
+etc/kernel/postinst.d/x-grub-legacy-ec2
+etc/kernel/postrm.d/x-grub-legacy-ec2
+usr/sbin/grub-set-default
+usr/sbin/grub-set-default-legacy-ec2
+usr/sbin/update-grub-legacy-ec2
diff --git a/debian/grub-legacy-ec2.kernel-postinst b/debian/grub-legacy-ec2.kernel-postinst
new file mode 100755
index 00000000..33436510
--- /dev/null
+++ b/debian/grub-legacy-ec2.kernel-postinst
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+version="$1"
+bootopt=""
+
+# passing the kernel version is required
+[ -z "${version}" ] && exit 0
+
+# avoid running multiple times
+if [ -n "$DEB_MAINT_PARAMS" ]; then
+ eval set -- "$DEB_MAINT_PARAMS"
+ if [ -z "$1" ] || [ "$1" != "configure" ]; then
+ exit 0
+ fi
+fi
+
+update=/usr/sbin/update-grub-legacy-ec2
+[ ! -x "${update}" ] || exec "${update}"
diff --git a/debian/grub-legacy-ec2.kernel-postrm b/debian/grub-legacy-ec2.kernel-postrm
new file mode 100755
index 00000000..6f6aa4a4
--- /dev/null
+++ b/debian/grub-legacy-ec2.kernel-postrm
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+version="$1"
+bootopt=""
+
+# passing the kernel version is required
+[ -z "${version}" ] && exit 0
+
+# avoid running multiple times
+if [ -n "$DEB_MAINT_PARAMS" ]; then
+ eval set -- "$DEB_MAINT_PARAMS"
+ if [ -z "$1" ] || [ "$1" != "remove" ]; then
+ exit 0
+ fi
+fi
+
+update=/usr/sbin/update-grub-legacy-ec2
+[ ! -x "${update}" ] || exec "${update}"
diff --git a/debian/grub-legacy-ec2.lintian-overrides b/debian/grub-legacy-ec2.lintian-overrides
new file mode 100644
index 00000000..ed8c77f1
--- /dev/null
+++ b/debian/grub-legacy-ec2.lintian-overrides
@@ -0,0 +1,6 @@
+# no-debconf-config and debconf-is-not-a-registry lintian errors
+# are present in the ubuntu grub package that these were pulled from.
+# they're due to the use of debconf for merging prompt in
+# update-grub-legacy-ec2
+grub-legacy-ec2 binary: no-debconf-config
+grub-legacy-ec2 binary: debconf-is-not-a-registry
diff --git a/debian/grub-legacy-ec2.postinst b/debian/grub-legacy-ec2.postinst
new file mode 100644
index 00000000..3c4aa5cd
--- /dev/null
+++ b/debian/grub-legacy-ec2.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+set -e
+
+if [ "$1" = "configure" ]; then
+ mkdir -p /boot/grub
+ update-grub-legacy-ec2 -y
+fi
+
+#DEBHELPER#
diff --git a/debian/grub-legacy-ec2.postrm b/debian/grub-legacy-ec2.postrm
new file mode 100644
index 00000000..50184234
--- /dev/null
+++ b/debian/grub-legacy-ec2.postrm
@@ -0,0 +1,17 @@
+#!/bin/sh
+set -e
+
+if [ "$1" = purge ]; then
+ if [ -x "`which ucf 2>/dev/null`" ]; then
+ ucf --purge /var/run/grub/menu.lst
+ fi
+ if [ -x "`which ucfr 2>/dev/null`" ]; then
+ ucfr --purge grub /var/run/grub/menu.lst
+ fi
+fi
+
+if [ "$1" = "remove" ]; then
+ dpkg-divert --package grub-legacy-ec2 --remove --rename --divert \
+ /usr/sbin/grub-set-default.real /usr/sbin/grub-set-default
+fi
+#DEBHELPER#
diff --git a/debian/grub-legacy-ec2.preinst b/debian/grub-legacy-ec2.preinst
new file mode 100644
index 00000000..ac73b428
--- /dev/null
+++ b/debian/grub-legacy-ec2.preinst
@@ -0,0 +1,9 @@
+#!/bin/sh
+set -e
+
+if [ "$1" = "install" -o "$1" = "upgrade" ]; then
+ dpkg-divert --package grub-legacy-ec2 --rename --divert \
+ /usr/sbin/grub-set-default.real --add /usr/sbin/grub-set-default
+fi
+
+#DEBHELPER#
diff --git a/debian/grub-legacy-ec2.templates b/debian/grub-legacy-ec2.templates
new file mode 100644
index 00000000..0562c8cb
--- /dev/null
+++ b/debian/grub-legacy-ec2.templates
@@ -0,0 +1,9 @@
+Template: grub/update_grub_changeprompt_threeway
+Type: select
+# Translators, please keep translations *short* (less than 65 columns)
+__Choices: install the package maintainer's version, keep the local version currently installed, show the differences between the versions, show a side-by-side difference between the versions, show a 3-way difference between available versions, do a 3-way merge between available versions (experimental), start a new shell to examine the situation
+Choices-C: install_new, keep_current, diff, sdiff, diff_threeway, merge_threeway, shell
+Default: keep_current
+_Description: What would you like to do about ${BASENAME}?
+ A new version of /boot/grub/menu.lst is available, but the version installed
+ currently has been locally modified.
diff --git a/debian/grub-set-default b/debian/grub-set-default
new file mode 100755
index 00000000..8816bc7e
--- /dev/null
+++ b/debian/grub-set-default
@@ -0,0 +1,38 @@
+#!/bin/sh
+
+diverted=/usr/sbin/grub-set-default.real
+legacy_ec2=/usr/sbin/grub-set-default-legacy-ec2
+normal=/usr/sbin/grub-set-default
+
+warn() { echo "WARNING:" "$@" 1>&2; }
+Usage() {
+ cat <<EOF
+${0} is a wrapper provided by grub-legacy-ec2.
+It ensures that the appropriate 'set-default' is called.
+For specific version or help info invoke one of the following directly:
+ ${diverted}
+ and
+ ${legacy_ec2}
+EOF
+}
+
+[ $# -eq 0 ] && { Usage; exit 1; }
+for a in "$@"; do
+ case "$a" in
+ --help|-h|-v|--version) Usage; exit 0;;
+ esac
+done
+
+"${legacy_ec2}" "${@}"
+lret=$?
+[ ${lret} -eq 0 ] || warn "${legacy_ec2} returned ${lret}"
+
+dret=0
+if [ -x "${diverted}" -a -f "/boot/grub/grub.cfg" ]; then
+ "${diverted}" "$@"
+ dret=$?
+fi
+[ ${dret} -eq 0 ] || warn "${diverted} returned ${dret}"
+
+[ $lret -eq 0 -a $dret -eq 0 ]
+exit
diff --git a/debian/grub-set-default-legacy-ec2 b/debian/grub-set-default-legacy-ec2
new file mode 100644
index 00000000..dcd88fb1
--- /dev/null
+++ b/debian/grub-set-default-legacy-ec2
@@ -0,0 +1,141 @@
+#! /bin/sh
+
+# Set a default boot entry for GRUB
+# Copyright (C) 2004 Free Software Foundation, Inc.
+#
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+# Initialize some variables.
+PACKAGE=grub-legacy-ec2
+VERSION=0.97-29ubuntu60
+
+rootdir=
+entry=
+
+# Usage: usage
+# Print the usage.
+usage () {
+ cat <<EOF
+Usage: grub-set-default [OPTION] entry
+Set the default boot entry for GRUB.
+
+ -h, --help print this message and exit
+ -v, --version print the version information and exit
+ --root-directory=DIR Use the directory DIR instead of the root directory
+
+ENTRY is a number or the special keyword \`default\'.
+
+Report bugs to <bug-grub@gnu.org>.
+EOF
+}
+
+# Check the arguments.
+for option in "$@"; do
+ case "$option" in
+ -h | --help)
+ usage
+ exit 0 ;;
+ -v | --version)
+ echo "grub-set-default (GNU GRUB ${VERSION})"
+ exit 0 ;;
+ --root-directory=*)
+ rootdir=`echo "$option" | sed 's/--root-directory=//'` ;;
+ -*)
+ echo "Unrecognized option \`$option'" 1>&2
+ usage
+ exit 1
+ ;;
+ *)
+ if test "x$entry" != x; then
+ echo "More than one entries?" 1>&2
+ usage
+ exit 1
+ fi
+ # We don't care about what the user specified actually.
+ entry="${option}" ;;
+ esac
+done
+
+if test "x$entry" = x; then
+ echo "entry not specified." 1>&2
+ usage
+ exit 1
+fi
+
+find_grub_dir ()
+{
+ echo -n "Searching for GRUB installation directory ... " >&2
+
+ for d in $grub_dirs ; do
+ if [ -d "$d" ] ; then
+ grub_dir="$d"
+ break
+ fi
+ done
+
+ if [ -z "$grub_dir" ] ; then
+ abort "No GRUB directory found.\n###"
+ else
+ echo "found: $grub_dir" >&2
+ fi
+
+ echo $grub_dir
+}
+
+grub_dirs="/boot/grub /boot/boot/grub"
+
+# Determine the GRUB directory. This is different among OSes.
+# if rootdir has been informed use it or find grubdir otherwise
+if [ -n "${rootdir}" ]; then
+ grubdir=${rootdir}/boot/grub
+ if test -d ${grubdir}; then
+ :
+ else
+ grubdir=${rootdir}/grub
+ if test -d ${grubdir}; then
+ :
+ else
+ echo "No GRUB directory found under ${rootdir}/" 1>&2
+ exit 1
+ fi
+ fi
+else
+ grubdir=$(find_grub_dir)
+fi
+
+file=${grubdir}/default
+if test -f ${file}; then
+ chmod 0600 ${file}
+ rm -f ${file}
+fi
+cat <<EOF > $file
+$entry
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+# WARNING: If you want to edit this file directly, do not remove any line
+# from this file, including this warning. Using \`grub-set-default\' is
+# strongly recommended.
+EOF
+
+# Bye.
+exit 0
diff --git a/debian/po/POTFILES.in b/debian/po/POTFILES.in
new file mode 100644
index 00000000..9dc1b8f6
--- /dev/null
+++ b/debian/po/POTFILES.in
@@ -0,0 +1 @@
+[type: gettext/rfc822deb] grub.templates
diff --git a/debian/po/ca.po b/debian/po/ca.po
new file mode 100644
index 00000000..e839a466
--- /dev/null
+++ b/debian/po/ca.po
@@ -0,0 +1,80 @@
+# ucf (debconf) translation to Catalan.
+# Copyright (C) 2004 Free Software Foundation, Inc.
+# Aleix Badia i Bosch <abadia@ica.es>, 2004
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: ucf_0.30_templates\n"
+"Report-Msgid-Bugs-To: Source: grub@packages.debian.org\n"
+"POT-Creation-Date: 2008-01-28 08:38-0800\n"
+"PO-Revision-Date: 2007-09-19 01:08-0500\n"
+"Last-Translator: Aleix Badia i Bosch <abadia@ica.es>\n"
+"Language-Team: Catalan <debian-l10n-catalan@lists.debian.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "install the package maintainer's version"
+msgstr "instal·la la versió del mantenidor del paquet"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "keep the local version currently installed"
+msgstr "mantén la versió instal·lada actualment"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show the differences between the versions"
+msgstr "mostra les diferències entre les versions"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a side-by-side difference between the versions"
+msgstr "mostra les diferències entre les versions"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a 3-way difference between available versions"
+msgstr "mostra les diferències entre les versions"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "do a 3-way merge between available versions (experimental)"
+msgstr ""
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "start a new shell to examine the situation"
+msgstr "inicia una nova línia de comandes per examinar la situació"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+msgid "What would you like to do about ${BASENAME}?"
+msgstr "Què voleu fer respecte el ${BASNAME}?"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+msgid ""
+"A new version of /boot/grub/menu.lst is available, but the version installed "
+"currently has been locally modified."
+msgstr ""
+"Hi ha una nova versió del fitxer /boot/grub/menu.lst, però la vostra versió "
+"s'ha modificat localment."
diff --git a/debian/po/cs.po b/debian/po/cs.po
new file mode 100644
index 00000000..7d8db4a7
--- /dev/null
+++ b/debian/po/cs.po
@@ -0,0 +1,89 @@
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+# Developers do not need to manually edit POT or PO files.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: ucf\n"
+"Report-Msgid-Bugs-To: Source: grub@packages.debian.org\n"
+"POT-Creation-Date: 2008-01-28 08:38-0800\n"
+"PO-Revision-Date: 2007-06-23 14:31+0200\n"
+"Last-Translator: Miroslav kure <kurem@debian.cz>\n"
+"Language-Team: Czech <debian-l10n-czech@lists.debian.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "install the package maintainer's version"
+msgstr "instalovat verzi od správce balíku"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "keep the local version currently installed"
+msgstr "ponechat aktuálně instalovanou lokální verzi"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show the differences between the versions"
+msgstr "zobrazit rozdíly mezi verzemi"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a side-by-side difference between the versions"
+msgstr "zobrazit rozdíly mezi verzemi vedle sebe"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a 3-way difference between available versions"
+msgstr "zobrazit třícestný rozdíl mezi dostupnými verzemi"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "do a 3-way merge between available versions (experimental)"
+msgstr "provést třícestné slouÄení dostupných verzí (experimentální)"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "start a new shell to examine the situation"
+msgstr "spustit nový shell a prozkoumat situaci"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+msgid "What would you like to do about ${BASENAME}?"
+msgstr "Co chcete udělat s ${BASENAME}?"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+msgid ""
+"A new version of /boot/grub/menu.lst is available, but the version installed "
+"currently has been locally modified."
+msgstr ""
+"K dispozici je novější verze souboru /boot/grub/menu.lst, avšak "
+"nainstalovaná verze obsahuje lokální úpravy."
diff --git a/debian/po/da.po b/debian/po/da.po
new file mode 100644
index 00000000..399439cf
--- /dev/null
+++ b/debian/po/da.po
@@ -0,0 +1,86 @@
+# SOME DESCRIPTIVE TITLE.
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+#
+# Claus Hindsgaul <claus_h@image.dk>, 2005.
+# Claus Hindsgaul <claus.hindsgaul@gmail.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: ucf debconf template\n"
+"Report-Msgid-Bugs-To: Source: grub@packages.debian.org\n"
+"POT-Creation-Date: 2008-01-28 08:38-0800\n"
+"PO-Revision-Date: 2007-09-19 01:09-0500\n"
+"Last-Translator: Claus Hindsgaul <claus.hindsgaul@gmail.com>\n"
+"Language-Team: Danish\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "install the package maintainer's version"
+msgstr "installér pakkevedligeholderens udgave"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "keep the local version currently installed"
+msgstr "bevar din aktuelt-installerede udgave"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show the differences between the versions"
+msgstr "vis forskellene mellem udgaverne"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a side-by-side difference between the versions"
+msgstr "vis forskellene mellem versionerne overfor hinanden"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a 3-way difference between available versions"
+msgstr "vis 3-vejs forskelle mellem de tilgængelige udgaver af filen"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "do a 3-way merge between available versions (experimental)"
+msgstr ""
+"udfør en 3-vejs fletning mellem de tilgængelige udgaver af filen [Meget "
+"eksperimentelt]"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "start a new shell to examine the situation"
+msgstr "start en ny skal for at undersøge situationen"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+msgid "What would you like to do about ${BASENAME}?"
+msgstr "Hvad vil du gøre med ${BASENAME}?"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+#, fuzzy
+msgid ""
+"A new version of /boot/grub/menu.lst is available, but the version installed "
+"currently has been locally modified."
+msgstr ""
+"Der er kommet en ny version af filen /boot/grub/menu.lst, men din version er "
+"blevet ændret lokalt."
diff --git a/debian/po/de.po b/debian/po/de.po
new file mode 100644
index 00000000..294f7390
--- /dev/null
+++ b/debian/po/de.po
@@ -0,0 +1,92 @@
+# translation of ucf_3.002_de.po to German
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans#
+# Developers do not need to manually edit POT or PO files.
+#
+# Erik Schanze <eriks@debian.org>, 2004-2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: ucf_3.002_de\n"
+"Report-Msgid-Bugs-To: Source: grub@packages.debian.org\n"
+"POT-Creation-Date: 2008-01-28 08:38-0800\n"
+"PO-Revision-Date: 2007-07-01 22:08+0200\n"
+"Last-Translator: Erik Schanze <eriks@debian.org>\n"
+"Language-Team: German <debian-l10n-german@lists.debian.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "install the package maintainer's version"
+msgstr "Version des Paket-Betreuers installieren"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "keep the local version currently installed"
+msgstr "aktuell installierte Version behalten"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show the differences between the versions"
+msgstr "Unterschiede zwischen den Versionen anzeigen"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a side-by-side difference between the versions"
+msgstr "Unterschiede zwischen den Versionen nebeneinander anzeigen"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a 3-way difference between available versions"
+msgstr "3-Wege-Differenz der verfügbaren Versionen der Datei anzeigen"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "do a 3-way merge between available versions (experimental)"
+msgstr "3-Wege-Vereinigung verfügbarer Versionen [experimentell]"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "start a new shell to examine the situation"
+msgstr "die Angelegenheit in einer neu gestarteten Shell untersuchen"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+msgid "What would you like to do about ${BASENAME}?"
+msgstr "Wie wollen Sie mit ${BASENAME} verfahren?"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+#, fuzzy
+msgid ""
+"A new version of /boot/grub/menu.lst is available, but the version installed "
+"currently has been locally modified."
+msgstr ""
+"Eine neue Version der Datei /boot/grub/menu.lst ist verfügbar, aber die "
+"installierte Version wurde verändert."
diff --git a/debian/po/es.po b/debian/po/es.po
new file mode 100644
index 00000000..725d9e91
--- /dev/null
+++ b/debian/po/es.po
@@ -0,0 +1,105 @@
+# ucf translation to spanish
+# Copyright (C) 2004-2007 Software in the Public Interest
+# This file is distributed under the same license as the ucf package.
+#
+# Changes:
+# - Initial translation
+# Lucas Wall <kthulhu@usa.net>, 2004
+# - Updated
+# Javier Fernandez-Sanguino <jfs@debian.org>, 2007
+#
+#
+# Traductores, si no conoce el formato PO, merece la pena leer la
+# documentación de gettext, especialmente las secciones dedicadas a este
+# formato, por ejemplo ejecutando:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Equipo de traducción al español, por favor lean antes de traducir
+# los siguientes documentos:
+#
+# - El proyecto de traducción de Debian al español
+# http://www.debian.org/intl/spanish/coordinacion
+# especialmente las notas de traducción en
+# http://www.debian.org/intl/spanish/notas
+#
+# - La guía de traducción de po's de debconf:
+# /usr/share/doc/po-debconf/README-trans
+# o http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: ucf 1.06\n"
+"Report-Msgid-Bugs-To: Source: grub@packages.debian.org\n"
+"POT-Creation-Date: 2008-01-28 08:38-0800\n"
+"PO-Revision-Date: 2007-06-21 13:41+0200\n"
+"Last-Translator: Javier Fernandez-Sanguino <jfs@debian.org>\n"
+"Language-Team: Debian Spanish <debian-l10n-spanish@lists.debian.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-15\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "install the package maintainer's version"
+msgstr "instalar la versión del responsable del paquete"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "keep the local version currently installed"
+msgstr "conservar la versión local actualmente instalada"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show the differences between the versions"
+msgstr "mostrar las diferencias entre las versiones"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a side-by-side difference between the versions"
+msgstr "mostrar las diferencias entre las versiones lado a lado"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a 3-way difference between available versions"
+msgstr "mostrar las diferencias entre las tres versiones"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "do a 3-way merge between available versions (experimental)"
+msgstr "fusionar las tres versiones disponibles (experimental)"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "start a new shell to examine the situation"
+msgstr "ejecutar un nuevo intérprete para examinar la situación"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+msgid "What would you like to do about ${BASENAME}?"
+msgstr "¿Qué desea hacer con ${BASENAME}?"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+msgid ""
+"A new version of /boot/grub/menu.lst is available, but the version installed "
+"currently has been locally modified."
+msgstr ""
+"Hay una nueva versión del fichero /boot/grub/menu.lst, pero la versión que "
+"está instalada ha sido modificada localmente."
diff --git a/debian/po/eu.po b/debian/po/eu.po
new file mode 100644
index 00000000..ddf7d2a7
--- /dev/null
+++ b/debian/po/eu.po
@@ -0,0 +1,83 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Piarres Beobide <pi@beobide.net>, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: ucf-debconf\n"
+"Report-Msgid-Bugs-To: Source: grub@packages.debian.org\n"
+"POT-Creation-Date: 2008-01-28 08:38-0800\n"
+"PO-Revision-Date: 2007-06-20 13:40+0200\n"
+"Last-Translator: Piarres Beobide <pi@beobide.net>\n"
+"Language-Team: Euskara <Librezale@librezale.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 0.11\n"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "install the package maintainer's version"
+msgstr "Pakete arduradunaren bertsioa instalatu"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "keep the local version currently installed"
+msgstr "mantendu lokalean instalaturiko bertsioa"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show the differences between the versions"
+msgstr "bertsioen arteko ezberdintasunak ikusi"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a side-by-side difference between the versions"
+msgstr "bertsioen arteko ezberdintasunak aldez-alde ikusi"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a 3-way difference between available versions"
+msgstr "bertsioen arteko ezberdintasunak 3 eratara ikusi"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "do a 3-way merge between available versions (experimental)"
+msgstr "bertsioen arteko ezberdintasunak 3 eratara batu (esperimentala)"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "start a new shell to examine the situation"
+msgstr "shell berri bat hasi egoera aztertzeko"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+msgid "What would you like to do about ${BASENAME}?"
+msgstr "Zer egitea gustatuko litzaizuke ${BASENAME}-ri buruz?"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+#, fuzzy
+msgid ""
+"A new version of /boot/grub/menu.lst is available, but the version installed "
+"currently has been locally modified."
+msgstr ""
+"/boot/grub/menu.lst fitxategiaren bertsio berri bat dago eskuragarri, baina "
+"instalaturik dagoenak lokalean eraldatua izan da."
diff --git a/debian/po/fi.po b/debian/po/fi.po
new file mode 100644
index 00000000..62da4409
--- /dev/null
+++ b/debian/po/fi.po
@@ -0,0 +1,79 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: ucf_3.003\n"
+"Report-Msgid-Bugs-To: Source: grub@packages.debian.org\n"
+"POT-Creation-Date: 2008-01-28 08:38-0800\n"
+"PO-Revision-Date: 2007-10-30 18:42+0200\n"
+"Last-Translator: Esko Arajärvi <edu@iki.fi>\n"
+"Language-Team: Finnish <debian-l10n-finnish@lists.debian.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Finnish\n"
+"X-Poedit-Country: FINLAND\n"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "install the package maintainer's version"
+msgstr "asenna paketin ylläpitäjän versio"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "keep the local version currently installed"
+msgstr "säilytä tällä hetkellä asennettu paikallinen versio"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show the differences between the versions"
+msgstr "näytä versioiden väliset erot"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a side-by-side difference between the versions"
+msgstr "näytä versioiden väliset erot rinnakkain"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a 3-way difference between available versions"
+msgstr "näytä versioiden välinen kolmisuuntainen erotus"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "do a 3-way merge between available versions (experimental)"
+msgstr "tee kolmisuuntainen versioiden yhdistys (kokeellinen)"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "start a new shell to examine the situation"
+msgstr "käynnistä uusi kuori tilanteen tutkimiseksi"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+msgid "What would you like to do about ${BASENAME}?"
+msgstr "Miten käsitellään ${BASENAME}?"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+#, fuzzy
+msgid ""
+"A new version of /boot/grub/menu.lst is available, but the version installed "
+"currently has been locally modified."
+msgstr ""
+"Asetustiedostosta /boot/grub/menu.lst on tarjolla uusi versio, mutta "
+"nykyistä versiota on muokattu paikallisesti."
diff --git a/debian/po/fr.po b/debian/po/fr.po
new file mode 100644
index 00000000..1598329c
--- /dev/null
+++ b/debian/po/fr.po
@@ -0,0 +1,78 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: fr\n"
+"Report-Msgid-Bugs-To: Source: grub@packages.debian.org\n"
+"POT-Creation-Date: 2008-01-28 08:38-0800\n"
+"PO-Revision-Date: 2007-06-19 09:36+0200\n"
+"Last-Translator: Eric Madesclair <eric-m@wanadoo.fr>\n"
+"Language-Team: French <debian-l10n-french@lists.debian.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "install the package maintainer's version"
+msgstr "Installer la version du responsable du paquet"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "keep the local version currently installed"
+msgstr "Garder la version actuellement installée"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show the differences between the versions"
+msgstr "Montrer les différences entre les versions"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a side-by-side difference between the versions"
+msgstr "Montrer côte à côte les différences entre les versions"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a 3-way difference between available versions"
+msgstr "Montrer les différences entre les trois versions du fichier"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "do a 3-way merge between available versions (experimental)"
+msgstr "Fusionner les trois versions disponibles du fichier (expérimental)"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "start a new shell to examine the situation"
+msgstr "Lancer un shell pour examiner la situation"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+msgid "What would you like to do about ${BASENAME}?"
+msgstr "Action souhaitée pour ${BASENAME} :"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+msgid ""
+"A new version of /boot/grub/menu.lst is available, but the version installed "
+"currently has been locally modified."
+msgstr ""
+"Une nouvelle version du fichier /boot/grub/menu.lst est disponible mais la "
+"version actuellement utilisée a été modifiée localement."
diff --git a/debian/po/gl.po b/debian/po/gl.po
new file mode 100644
index 00000000..6547ad32
--- /dev/null
+++ b/debian/po/gl.po
@@ -0,0 +1,80 @@
+# Galician translation of ucf's debconf templates.
+# This file is distributed under the same license as the ucf package.
+# Jacobo Tarrio <jtarrio@debian.org>, 2006, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: ucf\n"
+"Report-Msgid-Bugs-To: Source: grub@packages.debian.org\n"
+"POT-Creation-Date: 2008-01-28 08:38-0800\n"
+"PO-Revision-Date: 2007-06-20 15:50+0200\n"
+"Last-Translator: Jacobo Tarrio <jtarrio@debian.org>\n"
+"Language-Team: Galician <proxecto@trasno.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "install the package maintainer's version"
+msgstr "instalar a versión do mantedor de paquetes"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "keep the local version currently installed"
+msgstr "conservar a versión local instalada actualmente"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show the differences between the versions"
+msgstr "amosar as diferencias entre as versións"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a side-by-side difference between the versions"
+msgstr "amosar unha comparación entre as versións"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a 3-way difference between available versions"
+msgstr "amosar unha diferencia a tres entre as versións dispoñibles"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "do a 3-way merge between available versions (experimental)"
+msgstr "mesturar as versións dispoñibles (experimental)"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "start a new shell to examine the situation"
+msgstr "iniciar un intérprete de ordes para examinar a situación"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+msgid "What would you like to do about ${BASENAME}?"
+msgstr "¿Que quere facer con ${BASENAME}?"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+msgid ""
+"A new version of /boot/grub/menu.lst is available, but the version installed "
+"currently has been locally modified."
+msgstr ""
+"Hai dispoñible unha nova versión do ficheiro /boot/grub/menu.lst, pero a "
+"versión actualmente instalada ten modificacións locais."
diff --git a/debian/po/it.po b/debian/po/it.po
new file mode 100644
index 00000000..f344e463
--- /dev/null
+++ b/debian/po/it.po
@@ -0,0 +1,81 @@
+# translation of ucf_1.18_templates.po to italian
+# Copyright Luca Bruno <luca.br@uno.it>, 2005.
+msgid ""
+msgstr ""
+"Project-Id-Version: ucf_1.18_templates\n"
+"Report-Msgid-Bugs-To: Source: grub@packages.debian.org\n"
+"POT-Creation-Date: 2008-01-28 08:38-0800\n"
+"PO-Revision-Date: 2007-09-19 01:10-0500\n"
+"Last-Translator: Luca Bruno <luca.br@uno.it>\n"
+"Language-Team: Italian <tp@lists.linux.it>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "install the package maintainer's version"
+msgstr "installare la versione del manutentore del pacchetto"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "keep the local version currently installed"
+msgstr "mantenere la propria versione attualmente installata"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show the differences between the versions"
+msgstr "mostrare le differenze tra le versioni"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a side-by-side difference between the versions"
+msgstr "mostrare le differenze tra le versioni"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a 3-way difference between available versions"
+msgstr "Mostrare le differenze tra 3 versioni del file disponibili"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "do a 3-way merge between available versions (experimental)"
+msgstr ""
+"Integrare le differenze tra 3 versioni del file disponibili [Molto "
+"sperimentale]"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "start a new shell to examine the situation"
+msgstr "eseguire una nuova shell per esaminare la situazione"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+msgid "What would you like to do about ${BASENAME}?"
+msgstr "Cosa si vuol fare di ${BASENAME}?"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+#, fuzzy
+msgid ""
+"A new version of /boot/grub/menu.lst is available, but the version installed "
+"currently has been locally modified."
+msgstr ""
+"Una nuova versione del file /boot/grub/menu.lst è disponibile, ma la propria "
+"versione è stata modificata localmente."
diff --git a/debian/po/ja.po b/debian/po/ja.po
new file mode 100644
index 00000000..981ef228
--- /dev/null
+++ b/debian/po/ja.po
@@ -0,0 +1,90 @@
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+# Developers do not need to manually edit POT or PO files.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: ucf\n"
+"Report-Msgid-Bugs-To: Source: grub@packages.debian.org\n"
+"POT-Creation-Date: 2008-01-28 08:38-0800\n"
+"PO-Revision-Date: 2007-06-21 14:11+0900\n"
+"Last-Translator: Kenshi Muto <kmuto@debian.org>\n"
+"Language-Team: Japanese <debian-japanese@lists.debian.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "install the package maintainer's version"
+msgstr "パッケージメンテナã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’インストール"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "keep the local version currently installed"
+msgstr "ç¾åœ¨ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ã„るローカルãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’ä¿æŒ"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show the differences between the versions"
+msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³é–“ã®å·®ç•°ã‚’表示"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a side-by-side difference between the versions"
+msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³é–“ã®å·®ç•°ã‚’並行表示"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a 3-way difference between available versions"
+msgstr "利用å¯èƒ½ãªãƒãƒ¼ã‚¸ãƒ§ãƒ³é–“ã®3種類ã®å·®ç•°ã‚’表示"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "do a 3-way merge between available versions (experimental)"
+msgstr "利用å¯èƒ½ãªãƒãƒ¼ã‚¸ãƒ§ãƒ³é–“ã§ã®3種類マージを行ㆠ(実験的)"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "start a new shell to examine the situation"
+msgstr "状æ³ã‚’検討ã™ã‚‹ãŸã‚ã®æ–°ã—ã„シェルを起動"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+msgid "What would you like to do about ${BASENAME}?"
+msgstr "${BASENAME} ã«ã¤ã„ã¦ä½•ã‚’è¡Œã„ãŸã„ã§ã™ã‹?"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+#, fuzzy
+msgid ""
+"A new version of /boot/grub/menu.lst is available, but the version installed "
+"currently has been locally modified."
+msgstr ""
+"設定ファイル /boot/grub/menu.lst ã®æ–°ã—ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒåˆ©ç”¨å¯èƒ½ã§ã™ãŒã€ç¾åœ¨ã‚¤ãƒ³"
+"ストールã•ã‚Œã¦ã„ã‚‹ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¯ã€ãƒ­ãƒ¼ã‚«ãƒ«ã§å¤‰æ›´ã•ã‚Œã¦ã„ã¾ã™ã€‚"
diff --git a/debian/po/nl.po b/debian/po/nl.po
new file mode 100644
index 00000000..e8acf632
--- /dev/null
+++ b/debian/po/nl.po
@@ -0,0 +1,95 @@
+# translation of ucf_2.007_templates.po to dutch
+# This file is distributed under the same license as the ucf package.
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans#
+# Developers do not need to manually edit POT or PO files.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: ucf_2.007_nl\n"
+"Report-Msgid-Bugs-To: Source: grub@packages.debian.org\n"
+"POT-Creation-Date: 2008-01-28 08:38-0800\n"
+"PO-Revision-Date: 2007-09-19 01:09-0500\n"
+"Last-Translator: Kurt De Bree <kdebree(AT)telenet(DOT)be>\n"
+"Language-Team: Nederlands <debian-l10n-dutch@lists.debian.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.10.2\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "install the package maintainer's version"
+msgstr "installeer de versie van de pakketbeheerder"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "keep the local version currently installed"
+msgstr "behoud de reeds geïnstalleerde versie"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show the differences between the versions"
+msgstr "toon de verschillen tussen de versies"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a side-by-side difference between the versions"
+msgstr "toon de verschillende versies zij-aan-zij"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a 3-way difference between available versions"
+msgstr ""
+"toon een drievoudig verschil tussen de beschikbare versies van het bestand"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "do a 3-way merge between available versions (experimental)"
+msgstr ""
+"doe een drievoudige samenvoeging tussen de beschikbare versies van het "
+"bestand (Zeer Experimenteel)"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "start a new shell to examine the situation"
+msgstr "start een nieuwe shell om de situatie te onderzoeken"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+msgid "What would you like to do about ${BASENAME}?"
+msgstr "Wat wilt u met ${BASENAME} doen?"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+#, fuzzy
+msgid ""
+"A new version of /boot/grub/menu.lst is available, but the version installed "
+"currently has been locally modified."
+msgstr ""
+"Een nieuwe versie van het bestand /boot/grub/menu.lst is beschikbaar, maar "
+"uw versie werd handmatig gewijzigd."
diff --git a/debian/po/pl.po b/debian/po/pl.po
new file mode 100644
index 00000000..a42099e1
--- /dev/null
+++ b/debian/po/pl.po
@@ -0,0 +1,100 @@
+# translation of ucf3002.po to Polish
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+# Developers do not need to manually edit POT or PO files.
+#
+# Wojciech Zarêba <wojtekz@comp.waw.pl>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: ucf3002\n"
+"Report-Msgid-Bugs-To: Source: grub@packages.debian.org\n"
+"POT-Creation-Date: 2008-01-28 08:38-0800\n"
+"PO-Revision-Date: 2007-06-27 17:15+0200\n"
+"Last-Translator: Wojciech Zarêba <wojtekz@itrium.icd.waw.pl>\n"
+"Language-Team: Polish <pl@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-2\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "install the package maintainer's version"
+msgstr "zainstalowanie wersji przygotowanej przez opiekuna pakietu"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "keep the local version currently installed"
+msgstr "zachowanie lokalnie zainstalowanej wersji"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show the differences between the versions"
+msgstr "pokazanie ró¿nic pomiêdzy wersjami"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a side-by-side difference between the versions"
+msgstr "pokazanie ró¿nic - obok siebie - pomiêdzy wersjami"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a 3-way difference between available versions"
+msgstr "pokazanie ró¿nic pomiêdzy trzema dostêpnymi wersjami"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "do a 3-way merge between available versions (experimental)"
+msgstr "scalenie zmian pomiêdzy 3 dostêpnymi wersjami (eksperymentalne)"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "start a new shell to examine the situation"
+msgstr "uruchomienie pow³oki w celu zbadania sytuacji"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+msgid "What would you like to do about ${BASENAME}?"
+msgstr "Proszê wybraæ akcjê do wykonania na pliku ${BASENAME}:"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+#, fuzzy
+msgid ""
+"A new version of /boot/grub/menu.lst is available, but the version installed "
+"currently has been locally modified."
+msgstr ""
+"Dostêpna jest nowa wersja pliku /boot/grub/menu.lst, ale obecna wersja "
+"zosta³a lokalnie zmodyfikowana."
+
+#~ msgid "Modified configuration file"
+#~ msgstr "Zmodyfikowany plik konfiguracyjny"
+
+#~ msgid "Line by line differences between versions"
+#~ msgstr "Ró¿nice linia po linii pomiêdzy wersjami"
diff --git a/debian/po/pt.po b/debian/po/pt.po
new file mode 100644
index 00000000..23c7f8f5
--- /dev/null
+++ b/debian/po/pt.po
@@ -0,0 +1,82 @@
+# Portuguese translation of ucf's debconf messages.
+# 2007, Pedro Ribeiro <p.m42.ribeiro@gmail.com>
+# Bruno Queiros <brunomiguelqueiros@sapo.pt>, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: ucf 2.0020\n"
+"Report-Msgid-Bugs-To: Source: grub@packages.debian.org\n"
+"POT-Creation-Date: 2008-01-28 08:38-0800\n"
+"PO-Revision-Date: 2007-09-19 01:09-0500\n"
+"Last-Translator: Bruno Queiros <brunomiguelqueiros@sapo.pt>\n"
+"Language-Team: Portuguese <traduz@debianpt.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "install the package maintainer's version"
+msgstr "instalar a versão do criador do pacote"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "keep the local version currently installed"
+msgstr "manter a versão actualmente instalada"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show the differences between the versions"
+msgstr "mostrar a diferença entre as versões"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a side-by-side difference between the versions"
+msgstr "mostrar uma diferença lado-a-lado entre as versões"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a 3-way difference between available versions"
+msgstr "mostrar uma diferença em 3 vias entre versões disponíveis do ficheiro"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "do a 3-way merge between available versions (experimental)"
+msgstr ""
+"fazer uma junção em 3 vias entre versões disponíveis do ficheiro [Muito "
+"Experimental]"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "start a new shell to examine the situation"
+msgstr "iniciar uma nova consola para examinar a situação"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+msgid "What would you like to do about ${BASENAME}?"
+msgstr "O que quer fazer acerca de ${BASENAME}?"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+msgid ""
+"A new version of /boot/grub/menu.lst is available, but the version installed "
+"currently has been locally modified."
+msgstr ""
+"Uma nova versão do ficheiro /boot/grub/menu.lst está disponível, mas a sua "
+"versão foi modificada localmente."
diff --git a/debian/po/pt_BR.po b/debian/po/pt_BR.po
new file mode 100644
index 00000000..9d736b97
--- /dev/null
+++ b/debian/po/pt_BR.po
@@ -0,0 +1,89 @@
+#
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+#
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+# Developers do not need to manually edit POT or PO files.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: ucf\n"
+"Report-Msgid-Bugs-To: Source: grub@packages.debian.org\n"
+"POT-Creation-Date: 2008-01-28 08:38-0800\n"
+"PO-Revision-Date: 2007-09-19 01:11-0500\n"
+"Last-Translator: André Luís Lopes <andrelop@debian.org>\n"
+"Language-Team: Debian-BR Project <debian-l10n-portuguese@lists.debian.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "install the package maintainer's version"
+msgstr "instalar a versão do mantenedor do pacote"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "keep the local version currently installed"
+msgstr "manter a versão instalada atualmente"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show the differences between the versions"
+msgstr "exibir as diferenças entre as versões"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a side-by-side difference between the versions"
+msgstr "exibir as diferenças lado-a-lado entre as versões"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a 3-way difference between available versions"
+msgstr "exibir as diferenças entre as três versões disponíveis do arquivo"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "do a 3-way merge between available versions (experimental)"
+msgstr "juntar as 3 versões disponíveis do arquivo [Bem Experimental]"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "start a new shell to examine the situation"
+msgstr "iniciar um novo shell e examinar a situação"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+msgid "What would you like to do about ${BASENAME}?"
+msgstr "O que você gostaria de fazer em relação a ${BASENAME}?"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+msgid ""
+"A new version of /boot/grub/menu.lst is available, but the version installed "
+"currently has been locally modified."
+msgstr ""
+"Uma nova versão do arquivo /boot/grub/menu.lst está disponível, mas sua "
+"versão local foi modificada."
diff --git a/debian/po/ru.po b/debian/po/ru.po
new file mode 100644
index 00000000..6560fe31
--- /dev/null
+++ b/debian/po/ru.po
@@ -0,0 +1,85 @@
+# translation of ru.po to Russian
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+#
+# Yuri Kozlov <kozlov.y@gmail.com>, 2006, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: 3.001\n"
+"Report-Msgid-Bugs-To: Source: grub@packages.debian.org\n"
+"POT-Creation-Date: 2008-01-28 08:38-0800\n"
+"PO-Revision-Date: 2007-07-01 13:45+0400\n"
+"Last-Translator: Yuri Kozlov <kozlov.y@gmail.com>\n"
+"Language-Team: Russian <debian-l10n-russian@lists.debian.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "install the package maintainer's version"
+msgstr "уÑтановить верÑию из пакета"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "keep the local version currently installed"
+msgstr "Ñохранить уÑтановленную локальную верÑию"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show the differences between the versions"
+msgstr "показать Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð¸Ñ Ð¼ÐµÐ¶Ð´Ñƒ верÑиÑми"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a side-by-side difference between the versions"
+msgstr "показать Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð¸Ñ Ð¼ÐµÐ¶Ð´Ñƒ верÑиÑми параллельно"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a 3-way difference between available versions"
+msgstr "показать Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð¸Ñ Ñразу между 3-Ð¼Ñ Ð´Ð¾Ñтупными верÑиÑми"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "do a 3-way merge between available versions (experimental)"
+msgstr "выполнить ÑлиÑние 3-Ñ… доÑтупных верÑий [ÑкÑпериментальный режим]"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "start a new shell to examine the situation"
+msgstr "запуÑтить новую оболочку командной Ñтроки Ð´Ð»Ñ Ð¿Ñ€Ð¾ÑÑÐ½ÐµÐ½Ð¸Ñ Ñитуации"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+msgid "What would you like to do about ${BASENAME}?"
+msgstr "Что нужно Ñделать Ñ ${BASENAME}?"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+#, fuzzy
+msgid ""
+"A new version of /boot/grub/menu.lst is available, but the version installed "
+"currently has been locally modified."
+msgstr ""
+"ДоÑтупна Ð½Ð¾Ð²Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ Ñ„Ð°Ð¹Ð»Ð° /boot/grub/menu.lst, но верÑÐ¸Ñ Ñ„Ð°Ð¹Ð»Ð°, "
+"находÑщегоÑÑ Ð² ÑиÑтеме, была изменёна локально."
diff --git a/debian/po/sv.po b/debian/po/sv.po
new file mode 100644
index 00000000..8a157ded
--- /dev/null
+++ b/debian/po/sv.po
@@ -0,0 +1,82 @@
+# Swedish translation for ucf.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# This file is distributed under the same license as the ucf package.
+# Daniel Nylander <po@danielnylander.se>, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: ucf 2.002\n"
+"Report-Msgid-Bugs-To: Source: grub@packages.debian.org\n"
+"POT-Creation-Date: 2008-01-28 08:38-0800\n"
+"PO-Revision-Date: 2007-06-25 10:07+0100\n"
+"Last-Translator: Daniel Nylander <po@danielnylander.se>\n"
+"Language-Team: Swedish <debian-l10n-swedish@lists.debian.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "install the package maintainer's version"
+msgstr "installera paketansvariges version"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "keep the local version currently installed"
+msgstr "behåll den lokalt installerade version"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show the differences between the versions"
+msgstr "visa skillnaderna mellan versionerna"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a side-by-side difference between the versions"
+msgstr "visa skillnaderna sida vid sida mellan versionerna"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a 3-way difference between available versions"
+msgstr "visa en 3-vägs skillnad mellan tillgängliga versioner"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "do a 3-way merge between available versions (experimental)"
+msgstr "gör en 3-vägs sammanslagning mellan versionerna (experimentell)"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "start a new shell to examine the situation"
+msgstr "starta ett nytt skal för att undersöka situationen"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+msgid "What would you like to do about ${BASENAME}?"
+msgstr "Vad vill du göra med ${BASENAME}?"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+#, fuzzy
+msgid ""
+"A new version of /boot/grub/menu.lst is available, but the version installed "
+"currently has been locally modified."
+msgstr ""
+"En ny version av filen /boot/grub/menu.lst finns tillgänglig, men versionen "
+"som är installerad har ändrats lokalt."
diff --git a/debian/po/templates.pot b/debian/po/templates.pot
new file mode 100644
index 00000000..f0b056af
--- /dev/null
+++ b/debian/po/templates.pot
@@ -0,0 +1,80 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: Source: grub@packages.debian.org\n"
+"POT-Creation-Date: 2008-01-28 08:38-0800\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "install the package maintainer's version"
+msgstr ""
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "keep the local version currently installed"
+msgstr ""
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show the differences between the versions"
+msgstr ""
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a side-by-side difference between the versions"
+msgstr ""
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a 3-way difference between available versions"
+msgstr ""
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "do a 3-way merge between available versions (experimental)"
+msgstr ""
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "start a new shell to examine the situation"
+msgstr ""
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+msgid "What would you like to do about ${BASENAME}?"
+msgstr ""
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+msgid ""
+"A new version of /boot/grub/menu.lst is available, but the version installed "
+"currently has been locally modified."
+msgstr ""
diff --git a/debian/po/vi.po b/debian/po/vi.po
new file mode 100644
index 00000000..a815be9a
--- /dev/null
+++ b/debian/po/vi.po
@@ -0,0 +1,91 @@
+# Vietnamese translation for UCF.
+# Copyright © 2007 Free Software Foundation, Inc.
+# Clytie Siddall <clytie@riverland.net.au>, 2005-2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: ucf 3.002\n"
+"Report-Msgid-Bugs-To: Source: grub@packages.debian.org\n"
+"POT-Creation-Date: 2008-01-28 08:38-0800\n"
+"PO-Revision-Date: 2007-06-21 17:52+0930\n"
+"Last-Translator: Clytie Siddall <clytie@riverland.net.au>\n"
+"Language-Team: Vietnamese <vi-VN@googlegroups.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: LocFactoryEditor 1.6.4a1\n"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "install the package maintainer's version"
+msgstr "cài đặt phiên bản của nhà duy trì gói"
+
+# msgid "keep your currently-installed version"
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "keep the local version currently installed"
+msgstr "giữ phiên bản cục bá»™ đã cài đặt hiện thá»i"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show the differences between the versions"
+msgstr "hiển thị khác biệt giữa những phiên bản"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a side-by-side difference between the versions"
+msgstr "hiển thị khác biệt cạnh nhau giữa những phiên bản"
+
+# msgid "show a 3 way difference between available versions of the file"
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a 3-way difference between available versions"
+msgstr "hiển thị khác biệt ba hướng giữa những phiên bản sẵn sàng"
+
+# msgid ""
+# do a 3 way merge between available versions of the file [Very
+# Experimental]
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "do a 3-way merge between available versions (experimental)"
+msgstr "trộn ba hướng những phiên bản sẵn sàng (thực nghiệm)"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "start a new shell to examine the situation"
+msgstr "khởi chạy trình bao má»›i để khám xét trÆ°á»ng hợp"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+msgid "What would you like to do about ${BASENAME}?"
+msgstr "Äối vá»›i ${BASENAME}? muốn làm gì vậy?"
+
+# msgid ""
+# A new version of configuration file ${FILE} is available, but your
+# version has been locally modified.
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+#, fuzzy
+msgid ""
+"A new version of /boot/grub/menu.lst is available, but the version installed "
+"currently has been locally modified."
+msgstr ""
+"Có sẵn một phiên bản mới của tập tin cấu hình /boot/grub/menu.lst, nhưng "
+"phiên bản được cài đặt hiện thá»i đã bị sá»­a đổi cục bá»™."
diff --git a/debian/pycompat b/debian/pycompat
new file mode 100644
index 00000000..0cfbf088
--- /dev/null
+++ b/debian/pycompat
@@ -0,0 +1 @@
+2
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 00000000..76f68ac6
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,31 @@
+#!/usr/bin/make -f
+
+DEB_PYTHON2_MODULE_PACKAGES = cloud-init
+
+binary-install/cloud-init::cloud-init-fixups
+
+binary-install/grub-legacy-ec2::grub-legacy-ec2-install
+
+include /usr/share/cdbs/1/rules/debhelper.mk
+include /usr/share/cdbs/1/class/python-distutils.mk
+
+DEB_PYTHON_INSTALL_ARGS_ALL += --init-system=upstart
+DEB_DH_INSTALL_SOURCEDIR := debian/tmp
+
+cloud-init-fixups:
+ install -d $(DEB_DESTDIR)/etc/rsyslog.d $(DEB_DESTDIR)/etc/profile.d
+ cp tools/21-cloudinit.conf $(DEB_DESTDIR)/etc/rsyslog.d/21-cloudinit.conf
+ cp tools/Z99-cloud-locale-test.sh $(DEB_DESTDIR)/etc/profile.d
+
+grub-legacy-ec2-install:
+ install -d $(DEB_DESTDIR)/usr/sbin
+ install -m 0755 debian/update-grub-legacy-ec2 $(DEB_DESTDIR)/usr/sbin
+ # Note: these are installed as 'x-' so as to be
+ # sure to run after 'initramfs-tools' so the ramdisk
+ # will be genrated.
+ for khook in postinst postrm; do \
+ d=$(DEB_DESTDIR)/etc/kernel/$${khook}.d; \
+ install -d "$${d}" && \
+ install -m 0755 "debian/grub-legacy-ec2.kernel-$${khook}" "$${d}/x-grub-legacy-ec2" || exit 1; done
+ install -m 0755 debian/grub-set-default-legacy-ec2 $(DEB_DESTDIR)/usr/sbin
+ install -m 0755 debian/grub-set-default $(DEB_DESTDIR)/usr/sbin
diff --git a/debian/source/format b/debian/source/format
new file mode 100644
index 00000000..163aaf8d
--- /dev/null
+++ b/debian/source/format
@@ -0,0 +1 @@
+3.0 (quilt)
diff --git a/debian/update-grub-legacy-ec2 b/debian/update-grub-legacy-ec2
new file mode 100755
index 00000000..19648f6d
--- /dev/null
+++ b/debian/update-grub-legacy-ec2
@@ -0,0 +1,1598 @@
+#!/bin/bash
+#
+# Insert a list of installed kernels in a grub config file
+# Copyright 2001 Wichert Akkerman <wichert@linux.com>
+# Copyright 2007, 2008 Canonical Ltd.
+#
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# Contributors:
+# Jason Thomas <jason@debian.org>
+# David B.Harris <dbarclay10@yahoo.ca>
+# Marc Haber <mh@zugschlus.de>
+# Crispin Flowerday <crispin@zeus.com>
+# Steve Langasek <steve.langasek@canonical.com>
+
+# Abort on errors
+set -e
+
+# load debconf first, since this re-execs the script
+. /usr/share/debconf/confmodule
+
+host_os=`uname -s | tr '[A-Z]' '[a-z]'`
+
+abort() {
+ message=$@
+
+ echo >&2
+ printf '%s\n' "$message" >&2
+ echo >&2
+ exit 1
+}
+
+find_grub_dir ()
+{
+ echo -n "Searching for GRUB installation directory ... " >&2
+
+ for d in $grub_dirs ; do
+ if [ -d "$d" ] ; then
+ grub_dir="$d"
+ break
+ fi
+ done
+
+ if [ -z "$grub_dir" ] ; then
+ abort "No GRUB directory found.
+ To create a template run 'mkdir /boot/grub' first.
+ To install grub, install it manually or try the 'grub-install' command.
+ ### Warning, grub-install is used to change your MBR. ###"
+ else
+ echo "found: $grub_dir" >&2
+ fi
+
+ echo $grub_dir
+}
+
+find_device ()
+{
+ mount_point=$1
+
+ # Autodetect current root device
+ device=
+ if [ -f /etc/fstab ] ; then
+ device=$(awk '$1!~/^#/{
+ if ($2 ~ "^/+$") { $2 = "/"; } else { sub("/*$", "", $2); }
+ if ($2 == "'"$mount_point"'"){
+ print $1;
+ }
+ }' /etc/fstab | tail -n 1)
+ fi
+
+ if [ -n "$device" ] ; then
+ case "$device" in
+ LABEL=* | UUID=*)
+ device=`readlink -f "$(findfs $device)"`
+ ;;
+ *)
+ device=`readlink -f "$device"`
+ ;;
+ esac
+ fi
+
+ echo $device
+}
+
+find_root_device ()
+{
+ device=$(find_device "/")
+
+ if [ -z "$device" ]; then
+ echo "Cannot determine root device. Assuming /dev/hda1" >&2
+ echo "This error is probably caused by an invalid /etc/fstab" >&2
+ device=/dev/hda1
+ fi
+
+ echo $device
+}
+
+# Usage: convert_raid1 os_device
+# Checks if os_device is a software raid1.
+# If so, converts to first physical device in array.
+convert_raid1 ()
+{
+ case $1 in
+ /dev/md[0-9])
+ : ;; # Continue
+ *)
+ return 1 ;;
+ esac
+
+ [ -x /sbin/mdadm ] || return 1
+
+ # Check that the raid device is raid1
+ raidlevel=$(mdadm -D -b $1 | grep "^ARRAY" | \
+ sed "s/^.*level=//" | cut -d" " -f1)
+ [ "$raidlevel" = "raid1" ] || return 1
+
+ # Take only the first device that makes up the raid
+ raiddev=$(mdadm -D $1 | grep -A1 "Number" | grep "dev" \
+ | sed "s/^.*\(\/dev\/.*\)$/\1/")
+ [ -n "$raiddev" ] || return 1
+
+ echo $raiddev
+ return 0
+}
+
+# Usage: convert os_device
+# Convert an OS device to the corresponding GRUB drive.
+# This part is OS-specific.
+convert () {
+ # First, check if the device file exists.
+ if test -e "$1"; then
+ :
+ else
+ echo "$1: Not found or not a block device." 1>&2
+ exit 1
+ fi
+
+ host_os=`uname -s | tr '[[:upper:]]' '[[:lower:]]'`
+
+ # Break the device name into the disk part and the partition part.
+ case "$host_os" in
+ linux)
+ tmp_disk=`echo "$1" | sed -e 's%\([sh]d[[:lower:]]\)[0-9]*$%\1%' \
+ -e 's%\(fd[0-9]*\)$%\1%' \
+ -e 's%/part[0-9]*$%/disc%' \
+ -e 's%\(c[0-7]d[0-9]*\).*$%\1%'`
+ tmp_part=`echo "$1" | sed -e 's%.*/[sh]d[[:lower:]]\([0-9]*\)$%\1%' \
+ -e 's%.*/fd[0-9]*$%%' \
+ -e 's%.*/floppy/[0-9]*$%%' \
+ -e 's%.*/\(disc\|part\([0-9]*\)\)$%\2%' \
+ -e 's%.*c[0-7]d[0-9]*p*%%'`
+ ;;
+ gnu)
+ tmp_disk=`echo "$1" | sed 's%\([sh]d[0-9]*\).*%\1%'`
+ tmp_part=`echo "$1" | sed "s%$tmp_disk%%"` ;;
+ freebsd|*/kfreebsd)
+ tmp_disk=`echo "$1" | sed 's%r\{0,1\}\([saw]d[0-9]*\).*$%\1%' \
+ | sed 's%r\{0,1\}\(da[0-9]*\).*$%\1%'`
+ tmp_part=`echo "$1" \
+ | sed "s%.*/r\{0,1\}[saw]d[0-9]\(s[0-9]*[a-h]\)%\1%" \
+ | sed "s%.*/r\{0,1\}da[0-9]\(s[0-9]*[a-h]\)%\1%"`
+ ;;
+ netbsd|*/knetbsd)
+ tmp_disk=`echo "$1" | sed 's%r\{0,1\}\([sw]d[0-9]*\).*$%r\1d%' \
+ | sed 's%r\{0,1\}\(fd[0-9]*\).*$%r\1a%'`
+ tmp_part=`echo "$1" \
+ | sed "s%.*/r\{0,1\}[sw]d[0-9]\([abe-p]\)%\1%"`
+ ;;
+ *)
+ echo "update-grub does not support your OS yet." 1>&2
+ exit 1 ;;
+ esac
+
+ # Get the drive name.
+ tmp_drive=`grep -v '^#' $device_map | grep "$tmp_disk *$" \
+ | sed 's%.*\(([hf]d[0-9][a-z0-9,]*)\).*%\1%'`
+
+ # If not found, print an error message and exit.
+ if test "x$tmp_drive" = x; then
+ echo "$1 does not have any corresponding BIOS drive." 1>&2
+ exit 1
+ fi
+
+ if test "x$tmp_part" != x; then
+ # If a partition is specified, we need to translate it into the
+ # GRUB's syntax.
+ case "$host_os" in
+ linux)
+ echo "$tmp_drive" | sed "s%)$%,`expr $tmp_part - 1`)%" ;;
+ gnu)
+ if echo $tmp_part | grep "^s" >/dev/null; then
+ tmp_pc_slice=`echo $tmp_part \
+ | sed "s%s\([0-9]*\)[a-z]*$%\1%"`
+ tmp_drive=`echo "$tmp_drive" \
+ | sed "s%)%,\`expr "$tmp_pc_slice" - 1\`)%"`
+ fi
+ if echo $tmp_part | grep "[a-z]$" >/dev/null; then
+ tmp_bsd_partition=`echo "$tmp_part" \
+ | sed "s%[^a-z]*\([a-z]\)$%\1%"`
+ tmp_drive=`echo "$tmp_drive" \
+ | sed "s%)%,$tmp_bsd_partition)%"`
+ fi
+ echo "$tmp_drive" ;;
+ freebsd|*/kfreebsd)
+ if echo $tmp_part | grep "^s" >/dev/null; then
+ tmp_pc_slice=`echo $tmp_part \
+ | sed "s%s\([0-9]*\)[a-h]*$%\1%"`
+ tmp_drive=`echo "$tmp_drive" \
+ | sed "s%)%,\`expr "$tmp_pc_slice" - 1\`)%"`
+ fi
+ if echo $tmp_part | grep "[a-h]$" >/dev/null; then
+ tmp_bsd_partition=`echo "$tmp_part" \
+ | sed "s%s\{0,1\}[0-9]*\([a-h]\)$%\1%"`
+ tmp_drive=`echo "$tmp_drive" \
+ | sed "s%)%,$tmp_bsd_partition)%"`
+ fi
+ echo "$tmp_drive" ;;
+ netbsd|*/knetbsd)
+ if echo $tmp_part | grep "^[abe-p]$" >/dev/null; then
+ tmp_bsd_partition=`echo "$tmp_part" \
+ | sed "s%\([a-p]\)$%\1%"`
+ tmp_drive=`echo "$tmp_drive" \
+ | sed "s%)%,$tmp_bsd_partition)%"`
+ fi
+ echo "$tmp_drive" ;;
+ esac
+ else
+ # If no partition is specified, just print the drive name.
+ echo "$tmp_drive"
+ fi
+}
+
+# Usage: convert_default os_device
+# Convert an OS device to the corresponding GRUB drive.
+# Calls OS-specific convert, and returns a default of
+# (hd0,0) if anything goes wrong
+convert_default () {
+ # Check if device is software raid1 array
+ if tmp_dev=$(convert_raid1 $1 2>/dev/null) ; then
+ : # Use device returned by convert_raid1
+ else
+ tmp_dev=$1
+ fi
+
+ if tmp=$(convert $tmp_dev 2>/dev/null) ; then
+ echo $tmp
+ else
+ echo "${grub_root_device_fallback}"
+ fi
+}
+
+is_removable () {
+ removabledevice="$(echo "$1" | sed -e 's%\([sh]d[a-z]\)[0-9]*$%\1%' -e 's%\(fd[0-9]*\)$%\1%' -e 's%/part[0-9]*$%/disc%' -e 's%\(c[0-7]d[0-9]*\).*$%\1%' -e 's%^/dev/%%g')"
+ if [ -e "/sys/block/$removabledevice/removable" ]; then
+ if [ "$(cat /sys/block/$removabledevice/removable)" != "0" ]; then
+ echo "/dev/$removabledevice"
+ return
+ fi
+ fi
+ echo ""
+}
+
+convert_to_uuid()
+{
+ local dev; dev=$1
+
+ convert=false
+ case "$dev" in
+ /dev/disk/*)
+ ;;
+ /dev/mapper/*)
+ ;;
+ /dev/evms/[hs]d[a-z][0-9]*)
+ convert=:
+ ;;
+ /dev/evms/*)
+ ;;
+ /dev/md[0-9]*)
+ ;;
+ /dev/*)
+ convert=:
+ ;;
+ esac
+ if $convert; then
+ if [ -b "$dev" ]; then
+ uuid=$(blkid -o value -s UUID "$dev" || true)
+ fi
+ fi
+
+ echo "$uuid"
+}
+
+convert_kopt_to_uuid()
+{
+ local kopt; kopt=$1
+
+ convert=false
+ root=$(echo "$kopt" | sed 's/.*root=//;s/ .*//')
+ case "$root" in
+ UUID=*|LABEL=*)
+ ;;
+ /dev/disk/*)
+ ;;
+ /dev/mapper/*)
+ ;;
+ /dev/evms/[hs]d[a-z][0-9]*)
+ convert=:
+ ;;
+ /dev/evms/*)
+ ;;
+ /dev/md[0-9]*)
+ ;;
+ /dev/*)
+ convert=:
+ ;;
+ esac
+ if $convert; then
+ if [ -L "$DEV" ] && readlink "$DEV" | grep -q "^/dev/mapper/"
+ then
+ :
+ elif [ -b "$root" ]; then
+ uuid=$(blkid -o value -s UUID "$root" || true)
+ if [ -n "$uuid" ]; then
+ kopt=$(echo "$kopt" | sed "s/\(.*root=\)[^ ]*/\1UUID=$uuid/")
+ fi
+ fi
+ fi
+
+ echo "$kopt"
+}
+
+
+## Configuration Options
+# directory's to look for the grub installation and the menu file
+grub_dirs="/boot/grub /boot/boot/grub"
+
+# The grub installation directory
+grub_dir=$(find_grub_dir)
+
+# Full path to the menu.lst
+menu_file_basename=menu.lst
+menu_file=$grub_dir/$menu_file_basename
+
+# Full path to the menu.lst fragment used for ucf management
+ucf_menu_file=/var/run/grub/$menu_file_basename
+
+# Full path to the default file
+default_file_basename=default
+default_file=$grub_dir/$default_file_basename
+
+# the device for the / filesystem
+root_device=$(find_root_device)
+
+# the device for the /boot filesystem
+boot_device=$(find_device "/boot")
+
+# Full path to the device.map
+device_map=$grub_dir/device.map
+
+# Default kernel options, overidden by the kopt statement in the menufile.
+loop_file=$(awk '$2=="/" && $4~"loop" {print $1}' /etc/fstab)
+if [ -n "$loop_file" ]; then
+ dev_mountpoint=$(awk '"'${loop_file}'"~"^"$2 && $2!="/" {print $1";"$2}' /proc/mounts|tail -n 1)
+ host_device="${dev_mountpoint%;*}"
+ host_mountpoint="${dev_mountpoint#*;}"
+fi
+if [ -n "$host_device" ]; then
+ boot_device=
+ root_device="$host_device"
+ default_kopt="root=$host_device loop=${loop_file#$host_mountpoint} ro"
+else
+ default_kopt="root=$root_device ro"
+fi
+default_kopt="$(convert_kopt_to_uuid "$default_kopt")"
+kopt="$default_kopt"
+
+# Title
+title=$(lsb_release --short --description 2>/dev/null) || title="Ubuntu"
+
+# should update-grub remember the default entry
+updatedefaultentry="false"
+
+# Drive(in GRUB terms) where the kernel is located. Overridden by the
+# kopt statement in menufile.
+# if we don't have a device.map then we can't use the convert function.
+
+# Try to use a UUID instead of the GRUB device name.
+if test -z "$boot_device" ; then
+ uuid=$(convert_to_uuid "$root_device")
+else
+ uuid=$(convert_to_uuid "$boot_device")
+fi
+
+#if [ -n "$uuid" ]; then
+# grub_root_device="$uuid"
+#fi
+## The ec2 provide pv-grub do not support 'uuid' so we have to use a grub name
+## when presented to grub, the root filesystem is on what grub sees
+## as a bare disk (hd0), rather than what we see it as in user space (sda1).
+grub_root_device_fallback="(hd0)"
+grub_root_device="${grub_root_device_fallback}"
+
+check_removable=""
+if true; then
+ if test -f "$device_map"; then
+ if test -z "$boot_device" ; then
+ grub_root_device=$(convert_default "$root_device")
+ check_removable="$(is_removable "$root_device")"
+ else
+ grub_root_device=$(convert_default "$boot_device")
+ check_removable="$(is_removable "$boot_device")"
+ fi
+ else
+ grub_root_device="${grub_root_device_fallback}"
+ fi
+fi
+
+# If the root/boot device is on a removable target, we need to override
+# the grub_root_device to (hd0,X). This is a requirement since the BIOS
+# will change device mapping dynamically if we switch boot device.
+
+if test -n "$check_removable" ; then
+ grub_root_device="$(echo "$grub_root_device" | sed -e 's/d.*,/d0,/g')"
+fi
+
+# should grub create the alternative boot options in the menu
+ alternative="true"
+
+# should grub lock the alternative boot options in the menu
+ lockalternative="false"
+
+# additional options to use with the default boot option, but not with the
+# alternatives
+ defoptions="console=hvc0"
+
+# should grub lock the old kernels
+ lockold="false"
+
+# Xen hypervisor options to use with the default Xen boot option
+ xenhopt=""
+
+# Xen Linux kernel options to use with the default Xen boot option
+ xenkopt="console=tty0"
+
+# options to use with the alternative boot options
+ altoptions="(recovery mode) single"
+
+# controls howmany kernels are listed in the config file,
+# this does not include the alternative kernels
+ howmany="all"
+
+# should grub create a memtest86 entry
+ memtest86="true"
+
+# should grub add "savedefault" to default boot options
+ savedefault="false"
+
+# is grub running in a domU?
+ indomU="true"
+
+# stores the command line arguments
+ command_line_arguments=$1
+
+# does this version of grub support the quiet option?
+if [ -f ${grub_dir}/installed-version ] && dpkg --compare-versions `cat ${grub_dir}/installed-version` ge 0.97-11ubuntu4; then
+ supports_quiet=true
+else
+ supports_quiet=false
+fi
+
+# read user configuration
+if test -f "/etc/default/grub" ; then
+ . /etc/default/grub
+fi
+
+# Default options to use in a new config file. This will only be used if $menu_file
+# doesn't already exist. Only edit the lines between the two "EOF"s. The others are
+# part of the script.
+newtemplate=$(tempfile)
+cat >> "$newtemplate" <<EOF
+# $menu_file_basename - See: grub(8), info grub, update-grub(8)
+# grub-install(8), grub-floppy(8),
+# grub-md5-crypt, /usr/share/doc/grub
+# and /usr/share/doc/grub-legacy-doc/.
+
+## default num
+# Set the default entry to the entry number NUM. Numbering starts from 0, and
+# the entry number 0 is the default if the command is not used.
+#
+# You can specify 'saved' instead of a number. In this case, the default entry
+# is the entry saved with the command 'savedefault'.
+# WARNING: If you are using dmraid do not use 'savedefault' or your
+# array will desync and will not let you boot your system.
+default 0
+
+## timeout sec
+# Set a timeout, in SEC seconds, before automatically booting the default entry
+# (normally the first entry defined).
+# on ec2, with no console access, there is no reason for a timeout. set to 0.
+timeout 0
+
+## hiddenmenu
+# Hides the menu by default (press ESC to see the menu)
+hiddenmenu
+
+# Pretty colours
+#color cyan/blue white/blue
+
+## password ['--md5'] passwd
+# If used in the first section of a menu file, disable all interactive editing
+# control (menu entry editor and command-line) and entries protected by the
+# command 'lock'
+# e.g. password topsecret
+# password --md5 \$1\$gLhU0/\$aW78kHK1QfV3P2b2znUoe/
+# password topsecret
+
+#
+# examples
+#
+# title Windows 95/98/NT/2000
+# root (hd0,0)
+# makeactive
+# chainloader +1
+#
+# title Linux
+# root (hd0,1)
+# kernel /vmlinuz root=/dev/hda2 ro
+#
+
+#
+# Put static boot stanzas before and/or after AUTOMAGIC KERNEL LIST
+
+EOF
+## End Configuration Options
+
+echo -n "Searching for default file ... " >&2
+if [ -f "$default_file" ] ; then
+ echo "found: $default_file" >&2
+else
+ echo "Generating $default_file file and setting the default boot entry to 0" >&2
+ grub-set-default 0
+fi
+
+# Make sure we use the standard sorting order
+LC_COLLATE=C
+# Magic markers we use
+start="### BEGIN AUTOMAGIC KERNELS LIST"
+end="### END DEBIAN AUTOMAGIC KERNELS LIST"
+
+startopt="## ## Start Default Options ##"
+endopt="## ## End Default Options ##"
+
+# path to grub2
+grub2name="/boot/grub/core.img"
+
+# Extract options from config file
+ExtractMenuOpt()
+{
+ opt=$1
+
+ sed -ne "/^$start\$/,/^$end\$/ {
+ /^$startopt\$/,/^$endopt\$/ {
+ /^# $opt=/ {
+ s/^# $opt=\(.*\)\$/\1/
+ p
+ }
+ }
+ }" $menu
+}
+
+GetMenuOpts()
+{
+ opt=$1
+
+ sed -ne "/^$start\$/,/^$end\$/ {
+ /^$startopt\$/,/^$endopt\$/ {
+ /^# $opt=/ {
+ p
+ }
+ }
+ }" $menu
+}
+
+ExtractMenuOpts()
+{
+ opt=$1
+
+ GetMenuOpts $opt | sed "s/^# $opt=\(.*\)\$/\1=\"\2\"/"
+}
+
+GetMenuOpt()
+{
+ opt=$1
+ value=$2
+
+ [ -z "$(GetMenuOpts "$opt")" ] || value=$(ExtractMenuOpt "$opt")
+
+ echo $value
+}
+
+# Compares two version strings A and B
+# Returns -1 if A<B
+# 0 if A==B
+# 1 if A>B
+# This compares version numbers of the form
+# 2.4.14.2 > 2.4.14
+# 2.4.14random = 2.4.14-random > 2.4.14-ac10 > 2.4.14 > 2.4.14-pre2 >
+# 2.4.14-pre1 > 2.4.13-ac99
+CompareVersions()
+{
+ #Changes the line something-x.y.z into somthing-x.y.z.q
+ #This is to ensure that kernels with a .q is treated as higher than the ones without
+ #First a space is put after the version number
+ v1=$(echo $1 | sed -e 's!^\(.*-\([0-9]\+\.\)\{2,3\}[0-9]\+\)\(.*\)!\1 \3!g')
+ v2=$(echo $2 | sed -e 's!^\(.*-\([0-9]\+\.\)\{2,3\}[0-9]\+\)\(.*\)!\1 \3!g')
+ #If the version number only has 3 digits then put in another .0
+ v1=$(echo $v1 | sed -e 's!^\(.*-\([0-9]\+\.\)\{2\}[0-9]\+\)\( .*\|$\)!\1.0 \3!g')
+ v2=$(echo $v2 | sed -e 's!^\(.*-\([0-9]\+\.\)\{2\}[0-9]\+\)\( .*\|$\)!\1.0 \3!g')
+
+ # Then split the version number and remove any '.' 's or dashes
+ v1=$(echo $v1 | sed -e 's![-\.]\+! !g' -e 's!\([0-9]\)\([[:alpha:]]\)!\1 \2!')
+ v2=$(echo $v2 | sed -e 's![-\.]\+! !g' -e 's!\([0-9]\)\([[:alpha:]]\)!\1 \2!')
+
+ # we weight different kernel suffixes here
+ # ac = 50
+ # pre = -50
+ # rc = -40
+ # test = -60
+ # others are given 99
+ v1=$(echo $v1 | sed -e 's! k7! 786 !g' -e 's! ac! 50 !g' -e 's! rc! -40 !g' -e 's! pre! -50 !g' -e 's! test! -60 !g' -e 's![^ ]*[^-0-9 ][^ ]*!99!g')
+
+ v2=$(echo $v2 | sed -e 's! k7! 786 !g' -e 's! ac! 50 !g' -e 's! rc! -40 !g' -e 's! pre! -50 !g' -e 's! test! -60 !g' -e 's![^ ]*[^-0-9 ][^ ]*!99!g')
+
+ result=0; v1finished=0; v2finished=0;
+ while [ $result -eq 0 ] && [ $v1finished -eq 0 ] && [ $v2finished -eq 0 ];
+ do
+ if [ "$v1" = "" ]; then
+ v1comp=0; v1finished=1
+ else
+ set -- $v1; v1comp=$1; shift; v1=$*
+ fi
+
+ if [ "$v2" = "" ]; then
+ v2comp=0; v2finished=1
+ else
+ set -- $v2; v2comp=$1; shift; v2=$*
+ fi
+
+ set +e
+ result=`expr $v1comp - $v2comp`
+ result=`expr substr $result 1 2`
+ set -e
+
+ if [ $result -gt 0 ]; then result=1
+ elif [ $result -lt 0 ]; then result=-1
+ fi
+ done
+
+ # finally return the result
+ echo $result
+}
+
+# looks in the directory specified for an initrd image with the version specified
+FindInitrdName()
+{
+ # strip trailing slashes
+ directory=$(echo $1 | sed -e 's#/*$##')
+ version=$2
+
+ # initrd
+ # initrd.img
+ # initrd-lvm
+ # .*.gz
+
+ initrdName=""
+ names="initrd initrd.img initrd-lvm"
+ compressed="gz"
+
+ for n in $names ; do
+ # make sure we haven't already found it
+ if [ -z "$initrdName" ] ; then
+ if [ -f "$directory/$n$version" ] ; then
+ initrdName="$n$version"
+ break
+ else
+ for c in $compressed ; do
+ if [ -f "$directory/$n$version.$c" ] ; then
+ initrdName="$n$version.$c"
+ break
+ fi
+ done
+ fi
+ else
+ break
+ fi
+ done
+
+ # return the result
+ echo $initrdName
+}
+
+FindXenHypervisorVersions ()
+{
+ version=$1
+
+ if [ -f "/var/lib/linux-image-$version/xen-versions" ]; then
+ ret="$(cat /var/lib/linux-image-$version/xen-versions)"
+ fi
+
+ echo $ret
+}
+
+get_kernel_opt()
+{
+ kernel_version=$1
+
+ version=$(echo $kernel_version | sed 's/^[^0-9]*//')
+ version=$(echo $version | sed 's/[-\+\.]/_/g')
+ if [ -n "$version" ] ; then
+ while [ -n "$version" ] ; do
+ currentOpt="$(eval "echo \${kopt_$version}")"
+ if [ -n "$currentOpt" ] ; then
+ break
+ fi
+
+ oldversion="$version"
+ version=$(echo $version | sed 's/_\?[^_]*$//')
+ if [ "$version" = "$oldversion" ] ; then
+ # Break infinite loop, if the version isn't what we expect
+ break
+ fi
+ done
+ fi
+
+ if [ -z "$currentOpt" ] ; then
+ currentOpt=$kopt
+ fi
+
+ echo $currentOpt
+}
+
+write_kernel_entry()
+{
+ local kernel_version; kernel_version=$1; shift
+ local recovery_desc; recovery_desc=$1; shift
+ local lock_alternative; lock_alternative=$1; shift
+ local grub_root_device; grub_root_device=$1; shift
+ local kernel; kernel=$1; shift
+ local kernel_options; kernel_options=$1; shift
+ local recovery_suffix; recovery_suffix=$1; shift
+ local initrd; initrd=$1; shift
+ local savedefault; savedefault=$1; shift
+ local lockold; lockold=$1; shift
+ local dapper_upgrade; dapper_upgrade=$1; shift
+ local hypervisor
+ if [ -n "$1" ]; then
+ # Hypervisor.
+ hypervisor=$1; shift
+ local hypervisor_image; hypervisor_image=$1; shift
+ local hypervisor_version; hypervisor_version=$1; shift
+ local hypervisor_options; hypervisor_options=$1; shift
+ fi
+
+ echo -n "title " >> $buffer
+
+ if [ -n "$hypervisor" ]; then
+ echo -n "$hypervisor $hypervisor_version / " >> $buffer
+ fi
+
+ echo -n "$title" >> $buffer
+ if [ -n "$kernel_version" ]; then
+ echo -n ", " >> $buffer
+ # memtest86 is not strictly a kernel
+ if ! echo "$kernel_version" | grep -q ^memtest86; then
+ echo -n "kernel " >> $buffer
+ fi
+ echo -n "$kernel_version" >> $buffer
+ fi
+ if [ -n "$recovery_desc" ]; then
+ echo -n " $recovery_desc" >> $buffer
+ fi
+ echo >> $buffer
+
+ # lock the alternative options
+ if test x"$lock_alternative" = x"true" ; then
+ echo "lock" >> $buffer
+ fi
+ # lock the old entries
+ if test x"$lockold" = x"true" ; then
+ echo "lock" >> $buffer
+ fi
+
+ case "$grub_root_device" in
+ [^A-Za-z0-9]*)
+ echo "root $grub_root_device" >> $buffer
+ ;;
+ *)
+ echo "uuid $grub_root_device" >> $buffer
+ ;;
+ esac
+
+ echo -n "kernel " >> $buffer
+ if [ -n "$hypervisor" ]; then
+ echo -n "$hypervisor_image" >> $buffer
+ if [ -n "$hypervisor_options" ]; then
+ echo -n " $hypervisor_options" >> $buffer
+ fi
+ echo >> $buffer
+ echo -n "module " >> $buffer
+ fi
+ echo -n "$kernel" >> $buffer
+ if [ -n "$kernel_options" ]; then
+ echo -n " $kernel_options" >> $buffer
+ fi
+ if [ -n "$recovery_desc" ]; then
+ echo -n " $recovery_suffix" >> $buffer
+ fi
+ if [ -n "$dapper_upgrade" -a -z "$kernel_options$recovery_desc" ]; then
+ echo -n " " >> $buffer
+ fi
+ echo >> $buffer
+
+ if [ -n "$initrd" ]; then
+ if [ -n "$hypervisor" ]; then
+ echo -n "module " >> $buffer
+ else
+ echo -n "initrd " >> $buffer
+ fi
+ echo "$initrd" >> $buffer
+ fi
+
+ if [ ! -n "$recovery_desc" -a x"$supports_quiet" = x"true" -a -z "$dapper_upgrade" ]; then
+ echo "quiet" >> $buffer
+ fi
+
+ if test x"$savedefault" = x"true" ; then
+ echo "savedefault" >> $buffer
+ fi
+ if test x"$dapper_upgrade" != x ; then
+ echo "boot" >> $buffer
+ fi
+ echo >> $buffer
+}
+
+## write out the kernel entries
+output_kernel_list() {
+ counter=0
+
+ # Xen entries first.
+ for kern in $xenKernels ; do
+ if test ! x"$howmany" = x"all" ; then
+ if [ $counter -gt $howmany ] ; then
+ break
+ fi
+ fi
+
+ kernelName=$(basename $kern)
+ kernelVersion=$(echo $kernelName | sed -e 's/vmlinuz//')
+
+ initrdName=$(FindInitrdName "/boot" "$kernelVersion")
+ initrd=""
+
+ kernel=$kernel_dir/$kernelName
+ if [ -n "$initrdName" ] ; then
+ initrd=$kernel_dir/$initrdName
+ fi
+
+ kernelVersion=$(echo $kernelVersion | sed -e 's/^-//')
+ currentOpt=$(get_kernel_opt $kernelVersion)
+
+ hypervisorVersions=$(FindXenHypervisorVersions "$kernelVersion")
+
+ found=
+ for hypervisorVersion in $hypervisorVersions; do
+ hypervisor="$kernel_dir/xen-$hypervisorVersion.gz"
+ if [ -e "$hypervisor" ]; then
+ found=1
+
+ echo "Found Xen hypervisor $hypervisorVersion, kernel: $kernel" >&2
+
+ write_kernel_entry "$kernelVersion" '' '' "$grub_root_device" \
+ "$kernel" "$currentOpt $xenkopt" '' "$initrd" "$savedefault" '' "$dapper_upgrade" \
+ Xen "$hypervisor" "$hypervisorVersion" "$xenhopt"
+ counter=$(($counter + 1))
+ fi
+ done
+
+ if [ -z $found ]; then
+ for hypervisor in $hypervisors; do
+ hypVersion=`basename "$hypervisor" .gz | sed s%xen-%%`
+
+ echo "Found Xen hypervisor $hypVersion, kernel: $kernel" >&2
+
+ write_kernel_entry "$kernelVersion" '' '' "$grub_root_device" \
+ "$kernel" "$currentOpt $xenkopt" '' "$initrd" "$savedefault" '' "$dapper_upgrade" \
+ Xen "$kernel_dir/$hypervisor" "$hypVersion" "$xenhopt"
+ counter=$(($counter + 1))
+ done
+ fi
+ done
+
+ for kern in $sortedKernels ; do
+ counter=$(($counter + 1))
+ if test ! x"$howmany" = x"all" ; then
+ if [ $counter -gt $howmany ] ; then
+ break
+ fi
+ fi
+ kernelName=$(basename $kern)
+ initrdName=""
+ initrd=""
+ extra_opts=""
+
+ if [ "$kern" = "/boot/last-good-boot/vmlinuz" ]; then
+ kernelVersion="Last successful boot"
+ if [ -e "/boot/last-good-boot/initrd.img" ]; then
+ initrdName="last-good-boot/initrd.img"
+ fi
+ kernelName="last-good-boot/vmlinuz"
+ extra_opts="$extra_opts last-good-boot"
+ else
+ kernelVersion=$(echo $kernelName | sed -e 's/vmlinuz//')
+ initrdName=$(FindInitrdName "/boot" "$kernelVersion")
+ if [ -x "/usr/bin/makedumpfile" ] && [ -x "/sbin/kexec" ]; then
+ extra_opts="$extra_opts crashkernel=384M-2G:64M,2G-:128M"
+ fi
+ fi
+
+ kernel=$kernel_dir/$kernelName
+
+ if [ -n "$initrdName" ] ; then
+ initrd=$kernel_dir/$initrdName
+ fi
+
+ echo "Found kernel: $kernel" >&2
+
+ if [ "$kernelName" = "vmlinuz" ]; then
+ if [ -L "/boot/$kernelName" ]; then
+ kernelVersion=`readlink -f "/boot/$kernelName"`
+ kernelVersion=$(echo $kernelVersion | sed -e 's/.*vmlinuz-//')
+ kernelVersion="$kernelVersion Default"
+ else
+ kernelVersion="Default"
+ fi
+ fi
+ if [ "$kernelName" = "vmlinuz.old" ]; then
+ if [ -L "/boot/$kernelName" ]; then
+ kernelVersion=`readlink -f "/boot/$kernelName"`
+ kernelVersion=$(echo $kernelVersion | sed -e 's/.*vmlinuz-//')
+ kernelVersion="$kernelVersion Previous"
+ else
+ kernelVersion="Previous"
+ fi
+ fi
+
+ kernelVersion=$(echo $kernelVersion | sed -e 's/^-//')
+
+ currentOpt=$(get_kernel_opt $kernelVersion)
+
+ do_lockold=$lockold
+ # do not lockold for the first entry
+ [ $counter -eq 1 ] && do_lockold=false
+
+ if [ "$kernelName" = "last-good-boot/vmlinuz" ]; then
+ if [ -e /boot/last-good-boot/cmdline ]; then
+ cmdline="$(cat /boot/last-good-boot/cmdline) last-good-boot"
+ else
+ cmdline="$currentOpt $defoptions $extra_opts"
+ fi
+ write_kernel_entry "$kernelVersion" "" "" "$grub_root_device" "$kernel" \
+ "$cmdline" "" "$initrd" "$savedefault" "$do_lockold" \
+ "$dapper_upgrade"
+ else
+ write_kernel_entry "$kernelVersion" "" "" "$grub_root_device" "$kernel" \
+ "$currentOpt $defoptions $extra_opts" "" "$initrd" "$savedefault" \
+ "$do_lockold" "$dapper_upgrade"
+ fi
+
+ # insert the alternative boot options
+ if test ! x"$alternative" = x"false" && \
+ test ! x"$kernelName" = x"last-good-boot/vmlinuz"; then
+ # for each altoptions line do this stuff
+ sed -ne 's/# altoptions=\(.*\)/\1/p' $buffer | while read line; do
+ descr=$(echo $line | sed -ne 's/\(([^)]*)\)[[:space:]]\(.*\)/\1/p')
+ suffix=$(echo $line | sed -ne 's/\(([^)]*)\)[[:space:]]\(.*\)/\2/p')
+
+ test x"$lockalternative" = x"true" && do_lockold=false
+ write_kernel_entry "$kernelVersion" "$descr" "$lockalternative" \
+ "$grub_root_device" "$kernel" "$currentOpt $extra_opts" \
+ "$suffix" "$initrd" "false" "$do_lockold" \
+ "$dapper_upgrade"
+ done
+ fi
+ done
+
+## Adding the chainload stanza is simply confusing, and for
+## legacy ec2 grub, it will never be used. LP: #627451
+##
+# if test -f $grub2name ; then
+# echo "Found GRUB 2: $grub2name" >&2
+# cat >> $buffer << EOF
+#title Chainload into GRUB 2
+#root $grub_root_device
+#kernel $grub2name
+#EOF
+# if test x"$savedefault" = x"true" ; then
+# echo "savedefault" >> $buffer
+# fi
+# echo >> $buffer
+# fi
+
+ memtest86names="memtest86 memtest86+"
+
+ if test ! x"$memtest86" = x"false" ; then
+ for name in $memtest86names ; do
+ if test -f "/boot/$name.bin" ; then
+ kernelVersion="$name"
+ kernel="$kernel_dir/$name.bin"
+ currentOpt=
+ initrd=
+
+ echo "Found kernel: $kernel" >&2
+
+ write_kernel_entry "$kernelVersion" "" "" "$grub_root_device" \
+ "$kernel" "$currentOpt" "" "$initrd" "false" "" "$dapper_upgrade"
+ fi
+ done
+ fi
+
+ echo $end >> $buffer
+}
+
+ucf_update_kernels() {
+ local target; target="$1"
+ local buffer; buffer="$2"
+
+ sed -ni -e"/$endopt/,/$end/p" "$buffer"
+
+ if [ "x$initialconfig" = "x" ]; then
+ sed -n -e"/$endopt/,/$end/p" < $menu > $ucf_menu_file
+ else
+ cat $buffer > $ucf_menu_file
+ fi
+
+ db_x_loadtemplatefile "$(dpkg-query --control-path grub-legacy-ec2 templates)" grub
+
+ ucf --debconf-ok \
+ --debconf-template grub/update_grub_changeprompt_threeway \
+ --three-way "$buffer" $ucf_menu_file
+ rm "$buffer"
+
+ # now re-merge the ucf results with the target file
+ sed -i -e "/^$endopt/,/^$end/ {
+ /^$endopt/r $ucf_menu_file
+ d
+ }
+ " $target
+
+ rm -f $ucf_menu_file ${ucf_menu_file}.ucf-old
+}
+
+
+echo -n "Testing for an existing GRUB $menu_file_basename file ... " >&2
+
+# Test if our menu file exists
+if [ -f "$menu_file" ] ; then
+ menu="$menu_file"
+ rm -f $newtemplate
+ unset newtemplate
+ echo "found: $menu_file" >&2
+ cp -f "$menu_file" "$menu_file~"
+else
+ # if not ask user if they want us to create one
+ initialconfig=1
+ menu="$menu_file"
+ echo >&2
+ echo >&2
+ echo -n "Could not find $menu_file file. " >&2
+ if [ "-y" = "$command_line_arguments" ] ; then
+ echo >&2
+ echo "Generating $menu_file" >&2
+ answer=y
+ else
+ echo -n "Would you like $menu_file generated for you? " >&2
+ echo -n "(y/N) " >&2
+ read answer <&2
+ fi
+
+ case "$answer" in
+ y* | Y*)
+ cat "$newtemplate" > $menu_file
+ rm -f $newtemplate
+ unset newtemplate
+ ;;
+ *)
+ abort "Not creating $menu_file as you wish"
+ ;;
+ esac
+fi
+
+# Extract the kernel options to use
+kopt=$(GetMenuOpt "kopt" "$kopt")
+
+# Extract options for specific kernels
+opts="$(ExtractMenuOpts "\(kopt_[[:alnum:]_]\+\)")"
+test -z "$opts" || eval "$opts"
+CustomKopts=$(GetMenuOpts "\(kopt_[[:alnum:]_]\+\)" | \
+ grep -v "^# kopt_2_6=" || true)
+
+# Set the kernel 2.6 option only for fresh install (but convert it to
+# mount-by-UUID on upgrade)
+test -z "$kopt_2_6" && test -z "$(GetMenuOpt "kopt" "")" && \
+ kopt_2_6="$default_kopt"
+
+# Extract the grub root
+grub_root_device=$(GetMenuOpt "groot" "$grub_root_device")
+groot_cfg=$(GetMenuOpt groot "${grub_root_device_fallback}")
+case "${groot_cfg}" in
+ [^A-Za-z0-9]*) :;;
+ *)
+ echo "uuid not supported. update 'groot' in ${menu_file}" >&2;
+ abort "groot must be grub root device (ie '(hd0)'). not '${groot_cfg}'" >&2;
+esac
+
+# Extract the old recovery value
+alternative=$(GetMenuOpt "recovery" "$alternative")
+
+# Extract the alternative value
+alternative=$(GetMenuOpt "alternative" "$alternative")
+
+# Extract the lockalternative value
+lockalternative=$(GetMenuOpt "lockalternative" "$lockalternative")
+
+# Extract the additional default options
+# Check nonaltoptions too for compatibility with Ubuntu <= 5.10
+defoptions=$(GetMenuOpt "nonaltoptions" "$defoptions")
+defoptions=$(GetMenuOpt "defoptions" "$defoptions")
+
+# Extract the lockold value
+lockold=$(GetMenuOpt "lockold" "$lockold")
+
+# Extract Xen hypervisor options
+xenhopt=$(GetMenuOpt "xenhopt" "$xenhopt")
+
+# Extract Xen Linux kernel options
+xenkopt=$(GetMenuOpt "xenkopt" "$xenkopt")
+
+# Extract the howmany value
+howmany=$(GetMenuOpt "howmany" "$howmany")
+
+# Extract the memtest86 value
+memtest86=$(GetMenuOpt "memtest86" "$memtest86")
+
+# Extract the indomU value
+indomU=$(GetMenuOpt "indomU" "$indomU")
+
+# Extract the updatedefaultentry option
+updatedefaultentry=$(GetMenuOpt "updatedefaultentry" "$updatedefaultentry")
+
+# If "default saved" is in use, set the default to true
+grep -q "^default.*saved" $menu && savedefault=true
+# Extract the savedefault option
+savedefault=$(GetMenuOpt "savedefault" "$savedefault")
+
+# Generate the menu options we want to insert
+buffer=$(tempfile)
+echo $start >> $buffer
+echo "## lines between the AUTOMAGIC KERNELS LIST markers will be modified" >> $buffer
+echo "## by the debian update-grub script except for the default options below" >> $buffer
+echo >> $buffer
+echo "## DO NOT UNCOMMENT THEM, Just edit them to your needs" >> $buffer
+echo >> $buffer
+echo "## ## Start Default Options ##" >> $buffer
+
+echo "## default kernel options" >> $buffer
+echo "## default kernel options for automagic boot options" >> $buffer
+echo "## If you want special options for specific kernels use kopt_x_y_z" >> $buffer
+echo "## where x.y.z is kernel version. Minor versions can be omitted." >> $buffer
+echo "## e.g. kopt=root=/dev/hda1 ro" >> $buffer
+echo "## kopt_2_6_8=root=/dev/hdc1 ro" >> $buffer
+echo "## kopt_2_6_8_2_686=root=/dev/hdc2 ro" >> $buffer
+echo "# kopt=$kopt" >> $buffer
+if [ -n "$kopt_2_6" ] && [ "$kopt" != "$kopt_2_6" ]; then
+ echo "# kopt_2_6=$kopt_2_6" >> $buffer
+fi
+if [ -n "$CustomKopts" ] ; then
+ echo "$CustomKopts" >> $buffer
+fi
+echo >> $buffer
+
+echo "## default grub root device" >> $buffer
+echo "## e.g. groot=${grub_root_device_fallback}" >> $buffer
+echo "# groot=$grub_root_device" >> $buffer
+echo >> $buffer
+
+echo "## should update-grub create alternative automagic boot options" >> $buffer
+echo "## e.g. alternative=true" >> $buffer
+echo "## alternative=false" >> $buffer
+echo "# alternative=$alternative" >> $buffer
+echo >> $buffer
+
+echo "## should update-grub lock alternative automagic boot options" >> $buffer
+echo "## e.g. lockalternative=true" >> $buffer
+echo "## lockalternative=false" >> $buffer
+echo "# lockalternative=$lockalternative" >> $buffer
+echo >> $buffer
+
+echo "## additional options to use with the default boot option, but not with the" >> $buffer
+echo "## alternatives" >> $buffer
+echo "## e.g. defoptions=vga=791 resume=/dev/hda5" >> $buffer
+echo "# defoptions=$defoptions" >> $buffer
+echo >> $buffer
+
+echo "## should update-grub lock old automagic boot options" >> $buffer
+echo "## e.g. lockold=false" >> $buffer
+echo "## lockold=true" >> $buffer
+echo "# lockold=$lockold" >> $buffer
+echo >> $buffer
+
+echo "## Xen hypervisor options to use with the default Xen boot option" >> $buffer
+echo "# xenhopt=$xenhopt" >> $buffer
+echo >> $buffer
+
+echo "## Xen Linux kernel options to use with the default Xen boot option" >> $buffer
+echo "# xenkopt=$xenkopt" >> $buffer
+echo >> $buffer
+
+echo "## altoption boot targets option" >> $buffer
+echo "## multiple altoptions lines are allowed" >> $buffer
+echo "## e.g. altoptions=(extra menu suffix) extra boot options" >> $buffer
+echo "## altoptions=(recovery) single" >> $buffer
+
+if ! grep -q "^# altoptions" $menu ; then
+ echo "# altoptions=$altoptions" >> $buffer
+else
+ grep "^# altoptions" $menu >> $buffer
+fi
+echo >> $buffer
+
+echo "## controls how many kernels should be put into the $menu_file_basename" >> $buffer
+echo "## only counts the first occurence of a kernel, not the" >> $buffer
+echo "## alternative kernel options" >> $buffer
+echo "## e.g. howmany=all" >> $buffer
+echo "## howmany=7" >> $buffer
+echo "# howmany=$howmany" >> $buffer
+echo >> $buffer
+
+echo "## specify if running in Xen domU or have grub detect automatically" >> $buffer
+echo "## update-grub will ignore non-xen kernels when running in domU and vice versa" >> $buffer
+echo "## e.g. indomU=detect" >> $buffer
+echo "## indomU=true" >> $buffer
+echo "## indomU=false" >> $buffer
+echo "# indomU=$indomU" >> $buffer
+echo >> $buffer
+
+echo "## should update-grub create memtest86 boot option" >> $buffer
+echo "## e.g. memtest86=true" >> $buffer
+echo "## memtest86=false" >> $buffer
+echo "# memtest86=$memtest86" >> $buffer
+echo >> $buffer
+
+echo "## should update-grub adjust the value of the default booted system" >> $buffer
+echo "## can be true or false" >> $buffer
+echo "# updatedefaultentry=$updatedefaultentry" >> $buffer
+echo >> $buffer
+
+echo "## should update-grub add savedefault to the default options" >> $buffer
+echo "## can be true or false" >> $buffer
+echo "# savedefault=$savedefault" >> $buffer
+echo >> $buffer
+
+echo "## ## End Default Options ##" >> $buffer
+echo >> $buffer
+
+echo -n "Searching for splash image ... " >&2
+current_splash=`grep '^splashimage=' ${menu_file} || true`
+splash_root_device=""
+splash_uuid=""
+case "$grub_root_device" in
+ [^A-Za-z0-9]*)
+ splash_root_device=${grub_root_device}
+ ;;
+ *)
+ splash_uuid="uuid $grub_root_device"
+ ;;
+esac
+splashimage_path="splashimage=${splash_root_device}${grub_dir##${boot_device:+/boot}}/splash.xpm.gz"
+if [ `sed -e "/^$start/,/^$end/d" $menu_file | grep -c '^splashimage='` != "0" ] ; then
+ #checks for splashscreen defined outside the autoupdated part
+ splashimage=$(grep '^splashimage=' ${menu_file})
+ echo "found: ${splashimage##*=}" >&2
+ echo >&2
+elif [ -f "${grub_dir}/splash.xpm.gz" ] && [ "$current_splash" = "" ]; then
+ echo "found: /boot/grub/splash.xpm.gz" >&2
+ echo "$splash_uuid" >> $buffer
+ echo "$splashimage_path" >> $buffer
+ echo >> $buffer
+elif [ -f "${grub_dir}/splash.xpm.gz" ] && [ "$current_splash" = "$splashimage_path" ]; then
+ echo "found: /boot/grub/splash.xpm.gz" >&2
+ echo "$splash_uuid" >> $buffer
+ echo "$splashimage_path" >> $buffer
+ echo >> $buffer
+elif [ "$current_splash" != "" ] && [ "$current_splash" != "$splashimage_path" ]; then
+ echo "found but preserving previous setting: $(grep '^splashimage=' ${menu_file})" >&2
+ echo "$splash_uuid" >> $buffer
+ echo "$current_splash" >> $buffer
+ echo >> $buffer
+else
+ echo "none found, skipping ..." >&2
+fi
+
+
+hypervisors=""
+for hyp in /boot/xen-*.gz; do
+ if [ ! -h "$hyp" ] && [ -f "$hyp" ]; then
+ hypervisors="$hypervisors `basename "$hyp"`"
+ fi
+done
+
+# figure out where grub looks for the kernels at boot time
+kernel_dir=/boot
+if [ -n "$boot_device" ] ; then
+ kernel_dir=
+fi
+
+
+# We need a static path to use for the ucf registration; since we're not
+# using the full menu.lst file (maybe we should, just copying it around?
+# C.f. discussion with Manoj), create a directory in a fixed location
+# even though we're not treating the file in that location as
+# persistent.
+mkdir -p /var/run/grub
+
+# The first time ucf sees the file, we can only assume any difference
+# between the magic comments and the kernel options is a result of local
+# mods, so this will result in a ucf prompt for anyone whose first
+# invocation of update-grub is as a result of updating the magic comments.
+if ! ucfq grub | grep -q $ucf_menu_file; then
+ otherbuffer=$(tempfile)
+ cat $buffer > $otherbuffer
+
+ sortedKernels=`sed -n -e "
+ /$endopt/,/$end/ {
+ s/^kernel[[:space:]]\+\([^[:space:]]\+\).*/\1/p
+ }" < $menu | grep -vE "memtest86|$grub2name|xen" | uniq`
+ xenKernels=`sed -n -e "
+ /$endopt/,/$end/ {
+ s/^module[[:space:]]\+\([^[:space:]]*vmlinuz[^[:space:]]\+\).*/\1/p
+ }" < $menu | uniq`
+
+ savebuffer="$buffer"
+ buffer="$otherbuffer"
+ savetitle="$title"
+ title="$(sed -n -e "/$endopt/,/$end/ {
+ s/^title[[:space:]]\+\(.*\),.*/\1/p
+ }" < $menu | head -n 1)"
+ if [ -z "$title" ]; then
+ title="$savetitle"
+ fi
+
+ # Hack: the kernel list output in Ubuntu 6.06 was different than
+ # in the current version, so to support smooth upgrades we need to
+ # properly detect a config generated by this old version of
+ # update-grub and mimic it for the initial ucf registration
+ dapper_upgrade=`sed -n -e "
+ /$endopt/,/$end/ {
+ /^boot/p
+ }" < $menu`
+ save_savedefault="$savedefault"
+ if [ -n "$dapper_upgrade" ]; then
+ savedefault=true
+ fi
+
+ output_kernel_list
+
+ savedefault="$save_savedefault"
+ dapper_upgrade=""
+ buffer="$savebuffer"
+ title="$savetitle"
+
+ ucf_update_kernels "$menu" "$otherbuffer"
+
+ # all done, now register it
+ ucfr grub $ucf_menu_file
+fi
+
+
+if ! type is_xen_kernel >/dev/null 2>&1; then
+ is_xen_kernel() {
+ # input is like /boot/vmlinuz-2.6.35-13-virtual
+ # get the version string out of it.
+ local ver_flavor="";
+ ver_flavor="${1##*vmlinuz-}"
+
+ case "${ver_flavor}" in
+ *-ec2) return 0;;
+ *-virtual)
+ # 10.04 LTS through 12.04 LTS -virtual is the EC2/Xen kernel
+ dpkg --compare-versions ${ver_flavor%-virtual} gt 2.6.35-13 && return 0;;
+ *-generic)
+ # Starting with 12.10, -virtual was merged into -generic
+ dpkg --compare-versions ${ver_flavor%-generic} ge 3.4.0-3 && return 0;;
+ esac
+ return 1;
+ }
+fi
+
+for kern in /boot/vmlinuz-*; do
+ is_xen_kernel "${kern}" &&
+ xen_verlist="${xen_verlist} ${kern#/boot/vmlinuz-}"
+done
+xen_verlist=${xen_verlist# }
+
+xenKernels=""
+for ver in ${xen_verlist}; do
+ # ver is a kernel version
+ kern="/boot/vmlinuz-$ver"
+ if [ -r $kern ] ; then
+ newerKernels=""
+ for i in $xenKernels ; do
+ res=$(CompareVersions "$kern" "$i")
+ if [ "$kern" != "" ] && [ "$res" -gt 0 ] ; then
+ newerKernels="$newerKernels $kern $i"
+ kern=""
+ else
+ newerKernels="$newerKernels $i"
+ fi
+ done
+ if [ "$kern" != "" ] ; then
+ newerKernels="$newerKernels $kern"
+ fi
+ xenKernels="$newerKernels"
+ fi
+done
+xenKernels=" ${xenKernels} "
+
+if [ "$indomU" = "detect" ]; then
+ if [ -e /proc/xen/capabilities ] && ! grep -q "control_d" /proc/xen/capabilities; then
+ indomU="true"
+ else
+ indomU="false"
+ fi
+fi
+
+sortedKernels=""
+for kern in $(/bin/ls -1vr /boot | grep -v "dpkg-*" | grep "^vmlinuz-") ; do
+ if `echo "$xenKernels" | grep -q "$kern "` || `echo "$kern" | grep -q "xen"`; then
+ is_xen=1
+ else
+ is_xen=
+ fi
+
+ if [ "$indomU" = "false" ] && [ "$is_xen" ]; then
+ # We aren't running in a Xen domU, skip xen kernels
+ echo "Ignoring Xen kernel on non-Xen host: $kern"
+ continue
+ elif [ "$indomU" = "true" ] && ! [ "$is_xen" ]; then
+ # We are running in a Xen domU, skip non-xen kernels
+ echo "Ignoring non-Xen Kernel on Xen domU host: $kern"
+ continue
+ fi
+
+ kern="/boot/$kern"
+ newerKernels=""
+ for i in $sortedKernels ; do
+ res=$(CompareVersions "$kern" "$i")
+ if [ "$kern" != "" ] && [ "$res" -gt 0 ] ; then
+ newerKernels="$newerKernels $kern $i"
+ kern=""
+ else
+ newerKernels="$newerKernels $i"
+ fi
+ done
+ if [ "$kern" != "" ] ; then
+ newerKernels="$newerKernels $kern"
+ fi
+ sortedKernels="$newerKernels"
+done
+
+if test -f "/boot/vmlinuz.old" ; then
+ sortedKernels="/boot/vmlinuz.old $sortedKernels"
+fi
+if test -f "/boot/vmlinuz" ; then
+ sortedKernels="/boot/vmlinuz $sortedKernels"
+fi
+
+# Add our last-good-boot kernel, second in list. We always add it, because
+# it can appear out of nowhere.
+newerKernels=""
+last_good="/boot/last-good-boot/vmlinuz"
+if [ -e "$last_good" ]; then
+ for i in $sortedKernels ; do
+ if [ "$last_good" != "" ]; then
+ newerKernels="$i $last_good"
+ last_good=""
+ else
+ newerKernels="$newerKernels $i"
+ fi
+ done
+ # Shouldn't happen, unless someone removed all the kernels
+ if [ "$last_good" != "" ]; then
+ newerKernels="$newerKernels $last_good"
+ fi
+ sortedKernels="$newerKernels"
+fi
+
+#Finding the value the default line
+use_grub_set_default="false"
+if test "$updatedefaultentry" = "true" ; then
+ defaultEntryNumber=$(sed -ne 's/^[[:blank:]]*default[[:blank:]]*\(.*\).*/\1/p' $menu)
+
+ if [ "$defaultEntryNumber" = "saved" ] ; then
+ defaultEntryNumber=$(sed 'q' "$grub_dir/default")
+ use_grub_set_default="true"
+ fi
+
+ if test -n "$defaultEntryNumber"; then
+ defaultEntryNumberPlusOne=$(expr $defaultEntryNumber \+ 1);
+ defaultEntry=$(grep "^[[:blank:]]*title" $menu | sed -ne "${defaultEntryNumberPlusOne}p" | sed -ne ";s/^[[:blank:]]*title[[:blank:]]*//p")
+ defaultEntry=$(echo $defaultEntry | sed -e "s/[[:blank:]]*$//") # don't trust trailing blanks
+ else
+ notChangeDefault="yes"
+ fi
+else
+ notChangeDefault="yes"
+fi
+
+output_kernel_list
+
+otherbuffer=$(tempfile)
+cat $buffer > $otherbuffer
+
+ucf_update_kernels "$buffer" "$otherbuffer"
+
+echo -n "Updating $menu ... " >&2
+# Insert the new options into the menu
+if ! grep -q "^$start" $menu ; then
+ cat $buffer >> $menu
+ rm -f $buffer
+else
+ umask 077
+ sed -e "/^$start/,/^$end/{
+ /^$start/r $buffer
+ d
+ }
+ " $menu > $menu.new
+ cat $menu.new > $menu
+ rm -f $buffer $menu.new
+fi
+
+# Function to update the default value
+set_default_value() {
+ if [ "$use_grub_set_default" = "true" ] ; then
+ grub-set-default $1
+ else
+ value="$1"
+ newmenu=$(tempfile)
+ sed -e "s/^[[:blank:]]*default[[:blank:]]*[[:digit:]]*\(.*\)/default ${value}\1/;b" $menu > $newmenu
+ cat $newmenu > $menu
+ rm -f $newmenu
+ unset newmenu
+ fi
+}
+
+#Updating the default number
+if test -z "$notChangeDefault"; then
+ newDefaultNumberPlusOne=$(grep "^[[:blank:]]*title[[:blank:]]*" $menu | grep -n "${defaultEntry}" | cut -f1 -d ":" | sed -ne "1p")
+ if test -z "$newDefaultNumberPlusOne"; then
+ echo "Previous default entry removed, resetting to 0">&2
+ set_default_value "0"
+ elif test -z "$defaultEntry"; then
+ echo "Value of default value matches no entry, resetting to 0" >&2
+ set_default_value "0"
+ else
+ if test "$newDefaultNumberPlusOne" = "1"; then
+ newDefaultNumber="0"
+ else
+ newDefaultNumber=$(expr $newDefaultNumberPlusOne - 1)
+ fi
+ echo "Updating the default booting kernel">&2
+ set_default_value "$newDefaultNumber"
+ fi
+fi
+
+echo "done" >&2
+echo >&2
diff --git a/debian/watch b/debian/watch
new file mode 100644
index 00000000..0f7a600b
--- /dev/null
+++ b/debian/watch
@@ -0,0 +1,2 @@
+version=3
+https://launchpad.net/cloud-init/+download .*/\+download/cloud-init-(.+)\.tar.gz