def update_version_gui(self, version, distributor, release, arch, output_text):
        """Stops any running spinners and updates GUI items"""

        if distributor:
            self.distributor = distributor
        if release:
            self.release = release
        if arch:
            self.arch = arch
        
        self.bto_base = bool(version)

        if self.bto_base:
            version = increment_bto_version(version)
        else:
            version = 'X00'

        self.widgets.get_object('version').set_text(version)
        return True
    def update_version_gui(self, version, distributor, release, arch,
                           output_text):
        """Stops any running spinners and updates GUI items"""

        if distributor:
            self.distributor = distributor
        if release:
            self.release = release
        if arch:
            self.arch = arch

        self.bto_base = bool(version)

        if self.bto_base:
            version = increment_bto_version(version)
        else:
            version = 'X00'

        self.widgets.get_object('version').set_text(version)
        return True
Пример #3
0
    def install(self, target, progress, *args, **kwargs):
        """Perform actual install time activities for oem-config"""
        if not 'UBIQUITY_OEM_USER_CONFIG' in os.environ:
            return

        #find the '/' mount partition and then label it as UBUNTU
        self.Set_RootPartitionLabel()

        env = os.environ
        lang = progress.get('debian-installer/locale')
        env['LANG'] = lang

        dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
        self.progress = progress

        user = progress.get('passwd/username')
        uid = pwd.getpwnam(user).pw_uid
        gid = pwd.getpwnam(user).pw_gid

        rec_type = progress.get('dell-recovery/destination')
        if rec_type != "none":
            dvd, usb = magic.find_burners()
            rpart  = magic.find_partition()
            self.index = 0

            #build all the user's home directories a little earlier than normal
            subprocess.call(['su', user, '-c', 'xdg-user-dirs-update'])
            directory = magic.fetch_output(['su', user, '-c', '/usr/bin/xdg-user-dir DOWNLOAD']).strip()
            fname = os.path.join(directory, 'factory_image.iso')

            try:
                bus = dbus.SystemBus()
                dbus_iface = dbus.Interface(bus.get_object(magic.DBUS_BUS_NAME,
                                            '/RecoveryMedia'),
                                            magic.DBUS_INTERFACE_NAME)
            except Exception as err:
                self.log('install function exception while creating dbus backend: %s' % str(err))
                return

            progress.info('dell-recovery/build_start')

            #Determine internal version number of image
            (version, date, platform) = dbus_iface.query_bto_version(rpart)
            version = magic.increment_bto_version(version)
            self.log("Generating recovery media from %s : %s" % (version, date))

            #Build image
            try:
                magic.dbus_sync_call_signal_wrapper(dbus_iface,
                                                    'create_ubuntu',
                                                    {'report_progress':self._update_progress_gui},
                                                    rpart,
                                                    version,
                                                    fname,
                                                    platform)
                os.chown(fname.encode('utf-8'), uid, gid)
            except dbus.DBusException as err:
                self.log('install function exception while calling backend: %s' % str(err))
                return

            #Close backend
            try:
                dbus_iface.request_exit()
            except dbus.DBusException as err:
                if hasattr(err, '_dbus_error_name') and err._dbus_error_name == \
                        'org.freedesktop.DBus.Error.ServiceUnknown':
                    pass
                else:
                    self.log("Received %s when closing recovery-media-backend" \
                                                                     % str(err))
                    return

            if rec_type:
                if rec_type == "dvd":
                    cmd = ['dbus-launch'] + dvd + [fname.encode('utf-8')]
                else:
                    cmd = ['dbus-launch'] + usb + [fname.encode('utf-8')]
                if 'DBUS_SESSION_BUS_ADDRESS' in os.environ:
                    os.environ.pop('DBUS_SESSION_BUS_ADDRESS')
                progress.info('dell-recovery/burning')
                subprocess.call(cmd)
        else:
            #Mark burning tool to launch on 7th day
            directory = '/home/%s/.config/autostart' % user
            if not os.path.exists(directory):
                os.makedirs(directory)
                os.chown('/home/%s/.config' % user, uid, gid)
                os.chown(directory, uid, gid)
            fname = os.path.join(directory, 'dell-recovery.desktop')
            with open('/usr/share/applications/dell-recovery-media.desktop', encoding='utf-8') as rfd:
                with open(fname, 'w', encoding='utf-8') as wfd:
                    for line in rfd.readlines():
                        if line.startswith('Exec='):
                            line = 'Exec=/home/%s/.config/dell-recovery/reminder\n' % user
                        wfd.write(line)
            os.chown(fname, uid, gid)
            directory = '/home/%s/.config/dell-recovery' % user
            if not os.path.exists(directory):
                os.makedirs(directory)
                os.chown(directory, uid, gid)
            fname = os.path.join(directory, 'reminder')
            date = magic.fetch_output(['date', '-d', '+7 days', '+%y%m%d'])
            with open(fname, 'w', encoding='utf-8') as wfd:
                wfd.write('#!/bin/sh\n')
                wfd.write('LAUNCH=%s\n' % date)
                wfd.write('TODAY=$(date +"%y%m%d")\n')
                wfd.write('if [ $TODAY -ge $LAUNCH ]; then\n')
                wfd.write('    dell-recovery\n')
                wfd.write('fi\n')
            os.chown(fname, uid, gid)
            os.chmod(fname, 0o744)

        return InstallPlugin.install(self, target, progress, *args, **kwargs)