2013-12-30 12:16:21 +01:00
|
|
|
from base import Task
|
|
|
|
from common import phases
|
|
|
|
from common.tasks import bootstrap
|
|
|
|
from common.tasks import apt
|
|
|
|
import os
|
|
|
|
|
|
|
|
folders = ['tmp', 'var/lib/apt/lists']
|
|
|
|
|
|
|
|
|
|
|
|
class AddFolderMounts(Task):
|
|
|
|
description = 'Mounting folders for writing temporary and cache data'
|
|
|
|
phase = phases.os_installation
|
|
|
|
predecessors = [bootstrap.Bootstrap]
|
|
|
|
|
2014-01-05 15:57:11 +01:00
|
|
|
@classmethod
|
|
|
|
def run(cls, info):
|
2013-12-30 12:16:21 +01:00
|
|
|
info.minimize_size_folder = os.path.join(info.workspace, 'minimize_size')
|
|
|
|
os.mkdir(info.minimize_size_folder)
|
|
|
|
for folder in folders:
|
|
|
|
temp_path = os.path.join(info.minimize_size_folder, folder.replace('/', '_'))
|
|
|
|
os.mkdir(temp_path)
|
|
|
|
|
|
|
|
full_path = os.path.join(info.root, folder)
|
|
|
|
info.volume.partition_map.root.add_mount(temp_path, full_path, ['--bind'])
|
|
|
|
|
|
|
|
|
|
|
|
class RemoveFolderMounts(Task):
|
|
|
|
description = 'Removing folder mounts for temporary and cache data'
|
|
|
|
phase = phases.system_cleaning
|
|
|
|
successors = [apt.AptClean]
|
|
|
|
|
2014-01-05 15:57:11 +01:00
|
|
|
@classmethod
|
|
|
|
def run(cls, info):
|
2013-12-30 12:16:21 +01:00
|
|
|
import shutil
|
|
|
|
for folder in folders:
|
|
|
|
temp_path = os.path.join(info.minimize_size_folder, folder.replace('/', '_'))
|
|
|
|
full_path = os.path.join(info.root, folder)
|
|
|
|
|
|
|
|
info.volume.partition_map.root.remove_mount(full_path)
|
|
|
|
shutil.rmtree(temp_path)
|
|
|
|
|
|
|
|
os.rmdir(info.minimize_size_folder)
|
|
|
|
del info.minimize_size_folder
|