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

Bug #1569400 reported by Robie Basak on 2016-04-12
16
This bug affects 3 people
Affects Status Importance Assigned to Milestone
ubuntu-dev-tools (Ubuntu)
High
Unassigned
Xenial
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)

Robie Basak (racb) wrote :
Robie Basak (racb) wrote :

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

tags: added: patch
Launchpad Janitor (janitor) wrote :

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

Changed in ubuntu-dev-tools (Ubuntu):
status: New → Confirmed
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
Jason Hobbs (jason-hobbs) wrote :

Will this be fixed in xenial too?

Steve Langasek (vorlon) on 2016-07-01
Changed in ubuntu-dev-tools (Ubuntu Xenial):
assignee: nobody → Steve Langasek (vorlon)
importance: Undecided → High
status: New → Triaged
Steve Langasek (vorlon) on 2016-07-01
Changed in ubuntu-dev-tools (Ubuntu Xenial):
status: Triaged → In Progress
Steve Langasek (vorlon) on 2016-07-01
description: updated
description: updated

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
Changed in ubuntu-dev-tools (Ubuntu):
importance: Undecided → High
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
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

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  Edit
Everyone can see this information.

Other bug subscribers