-def get_default_recipe():
- recipe = dict(
- Default=dict(
- Baseline= 'tizen-3.0',
- Active= True,
- Mic2Options= '-f raw --fstab=uuid --copy-kernel --compress-disk-image=bz2 --generate-bmap',
- Part='headless',
- Language= 'en_US.UTF-8',
- Keyboard= 'us',
- Timezone= 'Asia/Seoul',
- RootPass= 'tizen',
- DefaultUser= 'guest',
- DefaultUserPass= 'tizen',
- BootLoader= True,
- BootloaderAppend= "rw vga=current splash rootwait rootfstype=ext4 plymouth.enable=0",
- BootloaderTimeout= 3,
- BootloaderOptions= '--ptable=gpt --menus="install:Wipe and Install:systemd.unit=system-installer.service:test"',
- StartX= False,
- Desktop= 'None',
- SaveRepos= False,
- UserGroups= "audio,video"
- ),
- Wayland=dict(
- Part='headless',
- UserGroups='audio,video',
- Groups=[],
- PostScripts=[],
- Repos= [],
- NoChrootScripts=[]
- ),
- Configurations=[
- dict(
- Name='tizen-headless',
- Architecture='armv7l',
- Schedule= "*",
- Active= True,
- Platform= 'Wayland',
- Part= 'headless',
- Mic2Options= '-f loop --pack-to=@NAME@.tar.gz',
- FileName= 'tizen-headless-tm1',
- Repos=['tizen-unified', 'tizen-base'],
- Groups=[],
- ExtraPackages= [],
- RemovePackages=[]
- )
- ],
- Repositories=[
- dict(Name='tizen-unified',
- Url='http://download.tizen.org/live/devel:/Tizen:/Unified/standard/',
- #Url='file://home/shinchulwoo/Repo/Unified',
- Options='--ssl_verify=no'),
- dict(Name='tizen-base',
- Url='http://download.tizen.org/snapshots/tizen/base/latest/repos/arm/packages/',
- #Url='file://home/shinchulwoo/Repo/Base',
- Options='--ssl_verify=no')
- ],
- Partitions=[
- dict(Name='headless',
- Contents='part / --size=2000 --ondisk mmcblk0p --fstype=ext4 --label=rootfs --extoptions=\"-J size=16\" \n\
-part /opt/ --size=1000 --ondisk mmcblk0p --fstype=ext4 --label=system-data --extoptions="-m 0" \n\
-part /boot/kernel/mod_tizen_tm1/lib/modules --size=12 --ondisk mmcblk0p --fstype=ext4 --label=modules \n')
- ]
- )
- return recipe
+class DefaultRecipe(object):
+ DEFAULT_RECIPE = {'NoChrootScripts': [{'Contents': 'if [ -n "$IMG_NAME" ]; then\n echo "BUILD_ID=$IMG_NAME" >> $INSTALL_ROOT/etc/tizen-release\n echo "BUILD_ID=$IMG_NAME" >> $INSTALL_ROOT/etc/os-release\nfi\n',
+ 'Name': 'buildname'}],
+ 'Partitions': [{'Contents': 'part / --size=2000 --ondisk mmcblk0p --fstype=ext4 --label=rootfs --extoptions="-J size=16"\npart /opt/ --size=1000 --ondisk mmcblk0p --fstype=ext4 --label=system-data --extoptions="-m 0"\npart /boot/kernel/mod_tizen_tm1/lib/modules --size=12 --ondisk mmcblk0p --fstype=ext4 --label=modules\n',
+ 'Name': 'default-part'}],
+ 'PostScripts': [{'Contents': '#!/bin/sh\necho "#################### generic-base.post ####################"\n\ntest ! -e /opt/var && mkdir -p /opt/var\ntest -d /var && cp -arf /var/* /opt/var/\nrm -rf /var\nln -snf opt/var /var\n\ntest ! -e /opt/usr/home && mkdir -p /opt/usr/home\ntest -d /home && cp -arf /home/* /opt/usr/home/\nrm -rf /home\nln -snf opt/usr/home /home\n\nbuild_ts=$(date -u +%s)\nbuild_date=$(date -u --date @$build_ts +%Y%m%d_%H%M%S)\nbuild_time=$(date -u --date @$build_ts +%H:%M:%S)\n\nsed -ri \\\n\t-e \'s|@BUILD_ID[@]|@BUILD_ID@|g\' \\\n\t-e "s|@BUILD_DATE[@]|$build_date|g" \\\n\t-e "s|@BUILD_TIME[@]|$build_time|g" \\\n\t-e "s|@BUILD_TS[@]|$build_ts|g" \\\n\t/etc/tizen-build.conf\n\n# setup systemd default target for user session\ncat <<\'EOF\' >>/usr/lib/systemd/user/default.target\n[Unit]\nDescription=User session default target\nEOF\nmkdir -p /usr/lib/systemd/user/default.target.wants\n\n# sdx: fix smack labels on /var/log\nchsmack -a \'*\' /var/log\n\n# create appfw dirs inside homes\nfunction generic_base_user_exists() {\n user=$1\n getent passwd | grep -q ^${user}:\n}\n\nfunction generic_base_user_home() {\n user=$1\n getent passwd | grep ^${user}: | cut -f6 -d\':\'\n}\n\nfunction generic_base_fix_user_homedir() {\n user=$1\n generic_base_user_exists $user || return 1\n\nhomedir=$(generic_base_user_home $user)\n mkdir -p $homedir/apps_rw\n for appdir in desktop manifest dbspace; do\n mkdir -p $homedir/.applications/$appdir\n done\n find $homedir -type d -exec chsmack -a User {} \\;\n chown -R $user:users $homedir\n return 0\n}\n\n# fix TC-320 for SDK\n. /etc/tizen-build.conf\n[ "${TZ_BUILD_WITH_EMULATOR}" == "1" ] && generic_base_fix_user_homedir developer\n\n# Add info.ini for system-info CAPI (TC-2047)\n/etc/make_info_file.sh',
+ 'Name': 'generic-base'}],
+ 'Recipe': {'Active': True,
+ 'Architecture': 'armv7l',
+ 'Baseline': 'tizen',
+ 'BootLoader': True,
+ 'BootloaderAppend': 'rw vga=current splash rootwait rootfstype=ext4 plymouth.enable=0',
+ 'BootloaderOptions': '--ptable=gpt --menus="install:Wipe and Install:systemd.unit=system-installer.service:test"',
+ 'BootloaderTimeout': 3,
+ 'DefaultUser': 'guest',
+ 'DefaultUserPass': 'tizen',
+ 'Desktop': 'None',
+ 'ExtraPackages': [],
+ 'FileName': 'default-armv7l',
+ 'Groups': [],
+ 'Keyboard': 'us',
+ 'Language': 'en_US.UTF-8',
+ 'Mic2Options': '-f raw --fstab=uuid --copy-kernel --compress-disk-image=bz2 --generate-bmap',
+ 'Name': 'default-recipe',
+ 'NoChrootScripts': ['buildname'],
+ 'Part': 'default-part',
+ 'PostScripts': ['generic-base'],
+ 'RemovePackages': [],
+ 'Repos': ['tizen_unified', 'tizen_base_armv7l'],
+ 'RootPass': 'tizen',
+ 'SaveRepos': False,
+ 'Schedule': '*',
+ 'StartX': False,
+ 'Timezone': 'Asia/Seoul',
+ 'UserGroups': 'audio,video'},
+ 'Repositories': [{'Name': 'tizen_unified',
+ 'Options': '--ssl_verify=no',
+ 'Url': 'http://download.tizen.org/snapshots/tizen/unified/latest/repos/standard/packages/'},
+ #'Url': 'http://download.tizen.org/live/devel:/Tizen:/Unified/standard/'},
+ {'Name': 'tizen_base_armv7l',
+ 'Options': '--ssl_verify=no',
+ 'Url': 'http://download.tizen.org/snapshots/tizen/base/latest/repos/arm/packages/'}]}
+ _instance = None
+ def __new__(cls, *args, **kwargs):
+ if not cls._instance:
+ cls._instance = super(DefaultRecipe, cls).__new__(cls, *args, **kwargs)
+ return cls._instance
+ def __init__(self):
+ logger = logging.getLogger(__name__)
+ if os.path.exists(DEFAULT_RECIPE_PATH):
+ try:
+ with file(DEFAULT_RECIPE_PATH) as f:
+ self.DEFAULT_RECIPE = yaml.load(f)
+ logger.info('Read default recipe from %s' % DEFAULT_RECIPE_PATH)
+ except IOError as err:
+ logger.info(err)
+ except yaml.YAMLError as err:
+ logger.info(err)
+ def getDefaultRecipe(self):
+ return copy.deepcopy(self.DEFAULT_RECIPE)
+ def getSystemConfig(self):
+ data = copy.deepcopy(self.DEFAULT_RECIPE)
+ for field in RECIPE_EXTEND_FIELD:
+ if field == 'Partitions':
+ continue
+ if data['Recipe'].get(field):
+ data['Recipe'][field] = []
+ if data.get(field):
+ data[field] = []
+ return data
+ def getDefaultParameter(self):
+ return [dict(url=DEFAULT_RECIPE_NAME, type='recipe')]