[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: OSTree <3 Anaconda



On Thu, Mar 20, 2014 at 08:03:10PM +0000, Colin Walters wrote:
>      turnOnFilesystems(storage, mountOnly=flags.flags.dirInstall)
> -    if not flags.flags.livecdInstall and not flags.flags.dirInstall:
> +    write_storage_late = flags.flags.livecdInstall or ksdata.ostreesetup.osname
> +    if not write_storage_late and not flags.flags.dirInstall:
>          storage.write()
>  
>      # Do packaging.
> @@ -169,15 +179,30 @@ def doInstall(storage, payload, ksdata, instClass):
>      payload.preInstall(packages=packages, groups=payload.languageGroups())
>      payload.install()
>  
> -    if flags.flags.livecdInstall:
> -        storage.write()
> -
> -    with progress_report(_("Performing post-installation setup tasks")):
> -        payload.postInstall()
> -
> +    if write_storage_late:
> +        if iutil.getSysroot() != ROOT_PATH:
> +            blivet.targetSysroot = iutil.getSysroot()
> +            storage.write()
> +            # Now that we have the FS layout in the target,
> +            # umount things that were in the legacy sysroot,
> +            # and put them in the target root, except for the
> +            # physical /
> +            storage.umountFilesystems()
> +            rootmnt = storage.mountpoints.get('/')
> +            rootmnt.setup()
> +            # Explicitly mount the root on the physical sysroot
> +            rootmnt.format.setup(rootmnt.format.options, chroot=ROOT_PATH)
> +            # But everything else goes in the target root
> +            storage.mountFilesystems(skipRoot=True)
> +        else:
> +            storage.write()

You need to skip this if flags.flags.dirInstall is True, directory
install disables the storage code and probably also won't work with
OSTree.

> +    
>      # Do bootloader.
>      if not flags.flags.dirInstall:
>          with progress_report(_("Installing bootloader")):
>              writeBootLoader(storage, payload, instClass, ksdata)
>  
> +    with progress_report(_("Performing post-installation setup tasks")):
> +        payload.postInstall()

Why move this here instead of leaving it above writeBootLoader?

> +    def _safeExecWithRedirect(self, cmd, argv, **kwargs):
> +        """Like iutil.execWithRedirect, but treat errors as fatal"""
> +        rc = iutil.execWithRedirect(cmd, argv, **kwargs)
> +        if rc != 0:
> +            exn = PayloadInstallError("%s %s exited with code %d" % (cmd, argv, rc))
> +            if errorHandler.cb(exn) == ERROR_RAISE:
> +                raise exn

You may as well add this to iutil as another variation on ExecWith

> diff --git a/pyanaconda/users.py b/pyanaconda/users.py
> index d43ad29..e00460e 100644
> --- a/pyanaconda/users.py
> +++ b/pyanaconda/users.py
> @@ -192,7 +192,7 @@ class Users:
>          """
>  
>          childpid = os.fork()
> -        root = kwargs.get("root", "/mnt/sysimage")
> +        root = kwargs.get("root", iutil.getSysroot())
>  
>          if not childpid:
>              if not root in ["","/"]:
> @@ -258,7 +258,7 @@ class Users:
>                          available one is used.
>          """
>          childpid = os.fork()
> -        root = kwargs.get("root", "/mnt/sysimage")
> +        root = kwargs.get("root", iutil.getSysroot())
>  
>          if not childpid:
>              if not root in ["","/"]:
> @@ -358,12 +358,16 @@ class Users:
>          else:
>              return False
>  
> -    def checkUserExists(self, username, root="/mnt/sysimage"):
> +    def checkUserExists(self, username, root=None):
>          childpid = os.fork()
> +        if root is not None:
> +            rootval = root
> +        else:
> +            rootval = iutil.getSysroot()
>  
>          if not childpid:
> -            if not root in ["","/"]:
> -                os.chroot(root)
> +            if not rootval in ["","/"]:
> +                os.chroot(rootval)
>                  os.chdir("/")
>                  del(os.environ["LIBUSER_CONF"])

Looks like we have some duplicate code, it might be time to clean up
users.py a bit.

-- 
Brian C. Lane | Anaconda Team | IRC: bcl #anaconda | Port Orchard, WA (PST8PDT)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]