1# -*- coding: utf-8 -*- 2# 3# Copyright 2007-2011 Brecht Machiels 4# Copyright 2009-2010 Chris Roberts 5# Copyright 2009-2011 Scott McCreary 6# Copyright 2009 Alexander Deynichenko 7# Copyright 2009 HaikuBot (aka RISC) 8# Copyright 2010-2011 Jack Laxson (Jrabbit) 9# Copyright 2011 Ingo Weinhold 10# Copyright 2013 Oliver Tappe 11# Distributed under the terms of the MIT License. 12 13# -- Modules ------------------------------------------------------------------ 14 15import copy 16 17from .Package import PackageType 18from .RecipeTypes import (Architectures, Extendable, LinesOfText, Phase, 19 ProvidesList, RequiresList, YesNo) 20 21# -- recipe keys and their attributes ----------------------------------------- 22 23def getRecipeFormatVersion(): 24 """Returns the current version of the recipe format""" 25 return 1 26 27recipeAttributes = { 28 # non-extendable and non-indexable, i.e. per-port attributes 29 'BUILD_PACKAGE_ACTIVATION_PHASE': { 30 'type': Phase, 31 'required': False, 32 'default': Phase('BUILD'), 33 'extendable': Extendable.NO, 34 'indexable': False, 35 }, 36 'DISABLE_SOURCE_PACKAGE': { 37 'type': YesNo, 38 'required': False, 39 'default': False, 40 'extendable': Extendable.NO, 41 'indexable': False, 42 }, 43 'HOMEPAGE': { 44 'type': list, 45 'required': True, 46 'default': None, 47 'extendable': Extendable.NO, 48 'indexable': False, 49 }, 50 'MESSAGE': { 51 'type': bytes, 52 'required': False, 53 'default': None, 54 'extendable': Extendable.NO, 55 'indexable': False, 56 }, 57 'REVISION': { 58 'type': int, 59 'required': True, 60 'default': 1, 61 'extendable': Extendable.NO, 62 'indexable': False, 63 }, 64 65 # indexable, i.e. per-source attributes 66 'ADDITIONAL_FILES': { 67 'type': list, 68 'required': False, 69 'default': {}, 70 'extendable': Extendable.NO, 71 'indexable': True, 72 }, 73 'CHECKSUM_SHA256': { 74 'type': bytes, 75 'required': False, 76 'default': {}, 77 'extendable': Extendable.NO, 78 'indexable': True, 79 }, 80 'PATCHES': { 81 'type': list, 82 'required': False, 83 'default': {}, 84 'extendable': Extendable.NO, 85 'indexable': True, 86 }, 87 'SOURCE_DIR': { 88 'type': bytes, 89 'required': False, 90 'default': {}, 91 'extendable': Extendable.NO, 92 'indexable': True, 93 }, 94 'SOURCE_FILENAME': { 95 'type': bytes, 96 'required': False, 97 'default': {}, 98 'extendable': Extendable.NO, 99 'indexable': True, 100 }, 101 'SOURCE_URI': { 102 'type': list, 103 'required': True, 104 'default': {}, 105 'extendable': Extendable.NO, 106 'indexable': True, 107 }, 108 109 # extendable, i.e. per-package attributes 110 'ARCHITECTURES': { 111 'type': Architectures, 112 'required': True, 113 'default': None, 114 'extendable': Extendable.INHERITED, 115 'indexable': False, 116 }, 117 'BUILD_PREREQUIRES': { 118 'type': RequiresList, 119 'required': False, 120 'default': [], 121 'extendable': Extendable.INHERITED, 122 'indexable': False, 123 }, 124 'BUILD_REQUIRES': { 125 'type': RequiresList, 126 'required': False, 127 'default': [], 128 'extendable': Extendable.INHERITED, 129 'indexable': False, 130 }, 131 'TEST_REQUIRES': { 132 'type': RequiresList, 133 'required': False, 134 'default': [], 135 'extendable': Extendable.INHERITED, 136 'indexable': False, 137 }, 138 'CONFLICTS': { 139 'type': RequiresList, 140 'required': False, 141 'default': [], 142 'extendable': Extendable.DEFAULT, 143 'indexable': False, 144 }, 145 'COPYRIGHT': { 146 'type': list, 147 'required': False, 148 'default': [], 149 'extendable': Extendable.INHERITED, 150 'indexable': False, 151 }, 152 'DESCRIPTION': { 153 'type': LinesOfText, 154 'required': True, 155 'default': None, 156 'extendable': Extendable.INHERITED, 157 'indexable': False, 158 }, 159 'FRESHENS': { 160 'type': RequiresList, 161 'required': False, 162 'default': [], 163 'extendable': Extendable.DEFAULT, 164 'indexable': False, 165 }, 166 'GLOBAL_WRITABLE_FILES': { 167 'type': list, 168 'required': False, 169 'default': [], 170 'extendable': Extendable.DEFAULT, 171 'indexable': False, 172 }, 173 'LICENSE': { 174 'type': list, 175 'required': False, 176 'default': [], 177 'extendable': Extendable.INHERITED, 178 'indexable': False, 179 }, 180 'PACKAGE_GROUPS': { 181 'type': list, 182 'required': False, 183 'default': [], 184 'extendable': Extendable.DEFAULT, 185 'indexable': False, 186 }, 187 'PACKAGE_NAME': { 188 'type': bytes, 189 'required': False, 190 'default': None, 191 'extendable': Extendable.DEFAULT, 192 'indexable': False, 193 }, 194 'PACKAGE_USERS': { 195 'type': list, 196 'required': False, 197 'default': [], 198 'extendable': Extendable.DEFAULT, 199 'indexable': False, 200 }, 201 'PACKAGE_VERSION': { 202 'type': bytes, 203 'required': False, 204 'default': None, 205 'extendable': Extendable.DEFAULT, 206 'indexable': False, 207 }, 208 'PROVIDES': { 209 'type': ProvidesList, 210 'required': True, 211 'default': None, 212 'extendable': Extendable.DEFAULT, 213 'indexable': False, 214 }, 215 'POST_INSTALL_SCRIPTS': { 216 'type': list, 217 'required': False, 218 'default': [], 219 'extendable': Extendable.DEFAULT, 220 'indexable': False, 221 }, 222 'REPLACES': { 223 'type': list, 224 'required': False, 225 'default': [], 226 'extendable': Extendable.DEFAULT, 227 'indexable': False, 228 }, 229 'REQUIRES': { 230 'type': RequiresList, 231 'required': False, 232 'default': [], 233 'extendable': Extendable.DEFAULT, 234 'indexable': False, 235 }, 236 'SECONDARY_ARCHITECTURES': { 237 'type': Architectures, 238 'required': False, 239 'default': [], 240 'extendable': Extendable.INHERITED, 241 'indexable': False, 242 }, 243 'SUMMARY': { 244 'type': bytes, 245 'required': True, 246 'default': None, 247 'extendable': Extendable.INHERITED, 248 'indexable': False, 249 'suffix': { 250 PackageType.DEVELOPMENT: ' (development files)', 251 PackageType.DEBUG_INFO: ' (debug info)', 252 PackageType.DOCUMENTATION: ' (documentation)', 253 PackageType.SOURCE: ' (source files)', 254 } 255 }, 256 'SUPPLEMENTS': { 257 'type': RequiresList, 258 'required': False, 259 'default': [], 260 'extendable': Extendable.DEFAULT, 261 'indexable': False, 262 }, 263 'USER_SETTINGS_FILES': { 264 'type': list, 265 'required': False, 266 'default': [], 267 'extendable': Extendable.DEFAULT, 268 'indexable': False, 269 } 270} 271 272def getRecipeAttributes(): 273 return copy.deepcopy(recipeAttributes) 274