Added new preferences subsection
In the preferences section the following optional subsection can be configured: <rpm-locale-filtering>true|false</rpm-locale-filtering> If set to true the default locales POSIX, C, and C.UTF-8 are applied as rpm install_lang macro. If the locale section is configured in addition the list is extended by that information too
This commit is contained in:
parent
fad1c0f1ef
commit
f8265bb607
@ -364,6 +364,27 @@ div { # locale
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#==========================================
|
||||
# common element <rpm-locale-filtering>
|
||||
#
|
||||
div {
|
||||
k.rpm-locale-filtering.content = xsd:boolean
|
||||
k.rpm-locale-filtering.attlist = empty
|
||||
k.rpm-locale-filtering =
|
||||
# locale-filtering sets the install_lang macro for rpm based
|
||||
# installations to the configured locale list. This results
|
||||
# in language specific files to become filtered out by rpm
|
||||
# if they don't match the configured list. Please note it
|
||||
# depends on the package design if the install_lang macro
|
||||
# contents apply to the package or not.
|
||||
element rpm-locale-filtering {
|
||||
k.rpm-locale-filtering.attlist,
|
||||
k.rpm-locale-filtering.content
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#==========================================
|
||||
# common element <namedCollection>
|
||||
#
|
||||
@ -2638,6 +2659,7 @@ div {
|
||||
k.keytable? &
|
||||
k.locale? &
|
||||
k.packagemanager? &
|
||||
k.rpm-locale-filtering? &
|
||||
k.rpm-check-signatures? &
|
||||
k.rpm-excludedocs? &
|
||||
k.showlicense* &
|
||||
|
||||
@ -609,6 +609,33 @@ specifies the where to find the boot kernel</a:documentation>
|
||||
</element>
|
||||
</define>
|
||||
</div>
|
||||
<!--
|
||||
==========================================
|
||||
common element <rpm-locale-filtering>
|
||||
|
||||
-->
|
||||
<div>
|
||||
<define name="k.rpm-locale-filtering.content">
|
||||
<data type="boolean"/>
|
||||
</define>
|
||||
<define name="k.rpm-locale-filtering.attlist">
|
||||
<empty/>
|
||||
</define>
|
||||
<define name="k.rpm-locale-filtering">
|
||||
<!--
|
||||
locale-filtering sets the install_lang macro for rpm based
|
||||
installations to the configured locale list. This results
|
||||
in language specific files to become filtered out by rpm
|
||||
if they don't match the configured list. Please note it
|
||||
depends on the package design if the install_lang macro
|
||||
contents apply to the package or not.
|
||||
-->
|
||||
<element name="rpm-locale-filtering">
|
||||
<ref name="k.rpm-locale-filtering.attlist"/>
|
||||
<ref name="k.rpm-locale-filtering.content"/>
|
||||
</element>
|
||||
</define>
|
||||
</div>
|
||||
<!--
|
||||
==========================================
|
||||
common element <namedCollection>
|
||||
@ -4165,6 +4192,9 @@ definition</a:documentation>
|
||||
<optional>
|
||||
<ref name="k.packagemanager"/>
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name="k.rpm-locale-filtering"/>
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name="k.rpm-check-signatures"/>
|
||||
</optional>
|
||||
|
||||
@ -99,14 +99,14 @@ class SystemPrepare(object):
|
||||
repository_sections = \
|
||||
self.xml_state.get_repository_sections_used_for_build()
|
||||
package_manager = self.xml_state.get_package_manager()
|
||||
locale_list = self.xml_state.get_locale()
|
||||
rpm_locale_list = self.xml_state.get_rpm_locale()
|
||||
if self.xml_state.get_rpm_check_signatures():
|
||||
repository_options.append('check_signatures')
|
||||
if self.xml_state.get_rpm_excludedocs():
|
||||
repository_options.append('exclude_docs')
|
||||
if locale_list:
|
||||
if rpm_locale_list:
|
||||
repository_options.append(
|
||||
'_install_langs%{0}'.format(':'.join(locale_list))
|
||||
'_install_langs%{0}'.format(':'.join(rpm_locale_list))
|
||||
)
|
||||
repo = Repository(
|
||||
self.root_bind, package_manager, repository_options
|
||||
|
||||
@ -7239,7 +7239,7 @@ class preferences(GeneratedsSuper):
|
||||
sections based on profiles combine to create on vaild definition"""
|
||||
subclass = None
|
||||
superclass = None
|
||||
def __init__(self, profiles=None, bootsplash_theme=None, bootloader_theme=None, keytable=None, locale=None, packagemanager=None, rpm_check_signatures=None, rpm_excludedocs=None, showlicense=None, timezone=None, type_=None, version=None):
|
||||
def __init__(self, profiles=None, bootsplash_theme=None, bootloader_theme=None, keytable=None, locale=None, packagemanager=None, rpm_locale_filtering=None, rpm_check_signatures=None, rpm_excludedocs=None, showlicense=None, timezone=None, type_=None, version=None):
|
||||
self.original_tagname_ = None
|
||||
self.profiles = _cast(None, profiles)
|
||||
if bootsplash_theme is None:
|
||||
@ -7262,6 +7262,10 @@ class preferences(GeneratedsSuper):
|
||||
self.packagemanager = []
|
||||
else:
|
||||
self.packagemanager = packagemanager
|
||||
if rpm_locale_filtering is None:
|
||||
self.rpm_locale_filtering = []
|
||||
else:
|
||||
self.rpm_locale_filtering = rpm_locale_filtering
|
||||
if rpm_check_signatures is None:
|
||||
self.rpm_check_signatures = []
|
||||
else:
|
||||
@ -7322,6 +7326,11 @@ class preferences(GeneratedsSuper):
|
||||
def add_packagemanager(self, value): self.packagemanager.append(value)
|
||||
def insert_packagemanager_at(self, index, value): self.packagemanager.insert(index, value)
|
||||
def replace_packagemanager_at(self, index, value): self.packagemanager[index] = value
|
||||
def get_rpm_locale_filtering(self): return self.rpm_locale_filtering
|
||||
def set_rpm_locale_filtering(self, rpm_locale_filtering): self.rpm_locale_filtering = rpm_locale_filtering
|
||||
def add_rpm_locale_filtering(self, value): self.rpm_locale_filtering.append(value)
|
||||
def insert_rpm_locale_filtering_at(self, index, value): self.rpm_locale_filtering.insert(index, value)
|
||||
def replace_rpm_locale_filtering_at(self, index, value): self.rpm_locale_filtering[index] = value
|
||||
def get_rpm_check_signatures(self): return self.rpm_check_signatures
|
||||
def set_rpm_check_signatures(self, rpm_check_signatures): self.rpm_check_signatures = rpm_check_signatures
|
||||
def add_rpm_check_signatures(self, value): self.rpm_check_signatures.append(value)
|
||||
@ -7361,6 +7370,7 @@ class preferences(GeneratedsSuper):
|
||||
self.keytable or
|
||||
self.locale or
|
||||
self.packagemanager or
|
||||
self.rpm_locale_filtering or
|
||||
self.rpm_check_signatures or
|
||||
self.rpm_excludedocs or
|
||||
self.showlicense or
|
||||
@ -7416,6 +7426,9 @@ class preferences(GeneratedsSuper):
|
||||
for packagemanager_ in self.packagemanager:
|
||||
showIndent(outfile, level, pretty_print)
|
||||
outfile.write('<packagemanager>%s</packagemanager>%s' % (self.gds_encode(self.gds_format_string(quote_xml(packagemanager_), input_name='packagemanager')), eol_))
|
||||
for rpm_locale_filtering_ in self.rpm_locale_filtering:
|
||||
showIndent(outfile, level, pretty_print)
|
||||
outfile.write('<rpm-locale-filtering>%s</rpm-locale-filtering>%s' % (self.gds_format_boolean(rpm_locale_filtering_, input_name='rpm-locale-filtering'), eol_))
|
||||
for rpm_check_signatures_ in self.rpm_check_signatures:
|
||||
showIndent(outfile, level, pretty_print)
|
||||
outfile.write('<rpm-check-signatures>%s</rpm-check-signatures>%s' % (self.gds_format_boolean(rpm_check_signatures_, input_name='rpm-check-signatures'), eol_))
|
||||
@ -7474,6 +7487,16 @@ class preferences(GeneratedsSuper):
|
||||
packagemanager_ = ""
|
||||
packagemanager_ = self.gds_validate_string(packagemanager_, node, 'packagemanager')
|
||||
self.packagemanager.append(packagemanager_)
|
||||
elif nodeName_ == 'rpm-locale-filtering':
|
||||
sval_ = child_.text
|
||||
if sval_ in ('true', '1'):
|
||||
ival_ = True
|
||||
elif sval_ in ('false', '0'):
|
||||
ival_ = False
|
||||
else:
|
||||
raise_parse_error(child_, 'requires boolean')
|
||||
ival_ = self.gds_validate_boolean(ival_, node, 'rpm_locale_filtering')
|
||||
self.rpm_locale_filtering.append(ival_)
|
||||
elif nodeName_ == 'rpm-check-signatures':
|
||||
sval_ = child_.text
|
||||
if sval_ in ('true', '1'):
|
||||
|
||||
@ -139,6 +139,41 @@ class XMLState(object):
|
||||
if locale_section:
|
||||
return locale_section[0].split(',')
|
||||
|
||||
def get_rpm_locale(self):
|
||||
"""
|
||||
Gets list of locale names to filter out by rpm
|
||||
if rpm-locale-filtering is switched on the
|
||||
the list always contains: [POSIX, C, C.UTF-8]
|
||||
and is extended by the optionaly configured
|
||||
locale
|
||||
|
||||
:return: List of names or None
|
||||
|
||||
:rtype: list|None
|
||||
"""
|
||||
if self.get_rpm_locale_filtering():
|
||||
rpm_locale = ['POSIX', 'C', 'C.UTF-8']
|
||||
configured_locale = self.get_locale()
|
||||
if configured_locale:
|
||||
for locale in configured_locale:
|
||||
rpm_locale.append(locale)
|
||||
return rpm_locale
|
||||
|
||||
def get_rpm_locale_filtering(self):
|
||||
"""
|
||||
Gets the rpm-locale-filtering configuration flag. Returns
|
||||
False if not present.
|
||||
|
||||
:return: True or False
|
||||
|
||||
:rtype: bool
|
||||
"""
|
||||
for preferences in self.get_preferences_sections():
|
||||
locale_filtering = preferences.get_rpm_locale_filtering()
|
||||
if locale_filtering:
|
||||
return locale_filtering[0]
|
||||
return False
|
||||
|
||||
def get_rpm_excludedocs(self):
|
||||
"""
|
||||
Gets the rpm-excludedocs configuration flag. Returns
|
||||
|
||||
@ -37,6 +37,7 @@
|
||||
</profiles>
|
||||
<preferences>
|
||||
<locale>en_US,de_DE</locale>
|
||||
<rpm-locale-filtering>true</rpm-locale-filtering>
|
||||
</preferences>
|
||||
<preferences>
|
||||
<type bootloader="grub2" image="oem" primary="true" boot="oemboot/example-distribution" firmware="efi" kernelcmdline="splash" vga="0x303" editbootconfig="my_edit_boot_script" editbootinstall="/absolute/path/to/my_edit_boot_install" fsmountoptions="async" btrfs_root_is_snapshot="true" spare_part="200M" xen_server="true" formatoptions="force_size,super=man" filesystem="ext4">
|
||||
|
||||
@ -182,8 +182,10 @@ class TestSystemPrepare(object):
|
||||
)
|
||||
|
||||
mock_repo.assert_called_once_with(
|
||||
self.system.root_bind, 'package-manager-name',
|
||||
['check_signatures', 'exclude_docs', '_install_langs%en_US:de_DE']
|
||||
self.system.root_bind, 'package-manager-name', [
|
||||
'check_signatures', 'exclude_docs',
|
||||
'_install_langs%POSIX:C:C.UTF-8:en_US:de_DE'
|
||||
]
|
||||
)
|
||||
# mock local repos will be translated and bind mounted
|
||||
assert uri.translate.call_args_list == [
|
||||
|
||||
@ -737,5 +737,14 @@ class TestXMLState(object):
|
||||
state = XMLState(xml_data, [], 'oem')
|
||||
assert state.get_initrd_system() == 'kiwi'
|
||||
|
||||
def test_get_rpm_locale_filtering(self):
|
||||
assert self.state.get_rpm_locale_filtering() is True
|
||||
assert self.boot_state.get_rpm_locale_filtering() is False
|
||||
|
||||
def test_get_locale(self):
|
||||
assert self.state.get_locale() == ['en_US', 'de_DE']
|
||||
|
||||
def test_get_rpm_locale(self):
|
||||
assert self.state.get_rpm_locale() == [
|
||||
'POSIX', 'C', 'C.UTF-8', 'en_US', 'de_DE'
|
||||
]
|
||||
|
||||
Loading…
Reference in New Issue
Block a user