- add support for the HASH key. (#300982)
authorDuncan Mac-Vicar P <dmacvicar@suse.de>
Mon, 20 Aug 2007 13:27:31 +0000 (13:27 +0000)
committerDuncan Mac-Vicar P <dmacvicar@suse.de>
Mon, 20 Aug 2007 13:27:31 +0000 (13:27 +0000)
- Use ContentFileParser in Downloader (instead of implementing
  the parser again, it has a reason, Downloader was written first)
- update testcases and data to cover the new HASH key

15 files changed:
tests/repo/susetags/Downloader_test.cc
tests/repo/susetags/data/stable-x86-subset-gz/content
tests/repo/susetags/data/stable-x86-subset-gz/content.asc
tests/repo/susetags/data/stable-x86-subset-gz/control.xml [new file with mode: 0644]
tests/repo/susetags/data/stable-x86-subset-gz/installation.xml [new file with mode: 0644]
tests/repo/susetags/data/stable-x86-subset-gz/license.tar.gz [new file with mode: 0644]
tests/repo/susetags/data/stable-x86-subset/content
tests/repo/susetags/data/stable-x86-subset/content.asc
tests/repo/susetags/data/stable-x86-subset/control.xml [new file with mode: 0644]
tests/repo/susetags/data/stable-x86-subset/installation.xml [new file with mode: 0644]
tests/repo/susetags/data/stable-x86-subset/license.tar.gz [new file with mode: 0644]
zypp/parser/susetags/ContentFileReader.cc
zypp/parser/susetags/RepoIndex.h
zypp/repo/susetags/Downloader.cc
zypp/repo/susetags/Downloader.h

index e0377ca..6996e64 100644 (file)
@@ -7,6 +7,7 @@
 #include <boost/test/parameterized_test.hpp>
 #include <boost/test/unit_test_log.hpp>
 
+#include "zypp/base/Logger.h"
 #include "zypp/Url.h"
 #include "zypp/PathInfo.h"
 #include "zypp/TmpPath.h"
@@ -33,6 +34,8 @@ void susetags_download_test(const string &dir)
   
   downloader.download(media,localdir);
   
+  MIL << "All files downloaded" << endl;
+  
   const char* files[] =
   {
     "/suse",
@@ -102,8 +105,10 @@ void susetags_gz_download_test(const string &dir)
 //    "/media.1/products.key",
     "/media.1/media",
 //    "/media.1/products",
-//    "/media.1/info.txt",
-//    "/media.1/license.zip",
+    "/media.1/info.txt",
+    "/license.tar.gz",
+    "/control.xml",
+    "/installation.xml",
     "/gpg-pubkey-a1912208-446a0899.asc",
     "/gpg-pubkey-307e3d54-44201d5d.asc",
     "/gpg-pubkey-9c800aca-40d8063e.asc",
index 86cb1ff..9c02308 100644 (file)
@@ -35,4 +35,8 @@ KEY SHA1 7025932e6866932f489421990075f3ed312023ea  gpg-pubkey-3d25d3d9-36e12d04.
 KEY SHA1 fd6146cac8c1473c5b52548936de773d5bbd5610  gpg-pubkey-7e2e3b05-44748aba.asc
 KEY SHA1 cd7adceba1fe5d7ba27b5749718743192d82f802  gpg-pubkey-9c800aca-40d8063e.asc
 KEY SHA1 7535d79e31ef7b4232e5593bb49d9142978b2e95  gpg-pubkey-a1912208-446a0899.asc
+HASH SHA1 172b3cf77268f46e783e78a653902e563cb91e9a  license.tar.gz
+HASH SHA1 4aa8ded6302e6ec85690a51af6044dffe9b21923  control.xml
+HASH SHA1 82f1f17ce74f0cd3fca4813c178196b317fc952d  installation.xml
+HASH SHA1 68d9b548d61e31e82e8834690e884afa27751287  media.1/info.txt
 
index 6d0e180..c5ff0d5 100644 (file)
@@ -1,29 +1,32 @@
 -----BEGIN PGP MESSAGE-----
 Version: GnuPG v1.4.6 (GNU/Linux)
 
-owGdVTuIJFUUHXeVhYJFNhAMn2AguN39/p9F0Zrpmg+202tX9TgbDe9XM+3MVDVd
-1cyOGhhqIGhiogxGBoogiGwqJoJgbqBmZgaCiaGvuqfd7lVZWGhe0XXvOe/dc05V
-fXD96tqVGx///t03v3wl9h778tq+uWbLovZFvXnxVHx70O8ONzJQjn2RDtOklWtb
-l5PzaC8ZpDv9XYBgm0TdnTRbdKbT0NUbFdO7rTSL13tJa1/yWccSBLcpXqLa7fYH
-oKEHvZ3d4T64PSnd1NYV2Do12zfB7tRPCuMnhzfBlp+c6uI8GiS93X6WpMNBDxzV
-9fhWp3N2dtauppVv2/K0M/EnRVn7qjMikncWp+9sxhtZf3CnKXtd+daspz0Zn0bx
-YGO7fVfyA07B5WXEJQcj1iy0WQITKEo9sUfz7nn9YU3sIXX6/yXywN1ushkPe9l6
-HIRqKIMKrw13Bkl6357LwcCLM2PAWNd10O6WCfeq86r2p1HwaW+nGzDjuci3Ftg5
-pnEm6q+n/V6SLTU1DQdzc/6Fe2EOjEJ5axinwFbAaeA88EX4HWytA1+BfATyCTia
-glEN3tDg+BQUJ6AwYHwCxvXB+gC8eXSwsdus2etRut0fZL14PemBS8ei+b9/9ry8
-PY/frNYOG/53OdnPBnEISrpIiivPipNSu3bTP4tMOTnsuFFVT0ZmWo/KotMMFFIy
-LjtlVXWi/u0sJDfuPTJLURathumRwM6b6WEn2J9uDLo7A9D0dypfT8ehVNlJ1I2z
-eFGINnvxVgqmY6drH6RpPNlKGiOGafRqksUg3Y4RsETk1GiKMeMMSkoJJwIhgaAl
-ElPNpFUQOQfAsfOtRseWQLM0t0OologkzJUxKFdeMW+sN7lTBuOcEJkLoTyG1DoG
-DQhhtMf60FdLYGUJRU4RhMMTAHNIDISIS8QQsRoKQx20WgpyH9zuDpfwmspcMyh0
-bm3YW3DDqApAoqhviCUinhuIlvC+WMILzhSEOWv2C405VTycFXLj8pyyXELmOVJK
-LOOXz58bwzV2XAkeBLVKc+MNw1YTlgumqPbE5znyYPEkVtEryZ1LByBhFHJlEZRI
-cUFdmBRyibFHjpowORJKeAXA4fiwNZ6aY3/egi43BEnZosg7hZVp68re58SeSM8g
-scFOyxyE2DhLkGDMShxgkFKnHEYrnAQKTxyjLUpxsJy5VU4BMVME+/Ci4+GaU6ko
-DqJAKFhOvAvmQUy8XuV0mDniVItwj7CDdJUzdxxRbrWVFlFBLAuisUBMuPNChMMY
-4xhHcIVT+DCegSycU1CpjV7ltE5oF/KnUe6ZE0ZjYZigSiApKEEKO4mDo3iFU1kJ
-oba6RaGTkBP/wOyMBCrlCfJ5SCMOMrAghjFUOYUoVkIaHIK/wqmRQhjD4BHlGkql
-ZpzRuy9dfWKt+aYuPrY3rqT31i6ezd52X3z0w/H3z3327c8/vfPbry//9cfaxTPJ
-54/fe/7sz/feuv70h+//+PWTn3x6528=
-=KMVc
+owGdlsuLI1UUxtsZRAkozMaNm4sLQZxU7vvRjkjSST8wdsZUMs64ae4zHTupCqkK
+3T1LF4PuZi+I4MKV6MY/QBcD7gSX4sqtGxFEXHkr6XaSVhkYSKpInXN+de93vlOp
+hy9c37p245Nfv/vm56/FnWe+fP7UPGfzrPRZufv9w+ntfq893BmAfOazdJh26kHb
+Mp+f1+50+ulB7xAgmJBa+yAdXGami5jVHWeLs3o6aLa6nfpdyZcZayU4oXgNddju
+9UGFB92Dw+FdcHueu4UtC7A3Nfs3weHCzzPj56ObYM/Ppzo7r/U73cPeoJMO+11w
+XJaz7Ubj9PQ0KRaFT2w+bcz9JMtLXzTGRPLG5eobu82dQa9/rwp7Xfj6MieZz6a1
+Zn9nPzmT/IhTcHEac8nBmFUHWh0iCWS5ntvjVfYq/qQk9oQ4/f8QuXK13dltDruD
+VjMKVSGjCu8OD/qd9HF7LjYG3lw2Bsx0WUbttk28VpwXpZ/WYp/uHLRjzWwl8vZl
+7aqm6kyt10p73c5gLalKOFo15191t1aFtRjeGzZTYAvgNHAe+Cx+jvZawBcgjEGY
+g+MFGJfgAw1OpiCbgMyA2QTMyqNWH9w/Pto5rI6D92rpfq8/6DZbnS646Fht9euf
+e15cXtlvGUviDf873Lk76DejUdJLp7j8NJvk2iVV/tIy+XzUcOOinI/NohznWaPa
+UHTJLG/kRdGo9W4PonOb3aemZHlWr0hPVey8WYwasf3pTr990AdVfqPw5WIWQ4Wd
+19rNQfMyUNvtNvdSsJg5XfooTdWTvU7ViGFae6czaIJ0v4kAMURTAwOUzDnCITMc
+Wect5EISww3WKCDHEQAnztcrHesCLd2cRFMlo/trLGwJQx7ByKTCB6wktRGgOZHa
+2uC1C9oHJkH0oz3Rozhy7eEVBJSaB+mRVdwro7HXwgpqIUOIWISsIEJKTNYQPttE
+MOU4M5IJZjTyznkkEQlxOV4pqrSXLFBHLVpHFJsIGDUgPBYHjpgwlmJBpMCQMYkj
+xiHBuZGWriE26hElgjBGJKKaBEksdtZzy52mUFCofSUR5AxcDuay/u3OvVW5hYRR
+yJVFUCLFBXVaCsireyNHjYMWCSW8AmA0G9VnC3Piz+vQBUOQlHUa162wMoku7GMm
+9kR6BomlhFvmIMTGWYIEY1biWAYpdcphtMEkUHjiGK1TiiFyzG0yBcRMEezjo4/H
+c6BSUYyUglCwQLwjCENMvN5kOswccapOuEfYQbrJDNFrlFttpUVUEMsMwyyCCXde
+iLgYYxzjCG4whY/bM5DFdQoqtdGbTOuEjg2IdgieORFdJQwTVAkkBSVIYSdxkBBv
+MJWVEGqr6xQ6CTnxV/bOSEQpT5APwlAcZWBRDGOocgpRrIQ00Spsg6mRQjhaPK6T
+ayiVWjL3m+n+hW8ENsQGITCXgXIfRzB+NWdEwcjnxBqFvIqCTsY2Pi98Uup5ZZ3H
+CKq1dN5xEgu4t5JxBTVDOvCqwyHEoYotqgao+nef55PkbDpZq49KxIEX1gsaoHUk
+WE1lNXqismJ0mAhWMewAGGdFqScTXT2krkC4dMrErsVeVgJJ7KUkNK4knqkOUX/B
+EJYCgKl3Y52gxjgLeVKelbXaR29df3areuW4fBe5ce2Hl7c+fe2P7Qfdvx7RVz9P
+XvntpW97b4wfgK3PPvzqxdGDax8//OLR77+8//pPZ7daf/74Nw==
+=3cih
 -----END PGP MESSAGE-----
diff --git a/tests/repo/susetags/data/stable-x86-subset-gz/control.xml b/tests/repo/susetags/data/stable-x86-subset-gz/control.xml
new file mode 100644 (file)
index 0000000..096763e
--- /dev/null
@@ -0,0 +1,793 @@
+<?xml version="1.0"?>
+<productDefines  xmlns="http://www.suse.com/1.0/yast2ns"
+    xmlns:config="http://www.suse.com/1.0/configns">
+
+<!--
+Work around for the text domain
+textdomain="control"
+-->
+
+    <textdomain>control</textdomain>
+    <globals>
+       <additional_kernel_parameters></additional_kernel_parameters>
+        <enable_autologin config:type="boolean">true</enable_autologin>
+       <enable_firewall config:type="boolean">true</enable_firewall>
+       <firewall_enable_ssh config:type="boolean">false</firewall_enable_ssh>
+       <fam_local_only>never</fam_local_only>
+        <incomplete_translation_treshold>95</incomplete_translation_treshold>
+        <inform_about_suboptimal_distribution config:type="boolean">true</inform_about_suboptimal_distribution>
+        <skip_language_dialog config:type="boolean">true</skip_language_dialog>
+        <ui_mode>simple</ui_mode>
+        <enable_clone config:type="boolean">false</enable_clone>
+        <enable_register_hwdata   config:type="boolean">true</enable_register_hwdata>
+        <enable_register_optional config:type="boolean">true</enable_register_optional>
+        <display_register_forcereg config:type="boolean">true</display_register_forcereg>
+        <disable_register_w3m config:type="boolean">true</disable_register_w3m>
+        <register_monthly config:type="boolean">false</register_monthly>
+       <manual_online_update config:type="boolean">true</manual_online_update>
+       <root_password_ca_check config:type="boolean">false</root_password_ca_check>
+
+       <!-- FATE #301937, Save /root content from the installation system to the installed system -->
+       <save_instsys_content config:type="list">
+           <save_instsys_item>
+               <instsys_directory>/root/</instsys_directory>
+               <system_directory>/root/inst-sys/</system_directory>
+           </save_instsys_item>
+       </save_instsys_content>
+    </globals>
+
+    <software>
+        <delete_old_packages config:type="boolean">false</delete_old_packages>
+        <selection_type config:type="symbol">auto</selection_type>
+
+       <!-- FATE #300898, List of external sources accesible during the installation time -->
+       <external_sources_link>http://download.opensuse.org/YaST/Repos/openSUSE_103_Servers.xml</external_sources_link>
+    </software>
+
+    <partitioning>
+        <evms_config config:type="boolean">false</evms_config>
+        <try_separate_home config:type="boolean">true</try_separate_home>
+        <limit_try_home>7G</limit_try_home>
+        <root_space_percent>40</root_space_percent>
+        <root_base_size>5G</root_base_size>
+        <root_max_size>20G</root_max_size>
+       <proposal_lvm>false</proposal_lvm>
+       <proposal_evms>false</proposal_evms>
+       <vm_desired_size>15G</vm_desired_size>
+       <vm_home_max_size>25G</vm_home_max_size>
+       <boot_evms>false</boot_evms>
+    </partitioning>
+
+    <network>
+        <force_static_ip config:type="boolean">false</force_static_ip>
+        <network_manager>laptop</network_manager>
+       <startmode>ifplugd</startmode>
+    </network>
+
+    <clone_modules config:type="list">
+       <clone_module>language</clone_module>
+       <clone_module>keyboard</clone_module>
+       <clone_module>timezone</clone_module>
+       <clone_module>users</clone_module>
+       <clone_module>networking</clone_module>
+       <clone_module>firewall</clone_module>
+       <clone_module>host</clone_module>
+       <clone_module>routing</clone_module>
+       <clone_module>proxy</clone_module>
+       <clone_module>runlevel</clone_module>
+       <clone_module>x11</clone_module>
+       <clone_module>nis</clone_module>
+       <clone_module>ldap</clone_module>
+       <clone_module>printer</clone_module>
+       <clone_module>add-on</clone_module>
+    </clone_modules>
+
+    <texts>
+      <congratulate>
+       <label>
+&lt;p&gt;&lt;b&gt;Congratulations!&lt;/b&gt;&lt;/p&gt;
+&lt;p&gt;The installation of openSUSE on your machine is complete.
+After clicking &lt;b&gt;Finish&lt;/b&gt;, you can log in to the system.&lt;/p&gt;
+&lt;p&gt;Visit us at %1.&lt;/p&gt;
+&lt;p&gt;Have a lot of fun!&lt;br&gt;Your openSUSE Development Team&lt;/p&gt;
+       </label>
+      </congratulate>
+    </texts>
+
+    <proposals config:type="list">
+        <proposal>
+            <label>Installation Settings</label>
+            <mode>installation,demo,autoinstallation</mode>
+            <stage>initial</stage>
+            <name>initial</name>
+            <enable_skip>no</enable_skip>
+            <proposal_modules config:type="list">
+                <proposal_module>hwinfo</proposal_module>
+                <proposal_module>keyboard</proposal_module>
+                <proposal_module>mouse</proposal_module>
+                <proposal_module>partitions</proposal_module>
+                <proposal_module>software</proposal_module>
+                <proposal_module>bootloader</proposal_module>
+                <proposal_module>timezone</proposal_module>
+                <proposal_module>language</proposal_module>
+                <proposal_module>runlevel</proposal_module>
+            </proposal_modules>
+            <proposal_tabs config:type="list">
+                <proposal_tab>
+                    <label>Overview</label>
+                    <proposal_modules config:type="list">
+                        <proposal_module>partitions</proposal_module>
+                        <proposal_module>software_simple</proposal_module>
+                       <proposal_module>country_simple</proposal_module>
+                    </proposal_modules>
+                </proposal_tab>
+                <proposal_tab>
+                    <label>Expert</label>
+                    <proposal_modules config:type="list">
+                        <proposal_module>hwinfo</proposal_module>
+                        <proposal_module>keyboard</proposal_module>
+                        <proposal_module>mouse</proposal_module>
+                        <proposal_module>partitions</proposal_module>
+                        <proposal_module>software</proposal_module>
+                        <proposal_module>bootloader</proposal_module>
+                        <proposal_module>timezone</proposal_module>
+                        <proposal_module>language</proposal_module>
+                        <proposal_module>runlevel</proposal_module>
+                    </proposal_modules>
+                </proposal_tab>
+            </proposal_tabs>
+        </proposal>
+
+        <proposal>
+            <label>Update Settings</label>
+            <mode>update</mode>
+            <name>initial</name>
+            <stage>normal</stage>
+            <enable_skip>no</enable_skip>
+            <proposal_modules config:type="list">
+                <proposal_module>update</proposal_module>
+                <proposal_module>packages</proposal_module>
+                <proposal_module>backup</proposal_module>
+                <proposal_module>language</proposal_module>
+            </proposal_modules>
+        </proposal>
+
+        <proposal>
+            <label>Installation Settings</label>
+            <mode>update</mode>
+            <stage>initial</stage>
+            <name>initial</name>
+            <enable_skip>no</enable_skip>
+            <proposal_modules config:type="list">
+               <proposal_module>hwinfo</proposal_module>
+               <proposal_module>media</proposal_module>
+<!-- disabled due to bug 165832
+                <proposal_module>rootpart</proposal_module>
+-->
+                <proposal_module>update</proposal_module>
+                <proposal_module>packages</proposal_module>
+                <proposal_module>backup</proposal_module>
+                <proposal_module>language</proposal_module>
+                <proposal_module>keyboard</proposal_module>
+            </proposal_modules>
+        </proposal>
+
+        <proposal>
+            <label>Network Configuration</label>
+            <name>network</name>
+            <stage>continue,normal</stage>
+            <enable_skip>yes</enable_skip>
+            <proposal_modules config:type="list">
+                <proposal_module>
+                   <name>lan</name>
+                   <presentation_order>20</presentation_order>
+               </proposal_module>
+                <proposal_module>
+                   <name>general</name>
+                   <presentation_order>5</presentation_order>
+               </proposal_module>
+               <proposal_module>
+                   <name>dsl</name>
+                   <presentation_order>30</presentation_order>
+               </proposal_module>
+                <proposal_module>
+                   <name>isdn</name>
+                   <presentation_order>40</presentation_order>
+               </proposal_module>
+                <proposal_module>
+                   <name>modem</name>
+                   <presentation_order>50</presentation_order>
+               </proposal_module>
+                <proposal_module>
+                   <name>remote</name>
+                   <presentation_order>60</presentation_order>
+               </proposal_module>
+                <proposal_module>
+                   <name>firewall</name>
+                   <presentation_order>10</presentation_order>
+               </proposal_module>
+                <proposal_module>
+                   <name>proxy</name>
+                   <presentation_order>70</presentation_order>
+               </proposal_module>
+            </proposal_modules>
+        </proposal>
+
+        <proposal>
+            <label>Hardware Configuration</label>
+            <name>hardware</name>
+            <stage>continue</stage>
+            <enable_skip>yes</enable_skip>
+            <proposal_modules config:type="list">
+                <proposal_module>x11</proposal_module>
+                <proposal_module>printer</proposal_module>
+                <proposal_module>sound</proposal_module>
+                <proposal_module>tv</proposal_module>
+                <proposal_module>bluetooth</proposal_module>
+            </proposal_modules>
+        </proposal>
+    </proposals>
+
+    <!-- Stage: Initial, Mode: Installation -->
+    <workflows config:type="list">
+        <workflow>
+            <defaults>
+                <archs>all</archs>
+               <enable_back>yes</enable_back>
+               <enable_next>yes</enable_next>
+            </defaults>
+           <label>Preparation</label>
+            <mode>installation</mode>
+            <stage>initial</stage>
+            <modules  config:type="list">
+                <module>
+                    <name>language</name>
+                   <label>Language</label>
+                    <enable_back>no</enable_back>
+                    <enable_next>yes</enable_next>
+                    <arguments>
+                        <first_run>yes</first_run>
+                    </arguments>
+                    <retranslate config:type="boolean">true</retranslate>
+                </module>
+                <module>
+                   <label>Language</label>
+                    <name>checkmedia</name>
+                </module>
+                <module>
+                   <label>License Agreement</label>
+                    <name>license</name>
+                </module>
+               <module>
+                   <label>Disk Activation</label>
+                    <name>disks_activate</name>
+               </module>
+                <module>
+                   <label>System Analysis</label>
+                    <name>system_analysis</name>
+                </module>
+               <!-- Here, user selects whether to perform New Installation or Upgrade -->
+               <module>
+                   <label>Online Repositories</label>
+                   <name>productsources</name>
+                   <enable_back>yes</enable_back>
+               </module>
+               <module>
+                   <label>Add-On Products</label>
+                   <name>add-on</name>
+                   <enable_back>yes</enable_back>
+               </module>
+                <module>
+                   <label>Time Zone</label>
+                    <name>timezone</name>
+                    <arguments>
+                        <first_run>yes</first_run>
+                    </arguments>
+                   <enable_back>yes</enable_back>
+                </module>
+                <module>
+                   <label>Desktop Selection</label>
+                    <name>desktop</name>
+                </module>
+               <module>
+                   <heading>yes</heading>
+                   <label>Installation</label>
+               </module>
+                <module>
+                   <label>Installation Settings</label>
+                    <name>proposal</name>
+                    <proposal>initial</proposal>
+                </module>
+                <module>
+                   <label>Perform Installation</label>
+                    <name>do_resize</name>
+                    <update config:type="boolean">false</update>
+                    <archs>i386,x86_64,ia64</archs>
+                </module>
+                <module>
+                   <label>Perform Installation</label>
+                    <name>prepdisk</name>
+                </module>
+                <module>
+                   <label>Perform Installation</label>
+                    <name>kickoff</name>
+                </module>
+                <module>
+                   <label>Perform Installation</label>
+                    <name>rpmcopy</name>
+                   <enable_next>no</enable_next>
+                   <enable_back>no</enable_back>
+                </module>
+                <module>
+                   <label>Perform Installation</label>
+                    <name>finish</name>
+                   <enable_back>no</enable_back>
+                </module>
+            </modules>
+        </workflow>
+
+       <!-- Stage: Initial, Mode: Update -->
+        <workflow>
+            <defaults>
+                <archs>all</archs>
+               <enable_back>yes</enable_back>
+               <enable_next>yes</enable_next>
+            </defaults>
+           <label>Preparation</label>
+            <mode>update</mode>
+            <stage>initial</stage>
+            <modules  config:type="list">
+                <module>
+                    <name>language</name>
+                   <label>Language</label>
+                    <enable_back>no</enable_back>
+                    <arguments>
+                        <first_run>yes</first_run>
+                    </arguments>
+                    <retranslate config:type="boolean">true</retranslate>
+                </module>
+                <module>
+                   <label>Language</label>
+                    <name>checkmedia</name>
+                </module>
+                <module>
+                   <label>License Agreement</label>
+                    <name>license</name>
+                </module>
+               <module>
+                   <label>Disk Activation</label>
+                    <name>disks_activate</name>
+               </module>
+                <module>
+                   <label>System Analysis</label>
+                    <name>system_analysis</name>
+                </module>
+                <module>
+                   <label>System for Update</label>
+                    <name>update_partition</name>
+                </module>
+               <module>
+                   <name>upgrade_urls</name>
+               </module>
+               <module>
+                   <label>Online Repositories</label>
+                   <name>productsources</name>
+                   <enable_back>yes</enable_back>
+               </module>
+               <module>
+                   <label>Add-On Products</label>
+                   <name>add-on</name>
+                   <enable_back>yes</enable_back>
+               </module>
+               <module>
+                   <heading>yes</heading>
+                   <label>Update</label>
+               </module>
+                <module>
+                   <label>Update Settings</label>
+                    <name>proposal</name>
+                    <proposal>initial</proposal>
+                </module>
+                <module>
+                   <label>Perform Update</label>
+                    <name>do_resize</name>
+                    <update config:type="boolean">false</update>
+                    <archs>i386,x86_64,ia64</archs>
+                </module>
+                <module>
+                   <label>Perform Update</label>
+                    <name>prepdisk</name>
+                </module>
+                <module>
+                   <label>Perform Update</label>
+                    <name>kickoff</name>
+                </module>
+                <module>
+                   <label>Perform Update</label>
+                    <name>rpmcopy</name>
+                   <enable_back>no</enable_back>
+                   <enable_next>no</enable_next>
+                </module>
+                <module>
+                   <label>Perform Update</label>
+                    <name>finish</name>
+                   <enable_back>no</enable_back>
+                </module>
+            </modules>
+        </workflow>
+        <workflow>
+            <defaults>
+                <archs>all</archs>
+            </defaults>
+            <stage>initial</stage>
+           <label>Preparation</label>
+            <mode>repair</mode>
+            <modules  config:type="list">
+                <module>
+                   <label>System Information</label>
+                    <name>info</name>
+                </module>
+                <module>
+                   <label>Perform Repair</label>
+                    <name>repair</name>
+                </module>
+            </modules>
+        </workflow>
+
+       <!-- Stage: Initial, Mode: ScreenShot -->
+        <workflow>
+            <defaults>
+                <archs>all</archs>
+               <enable_back>yes</enable_back>
+               <enable_next>yes</enable_next>
+            </defaults>
+            <stage>initial</stage>
+           <label>Base Installation</label>
+            <mode>screen_shot</mode>
+            <modules  config:type="list">
+                <module>
+                    <enable_back>no</enable_back>
+                    <enable_next>yes</enable_next>
+                   <label>Language</label>
+                    <name>language</name>
+                    <retranslate config:type="boolean">true</retranslate>
+                </module>
+                <module>
+                   <label>Installation Settings</label>
+                    <name>proposal</name>
+                    <proposal>initial</proposal>
+                </module>
+                <module>
+                   <label>Perform Installation</label>
+                    <name>do_resize</name>
+                    <update config:type="boolean">false</update>
+                    <archs>i386,x86_64,ia64</archs>
+                </module>
+                <module>
+                   <label>Perform Installation</label>
+                    <name>prepdisk</name>
+                </module>
+                <module>
+                   <label>Perform Installation</label>
+                    <name>kickoff</name>
+                </module>
+                <module>
+                   <label>Perform Installation</label>
+                    <name>rpmcopy</name>
+                   <enable_back>no</enable_back>
+                   <enable_next>yes</enable_next>
+                </module>
+            </modules>
+        </workflow>
+
+       <!-- Stage: Initial, Mode: Demo -->
+        <workflow>
+            <defaults>
+                <archs>all</archs>
+               <enable_back>yes</enable_back>
+               <enable_next>yes</enable_next>
+            </defaults>
+            <stage>initial</stage>
+           <label>Base Installation</label>
+            <mode>demo</mode>
+            <modules  config:type="list">
+                <module>
+                    <enable_back>no</enable_back>
+                   <label>Language</label>
+                    <name>language</name>
+                    <retranslate config:type="boolean">true</retranslate>
+                </module>
+                <module>
+                   <label>Installation Settings</label>
+                    <name>proposal</name>
+                    <proposal>initial</proposal>
+                </module>
+                <module>
+                   <label>Perform Installation</label>
+                    <name>do_resize</name>
+                    <update config:type="boolean">false</update>
+                    <archs>i386,x86_64,ia64</archs>
+                </module>
+                <module>
+                   <label>Perform Installation</label>
+                   <name>prepdisk</name>
+                </module>
+                <module>
+                   <label>Perform Installation</label>
+                    <name>kickoff</name>
+                </module>
+                <module>
+                   <label>Perform Installation</label>
+                    <name>rpmcopy</name>
+                   <enable_back>no</enable_back>
+                   <enable_next>no</enable_next>
+                </module>
+            </modules>
+        </workflow>
+
+       <!-- Stage: Continue, Mode: Update -->
+        <workflow>
+            <stage>continue</stage>
+            <mode>update</mode>
+            <defaults>
+                <archs>all</archs>
+                <enable_back>yes</enable_back>
+                <enable_next>yes</enable_next>
+            </defaults>
+            <modules config:type="list">
+                <module>
+                   <label>Perform Update</label>
+                    <name>rpmcopy</name>
+                   <enable_back>no</enable_back>
+                   <enable_next>no</enable_next>
+                </module>
+               <module>
+                   <heading>yes</heading>
+                   <label>Configuration</label>
+               </module>
+                <module>
+                   <label>Network</label>
+                    <name>ask_net_test</name>
+                   <enable_back>no</enable_back>
+                </module>
+                <module>
+                   <label>Network</label>
+                    <name>do_net_test</name>
+                </module>
+                <module>
+                    <label>Registration</label>
+                    <name>addon_update_sources</name>
+                </module>
+                <module>
+                    <label>Registration</label>
+                    <name>suse_register</name>
+                </module>
+                <module>
+                    <label>Online Update</label>
+                    <name>ask_online_update</name>
+                </module>
+                <module>
+                   <label>Online Update</label>
+                    <name>you</name>
+                </module>
+               <module>
+                   <label>Online Update</label>
+                   <name>restore_settings</name>
+               </module>
+                <module>
+                    <name>suseconfig</name>
+                   <enable_back>no</enable_back>
+                   <enable_next>no</enable_next>
+                </module>
+                <module>
+                   <label>Release Notes</label>
+                    <name>release_notes</name>
+                </module>
+                <module>
+                    <name>congratulate</name>
+                </module>
+            </modules>
+        </workflow>
+
+       <!-- Stage: Continue, Mode: Installation -->
+        <workflow>
+            <stage>continue</stage>
+            <mode>installation</mode>
+            <defaults>
+                <enable_back>yes</enable_back>
+                <enable_next>yes</enable_next>
+                <archs>all</archs>
+            </defaults>
+            <modules  config:type="list">
+               <module>
+                   <heading>yes</heading>
+                   <label>Configuration</label>
+               </module>
+                <module>
+                   <label>root Password</label>
+                    <name>root</name>
+                    <enable_back>no</enable_back>
+                </module>
+                <module>
+                   <label>Check Installation</label>
+                    <name>initialization</name>
+                    <enable_back>no</enable_back>
+                    <enable_next>no</enable_next>
+                </module>
+                <module>
+                   <label>Check Installation</label>
+                    <name>netprobe</name>
+                    <enable_back>no</enable_back>
+                    <enable_next>no</enable_next>
+                </module>
+                <module>
+                   <label>Check Installation</label>
+                    <name>rpmcopy</name>
+                    <enable_back>no</enable_back>
+                    <enable_next>no</enable_next>
+                </module>
+                <module>
+                   <label>Hostname</label>
+                    <name>hostname</name>
+                </module>
+                <module>
+                   <label>Network</label>
+                    <name>proposal</name>
+                    <proposal>network</proposal>
+                </module>
+               <module>
+                   <label>Network</label>
+                    <name>fam</name>
+               </module>
+                <module>
+                   <label>Network</label>
+                    <name>ask_net_test</name>
+                </module>
+                <module>
+                   <label>Network</label>
+                    <name>do_net_test</name>
+                </module>
+                <module>
+                    <label>Registration</label>
+                    <name>addon_update_sources</name>
+                </module>
+                <module>
+                    <label>Registration</label>
+                    <name>suse_register</name>
+                </module>
+                <module>
+                    <label>Online Update</label>
+                    <name>ask_online_update</name>
+                </module>
+                <module>
+                   <label>Online Update</label>
+                    <name>you</name>
+                </module>
+                <module>
+                    <label>Online Update</label>
+                    <name>extrasources</name>
+                </module>
+               <module>
+                   <label>Online Update</label>
+                   <name>restore_settings</name>
+               </module>
+                <module>
+                   <label>Users</label>
+                    <name>auth</name>
+                </module>
+                <module>
+                   <label>Users</label>
+                    <name>user</name>
+                </module>
+                <module>
+                    <name>suseconfig</name>
+                    <enable_back>no</enable_back>
+                    <enable_next>no</enable_next>
+                </module>
+                <module>
+                   <label>Release Notes</label>
+                    <name>release_notes</name>
+                </module>
+                <module>
+                   <label>Hardware Configuration</label>
+                    <name>proposal</name>
+                    <proposal>hardware</proposal>
+                </module>
+                <module>
+                   <label>Hardware Configuration</label>
+                   <name>save_hardware_status</name>
+                </module>
+                <module>
+                    <name>congratulate</name>
+                </module>
+            </modules>
+        </workflow>
+
+       <!-- Stage: Initial, Mode: AutoInstallation -->
+        <workflow>
+            <stage>initial</stage>
+            <label>Base Installation</label>
+            <mode>autoinstallation</mode>
+            <defaults>
+                <archs>all</archs>
+                <enable_back>no</enable_back>
+                <enable_next>no</enable_next>
+            </defaults>
+            <modules  config:type="list">
+                <module>
+                   <label>AutoYaST Settings</label>
+                    <name>autoinit</name>
+                    <archs>all</archs>
+                    <retranslate config:type="boolean">true</retranslate>
+                </module>
+                <module>
+                   <label>AutoYaST Settings</label>
+                    <name>autosetup</name>
+                </module>
+                <module>
+                   <label>AutoYaST Settings</label>
+                    <name>proposal</name>
+                    <proposal>initial</proposal>
+                    <enable_back>no</enable_back>
+                    <enable_next>yes</enable_next>
+                </module>
+                <module>
+                   <label>Perform Installation</label>
+                    <name>prepdisk</name>
+                </module>
+                <module>
+                   <label>Perform Installation</label>
+                    <name>kickoff</name>
+                </module>
+                <module>
+                   <label>Perform Installation</label>
+                    <name>autoimage</name>
+                </module>
+                <module>
+                   <label>Perform Installation</label>
+                    <name>rpmcopy</name>
+                </module>
+                <module>
+                   <label>Perform Installation</label>
+                    <name>finish</name>
+                </module>
+            </modules>
+        </workflow>
+
+       <!-- Stage: Continue, Mode: AutoInstallation -->
+        <workflow>
+            <defaults>
+                <archs>all</archs>
+                <enable_back>no</enable_back>
+                <enable_next>no</enable_next>
+            </defaults>
+            <stage>continue</stage>
+            <mode>autoinstallation</mode>
+            <modules  config:type="list">
+                <module>
+                   <label>Perform Installation</label>
+                    <name>netprobe</name>
+                </module>
+                <module>
+                   <label>Perform Installation</label>
+                    <name>autopost</name>
+                </module>
+                <module>
+                   <label>Perform Installation</label>
+                    <name>rpmcopy</name>
+                </module>
+               <module>
+                   <heading>yes</heading>
+                   <label>Configuration</label>
+               </module>
+                <module>
+                   <label>System Configuration</label>
+                    <name>autoconfigure</name>
+                </module>
+                <module>
+                    <name>suseconfig</name>
+                </module>
+            </modules>
+        </workflow>
+    </workflows>
+</productDefines>
diff --git a/tests/repo/susetags/data/stable-x86-subset-gz/installation.xml b/tests/repo/susetags/data/stable-x86-subset-gz/installation.xml
new file mode 100644 (file)
index 0000000..f71e6b7
--- /dev/null
@@ -0,0 +1,109 @@
+<?xml version="1.0"?>
+<!DOCTYPE productDefines SYSTEM "/usr/share/YaST2/control/control.dtd">
+<productDefines xmlns="http://www.suse.com/1.0/yast2ns" xmlns:config="http://www.suse.com/1.0/configns">
+    <textdomain>control-ISSLE</textdomain>
+    <globals>
+        <enable_firewall config:type="boolean">false</enable_firewall>
+    </globals>
+    <software>
+        <selection_type config:type="symbol">auto</selection_type>
+    </software>
+    <network>
+        <force_static_ip config:type="boolean">true</force_static_ip>
+    </network>
+    <texts>
+        <congratulate>
+            <label>
+&lt;p&gt;
+You have successfully installed the Integrated Stack for SUSE Linux Enterprise.
+&lt;/p&gt;
+&lt;p&gt;
+The services you just installed might require additional
+setup before use. See the Integrated Stack for SUSE Linux Enterprise
+Installation guide for details.
+&lt;/p&gt;
+            </label>
+        </congratulate>
+    </texts>
+    <proposals config:type="list">
+        <proposal>
+            <label>ISSLE Configuration</label>
+            <name>product</name>
+            <stage>continue,normal</stage>
+            <mode>installation</mode>
+            <proposal_modules config:type="list">
+                <proposal_module>yast2-issleconfig</proposal_module>
+            </proposal_modules>
+        </proposal>
+    </proposals>
+    <workflows config:type="list">
+        <workflow>
+            <defaults>
+                <enable_back>no</enable_back>
+                <enable_next>no</enable_next>
+            </defaults>
+            <stage>normal</stage>
+            <mode>installation,normal</mode>
+            <modules config:type="list">
+                <module>
+                    <label>ISSLE Software Selection</label>
+                    <name>sw_single</name>
+                    <enable_back>yes</enable_back>
+                    <enable_next>yes</enable_next>
+                </module>
+                <module>
+                    <label>ISSLE Configuration</label>
+                    <name>issleconfig</name>
+                    <enable_back>yes</enable_back>
+                    <enable_next>yes</enable_next>
+                </module>
+                <module>
+                    <label>Release Notes</label>
+                    <name>inst_release_notes</name>
+                    <enable_back>yes</enable_back>
+                    <enable_next>yes</enable_next>
+                </module>
+                <module>
+                    <name>inst_congratulate</name>
+                    <enable_back>no</enable_back>
+                    <enable_next>yes</enable_next>
+                </module>
+            </modules>
+        </workflow>
+    </workflows>
+    <update>
+        <workflows config:type="list">
+            <workflow>
+                <defaults>
+                    <enable_back>no</enable_back>
+                    <enable_next>no</enable_next>
+                </defaults>
+                <stage>continue,normal</stage>
+                <mode>installation,normal,update</mode>
+                <remove_modules config:type="list">
+                    <remove_module>hostname</remove_module>
+                    <remove_module>root</remove_module>
+                    <remove_module>ca_mgm</remove_module>
+                </remove_modules>
+                <append_modules config:type="list">
+                    <module>
+                        <name>yast2-issleconfig</name>
+                    </module>
+                </append_modules>
+                <insert_modules config:type="list">
+                    <insert_module>
+                        <before>suseconfig</before>
+                        <modules config:type="list">
+                            <module>
+                                <label>ISSLE Configuration</label>
+                                <name>issleconfig</name>
+                                <enable_back>yes</enable_back>
+                                <enable_next>yes</enable_next>
+                            </module>
+                        </modules>
+                    </insert_module>
+                </insert_modules>
+            </workflow>
+        </workflows>
+    </update>
+</productDefines>
diff --git a/tests/repo/susetags/data/stable-x86-subset-gz/license.tar.gz b/tests/repo/susetags/data/stable-x86-subset-gz/license.tar.gz
new file mode 100644 (file)
index 0000000..ecd631d
Binary files /dev/null and b/tests/repo/susetags/data/stable-x86-subset-gz/license.tar.gz differ
index 1bea044..fb211e2 100644 (file)
@@ -35,4 +35,8 @@ KEY SHA1 7025932e6866932f489421990075f3ed312023ea  gpg-pubkey-3d25d3d9-36e12d04.
 KEY SHA1 fd6146cac8c1473c5b52548936de773d5bbd5610  gpg-pubkey-7e2e3b05-44748aba.asc
 KEY SHA1 cd7adceba1fe5d7ba27b5749718743192d82f802  gpg-pubkey-9c800aca-40d8063e.asc
 KEY SHA1 7535d79e31ef7b4232e5593bb49d9142978b2e95  gpg-pubkey-a1912208-446a0899.asc
+HASH SHA1 172b3cf77268f46e783e78a653902e563cb91e9a  license.tar.gz
+HASH SHA1 4aa8ded6302e6ec85690a51af6044dffe9b21923  control.xml
+HASH SHA1 82f1f17ce74f0cd3fca4813c178196b317fc952d  installation.xml
+HASH SHA1 68d9b548d61e31e82e8834690e884afa27751287  media.1/info.txt
 
index 6d0e180..e4b185a 100644 (file)
@@ -1,29 +1,32 @@
 -----BEGIN PGP MESSAGE-----
 Version: GnuPG v1.4.6 (GNU/Linux)
 
-owGdVTuIJFUUHXeVhYJFNhAMn2AguN39/p9F0Zrpmg+202tX9TgbDe9XM+3MVDVd
-1cyOGhhqIGhiogxGBoogiGwqJoJgbqBmZgaCiaGvuqfd7lVZWGhe0XXvOe/dc05V
-fXD96tqVGx///t03v3wl9h778tq+uWbLovZFvXnxVHx70O8ONzJQjn2RDtOklWtb
-l5PzaC8ZpDv9XYBgm0TdnTRbdKbT0NUbFdO7rTSL13tJa1/yWccSBLcpXqLa7fYH
-oKEHvZ3d4T64PSnd1NYV2Do12zfB7tRPCuMnhzfBlp+c6uI8GiS93X6WpMNBDxzV
-9fhWp3N2dtauppVv2/K0M/EnRVn7qjMikncWp+9sxhtZf3CnKXtd+daspz0Zn0bx
-YGO7fVfyA07B5WXEJQcj1iy0WQITKEo9sUfz7nn9YU3sIXX6/yXywN1ushkPe9l6
-HIRqKIMKrw13Bkl6357LwcCLM2PAWNd10O6WCfeq86r2p1HwaW+nGzDjuci3Ftg5
-pnEm6q+n/V6SLTU1DQdzc/6Fe2EOjEJ5axinwFbAaeA88EX4HWytA1+BfATyCTia
-glEN3tDg+BQUJ6AwYHwCxvXB+gC8eXSwsdus2etRut0fZL14PemBS8ei+b9/9ry8
-PY/frNYOG/53OdnPBnEISrpIiivPipNSu3bTP4tMOTnsuFFVT0ZmWo/KotMMFFIy
-LjtlVXWi/u0sJDfuPTJLURathumRwM6b6WEn2J9uDLo7A9D0dypfT8ehVNlJ1I2z
-eFGINnvxVgqmY6drH6RpPNlKGiOGafRqksUg3Y4RsETk1GiKMeMMSkoJJwIhgaAl
-ElPNpFUQOQfAsfOtRseWQLM0t0OologkzJUxKFdeMW+sN7lTBuOcEJkLoTyG1DoG
-DQhhtMf60FdLYGUJRU4RhMMTAHNIDISIS8QQsRoKQx20WgpyH9zuDpfwmspcMyh0
-bm3YW3DDqApAoqhviCUinhuIlvC+WMILzhSEOWv2C405VTycFXLj8pyyXELmOVJK
-LOOXz58bwzV2XAkeBLVKc+MNw1YTlgumqPbE5znyYPEkVtEryZ1LByBhFHJlEZRI
-cUFdmBRyibFHjpowORJKeAXA4fiwNZ6aY3/egi43BEnZosg7hZVp68re58SeSM8g
-scFOyxyE2DhLkGDMShxgkFKnHEYrnAQKTxyjLUpxsJy5VU4BMVME+/Ci4+GaU6ko
-DqJAKFhOvAvmQUy8XuV0mDniVItwj7CDdJUzdxxRbrWVFlFBLAuisUBMuPNChMMY
-4xhHcIVT+DCegSycU1CpjV7ltE5oF/KnUe6ZE0ZjYZigSiApKEEKO4mDo3iFU1kJ
-oba6RaGTkBP/wOyMBCrlCfJ5SCMOMrAghjFUOYUoVkIaHIK/wqmRQhjD4BHlGkql
-ZpzRuy9dfWKt+aYuPrY3rqT31i6ezd52X3z0w/H3z3327c8/vfPbry//9cfaxTPJ
-54/fe/7sz/feuv70h+//+PWTn3x6528=
-=KMVc
+owGdVjuPG1UU3iRCIEsUaaCguYIiEort+35EvLxr70Mx6+CxQ6BZ3eeuWXtsecba
+3TR0CLr0FKmJhKBBoqZBlCAigQQVLRI/AAlxZr1LvAEUKZI9V55zvu/e833njOfe
+81fWLl/99Pdvvvr1S3X70ufPRfesn+ZlzMvN7+69cavfaw83Bmg6i3k2zDr1ZH05
+nZ/Ubnf62U5vFxHcYLX2TjY4z8wWkNUd5YvjejZorXc79TtanmasQGiD0xWq3Xav
+jyp61N3ZHd5Bt+bTsPBlgbYmbvs62l3Eee7ifP862orzic1Pav1Od7c36GTDfhcd
+lOXsRrN5dHTUKBZFbPjppDmP43xaxqI5Ylo2z0/f3GxtDHr996pwtEWsn+Y05rNJ
+rdXf2G4ca7knOTpbRlJLNBLVhVcXYEL51M79wTJ7GX9SknhCnP9/iD12t93ZbA27
+g/UWCFVRggrvDHf6neyRPWeFoddPjUEzW5ag3Q0H94qTooyTGvh0e6cNmNlS5Bvn
+2CWmcqbWW8963c5gJalK2Fua8y/ca0tgDcJbw1aGfIGCRSGimMNnb2sdxQKlEUpz
+dLBAoxJ9YNHhBOVjlDs0G6NZubfeR3cP9jZ2q+vg3Vq23esPuq31ThedOVZb/vpn
+z7Pby/Y7jTVgw/8Od+4M+i1olOy8U8L0KB9PbWhU+actM53vN8OoKOcjtyhH07xZ
+FQRdMps2p0XRrPVuDaBzW92nZsmneb1ieipwiG6x3wT7s41+e6ePqvxmEcvFDEKF
+n9farUHrPFDb7La2MrSYBVtGkKbyZKtTGTHMam93Bi2UbbcI8kwl7iynVEiBNedM
+MkWIItgzTbkV2htMQkDoMMR6pWNdkdNubkBTrRBpnIxzJJloRHQ+uhSMozQxppNS
+JlLMfRDYIWhGf2j3Y7ECNp5xEgwjFCYAJ8wcxkRqIgjzFivHA/ZWK/YI3GgPV/CW
+62QFVjZ5D3sr6QQ3AGSGx4pYExalw2QFH/MVvJLCYJxEtR8kJm4knBVLF1LiImks
+oiTGqFX86vmTc9LSII2SIKg3VrroBPWWiaSE4TaymBKJ6HwSi9rNzntnDmAmOJbG
+E6yJkYoHqBRLTWkkgTuonCijokFof7Zfny3cYTyp45AcI1rXOYnBUOMatvCPOGlk
+OgrMPNjpRcCYuuAZUUJ4TQGGOQ8mUHKBk2EVWRC8zjkFy0W4yKkwFYbRCA86CWvi
+2nAKomCsRGIxgHmYsmgvcgYqAgumzmQkNGB+kTMFSbj01mtPuGJegGgCiJkMUSk4
+jHNBSIIvcKoI5Tks4JyKa+vsRU4flA3Qf5akKIJylionFDeKaMUZMTRoCo7SC5zG
+a4ytt3WOg8aSxcdqFwyoTGQkJuhGCjIIEMM5boIhnBqlHYXGv8BpiSGUYvCIS4u1
+Maec261se0lKFHXMw3BQqROXUWkGXysFMxj4JfPOkGhA0PHIw9MhNko7b+zfXaHg
+1uoQg2QAkNFrIQ22gtgkK4dTijCCUDHMTfVfPp+OG8eT8QoelCCJKJgYnrAPLHmY
+JJgBoqpWhA5TyRtBYfpHeVHa8dhWj6THSKSGSQfXwMtKIE2j1ozDSWDlNoH+ShCq
+YXgmMYxsgzRHeZo2yuOyVvv4zSvPrFUvGOdvHlcv7369dv/mg2voz8/ev/Ti7R+u
+vfyFunb8x88frd133z544eFPv3y49v3ll1595bcf//rkrYd/Aw==
+=/aaM
 -----END PGP MESSAGE-----
diff --git a/tests/repo/susetags/data/stable-x86-subset/control.xml b/tests/repo/susetags/data/stable-x86-subset/control.xml
new file mode 100644 (file)
index 0000000..096763e
--- /dev/null
@@ -0,0 +1,793 @@
+<?xml version="1.0"?>
+<productDefines  xmlns="http://www.suse.com/1.0/yast2ns"
+    xmlns:config="http://www.suse.com/1.0/configns">
+
+<!--
+Work around for the text domain
+textdomain="control"
+-->
+
+    <textdomain>control</textdomain>
+    <globals>
+       <additional_kernel_parameters></additional_kernel_parameters>
+        <enable_autologin config:type="boolean">true</enable_autologin>
+       <enable_firewall config:type="boolean">true</enable_firewall>
+       <firewall_enable_ssh config:type="boolean">false</firewall_enable_ssh>
+       <fam_local_only>never</fam_local_only>
+        <incomplete_translation_treshold>95</incomplete_translation_treshold>
+        <inform_about_suboptimal_distribution config:type="boolean">true</inform_about_suboptimal_distribution>
+        <skip_language_dialog config:type="boolean">true</skip_language_dialog>
+        <ui_mode>simple</ui_mode>
+        <enable_clone config:type="boolean">false</enable_clone>
+        <enable_register_hwdata   config:type="boolean">true</enable_register_hwdata>
+        <enable_register_optional config:type="boolean">true</enable_register_optional>
+        <display_register_forcereg config:type="boolean">true</display_register_forcereg>
+        <disable_register_w3m config:type="boolean">true</disable_register_w3m>
+        <register_monthly config:type="boolean">false</register_monthly>
+       <manual_online_update config:type="boolean">true</manual_online_update>
+       <root_password_ca_check config:type="boolean">false</root_password_ca_check>
+
+       <!-- FATE #301937, Save /root content from the installation system to the installed system -->
+       <save_instsys_content config:type="list">
+           <save_instsys_item>
+               <instsys_directory>/root/</instsys_directory>
+               <system_directory>/root/inst-sys/</system_directory>
+           </save_instsys_item>
+       </save_instsys_content>
+    </globals>
+
+    <software>
+        <delete_old_packages config:type="boolean">false</delete_old_packages>
+        <selection_type config:type="symbol">auto</selection_type>
+
+       <!-- FATE #300898, List of external sources accesible during the installation time -->
+       <external_sources_link>http://download.opensuse.org/YaST/Repos/openSUSE_103_Servers.xml</external_sources_link>
+    </software>
+
+    <partitioning>
+        <evms_config config:type="boolean">false</evms_config>
+        <try_separate_home config:type="boolean">true</try_separate_home>
+        <limit_try_home>7G</limit_try_home>
+        <root_space_percent>40</root_space_percent>
+        <root_base_size>5G</root_base_size>
+        <root_max_size>20G</root_max_size>
+       <proposal_lvm>false</proposal_lvm>
+       <proposal_evms>false</proposal_evms>
+       <vm_desired_size>15G</vm_desired_size>
+       <vm_home_max_size>25G</vm_home_max_size>
+       <boot_evms>false</boot_evms>
+    </partitioning>
+
+    <network>
+        <force_static_ip config:type="boolean">false</force_static_ip>
+        <network_manager>laptop</network_manager>
+       <startmode>ifplugd</startmode>
+    </network>
+
+    <clone_modules config:type="list">
+       <clone_module>language</clone_module>
+       <clone_module>keyboard</clone_module>
+       <clone_module>timezone</clone_module>
+       <clone_module>users</clone_module>
+       <clone_module>networking</clone_module>
+       <clone_module>firewall</clone_module>
+       <clone_module>host</clone_module>
+       <clone_module>routing</clone_module>
+       <clone_module>proxy</clone_module>
+       <clone_module>runlevel</clone_module>
+       <clone_module>x11</clone_module>
+       <clone_module>nis</clone_module>
+       <clone_module>ldap</clone_module>
+       <clone_module>printer</clone_module>
+       <clone_module>add-on</clone_module>
+    </clone_modules>
+
+    <texts>
+      <congratulate>
+       <label>
+&lt;p&gt;&lt;b&gt;Congratulations!&lt;/b&gt;&lt;/p&gt;
+&lt;p&gt;The installation of openSUSE on your machine is complete.
+After clicking &lt;b&gt;Finish&lt;/b&gt;, you can log in to the system.&lt;/p&gt;
+&lt;p&gt;Visit us at %1.&lt;/p&gt;
+&lt;p&gt;Have a lot of fun!&lt;br&gt;Your openSUSE Development Team&lt;/p&gt;
+       </label>
+      </congratulate>
+    </texts>
+
+    <proposals config:type="list">
+        <proposal>
+            <label>Installation Settings</label>
+            <mode>installation,demo,autoinstallation</mode>
+            <stage>initial</stage>
+            <name>initial</name>
+            <enable_skip>no</enable_skip>
+            <proposal_modules config:type="list">
+                <proposal_module>hwinfo</proposal_module>
+                <proposal_module>keyboard</proposal_module>
+                <proposal_module>mouse</proposal_module>
+                <proposal_module>partitions</proposal_module>
+                <proposal_module>software</proposal_module>
+                <proposal_module>bootloader</proposal_module>
+                <proposal_module>timezone</proposal_module>
+                <proposal_module>language</proposal_module>
+                <proposal_module>runlevel</proposal_module>
+            </proposal_modules>
+            <proposal_tabs config:type="list">
+                <proposal_tab>
+                    <label>Overview</label>
+                    <proposal_modules config:type="list">
+                        <proposal_module>partitions</proposal_module>
+                        <proposal_module>software_simple</proposal_module>
+                       <proposal_module>country_simple</proposal_module>
+                    </proposal_modules>
+                </proposal_tab>
+                <proposal_tab>
+                    <label>Expert</label>
+                    <proposal_modules config:type="list">
+                        <proposal_module>hwinfo</proposal_module>
+                        <proposal_module>keyboard</proposal_module>
+                        <proposal_module>mouse</proposal_module>
+                        <proposal_module>partitions</proposal_module>
+                        <proposal_module>software</proposal_module>
+                        <proposal_module>bootloader</proposal_module>
+                        <proposal_module>timezone</proposal_module>
+                        <proposal_module>language</proposal_module>
+                        <proposal_module>runlevel</proposal_module>
+                    </proposal_modules>
+                </proposal_tab>
+            </proposal_tabs>
+        </proposal>
+
+        <proposal>
+            <label>Update Settings</label>
+            <mode>update</mode>
+            <name>initial</name>
+            <stage>normal</stage>
+            <enable_skip>no</enable_skip>
+            <proposal_modules config:type="list">
+                <proposal_module>update</proposal_module>
+                <proposal_module>packages</proposal_module>
+                <proposal_module>backup</proposal_module>
+                <proposal_module>language</proposal_module>
+            </proposal_modules>
+        </proposal>
+
+        <proposal>
+            <label>Installation Settings</label>
+            <mode>update</mode>
+            <stage>initial</stage>
+            <name>initial</name>
+            <enable_skip>no</enable_skip>
+            <proposal_modules config:type="list">
+               <proposal_module>hwinfo</proposal_module>
+               <proposal_module>media</proposal_module>
+<!-- disabled due to bug 165832
+                <proposal_module>rootpart</proposal_module>
+-->
+                <proposal_module>update</proposal_module>
+                <proposal_module>packages</proposal_module>
+                <proposal_module>backup</proposal_module>
+                <proposal_module>language</proposal_module>
+                <proposal_module>keyboard</proposal_module>
+            </proposal_modules>
+        </proposal>
+
+        <proposal>
+            <label>Network Configuration</label>
+            <name>network</name>
+            <stage>continue,normal</stage>
+            <enable_skip>yes</enable_skip>
+            <proposal_modules config:type="list">
+                <proposal_module>
+                   <name>lan</name>
+                   <presentation_order>20</presentation_order>
+               </proposal_module>
+                <proposal_module>
+                   <name>general</name>
+                   <presentation_order>5</presentation_order>
+               </proposal_module>
+               <proposal_module>
+                   <name>dsl</name>
+                   <presentation_order>30</presentation_order>
+               </proposal_module>
+                <proposal_module>
+                   <name>isdn</name>
+                   <presentation_order>40</presentation_order>
+               </proposal_module>
+                <proposal_module>
+                   <name>modem</name>
+                   <presentation_order>50</presentation_order>
+               </proposal_module>
+                <proposal_module>
+                   <name>remote</name>
+                   <presentation_order>60</presentation_order>
+               </proposal_module>
+                <proposal_module>
+                   <name>firewall</name>
+                   <presentation_order>10</presentation_order>
+               </proposal_module>
+                <proposal_module>
+                   <name>proxy</name>
+                   <presentation_order>70</presentation_order>
+               </proposal_module>
+            </proposal_modules>
+        </proposal>
+
+        <proposal>
+            <label>Hardware Configuration</label>
+            <name>hardware</name>
+            <stage>continue</stage>
+            <enable_skip>yes</enable_skip>
+            <proposal_modules config:type="list">
+                <proposal_module>x11</proposal_module>
+                <proposal_module>printer</proposal_module>
+                <proposal_module>sound</proposal_module>
+                <proposal_module>tv</proposal_module>
+                <proposal_module>bluetooth</proposal_module>
+            </proposal_modules>
+        </proposal>
+    </proposals>
+
+    <!-- Stage: Initial, Mode: Installation -->
+    <workflows config:type="list">
+        <workflow>
+            <defaults>
+                <archs>all</archs>
+               <enable_back>yes</enable_back>
+               <enable_next>yes</enable_next>
+            </defaults>
+           <label>Preparation</label>
+            <mode>installation</mode>
+            <stage>initial</stage>
+            <modules  config:type="list">
+                <module>
+                    <name>language</name>
+                   <label>Language</label>
+                    <enable_back>no</enable_back>
+                    <enable_next>yes</enable_next>
+                    <arguments>
+                        <first_run>yes</first_run>
+                    </arguments>
+                    <retranslate config:type="boolean">true</retranslate>
+                </module>
+                <module>
+                   <label>Language</label>
+                    <name>checkmedia</name>
+                </module>
+                <module>
+                   <label>License Agreement</label>
+                    <name>license</name>
+                </module>
+               <module>
+                   <label>Disk Activation</label>
+                    <name>disks_activate</name>
+               </module>
+                <module>
+                   <label>System Analysis</label>
+                    <name>system_analysis</name>
+                </module>
+               <!-- Here, user selects whether to perform New Installation or Upgrade -->
+               <module>
+                   <label>Online Repositories</label>
+                   <name>productsources</name>
+                   <enable_back>yes</enable_back>
+               </module>
+               <module>
+                   <label>Add-On Products</label>
+                   <name>add-on</name>
+                   <enable_back>yes</enable_back>
+               </module>
+                <module>
+                   <label>Time Zone</label>
+                    <name>timezone</name>
+                    <arguments>
+                        <first_run>yes</first_run>
+                    </arguments>
+                   <enable_back>yes</enable_back>
+                </module>
+                <module>
+                   <label>Desktop Selection</label>
+                    <name>desktop</name>
+                </module>
+               <module>
+                   <heading>yes</heading>
+                   <label>Installation</label>
+               </module>
+                <module>
+                   <label>Installation Settings</label>
+                    <name>proposal</name>
+                    <proposal>initial</proposal>
+                </module>
+                <module>
+                   <label>Perform Installation</label>
+                    <name>do_resize</name>
+                    <update config:type="boolean">false</update>
+                    <archs>i386,x86_64,ia64</archs>
+                </module>
+                <module>
+                   <label>Perform Installation</label>
+                    <name>prepdisk</name>
+                </module>
+                <module>
+                   <label>Perform Installation</label>
+                    <name>kickoff</name>
+                </module>
+                <module>
+                   <label>Perform Installation</label>
+                    <name>rpmcopy</name>
+                   <enable_next>no</enable_next>
+                   <enable_back>no</enable_back>
+                </module>
+                <module>
+                   <label>Perform Installation</label>
+                    <name>finish</name>
+                   <enable_back>no</enable_back>
+                </module>
+            </modules>
+        </workflow>
+
+       <!-- Stage: Initial, Mode: Update -->
+        <workflow>
+            <defaults>
+                <archs>all</archs>
+               <enable_back>yes</enable_back>
+               <enable_next>yes</enable_next>
+            </defaults>
+           <label>Preparation</label>
+            <mode>update</mode>
+            <stage>initial</stage>
+            <modules  config:type="list">
+                <module>
+                    <name>language</name>
+                   <label>Language</label>
+                    <enable_back>no</enable_back>
+                    <arguments>
+                        <first_run>yes</first_run>
+                    </arguments>
+                    <retranslate config:type="boolean">true</retranslate>
+                </module>
+                <module>
+                   <label>Language</label>
+                    <name>checkmedia</name>
+                </module>
+                <module>
+                   <label>License Agreement</label>
+                    <name>license</name>
+                </module>
+               <module>
+                   <label>Disk Activation</label>
+                    <name>disks_activate</name>
+               </module>
+                <module>
+                   <label>System Analysis</label>
+                    <name>system_analysis</name>
+                </module>
+                <module>
+                   <label>System for Update</label>
+                    <name>update_partition</name>
+                </module>
+               <module>
+                   <name>upgrade_urls</name>
+               </module>
+               <module>
+                   <label>Online Repositories</label>
+                   <name>productsources</name>
+                   <enable_back>yes</enable_back>
+               </module>
+               <module>
+                   <label>Add-On Products</label>
+                   <name>add-on</name>
+                   <enable_back>yes</enable_back>
+               </module>
+               <module>
+                   <heading>yes</heading>
+                   <label>Update</label>
+               </module>
+                <module>
+                   <label>Update Settings</label>
+                    <name>proposal</name>
+                    <proposal>initial</proposal>
+                </module>
+                <module>
+                   <label>Perform Update</label>
+                    <name>do_resize</name>
+                    <update config:type="boolean">false</update>
+                    <archs>i386,x86_64,ia64</archs>
+                </module>
+                <module>
+                   <label>Perform Update</label>
+                    <name>prepdisk</name>
+                </module>
+                <module>
+                   <label>Perform Update</label>
+                    <name>kickoff</name>
+                </module>
+                <module>
+                   <label>Perform Update</label>
+                    <name>rpmcopy</name>
+                   <enable_back>no</enable_back>
+                   <enable_next>no</enable_next>
+                </module>
+                <module>
+                   <label>Perform Update</label>
+                    <name>finish</name>
+                   <enable_back>no</enable_back>
+                </module>
+            </modules>
+        </workflow>
+        <workflow>
+            <defaults>
+                <archs>all</archs>
+            </defaults>
+            <stage>initial</stage>
+           <label>Preparation</label>
+            <mode>repair</mode>
+            <modules  config:type="list">
+                <module>
+                   <label>System Information</label>
+                    <name>info</name>
+                </module>
+                <module>
+                   <label>Perform Repair</label>
+                    <name>repair</name>
+                </module>
+            </modules>
+        </workflow>
+
+       <!-- Stage: Initial, Mode: ScreenShot -->
+        <workflow>
+            <defaults>
+                <archs>all</archs>
+               <enable_back>yes</enable_back>
+               <enable_next>yes</enable_next>
+            </defaults>
+            <stage>initial</stage>
+           <label>Base Installation</label>
+            <mode>screen_shot</mode>
+            <modules  config:type="list">
+                <module>
+                    <enable_back>no</enable_back>
+                    <enable_next>yes</enable_next>
+                   <label>Language</label>
+                    <name>language</name>
+                    <retranslate config:type="boolean">true</retranslate>
+                </module>
+                <module>
+                   <label>Installation Settings</label>
+                    <name>proposal</name>
+                    <proposal>initial</proposal>
+                </module>
+                <module>
+                   <label>Perform Installation</label>
+                    <name>do_resize</name>
+                    <update config:type="boolean">false</update>
+                    <archs>i386,x86_64,ia64</archs>
+                </module>
+                <module>
+                   <label>Perform Installation</label>
+                    <name>prepdisk</name>
+                </module>
+                <module>
+                   <label>Perform Installation</label>
+                    <name>kickoff</name>
+                </module>
+                <module>
+                   <label>Perform Installation</label>
+                    <name>rpmcopy</name>
+                   <enable_back>no</enable_back>
+                   <enable_next>yes</enable_next>
+                </module>
+            </modules>
+        </workflow>
+
+       <!-- Stage: Initial, Mode: Demo -->
+        <workflow>
+            <defaults>
+                <archs>all</archs>
+               <enable_back>yes</enable_back>
+               <enable_next>yes</enable_next>
+            </defaults>
+            <stage>initial</stage>
+           <label>Base Installation</label>
+            <mode>demo</mode>
+            <modules  config:type="list">
+                <module>
+                    <enable_back>no</enable_back>
+                   <label>Language</label>
+                    <name>language</name>
+                    <retranslate config:type="boolean">true</retranslate>
+                </module>
+                <module>
+                   <label>Installation Settings</label>
+                    <name>proposal</name>
+                    <proposal>initial</proposal>
+                </module>
+                <module>
+                   <label>Perform Installation</label>
+                    <name>do_resize</name>
+                    <update config:type="boolean">false</update>
+                    <archs>i386,x86_64,ia64</archs>
+                </module>
+                <module>
+                   <label>Perform Installation</label>
+                   <name>prepdisk</name>
+                </module>
+                <module>
+                   <label>Perform Installation</label>
+                    <name>kickoff</name>
+                </module>
+                <module>
+                   <label>Perform Installation</label>
+                    <name>rpmcopy</name>
+                   <enable_back>no</enable_back>
+                   <enable_next>no</enable_next>
+                </module>
+            </modules>
+        </workflow>
+
+       <!-- Stage: Continue, Mode: Update -->
+        <workflow>
+            <stage>continue</stage>
+            <mode>update</mode>
+            <defaults>
+                <archs>all</archs>
+                <enable_back>yes</enable_back>
+                <enable_next>yes</enable_next>
+            </defaults>
+            <modules config:type="list">
+                <module>
+                   <label>Perform Update</label>
+                    <name>rpmcopy</name>
+                   <enable_back>no</enable_back>
+                   <enable_next>no</enable_next>
+                </module>
+               <module>
+                   <heading>yes</heading>
+                   <label>Configuration</label>
+               </module>
+                <module>
+                   <label>Network</label>
+                    <name>ask_net_test</name>
+                   <enable_back>no</enable_back>
+                </module>
+                <module>
+                   <label>Network</label>
+                    <name>do_net_test</name>
+                </module>
+                <module>
+                    <label>Registration</label>
+                    <name>addon_update_sources</name>
+                </module>
+                <module>
+                    <label>Registration</label>
+                    <name>suse_register</name>
+                </module>
+                <module>
+                    <label>Online Update</label>
+                    <name>ask_online_update</name>
+                </module>
+                <module>
+                   <label>Online Update</label>
+                    <name>you</name>
+                </module>
+               <module>
+                   <label>Online Update</label>
+                   <name>restore_settings</name>
+               </module>
+                <module>
+                    <name>suseconfig</name>
+                   <enable_back>no</enable_back>
+                   <enable_next>no</enable_next>
+                </module>
+                <module>
+                   <label>Release Notes</label>
+                    <name>release_notes</name>
+                </module>
+                <module>
+                    <name>congratulate</name>
+                </module>
+            </modules>
+        </workflow>
+
+       <!-- Stage: Continue, Mode: Installation -->
+        <workflow>
+            <stage>continue</stage>
+            <mode>installation</mode>
+            <defaults>
+                <enable_back>yes</enable_back>
+                <enable_next>yes</enable_next>
+                <archs>all</archs>
+            </defaults>
+            <modules  config:type="list">
+               <module>
+                   <heading>yes</heading>
+                   <label>Configuration</label>
+               </module>
+                <module>
+                   <label>root Password</label>
+                    <name>root</name>
+                    <enable_back>no</enable_back>
+                </module>
+                <module>
+                   <label>Check Installation</label>
+                    <name>initialization</name>
+                    <enable_back>no</enable_back>
+                    <enable_next>no</enable_next>
+                </module>
+                <module>
+                   <label>Check Installation</label>
+                    <name>netprobe</name>
+                    <enable_back>no</enable_back>
+                    <enable_next>no</enable_next>
+                </module>
+                <module>
+                   <label>Check Installation</label>
+                    <name>rpmcopy</name>
+                    <enable_back>no</enable_back>
+                    <enable_next>no</enable_next>
+                </module>
+                <module>
+                   <label>Hostname</label>
+                    <name>hostname</name>
+                </module>
+                <module>
+                   <label>Network</label>
+                    <name>proposal</name>
+                    <proposal>network</proposal>
+                </module>
+               <module>
+                   <label>Network</label>
+                    <name>fam</name>
+               </module>
+                <module>
+                   <label>Network</label>
+                    <name>ask_net_test</name>
+                </module>
+                <module>
+                   <label>Network</label>
+                    <name>do_net_test</name>
+                </module>
+                <module>
+                    <label>Registration</label>
+                    <name>addon_update_sources</name>
+                </module>
+                <module>
+                    <label>Registration</label>
+                    <name>suse_register</name>
+                </module>
+                <module>
+                    <label>Online Update</label>
+                    <name>ask_online_update</name>
+                </module>
+                <module>
+                   <label>Online Update</label>
+                    <name>you</name>
+                </module>
+                <module>
+                    <label>Online Update</label>
+                    <name>extrasources</name>
+                </module>
+               <module>
+                   <label>Online Update</label>
+                   <name>restore_settings</name>
+               </module>
+                <module>
+                   <label>Users</label>
+                    <name>auth</name>
+                </module>
+                <module>
+                   <label>Users</label>
+                    <name>user</name>
+                </module>
+                <module>
+                    <name>suseconfig</name>
+                    <enable_back>no</enable_back>
+                    <enable_next>no</enable_next>
+                </module>
+                <module>
+                   <label>Release Notes</label>
+                    <name>release_notes</name>
+                </module>
+                <module>
+                   <label>Hardware Configuration</label>
+                    <name>proposal</name>
+                    <proposal>hardware</proposal>
+                </module>
+                <module>
+                   <label>Hardware Configuration</label>
+                   <name>save_hardware_status</name>
+                </module>
+                <module>
+                    <name>congratulate</name>
+                </module>
+            </modules>
+        </workflow>
+
+       <!-- Stage: Initial, Mode: AutoInstallation -->
+        <workflow>
+            <stage>initial</stage>
+            <label>Base Installation</label>
+            <mode>autoinstallation</mode>
+            <defaults>
+                <archs>all</archs>
+                <enable_back>no</enable_back>
+                <enable_next>no</enable_next>
+            </defaults>
+            <modules  config:type="list">
+                <module>
+                   <label>AutoYaST Settings</label>
+                    <name>autoinit</name>
+                    <archs>all</archs>
+                    <retranslate config:type="boolean">true</retranslate>
+                </module>
+                <module>
+                   <label>AutoYaST Settings</label>
+                    <name>autosetup</name>
+                </module>
+                <module>
+                   <label>AutoYaST Settings</label>
+                    <name>proposal</name>
+                    <proposal>initial</proposal>
+                    <enable_back>no</enable_back>
+                    <enable_next>yes</enable_next>
+                </module>
+                <module>
+                   <label>Perform Installation</label>
+                    <name>prepdisk</name>
+                </module>
+                <module>
+                   <label>Perform Installation</label>
+                    <name>kickoff</name>
+                </module>
+                <module>
+                   <label>Perform Installation</label>
+                    <name>autoimage</name>
+                </module>
+                <module>
+                   <label>Perform Installation</label>
+                    <name>rpmcopy</name>
+                </module>
+                <module>
+                   <label>Perform Installation</label>
+                    <name>finish</name>
+                </module>
+            </modules>
+        </workflow>
+
+       <!-- Stage: Continue, Mode: AutoInstallation -->
+        <workflow>
+            <defaults>
+                <archs>all</archs>
+                <enable_back>no</enable_back>
+                <enable_next>no</enable_next>
+            </defaults>
+            <stage>continue</stage>
+            <mode>autoinstallation</mode>
+            <modules  config:type="list">
+                <module>
+                   <label>Perform Installation</label>
+                    <name>netprobe</name>
+                </module>
+                <module>
+                   <label>Perform Installation</label>
+                    <name>autopost</name>
+                </module>
+                <module>
+                   <label>Perform Installation</label>
+                    <name>rpmcopy</name>
+                </module>
+               <module>
+                   <heading>yes</heading>
+                   <label>Configuration</label>
+               </module>
+                <module>
+                   <label>System Configuration</label>
+                    <name>autoconfigure</name>
+                </module>
+                <module>
+                    <name>suseconfig</name>
+                </module>
+            </modules>
+        </workflow>
+    </workflows>
+</productDefines>
diff --git a/tests/repo/susetags/data/stable-x86-subset/installation.xml b/tests/repo/susetags/data/stable-x86-subset/installation.xml
new file mode 100644 (file)
index 0000000..f71e6b7
--- /dev/null
@@ -0,0 +1,109 @@
+<?xml version="1.0"?>
+<!DOCTYPE productDefines SYSTEM "/usr/share/YaST2/control/control.dtd">
+<productDefines xmlns="http://www.suse.com/1.0/yast2ns" xmlns:config="http://www.suse.com/1.0/configns">
+    <textdomain>control-ISSLE</textdomain>
+    <globals>
+        <enable_firewall config:type="boolean">false</enable_firewall>
+    </globals>
+    <software>
+        <selection_type config:type="symbol">auto</selection_type>
+    </software>
+    <network>
+        <force_static_ip config:type="boolean">true</force_static_ip>
+    </network>
+    <texts>
+        <congratulate>
+            <label>
+&lt;p&gt;
+You have successfully installed the Integrated Stack for SUSE Linux Enterprise.
+&lt;/p&gt;
+&lt;p&gt;
+The services you just installed might require additional
+setup before use. See the Integrated Stack for SUSE Linux Enterprise
+Installation guide for details.
+&lt;/p&gt;
+            </label>
+        </congratulate>
+    </texts>
+    <proposals config:type="list">
+        <proposal>
+            <label>ISSLE Configuration</label>
+            <name>product</name>
+            <stage>continue,normal</stage>
+            <mode>installation</mode>
+            <proposal_modules config:type="list">
+                <proposal_module>yast2-issleconfig</proposal_module>
+            </proposal_modules>
+        </proposal>
+    </proposals>
+    <workflows config:type="list">
+        <workflow>
+            <defaults>
+                <enable_back>no</enable_back>
+                <enable_next>no</enable_next>
+            </defaults>
+            <stage>normal</stage>
+            <mode>installation,normal</mode>
+            <modules config:type="list">
+                <module>
+                    <label>ISSLE Software Selection</label>
+                    <name>sw_single</name>
+                    <enable_back>yes</enable_back>
+                    <enable_next>yes</enable_next>
+                </module>
+                <module>
+                    <label>ISSLE Configuration</label>
+                    <name>issleconfig</name>
+                    <enable_back>yes</enable_back>
+                    <enable_next>yes</enable_next>
+                </module>
+                <module>
+                    <label>Release Notes</label>
+                    <name>inst_release_notes</name>
+                    <enable_back>yes</enable_back>
+                    <enable_next>yes</enable_next>
+                </module>
+                <module>
+                    <name>inst_congratulate</name>
+                    <enable_back>no</enable_back>
+                    <enable_next>yes</enable_next>
+                </module>
+            </modules>
+        </workflow>
+    </workflows>
+    <update>
+        <workflows config:type="list">
+            <workflow>
+                <defaults>
+                    <enable_back>no</enable_back>
+                    <enable_next>no</enable_next>
+                </defaults>
+                <stage>continue,normal</stage>
+                <mode>installation,normal,update</mode>
+                <remove_modules config:type="list">
+                    <remove_module>hostname</remove_module>
+                    <remove_module>root</remove_module>
+                    <remove_module>ca_mgm</remove_module>
+                </remove_modules>
+                <append_modules config:type="list">
+                    <module>
+                        <name>yast2-issleconfig</name>
+                    </module>
+                </append_modules>
+                <insert_modules config:type="list">
+                    <insert_module>
+                        <before>suseconfig</before>
+                        <modules config:type="list">
+                            <module>
+                                <label>ISSLE Configuration</label>
+                                <name>issleconfig</name>
+                                <enable_back>yes</enable_back>
+                                <enable_next>yes</enable_next>
+                            </module>
+                        </modules>
+                    </insert_module>
+                </insert_modules>
+            </workflow>
+        </workflows>
+    </update>
+</productDefines>
diff --git a/tests/repo/susetags/data/stable-x86-subset/license.tar.gz b/tests/repo/susetags/data/stable-x86-subset/license.tar.gz
new file mode 100644 (file)
index 0000000..ecd631d
Binary files /dev/null and b/tests/repo/susetags/data/stable-x86-subset/license.tar.gz differ
index 2594b42..13acb78 100644 (file)
@@ -473,7 +473,7 @@ namespace zypp
          {
            if ( _pimpl->setFileCheckSum( _pimpl->repoindex().signingKeys, value ) )
            {
-             ZYPP_THROW( ParseException( errPrefix( line.lineNo(), "Expected [algorithm checksum filename]", *line ) ) );
+             ZYPP_THROW( ParseException( errPrefix( line.lineNo(), "Expected [KEY algorithm checksum filename]", *line ) ) );
            }
          }
          else if ( key == "LANGUAGE" )
@@ -496,6 +496,13 @@ namespace zypp
              ZYPP_THROW( ParseException( errPrefix( line.lineNo(), "Expected [algorithm checksum filename]", *line ) ) );
            }
          }
+          else if ( key == "HASH" )
+         {
+           if ( _pimpl->setFileCheckSum( _pimpl->repoindex().mediaFileChecksums, value ) )
+           {
+             ZYPP_THROW( ParseException( errPrefix( line.lineNo(), "Expected [algorithm checksum filename]", *line ) ) );
+           }
+         }
          else if ( key == "TIMEZONE" )
          {
            _pimpl->repoindex().timezone = value;
index 601e2fc..824ae43 100644 (file)
@@ -60,6 +60,7 @@ namespace zypp
          Pathname datadir;
 
          FileChecksumMap metaFileChecksums;
+          FileChecksumMap mediaFileChecksums;
          FileChecksumMap signingKeys;
 
        protected:
index 5684dea..1f19a2e 100644 (file)
 #include "zypp/Locale.h"
 #include "zypp/ZConfig.h"
 #include "zypp/repo/MediaInfoDownloader.h"
-
 #include "zypp/repo/susetags/Downloader.h"
+#include "zypp/parser/ParseException.h"
+#include "zypp/parser/susetags/RepoIndex.h"
 #include "zypp/base/UserRequestException.h"
 
 using namespace std;
+using namespace zypp::parser;
+using namespace zypp::parser::susetags;
 
 namespace zypp
 {
@@ -67,116 +70,125 @@ void Downloader::download( MediaSetAccess &media,
   this->start( dest_dir, media );
   this->reset();
 
-  std::ifstream file((dest_dir +  _path + "/content").asString().c_str());
-  std::string buffer;
   Pathname descr_dir;
 
-  // FIXME Note this code assumes DESCR comes before as META
-  string value;
-  while (file && !file.eof())
+  // Content file first to get the repoindex
   {
-    getline(file, buffer);
-    if ( buffer.substr( 0, 5 ) == "DESCR" )
-    {
-      std::vector<std::string> words;
-      if ( str::split( buffer, std::back_inserter(words) ) != 2 )
-      {
-        // error
-        ZYPP_THROW(Exception("bad DESCR line"));
-      }
-      descr_dir = words[1];
-    }
-    else if ( buffer.substr( 0, 4 ) == "META" )
+    Pathname inputfile( dest_dir +  _path + "/content" );
+    ContentFileReader content;
+    content.setRepoIndexConsumer( bind( &Downloader::consumeIndex, this, _1 ) );
+    content.parse( inputfile );
+  }
+  if ( ! _repoindex )
+  {
+    ZYPP_THROW( ParseException( (dest_dir+_path).asString() + ": " + "No reository index in content file." ) );
+  }
+  
+  // Prepare parsing
+  descr_dir = _repoindex->descrdir; // path below reporoot
+  //_datadir  = _repoIndex->datadir;  // path below reporoot
+  
+  for ( RepoIndex::FileChecksumMap::const_iterator it = _repoindex->metaFileChecksums.begin();
+        it != _repoindex->metaFileChecksums.end();
+        ++it )
+  {
+    // omit unwanted translations
+    if ( str::hasPrefix( it->first, "packages" ) )
     {
-      std::vector<std::string> words;
-      if ( str::split( buffer, std::back_inserter(words) ) != 4 )
-      {
-        // error
-        ZYPP_THROW(Exception("bad META line"));
-      }
-      // omit unwanted translations
-      if ( str::hasPrefix( words[3], "packages" ) )
+      std::string rest( str::stripPrefix( it->first, "packages" ) );
+      if ( ! (   rest.empty()
+              || rest == ".DU"
+              || rest == ".en"
+              || rest == ".gz"
+              || rest == ".DU.gz"
+              || rest == ".en.gz" ) )
       {
-        std::string rest( str::stripPrefix( words[3], "packages" ) );
-        if ( ! (   rest.empty()
-                || rest == ".DU"
-                || rest == ".en"
-                || rest == ".gz"
-                || rest == ".DU.gz"
-                || rest == ".en.gz" ) )
+        // Not 100% correct as we take each fallback of textLocale
+        Locale toParse( ZConfig::instance().textLocale() );
+        while ( toParse != Locale::noCode )
         {
-          // Not 100% correct as we take each fallback of textLocale
-          Locale toParse( ZConfig::instance().textLocale() );
-          while ( toParse != Locale::noCode )
-          {
-            if ( rest == ("."+toParse.code()) || (rest == ("."+toParse.code()+".gz")) )
-              break;
-            toParse = toParse.fallback();
-          }
-          if ( toParse == Locale::noCode )
-          {
-            // discard
-            continue;
-          }
+          if ( rest == ("."+toParse.code()) || (rest == ("."+toParse.code()+".gz")) )
+            break;
+          toParse = toParse.fallback();
+        }
+        if ( toParse == Locale::noCode )
+        {
+          // discard
+          continue;
         }
       }
-      else if ( str::endsWith( words[3], ".pat" ) 
-               || str::endsWith( words[3], ".pat.gz" ) )
-      {
+    }
+    else if ( str::endsWith( it->first, ".pat" ) 
+              || str::endsWith( it->first, ".pat.gz" ) )
+    {
 
-        // *** see also zypp/parser/susetags/RepoParser.cc ***
+      // *** see also zypp/parser/susetags/RepoParser.cc ***
 
-        // omit unwanted patterns, see https://bugzilla.novell.com/show_bug.cgi?id=298716
-        // expect "<name>.<arch>.pat[.gz]", <name> might contain additional dots
-        // split at dots, take .pat or .pat.gz into account
+      // omit unwanted patterns, see https://bugzilla.novell.com/show_bug.cgi?id=298716
+      // expect "<name>.<arch>.pat[.gz]", <name> might contain additional dots
+      // split at dots, take .pat or .pat.gz into account
 
-        std::vector<std::string> patparts;
-       unsigned archpos = 2;
-        // expect "<name>.<arch>.pat[.gz]", <name> might contain additional dots
-        unsigned count = str::split( buffer, std::back_inserter(patparts), "." );
-       if ( patparts[count-1] == "gz" )
-           archpos++;
+      std::vector<std::string> patparts;
+      unsigned archpos = 2;
+      // expect "<name>.<arch>.pat[.gz]", <name> might contain additional dots
+      unsigned count = str::split( it->first, std::back_inserter(patparts), "." );
+      if ( patparts[count-1] == "gz" )
+          archpos++;
 
-        if ( count > archpos )
+      if ( count > archpos )
+      {
+        try                            // might by an invalid architecture
         {
-          try                          // might by an invalid architecture
+          Arch patarch( patparts[count-archpos] );
+          if ( !patarch.compatibleWith( ZConfig::instance().systemArchitecture() ) )
           {
-            Arch patarch( patparts[count-archpos] );
-            if ( !patarch.compatibleWith( ZConfig::instance().systemArchitecture() ) )
-            {
-              // discard, if not compatible
-              MIL << "Discarding pattern " << words[3] << endl;
-              continue;
-            }
-          }
-          catch ( const Exception & excpt )
-          {
-            WAR << "Pattern file name does not contain recognizable architecture: " << words[3] << endl;
-            // keep .pat file if it doesn't contain an recognizable arch
+            // discard, if not compatible
+            MIL << "Discarding pattern " << it->first << endl;
+            continue;
           }
         }
+        catch ( const Exception & excpt )
+        {
+          WAR << "Pattern file name does not contain recognizable architecture: " << it->first << endl;
+          // keep .pat file if it doesn't contain an recognizable arch
+        }
       }
-      OnMediaLocation location( _path + descr_dir + words[3], 1 );
-      location.setChecksum( CheckSum( words[1], words[2] ) );
-      this->enqueueDigested(location);
-    }
-    else if (buffer.substr( 0, 3 ) == "KEY")
-    {
-      std::vector<std::string> words;
-      if ( str::split( buffer, std::back_inserter(words) ) != 4 )
-      {
-        // error
-        ZYPP_THROW(Exception("bad KEY line"));
-      }
-      OnMediaLocation location( _path + words[3], 1 );
-      location.setChecksum( CheckSum( words[1], words[2] ) );
-      this->enqueueDigested(location);
     }
+    MIL << "adding job " << it->first << endl;
+    OnMediaLocation location( _path + descr_dir + it->first, 1 );
+    location.setChecksum( it->second );
+    this->enqueueDigested(location);
+  }
+  
+  for ( RepoIndex::FileChecksumMap::const_iterator it = _repoindex->signingKeys.begin();
+        it != _repoindex->signingKeys.end();
+        ++it )
+  {
+    OnMediaLocation location( _path + it->first, 1 );
+    location.setChecksum( it->second );
+    this->enqueueDigested(location);
+  }
+  
+  // add hashed media files
+  
+  for ( RepoIndex::FileChecksumMap::const_iterator it = _repoindex->mediaFileChecksums.begin();
+        it != _repoindex->mediaFileChecksums.end();
+        ++it )
+  {
+    OnMediaLocation location( _path + it->first, 1 );
+    location.setChecksum( it->second );
+    this->enqueueDigested(location);
   }
-  file.close();
+
   this->start( dest_dir, media );
 }
 
+void Downloader::consumeIndex( const RepoIndex_Ptr & data_r )
+{
+  MIL << "Consuming repo index" << endl;
+  _repoindex = data_r;
+}
+
 }// ns susetags
 }// ns source
 } // ns zypp
index 384f63b..2092f7f 100644 (file)
@@ -16,6 +16,7 @@
 #include "zypp/RepoStatus.h"
 #include "zypp/MediaSetAccess.h"
 #include "zypp/repo/Downloader.h"
+#include "zypp/parser/susetags/ContentFileReader.h"
 
 namespace zypp
 {
@@ -53,8 +54,15 @@ namespace zypp
          * \short Status of the remote repository
          */
         RepoStatus status( MediaSetAccess &media );
+        
+        /**
+         * Content file parser consumer
+         */
+        void consumeIndex( const parser::susetags::RepoIndex_Ptr & data_r );
+
        private:
         Pathname _path;
+        parser::susetags::RepoIndex_Ptr _repoindex;
       };
 
     } // ns susetags