trim.sh: Add virtual/package-manager to @world
authorW. Trevor King <wking@tremily.us>
Thu, 31 Jul 2014 03:56:46 +0000 (20:56 -0700)
committerW. Trevor King <wking@tremily.us>
Thu, 31 Jul 2014 04:41:56 +0000 (21:41 -0700)
We don't really need this, but it's easier to avoid trouble if we're
not using the package manager to uninstall itself and it's
dependencies ;).  Portage will protect itself and refuse to unmerge
itself and the version of Python it's using, but it doesn't protect
other dependencies like app-admin/eselect-python (which supplies the
/usr/bin/python-wrapper linked from /usr/bin/python).

I've also added sys-apps/findutils to avoid crashing with:

  Traceback (most recent call last):
    File "/usr/bin/emerge", line 50, in <module>
      retval = emerge_main()
    File "/usr/lib64/portage/pym/_emerge/main.py", line 1031, in emerge_main
      return run_action(emerge_config)
    File "/usr/lib64/portage/pym/_emerge/actions.py", line 3983, in run_action
      emerge_config.trees, emerge_config.target_config.mtimedb, rval)
    File "/usr/lib64/portage/pym/portage/proxy/objectproxy.py", line 31, in __call__
      return result(*args, **kwargs)
    File "/usr/lib64/portage/pym/_emerge/post_emerge.py", line 146, in post_emerge
      chk_updated_cfg_files(settings['EROOT'], config_protect)
    File "/usr/lib64/portage/pym/_emerge/chk_updated_cfg_files.py", line 17, in chk_updated_cfg_files
      portage.util.find_updated_config_files(target_root, config_protect))
    File "/usr/lib64/portage/pym/portage/util/__init__.py", line 1735, in find_updated_config_files
      stderr=subprocess.STDOUT)
    File "/usr/lib64/python2.7/subprocess.py", line 709, in __init__
      errread, errwrite)
    File "/usr/lib64/python2.7/subprocess.py", line 1326, in _execute_child
      raise child_exception
  OSError: [Errno 2] No such file or directory

the trouble comes from portage.util.find_updated_config_files, which
is calling find with code like:

  if stat.S_ISDIR(mymode):
      mycommand = \
          "find '%s' -name '.*' -type d -prune -o -name '._cfg????_*'" % x
  else:
      mycommand = "find '%s' -maxdepth 1 -name '._cfg????_%s'" % \
                  os.path.split(x.rstrip(os.path.sep))

trim.sh

diff --git a/trim.sh b/trim.sh
index 3a68a5454b94ba6a79fcee9512ffdca096b7918a..89ddec8139d9215070f1e7bb50e6506bc972cbd5 100755 (executable)
--- a/trim.sh
+++ b/trim.sh
@@ -53,7 +53,7 @@ trim()
                -v "${PWD}/empty-system.py:/tmp/empty-system.py" \
                "${IMAGE}" /bin/bash -c "
                        /tmp/empty-system.py &&
-                       emerge --noreplace app-shells/bash sys-apps/net-tools sys-apps/openrc sys-devel/gettext &&
+                       emerge --noreplace app-shells/bash sys-apps/findutils sys-apps/net-tools sys-apps/openrc sys-devel/gettext virtual/package-manager &&
                        emerge -v --with-bdeps=n --depclean &&
                        rm -rf /usr/portage" ||
                die "failed to create ${CONTAINER}"