mk-sbuild fails with cp: /etc/localtime... are the same file

Bug #1569400 reported by Robie Basak
16
This bug affects 3 people
Affects Status Importance Assigned to Milestone
ubuntu-dev-tools (Ubuntu)
Fix Released
High
Unassigned
Xenial
Fix Released
High
Steve Langasek

Bug Description

[SRU Justification]
The mk-sbuild command fails to completely set up its schroot environment if /etc/localtime is a symlink to the default timezone file (Etc/UTC), due to wrong 'cp' options. This makes the tool unusable in xenial on systems with a default config. It also causes the tool to do the wrong thing on systems with a user-configured timezone, as the Etc/UTC file within the chroot environment will be overwritten by the host system's zone file, rather than changing the *target* of the /etc/localtime symlink.

[Test case]
1. Verify that /etc/localtime is a symlink to /usr/share/zoneinfo/Etc/UTC on your system.
2. Install ubuntu-dev-tools.
3. Run 'mk-sbuild yakkety'. When prompted to edit ~/.sbuildrc, you can accept the defaults.
4. Run 'sg sbuild' to make sure you are in the 'sbuild' group in case this is newly added.
5. Run 'mk-sbuild yakkety' again. Verify that the command output ends with the line:
cp: '/etc/localtime' and '/var/lib/schroot/chroots/yakkety-amd64/etc/localtime' are the same file.
6. Run 'echo $?' to verify that the return value of mk-sbuild is 1.
7. Install ubuntu-dev-tools from xenial-proposed.
8. Run 'sudo rm -rf /var/lib/schroot/chroots/yakkety-amd64' to remove the incompletely-bootstrapped directory from the previous attempt.
9. Run 'mk-sbuild yakkety' again. Confirm that the command exits 0.
10. Confirm that 'schroot -l' shows the yakkety-amd64 chroot.

[Regression potential]
Minimal. We don't want to dereference /etc/localtime when copying it into the target environment; this never DTRT and often fails altogether. The fix for this is small and targeted.

On my system, /etc/localtime points to Etc/UTC. When I run mk-sbuild, it fails as follows:

I: Base system installed successfully.
cp: '/etc/localtime' and '/var/lib/schroot/chroots/xenial-amd64/etc/localtime' are the same file
rbasak@diglett:~$ stat /etc/localtime
  File: '/etc/localtime' -> '/usr/share/zoneinfo/Etc/UTC'
  Size: 27 Blocks: 0 IO Block: 4096 symbolic link
Device: fa00h/64000d Inode: 24904635 Links: 1
Access: (0777/lrwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2016-04-12 14:34:01.913544692 +0000
Modify: 2016-04-09 14:16:56.000000000 +0000
Change: 2016-04-11 14:33:38.788003973 +0000
 Birth: -
rbasak@diglett:~$ stat /var/lib/schroot/chroots/xenial-amd64/etc/localtime
  File: '/var/lib/schroot/chroots/xenial-amd64/etc/localtime' -> '/usr/share/zoneinfo/Etc/UTC'
  Size: 27 Blocks: 0 IO Block: 4096 symbolic link
Device: fa00h/64000d Inode: 25958842 Links: 1
Access: (0777/lrwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2016-04-12 14:39:39.042359630 +0000
Modify: 2016-04-12 14:39:39.038359620 +0000
Change: 2016-04-12 14:39:39.038359620 +0000
 Birth: -
rbasak@diglett:~$

ProblemType: Bug
DistroRelease: Ubuntu 16.04
Package: ubuntu-dev-tools 0.155 [modified: usr/bin/mk-sbuild]
ProcVersionSignature: Ubuntu 4.4.0-18.34-generic 4.4.6
Uname: Linux 4.4.0-18-generic x86_64
NonfreeKernelModules: zfs zunicode zcommon znvpair zavl
ApportVersion: 2.20.1-0ubuntu1
Architecture: amd64
Date: Tue Apr 12 14:52:21 2016
JournalErrors:
 Error: command ['journalctl', '-b', '--priority=warning', '--lines=1000'] failed with exit code 1: Hint: You are currently not seeing messages from other users and the system.
       Users in the 'systemd-journal' group can see all messages. Pass -q to
       turn off this notice.
 No journal files were opened due to insufficient permissions.
PackageArchitecture: all
SourcePackage: ubuntu-dev-tools
UpgradeStatus: No upgrade log present (probably fresh install)

Revision history for this message
Robie Basak (racb) wrote :
Revision history for this message
Robie Basak (racb) wrote :

I patched my live system as attached, which fixed the problem.

tags: added: patch
Revision history for this message
Launchpad Janitor (janitor) wrote :

Status changed to 'Confirmed' because the bug affects multiple users.

Changed in ubuntu-dev-tools (Ubuntu):
status: New → Confirmed
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package ubuntu-dev-tools - 0.157

---------------
ubuntu-dev-tools (0.157) unstable; urgency=medium

  * mk-sbuild: cp localtime and timezone a little harder (LP: #1569400)

 -- Adam Conrad <email address hidden> Sun, 08 May 2016 23:58:48 -0600

Changed in ubuntu-dev-tools (Ubuntu):
status: Confirmed → Fix Released
Revision history for this message
Jason Hobbs (jason-hobbs) wrote :

Will this be fixed in xenial too?

Steve Langasek (vorlon)
Changed in ubuntu-dev-tools (Ubuntu Xenial):
assignee: nobody → Steve Langasek (vorlon)
importance: Undecided → High
status: New → Triaged
Steve Langasek (vorlon)
Changed in ubuntu-dev-tools (Ubuntu Xenial):
status: Triaged → In Progress
Steve Langasek (vorlon)
description: updated
description: updated
Revision history for this message
Martin Pitt (pitti) wrote : Please test proposed package

Hello Robie, or anyone else affected,

Accepted ubuntu-dev-tools into xenial-proposed. The package will build now and be available at https://launchpad.net/ubuntu/+source/ubuntu-dev-tools/0.155ubuntu2 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested, and change the tag from verification-needed to verification-done. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed. In either case, details of your testing will help us make a better decision.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance!

Changed in ubuntu-dev-tools (Ubuntu Xenial):
status: In Progress → Fix Committed
tags: added: verification-needed
Mathew Hodson (mhodson)
Changed in ubuntu-dev-tools (Ubuntu):
importance: Undecided → High
Revision history for this message
Luke Faraone (lfaraone) wrote :

Prior to installing this update on a system with the timezone set to UTC, my attempts to create an ``unstable`` schroot ended with:

I: Base system installed successfully.
cp: '/etc/localtime' and '/var/lib/schroot/chroots/sid-amd64/etc/localtime' are the same file

After installing the proposed update, I was able to successfully create such a schroot using ``mk-sbuild``.

tags: added: verification-done
removed: verification-needed
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package ubuntu-dev-tools - 0.155ubuntu2

---------------
ubuntu-dev-tools (0.155ubuntu2) xenial; urgency=medium

  * mk-sbuild: fix failure to copy /etc/localtime into the target
    chroot. LP: #1569400.

 -- Steve Langasek <email address hidden> Fri, 01 Jul 2016 12:21:58 -0700

Changed in ubuntu-dev-tools (Ubuntu Xenial):
status: Fix Committed → Fix Released
Revision history for this message
Martin Pitt (pitti) wrote : Update Released

The verification of the Stable Release Update for ubuntu-dev-tools has completed successfully and the package has now been released to -updates. Subsequently, the Ubuntu Stable Release Updates Team is being unsubscribed and will not receive messages about this bug report. In the event that you encounter a regression using the package from -updates please report a new bug using ubuntu-bug and tag the bug report regression-update so we can easily find any regressions.

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.