python3-kiwi-9.24.43-150100.3.90.1<>,㨉gM=p9|zCo;Yg}2({Μq \B.{M e>8y&(_H-~ #:9Rpkp$!|Uf=^{<*T Q0ey V[{~6450c{ݻ~.U8lq%MutK[.Z88Ӕɨk ,7Qo]Iå)02Έ0x ]s ꑗŐ05O si`0QudI|çx>G4?$d % N $04Mn           dl(8]9 ]:?]BU FUGU0H]IdXfYfZg[g \g$]o^Cbcd$e)f,l.uDv$wxyzz Cpython3-kiwi9.24.43150100.3.90.1KIWI - Appliance Builder Next GenerationPython 3 library of the KIWI Image System. Provides an operating system image builder for Linux supported hardware platforms as well as for virtualization and cloud systems like Xen, KVM, VMware, EC2 and more.gM=h04-armsrv2:[SUSE Linux Enterprise 15SUSE LLC GPL-3.0-or-laterhttps://www.suse.com/Development/Languages/Pythonhttps://github.com/OSInside/kiwilinuxaarch64{ \-D$Mo?~5P @u A >wR)'D!t t 3(n?%j?M~#FO5>=<"I%> " ]C,,BplIL'6()t+ 33^VOy$ s p$V,  # 4>SU" Y[" o9 7 vmz I\,?$W P4"#&9'sGp+2.z!.B . tn   a\$QU&3-06! f B-f<*L z0qc V"E 8@  +*D.9 F0z 1 0  KNS^o  1o Eo]Sm>D&"%s 2# l\l<0 ~4 O Ǝ / k o,! 1 %/-i+l m7 M e)~ C LT b} 5S$ R (g#Qq(-%2B8#j Y Hc"n n[WB AY$ >)$C:  T KΡAA큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤gM=gM=gM=gM=gM=gM=gM=gM=gM=gM=gM=_gM=gM=eQgM=gM=gM=gM=gM=gM=gM=gM=gM=gM=gM=gM=gM=gM=gM=gM=gM=gM=gM=gM=gM=gM=gM=gM=gM=eQeQgM=eQgM=gM=gM=gM=eQeQgM=eQgM=gM=gM=eQgM=gM=gM=gM=gM=eQf eQgM=eQgM=gM=gM=eQgM=gM=gM=gM=gM=eQgH[@eEXgM=eQgM=gM=gM=gM=eQeaUgM=eQgM=gM=gM=gM=eEXeQgM=eQgM=gM=gM=gM=gM=gM=gM=gM=gM=eQeQeQeQgH[@eQeQeQeQeQgM=eQeQgM=eQgM=gM=gM=gM=eQeQgM=eQgM=gM=gM=gM=gM=gM=eQeQeQeQgH[@eQgM=eQgM=gM=gM=gM=gM=gM=gM=gM=gM=gM=gM=gM=gM=gM=gM=eQeQeQeQeQeQeQeQeQeQeQeQeQeQeQgM=eQgM=gM=gM=gM=gM=eQeQgH[@eQeQeQeQeQgM=eQgM=gM=gM=gM=gM=eQeQeQeQgM=eQgM=gM=gM=gM=gM=eQeQeQgM=eQgM=gM=gM=gM=gM=gM=gM=gM=eQeQeQeQeQeQgM=eQgM=gM=gM=gM=gM=gM=eQeQeQeQeQeQgM=eQgM=gM=gM=gM=gM=gM=gM=eQeQeQeQgM=eQgM=gM=gM=eQeQeQeQgM=eEXeEXegM=eQgM=gM=gM=gM=eQgM=gM=gM=gM=gM=gM=gM=eQeQeQeQeQeQgM=eQgM=gM=gM=gM=gM=gM=gM=gM=gM=gM=gM=eQeQeQeQeQeQeQeQeQgM=eQgM=gM=gM=gM=gM=gM=gM=gM=gM=gM=gM=gM=gM=gM=eQeQeQeQgM=eQgM=gM=gM=gM=gM=eQeQeQeQeQeQeQeQeQeQeQgM=eQgM=gM=gM=gM=gM=gM=gM=gM=gM=gM=gM=gM=gM=gM=gM=eQeQeQeQeEXeQeQgM=eQgM=gM=gM=gM=eQeQeQeQeQeQeQeQgM=eQgM=gM=gM=gM=gM=gM=gM=gM=gM=gM=gM=eQeQeQeQeQeQeQeQeQgM=eQgM=gM=gM=gM=gM=gM=gM=gM=gM=gM=gM=gM=gM=gM=gM=gM=gM=gM=eQeQeQeQeQeQeQeQeQeQeQeQg3eQeQeQgH[@gM=eQgM=gM=gM=gM=gM=eQeQeQeQgH[@eEXgM=eQeQeQeQeQeQeQeQeQeQeQeQeQeQeQeQeQeQeQeQeQeQeQeQeQeQeQeQeQeQeQeQeQeQeQeQeQeQeQeQeQeQeQeQeQgM=gM=gM=gM=3ef2635410bddef6dd4f787d83f497c289d94b9cbbdae6aac2b0d148edc0d4e1cb14475d39f57ca3f4d893c82003f0d7b09dfd8908d0870637b41d61eb49f1aaf5d0f06e42666c1ee46a9fef488e740f3ee5a195218dffe9e36cf87dbd51bbfda0dfd9ace88cec2befcdc0438cb0d9a6bc1a784d5a84e34bd9a55acc6d044ebb01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b2f2f299bc6ef6ad5d43472289309528d778f887123929bbea4194da9fd69606801ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b7d2cecb7e178b108ba28bddb272bea0f53a8ed8a45b9cae4d11889babfbbccea90d5df57ea540fae628833c8d69344ed78e5245c39cdebd49c5661be39e77bbac7d27b511c5fd145461b841ed467c5f815c805ec19a78c25d9ca1a2d11863be3764c7fafa88df4e6e49d3d09db251ab21f55e2ec98d7a0cfa718bc7a206d69fa835f5ad29a7446b806191bfe3ad2f98c4668a79ab508382db7e4c9284d75f390fc0aa6a5efa12efce6bf7e628d1a37e44875b1bdf335f81b711eb3c29894ddb0c8935876aadb3d56c4906c2275725f4d41d2d702135aa1eb2bd1e3e3c3841e6c6481dcd5ec04f6e484d3e24810d106963c82d39478fca6c1d8c9606a0455c8b829771a22e8d1e0513f4b3332cfc6da72bef01ab6bc1218977227240065fd11e1866c06aad7109781d3fe64d8511bdf718550a1eadff84a1d4cf1dcf8c6511ec7bc38b7e74ecf4040f16d32deb52742d9c9fb9c9d71879bbb936c6bb50507f87816e39b0d2be86957b11b9b2ecc985196aa8cf13eb4bbcf1d97dce7676856d5e08ba83a3c22d8586d9e3bdcf2226b175fe2f1a7d7515affef2afd274124c186c791267efd8a64d467c4852e96d63948e0b9ed9b8631fb16b4344cccbe247de4ed3c752fa85f64031eda6d4db19b691937f4380a9aee30baf548940433f22f0e693feb45c8d07b10704e28a081efddfffbf85696b6c088e7959a94ae090af4060d59cb123992f6bd8d46ab162ae52c194b71bc7ca89018886b84143a553c05af1ef5f81bcb59ca07bfd04ca0e7ca7e43ded5cf5c75d61febbbb7bb1872728e8cefe412bd5d7e467ae8fe501d6a2735e9889b496c148208248915c1c7e1e18b9a50682825b03c001b10fdbe0dff34d42de6db4210f22a69bd6f9416eee246fe310355b0a77197df7a1525643eabcef9e7f8c328769c4e3eecdbd8681407d6c728630b0aa54658e901142bca9edcb2019ec83cdec24353358c38d72d56aed9cc8915d64737f8351eefcbb2cb94b69cb7c537ec68624189add1f5ccadc8a31d0dd2e30eb785e0e39010d829745dcdb52ec52d1069e6f042d44785379e420704363b8be9861fa4c363cfb6128662a17ddfb6e4e3c95881998789424a901075f5aa9b2fb291f0f1c5174a2fd967d8f8b631856adefa1c821bc94550b0dfe9bc09ff39212691b99d59c1990c5da4194eb9be9e1b51c40770c7a55d4af841b6effb4ae6e5cef69b3e9a0f8e45e4f849fa45862784642c69a8c4f84fbfebc93a213a8123e417fcf362eb98307f3c7871ba194e0ff28f2749e18c35735911a95a2738651484e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855f2d3b25fbf244f7c2678696340a153227e8dcaf7e2874b0c26cd2113d6473ec6f5e201dd58227bdce91ecad0cc139bd2cdfa19c4bbdbdb2ddb8abd055c9be54dbde8d4a5f5c72a808ae94897bd4823c20ba406d39f5d898c14aa5a7f8c725b8b48499ffb01c5d1b5989466bf2f769b21d8de35326d0f56fa5dcd042c2c087afc62e62c379c3582247aa1dfb1868eaf4bbcb74d6aee452c551d18b8b5cbb35fdde3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8552dacb2658a7a5ac8f65f416db96e6012ffd2e167c526da7e6f3597b54d48b71faf9265f106b09991cc1a6abe516de7149964af82b17c373876c75ce800d7700552207d12aef42974955c9104af68d6fa50a953953fc9413c083b2997a6f518c79ecdbc4bc76aa26ab7497d4e93456e670c2a8b267f25e5d9faf6d3b96a7e63950d42da15a09cac33ed299914f2973e52458c0ccc2fe9a307ef3328c086bf7c86dff8156b0d55c58983b86de50c5ea5d2e86866c3e42828ab6195c87ef0e1dddcdf4804e22b7b6c04ab1bcfa7daf652e39e61c89d553f94b5c5c854139cd520ff07672a5363f8494e5ae421c8a5e12f5d77f5740a67f6ad7877713056aff686ae4a1433f3e1fc9594b1e4935c681bc93ad9bb92cc346fe7e9af266290dd4eaf38e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b85519d8bdaf6f872e22458361f617d26eb8da7fe55fe16209f028ef81dd38f23deb0a2c77b18efa2db6fc5aacfdc23f49396ed11ddae0b4216bc23547323fa56ca5ff5a87f89ef5eaf9955af92fe32a099a1bf21a6a59b50ab5a36fb3e00e64fc978136739b44d01f3839373914106a08add87ae3d0cedfe65aa67e05eb1d53b8bb319d94446ce36de7eb6fd8de2748b6c64577ebb0dd8485e2529fe3eed0cc323506f3f5ef7f8bbcfb8d86260a042b81e26974d13742e44b80adc62394ff49a2dda7a0f880db12c56600e0169ea14231ba2c5e5125136bf93bc43d44d80cabb8ddf9c9bb46f87d72efd591f7d9495c732ae0aa2c9ae5a4630035c8754f92fd771e614777333bdcf51cb68117a1da4be539862ada2b594a48a667f43702a825449e9f5bbcaf99c651f9a10d0a1ca4360e21d6ce6dd788ebf068bbd8ccdd6bdeb5488b0269079beefa7a832c22d6e33ec1d7d4b80ca6566c5b861681f91209b0dd5f3a7097be2615d38ce03058c672885be123d628a8ba7e9c4dd2458792d22102d57b7b9ae7bd4479bf014a8c8bdb6033d9dcf6d44bd9bbfe1485843fa8acb7ec8530dd3bbc1c43fa0ba23651cd4d2c0964a69a77a09c23bc5776fc1bb35d8d02b47e448906b45227570be629dfb233a8bdb26970658c8816c43e4fb3497df76e06e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855c2445a14b6f84d368d8a3a7d92eec8e67bddee42072f71c42c42d269ca47b252ff7f2fec6075afe4a785f2ba2db92469d60b78fbd3c6fd0704f8387e493c0c9daafee25c47587673a8bb9b2f2905296116df15f8abee35da32b710c207f719912afc13e794bb0f9d3b79161180ca5ede49609447f136a99fa5724898d3be540a222f049a2d45ed4d5de560ac9f3f8fe0187d88339b43e7cbf3c41ccdcbf3bff2aee993aaa4c94f9340a870f4035a2702abe363c0369ac87a7e225fa041bbaddf6c0899a793842ba9b908857ffa01fc9a18cbef6a3d457d1f4eca22dc0bc5a9b9f07eb8a000e10222c1e8254d173c7069b679789f919fa921ebd0432b3d17ac3e1a0f6fa3c75c6c0282047c565cb9839bfb95f8802435058d3800ad67dba626d3403239cb30bb2c1722b52feb1afb850d45d1fb97e01d66367db6fbbba2d7625f4875289b03fc2140cb6a7e374c6744c0d9d5117c6ce6487b0f78dd1c18c09ce7bf82b20259137247bc41647bae00e7e641a223c412a14302cd2666421f44cfe3ec893d8d0b9030f2aca9df7e0283f23eb796bc7016c223638f532a6d569daee49bfec29270faed48cfa3f73be5c017b651928f11bade108b872d24f091481b57ab76b1ec2f2c9e6a199c6ade0db788d0e2ecd7efabe691611b14ec0fb4fe3b86d28933ba936c2da598414c04f44c0fafd465b7caa7321841c137bbdda60bcc35e76e0d94838f318551097aa18103c7854f1ae31cdcea4ecb07d13ab412023249dc7df5b517abe5ddea791208b096b69f41095f6682df5f54f12f14135b194582fc4cc6446874f57982ee45de13c000dec60f2021c4bf579036bb0f0d43c83508aa82b5bb3d59aef8923774358a6cb971e9be92188e6ef54227c052a5836677d9232d86d95556b288f2cff5bb3e6e9fcb72d9e69197d900a9033b70fd5ef232d5c74ae1860a09da168053eec539b9db186d1b5952b0beff9fead7a8a24e8efcb8da0002bf8e014fda9c273d7026d1f066b6f624f6fd69539c0e047b11a0b945bad2c0d0af5e1d25fa11e20bceb2bcedb494cc64ebf0d63cef02638771a19b669772935c9028f9d105a3be90960444bcaa46cab3858c6d75944eb5d9ae8d459b54b9ec3a834157c6492a916849a428909957f9aa26aaa1b89dd3ebab58acbf8a10b485a762480e68538dd175eef629bcbbdb330a87bf6326fb934cd092f86eecb3e176e49c833fb01b7da27e805a1d0a76d90d938ff76152b1379db32b76af2fc92521cd6bd3e66168ae45bc6f831ffda4cce41cdafffde783acdb32833e167a2dda2128e1697090c20994f1dee36f78e341aeadc42ff38bb2d4b831e2b3c22baa30beee6dcb00ffec74204bf30490b88e78481670e5ded092caef343063aa620a3fe1f43e8fdd3b3700523cd749fb558413ef8d01c8829cfc239e41d6ece9ae1ef70133f11c8a32f9c344dbfe5b393903d04efbdc8f8985f0a95d1c8a14cab3f8faef45e5e86699546afc19a21805f2c671a96fe0621a65795bc575d1ffc4d365944b7bd4b1ca51956b6bcb041610c9bc7e7eb2397a9dcd155e952afa2616445d5f210fc880733e328e89e4a0505c58d60e66bb3a53dac8d38a9d823eaa00620b65daca56080423b029eaf81f5b63f79950de93de7ff394eb4f5ca8d838b3d09208425b5cda672830d32d19d312e8bbf1183988b5cac16d3a886261451280efb0725223e504c58452a1b730b39cc754e5d9b5a9ef594e70f9b5f19ff5dd3d080977e1af40a85d479d7d5b6fb4f54993b6435fd3d548d0ccdd2ad121d9a4a63d873e5eb9cb3c1e34265932d8384b165b1de371cbc26d29b03ec228be3f5c05ad3a0b992844eb4fb9dab812e7e57e8c5c23d6448af168f4676af455581df67e89697dfdeff9aa5f91cc7216943b9ab41b157b25baedc8f43eb5373b02a73faf5ce8ee3a7a7671d1653dcddf480344f9dca2b5236b4804937edea3031f07e6120d569a13e9c9ad193c571ea69c289efd4ac7825d975f73cf986bf32bc0ae883864347b0d7aeaceb8e5e061d7fb574fe605a056c417e4c1c47566581c7207ccc6b736b694e03f84602b56c729672d950fa10bac2d3e00dfe8c94fd06b41db99ecd569cc327fc259ca31db7029ada123f8c85f7ef6b2a416c67e8eb80c031c26b1f4a2c88951188bca43a85ac61e2c98af83e0361fc0fa1b31b36feddc887397982bb90e661f4402a43d5900531a9ef274ab22c461276c472d041876ff00069af22698ec335ca4f1ee4e4defbf7da61bdcadeea0ffc87ee4f68b70921748af61020b5c71773ffea3d830c3bea3f78e9c8ba14dc71c0991fa397393b6c67269d0549130d36eb4aec30e5cdaeecb98aefb4d4c47981d14fb3b797c1ecfc7831de85dfea0da655f6fa2df8d63cf902578586646b2d0107d26e8521cfa19e820e5a5d05117b602e831e32b42b24ee3a5ec76172cd349d683b4378cd33de7587d351bbf470a3fe0a7f6a33cd670000796bfbaeadd44a98262d04dadcd9b803be897df17836857616a1f538f96f3e95d9e23ab793692a04a1b38d49a28ffb7765e743512d6e4138c4e58a88427a4821c74b1d37965e557f6e436dc15eb73b3fc74035060019e2c91872239459f175977bc723e6098e9f98744731db07a78c3e52620ed8485c499d77b605037fc89e1c2ae1f984fa5387e21006ce926d4caddcfec923f2bf44b949ae23aef9c36f66141c57cb5df00ff407062af63e64b34acb0c181972fc1d6d34f5b51c5e6d0d94dfe523ab211cd4d143ff7a4b7f80219ecd8fb92ec3def30e179ab85cdf05495b7b3c554db8a8db95a8a25217364ec59d06f2f63c26f71fcd17a12eacc9282635a77b8db6e1ef4b6751dc15e58ba5e743f73e32c9a0b4c294aea053a8d59230dec204c36f0afa00a07806b5da0db49c26980ddc60168fd77d020a155bb3e0d8f4aeb948d60bd29087b1afa57bc02e59f6b1d6f8c705aaac4235d73d21cb49f06daff617790a84efcde9468ad32b941a39d24435dab883f0ae5dbc5bfc6dbf712e4ec0ce1652808357b2a335f6ac57f50e6a60b7dbd584d709ff7a5a14e55a01e937cac491414726f6c2a470a55b696e1681eb3458cf0ce944e579dd50218d1a9bdedc2114c47592529f66fcf1d61a034fdeb5d3cb3e6da9e15ab01fe333a0eccc5651fb7d5533ec9ef0e1def5ddef004bccf542108d93f047e215a40d96bd4c64f7b832cf52ece4b60ef7f506feefd5417d357be2a794955b51e7e9bf7c383f86d340cf11ba5edb22262c7537db59a67e42b3de41f35274817911a64d4dd3a17cfc6b08c8967a49552c7b945cd223f6ebcd6376d8982f189ee1b72d69b327e62fb6b5bf7cccdc9a82c0d710e705d5022a01315435a6fceec775b11a2c3c48ccfc449693c39fe50da5d7418da6b2fdc160e13d070f709553ccb40e13aa30f51c36b3d3d6385e02e5de1f5976f1259fc5b6c0f58c750ec9336867c3ef35a0303de05187ab7b8daf741da9b4b2060495901e5ca124026fdf893997461e7ad1f17114cce212b88a098ca05ed0e49a7e043576a6c7dd0eccf0ddc60a70683f0ccb38fb54ce298362ebeac0c787bbb73d3074c3d34b3c3e297f6e6f72fea99cba49841f187340df3f596e58a28769a29545cd2f2efb95ca643dd62665640683134db8aa17dccb97b0f31f8996e9e30a760936887348b1b302efd4393c8225351dd67502518b77e598bb20487e6f3bde7b22f52bc210e081bdda7fd78a369dd7e1a663031cc09ab423a2883b644754c8252c14accf59f94355e0b6879af4f2e273b9fb9980f5634e8d69dbb3e355d1f396f34a5f919fb1ed36fdaab5d08810b60b07a75c29c115adffbd0ec9b582a6eb10829f7df362ea98c650d2d0b8254c2d7a53557b7385fffbb7bc48d63cec18811d3f781b5d4bce38c0a80fc7a634988b697c548dd99b14d4604d64d8acf6802be075bb43e4beeae0547a9106069d23f3c4a9068c9812834cce224bf0c6ad5c3c0d38508bf7f224ab5b068faa616dac4e2a0a36b9088445a5ab99a07efe40336e393223d4fd5b3a893069e9fb598829d8fe8dc66fd59fbaa66c03e7033adae6dc94678f05fe50b1b9871222d4e5b961bd14d5bd2f668fcaa6d375a75fb9d8be95a3789096bf7f9b7e246f1deede8d1e9c1fc9d887997258ccc694766eea4b9a521da9bbb61f833cce6e271acdb76b7e2fa9219404505ef97f8140e7f25f4220a5c87008a62bd372218cfe92d81b376d6e35a6909650a4e185b0cbdc84618babf5229416a978416e8cd5008f8a2b0d5b9194c16bdd33ed14193e5c9928804e74a8039269726dec2fd23c7a4ce7165fabcb16840faeb0e1b5ff5d847797cec54d31ca762c723481b6208c1148db3fd27d48b67cc4bf61baa6ac07735d9d6ec34499394f487138eb3a78626655745f1651830a57ed954269d5fe16cbf9c2e7dc546b4ce8ca1c3335e0b8afb2154e7fba691be5f55252964a0da4f52a5830ec18fcd56f457eb078b5f400f90011eb4bf5a09819704065c5563ed29834715aa68912e542ac33c718015d0864b7a2a3a64f77c82674550984809e5e9e27f75a55fdde40f1684ee8339429730ac487b9bb99ce83ef502d85325d802025290e787a26e5f1b6f12262b9bbf9f64761be0f749bdefeee2b802cee5487e58358ab852e9dc88c0885f6c6901a9e534464b407617adcaf4965adcd100d0b25f5f05427b10951a184366d594a9dbb2979798380049e8bfa1e43cc5296a897aa9fe254350f5008eb6b18f3422abf63c2b4359a2aeeaac6ac66a3935a6c3a5e1c68bd966f14eedd3be1ae2a6ca29d79c447b2f10ad4aa5b7d48301845d86c3464dc4c373ae2ac2eb7dd0eb38c01624966d8c630c0da99940d00111da2f37e34cddfd0c375502b7cbfd0db157a4e4ba49a8a779069e2ddd74b1622fe7a6d8aab1260b3865b1b43dbea325b76c5f39a1cf4840218e32f3d67b3310ab8a25fa69b53d10abd389adcb41e1fbe12e3cecbd50525ece6b1b15dd949f11942e2795b4981f886405d15bc69c7ce22923389775bfdeeaa59376942b3f2d6d4ac711bd7ca7043cca9b60fbbbf7383fc8fc5b562debfc9c89e95768df1c5b8027a771c49ec836c36fd4fb794a3936aa098b01536ea848f5c1012ab7a10df7fe73121c355ac4c84d69144c79c525915119434ae98b5e239b5d98671cc84f1f161ab9382cff130b944025c93648f1b19ecd0a276761e05e94ee075380737a864608f864a119cdf3033caf129bdacf7195fccee818a80779e65871f7fae04dc2b254299f15feda7d3fe3cc99e11fb47b05794514dac8429b92e29553c0ab813863fc49af167317394e741e28740817b647272f91e9e0dd72475863278ff93bf7440af321968e726db28e065cb761d5405b86fd159c51fe51b7d13bde20d1c5680341b426181265adf8b88049e78dbb637b3d7a3ba7c5e734a6cf632b4228374676e68d42f8888b7ef8082a6f61959c0a8de0fa8144d4ddfa6f4d1bf2c3a1c8a8c6b59719de6fbb24a5861dfc7d2fe7cfbfda3cccafdc4549e4d3720db01120c4eba63d5843e0f3e8a3d39e3b4d55f1ec5742fbd04a041853b7fe476bb7aef5e032a659222501ac350dfa5f4b9c6733dc8ad92dd04d4abc7370c6d669e18f944ea0f28780a9c0422776aa79db16212c564603652e2e0cc0f88de75f1e4e542451d45a993652f3db8abbaf9552fad7924a7a01ba81eb1dd969175a02e01c6a0de71c2359aadf2fa512f1d5161219b9ffaffc47e0d9e7039f27641b0853f70818973f706be76bad70093ca19d109e00286dfef46bdb4637efcb8fe00b9f07baff8222a582814b8e101aebd80a16f8cbf8dc1e6bf8388013dcecd426cdf7de7e2dc5a7040b7f4c83e1f35586bfeb4068610e424c351f441de9979acc793153a445720e7fd2f0a5b1573b862cd131069714d36b555c74168a3bc0b72a19c478f0cfae135cb77d2ee086868dc638a1999ff585ad025fd558e3d1a1baab8b4695837eebebb7ebba9c0fbac6b0ab5c31b371c4ac60a2bd7037ee4e96b8d346f2be00aefd05ef5169af7dfde4d648be6426dc044938c268bcd8c9e7388ef069843b50d3c2b644a07c28c40c8b6c24dc7b73bee5ed5b9ce2765fa51092c219831cc9cdc67fc47661db20a6fb1cb961f28c92563f8d836784476058017abdf792f4d0efc12df374a9e2d55cc32f34aaf6b450dbc8cf748ec37c8413bd8ec1a8179fb2774728af402f0c903a1d456b0c872e20c23e22496da375ba975c54e808a182c429691e284de0cab052bca1149fc5861537674c9454fe9dd3b04535cc31c8e05fc5b5d4032de126a72f2e0798a3dcc37a757d7b16c6313c78a34cc3d48cf2e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855235b9b835b67d36a189192280122410acef293cc75320ce48ffaaa8719aaaa169bae6ab3b39ca5a2ba3455ce429fb3d079bd45d74e1d99a2a6669244da80cfc8803bd0dfa4c740e2589f851495bd682532ee9f817e032c98e09ecd283f4ee59f7fa98fee7f19fb8b22b137c9fba884e00a1c7be16d98b22a1b58fe874b17ab53f8d685c40145824bd10046b5ab281f28901aa257a626ffaed22c049a7bc0560dd726e44d150ba368f9f298723e3f8e5b854b346372e3dd947987780a2f64456d14152de5b7e8f7b4aa0be464de265cc62f8690eb6316420aeff6fcb9bf7f1a49a646ebb4c1b2c195b6106d1d16f0e92479f25521f08700a12cf35b45ee8881145ed4abb0bb104f713e4137d13c9ccf30dbb7a3419432499e0fa4ed7d66c282dce3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855091fbaab6e2f9a4482368f38d8d95795d563f7b5815bff6bd5aceed0698777deee2bcd4cb62536416836f07e3396871862e8497e6858f5d27f87818fc94375915bab75145af36b4eaec5f272887c4ab8b22e7168a3dc0c95bfc237d1a2a08a43bcc7f2d28db261214289ea071af2ee86b45c20a00869ab3e1d13ecec3e050bbc9a3000bc71cdbd4bf5963dfc5ad037197ffcb436d1f6b746d7765c38870f4b5f605d17b043f2c54c4ca5bacb49d9dde565ce76ace514ea59a13fd47f4d3f010b45b284ba6dd6367d91af8fd11f7d7ebe828c7b59259af6d29193b8f8ac8af703f45ea7b9144da23a71ec1634747e2b72f0c336400523631f0cb18e4cfae1cb745ec7cd01eb7f2c1d9bb1dfb7ae23d0b83589070d0c0c8e95c97f2a72659ded4ab71e485dcc3239bd3b824ca03e4e7bf72af7776c873b14b37fc810ca63a21f0ba220e32884d53ab675b665a3dbbe6f7ebffb0b6210241e91a03d567042fe19b29096f02e53124262edc86d0aa291241bfb259846a828c002a60869a1b0674db07f4c16cd7e01ea9d20f20dd0d192c13ef141f0714828dc50961a2a9b1088728e121f87f3e8b09cf5e556198995ea557eeb45f101b2010ef3ffb09ece3ed4e29c3ceab4f9d1052603b618e1aedc762dea944c14517fb641e38d99781ffd6e4205e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855b1c76cb2da9f497ba4d32c9f5e4790436567fcb3d72feb2813ea9e46991c0a67605a93e9ad188828a3bb8e4fd8ea3113b042a2d89161cc8fc174eda2d7531a2f7ff95ad65d92f2b8761ac0d0f10a2fe36773c1fa54efcc1ed95507b74ad9b910a7efdff60b0e9547c888f4d1f08e7bf8791a73995b35c676a15d6210ff89d76b2b1cc3c4b1379cbe4003a13086f3652a629dbc2ed163ef791c6adeec783f2b9b02a2a27f51e6a91170ef576f4077294093986753572e748b623ef409a73e61e88f5b5efe7546d8ad3770f495296d4c4c066f356a025d74b4890dae45920a2d25a52e72d69fd01f9568d55fe61ad16a6bce4326692e3a68adb3c603f438a1b3a9ccedbdd23198cc17cdcf458bf66f8095bf4a51af14c25d880af67a45bc704ab929e0bf9603266e2c8fc8e5616b071da75c3976c1ba84dd0049d5725bd0bd1ea300524ae6ecd8bb031f4606241324ef37d4ec1159fc28d1691aca044a415ad5d34676950ef609f1f9a48b4fdd4c2cb6e8db5c4557c69897ec324965d98ebd314fea4371080bbe8cc5c87627ac35b7bff2e7860492822e48ef8d131d325fba1ee5f015039f517010c891ea55112d8bfddf94d4e43f3e78e974ab6135437cdaf590945a1cf5985b091fce586059ec3eaffd40ac5e7324076943db9632437c7468d2f848fcff6bbfcb7c613fc63c02a47b5a24a68c430fd5216f770071082cde412436e67e08c2d417d235f0515e8fcbed69c81173f36df282a90c473695cfdaf211bbf0b4880ce3daf25d37cd2b162635c7689ee989fb87c6594bd7aa36c7f1d382b299c9965f1f8b3e04522e099a17e55d49fa970d9325db79b19c5e93ef9374305075067309ef3d905dcfd4223a9bee376237e82c85f2cb8323f6eceacef08abc47a6704e2aeed06d24a81c9ececca12bbf310fae1460b2c5bb86720cf317695db8c74d7b30efe6a4c263673a66f528f60f2d6447ce2f6a21a2d0e53178c6337a35f8afa62ceb139aa56a66e33a1911052c719b9f26ad738f09304f970a5890193f4228c7fa66fc7b92bbd732a75ab3e0d1e466b7d877f98cbee4a7cb576ca42f6b1cef901083ec0cb295abc88feb27d4ae0c861b49f16cc124fb8931aecff79ff264dee3020e32ca201cdbbc019a464d8ba695e728cd5e47bff40f4686ed6f65183828dd0f6c465cb2ffcaea5714b5f80c72723b4b7913cba9916e0c366eaf4908e87e116e900212f96665e7c12633fd4b77db4ede12315f9761c410255f780708dea0697e4e1322ab3fbb84db9b12151fb43864b31ed14b53584550bc6063c05ebc82750733cf2e458af2a355f98867a8d4ebcb6f101bdbe106277a1974e91ed7d73ae1e3b553f8d80e2deb6bd42375db9ab6067ee031b1cc69b72820b9598e070410d1cf6317155216970b4f8e7dfc280b0c1071f89fc19e08c9f21943d7159b980f523862394d70965b168def53c7a9fe384c05359656da49d6caac709f83d642fd5597e3b7428198a5b280c65c335cad9eaaa86414f63203249f2c5fe104bf551ce219afa0c6d9724cd6076a579e0ed51e883ac1ea87b702fce1dee8fbcbd813f70ebc44c11ca22751581242953972bab635a81185d5a859c5a8a46dfbb1819b92b23cee657e048ce995c986e35494af917a3aada4a1badcd9ad3f353045e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855c88493433b2aeb76eec29c44f957714b154e096820c22ee7a4b8ceb3cb9241ab2e4904e652706437af42383c7795a4410e806a1bdee397ac66a66376ac470b6a8d13f0b5ee09dde414b37ce663591c1b161809631b12f6aacb7834a2b914da5b47d7eaa47083b90f44ff116402724ebe2980d37d2b3cfbb9fc43ee3e23709a4c48d8f3a8094d5c68e5abeb1525e1bbfc2d8541cf6357a17d5554ca359b228a10b489b5f546e079e32ff06bc9863c1ecc74fb875ecea0b5f324b8e9321dc02ae4af5dc032ed5fce38351e66f1740f09b7e335192348f861acacb7046cf9efa7735e5989f183ee8bcf87cfd2ba526cdb24aeef7c7767a9d6f302d9cf57278862e8777f623b948a5323d6873edc61453ea5360660d904ccc33ae570fe1ddf13acbf476f60721e2efc916484ed8ce842cb5e71e3a43dedff00bb133b1a49d3bcabc7a82b768fc3325c9fff9d1bcea9a6b18c20a911be023edc067adac8ead7c6e85f7cdab3bb1b89e0e4efcbc34d2ae425339f67ed7a544441fd5702a9fc8c7820b8003039430cc544a8a3fc3260dfc35005621d736a93037353d946e6bfc10ce7a689a3bd7aa119d4c346c5a9351a884c31a13f10177d0c0c71efece99fbc255568748107ebe2eefe5fafbf6724eed4543118acfba08286acafd64037c39a77edd7e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855e3855be7134c2fabefb391e4da1e635386719c428dbf8b4f34a3084cb28d053bb3ea0727a848803a221d25e45caaa9a8a13699861ee877ba3daa97ff3c777dfd51134e8bd1d35dd0b5924792c058747e8c6b3bf9077e01737aaa4a56a3f4d66396dc5295d976907e06a72980184b4ba8280f59623bc34db1f2f670ef820cdacedef7d32114db9f419fdf7700b5c1d877effae808b7ada119bbd372497cb46548f9d34911636944e6bd72170237bc1ed6aa70016c09970f5a1cc1bd53669080660b93c3a2cd94cd1fd14da86f06bc783a28cea1032542f594c7addd09deed3e8e6e3b67c9a158fb7ebc7eb7053964e396b75189fa59b2525fb59189cc9595dc6535f1c72a39782276906804c38b500c4ce9a26b506a4ef8aa0999322e09fab90edeb431691d88bd03d87a43238976fa5e226a967bc81221349941b4a9d2016865cb64f8c32f1ea43c9d72dd01b13041c6f5182917aa47dcc34684d04219b61b292a0be54f6bcb1cd8f6166957ac85f1f68594c684dfdd00c5a61088c831ec1e1685e643c5e3fad0d3a328a4472078a177a42fea84ba47ff6ff16a45b227dea412fd1d954751e060a3fd8f5830877cd66e851d8573ee61a56815120ae20ebb613d8698ba4857bc55271133fa36a820383a9d4e0c66f7d144748652834579787a38937f3ad32753eaf9e6ee28fcb99dd55ce053cab3e95c85e2423d1d84fb83f3b0c0c4c3327aa77fbbefd29021eb8b4e8f400479fcfb98afd3d40f942009d0066e8ef3a0b1613bbcf576325060d5689917765655953dd36f8976ccca678070b21b04385419acb7ced717ac54384e0746b859a776e24e189c76f5f917f8c38c514fe66f5b51d77c407a7e42691c4f3f8de18978e952b6d6746f2459fdd719b984a776da12be37f9014267fb567384c7ea3ed96d2df94562d6274d685f5640831744eec3338990accaa392f5dffc0c3a03e4e4a15be12a9bb3342ed4bdb07fcb8e28949b04ac7c9d0a16fc431a1aa0140958cb92a954e6a0324f432e5adf18a0b795df98519828de053df7f5c160e55621052d2d6d8c39c4841be7ffd544811111c9e45465afcb2542fbddc2d1867aa9d5ac941022757ede8fc3b95b6482ee3cc101a87af874b5a48e6d46ec19efd02b79dcbbd4ccf574f51fcaca1b304c75617dab94f66f92973b5faf46c81f30fe4d273054da57f48cd75f27bcf552f6f964427ebdb1273777ebbac0f9b34540516d8993ee996b235742000cd0150972e82fdf6f14ee0bba3b7a781d0916c3e48f20c84bb14b291e3c802ed61da7eb046beaf14b0574c3eb8ad01c680ed4756f772bf5a070ae249e5666f4ed1326ac8bdf5e8a8a6f36837d4ea0a04eb68aa31f341074a9c87d7f73bd0d9b18eb5b34a46e45db548fcc44a7ee3c92201175227b01e09b70c62feb3b17e942768c4c84ebf634f9dafd7eb250113c36d1a0c358cc7c76e8df4e0ee2939d213bb8ec511cd71c351eb1e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855b88aae51327eb39fb7d3b829dae484731c3826f6f0ccd5c8e40d22ed8cbd6a76127e6c86e3cc2b12f538bb8f1cf696f46554174d67539ddc3c80aa666d8887b8a8e661ebe179db78eac1300490b574daa6df33e5ccef6c05d674ec160c03d60ba77da9e97d165e14f4c441a000d78ff72c00f0f2ce6f192ea07ac4e096fa60d5809cbffe4dc273c47355f8a960f7aec8657c821cc59072f9fd124b01105bae58d888ed6e2f5c92f3076d6ae2ef17a1aa15b6101bbe106db2e9f7f527bb0eea0e1c88efb7c180c45cc73879241c3d3c0570fc5c2a793389ea8cd6baeef70295f437d6a8b04758a3d7ec052802d7260957a89ee867d107b1614e4922904917e32dceaa0a32089b4b6f86a528fc641cf394eb57c849231b625b703da3b31e1a994ec04ef15240ff7559f447d5ce724fb0c78b10cced50075fe66cd03e9ec601c8951c99c8d53baa07b5206b7706391e9a58d76ff3a6fd829f8224b116c27fa9ddd2ebeb656338577b39c66125b8156058ae80ae709fc766a503c3cb87acd651e27ac03a1d8f3f43fac85bfac5d96bd33d511ba19712f2fe3264953a35f9f42222bb7574ba17c3d8e2d4021d795888d9f13e4cdef87cb40ccf41ea00a18c231835c5a8d7ba1f2a8a5ad77ee358cda404041683cfeb70ab6954865fdad550330df6d5f89be41bd14175a520b0ff68eb6a9a2b405aca83eeaead9f1b195b5c75ac1e9959aa7dc992e5a40092a50f0acf70ecf38a4b88fb95d48bd79953dcbc9b2ed2a99fac378ee02e7c3e673bc7118d1bf951e1ef551402bae0602d0a0bae1783090ecdbed64ec94ad1282aaa6c6ea0229ecb8d1211239942a28b45f354bbd7a217a5e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855cd64ba04b4493da746e8449f331d85a905b45b753248b6f80263a032b2b0669fdb61bc3b831a621aab5659cd4d6a29888498a2312a27536b01452f91c5709f9ea0e2eb116e493d9afd0f1b67f5e77e0a8d2f22a91b573ca94c58cf7fb9b350b8ad4b1ceb300f34112dcd39b1770cd971338bd99d10ea00e4e051895512d7238b85606e0389e1795f4b17a9bda8f16b3544bd1e78c139a8ed487605922f88ad088bfdc969e2c8637be0fd94f4bf5c5bd34ad01fc4b42fe84ddaa8087c0c02d31cc5f805b0a3595870b738f5b2b69b03b24565869e75b931f3fa7ff64962011a2af56000d073b6bf790141c403c85d6cb2cda4d0afb579255e9a8c3f2ad9874070645c99e4eb11aefcda7f341ca97dc119ddfeb83f93f2ef8246ccadda3c8993f3396baf484c62b21accd9b0cb1b80ba9296c2561b133e731da9ee2251873470698bf9de5d9bb027317fd0d6bdbb03d9be6c5f57baa9babd47b269cf60aa5ac438b87532886beb159053dfd2335f667382776e77a86232fac4239cf0730f27295d99ef37795e6049a17b3ed246a42e26dd5dddc8a38fccaeb0993ebf1d1d3508257ca03467fc3e2acdbd0c3a3a39520c497faf85d34abf6887c6e17cbfba1999b5641b4c4b2447559d20267419aede18e88bc6e0010fdb545bc6d2fa4d745f896ef765da9ec58be76bcb55a330b40e4fbde274631178ec411c2e40c98efd4ba147f2e85cc8487238081a4a3ade31aeee1acd034333b2e28684cfad7d5ad70ab6bc46ce53dacc1c474f83905aa95d68502a84476c76314eb092f15fdf15d9870ed5a915642ce889cd729df6e17002e0839447fb5ec7ba1b5d6f0ef7723249c802e034470412aa2b84ad8a9c82d02a350d671a1e82e0af3550ed42d8a6ad83a7ff7a0c918945a197a908bbe91373a6a475b019d2ad39a1d0aa85442ee68a9f76af6134638dffefe1f132c1fdb575421eddfe9433e37edcbfab2716c1566a4c1301fc842debcf7903a6a00206f3a6e2fcda8c2199029c9a34d3362d41a50197cce3d55143a272a4d6f9795ab44b1873aea3da088a08de7ebb866355125bb8a4b265410fce9c50cf49e8bf00579698b159d05adedb61c7a6750cc2fba929ce732dfa104c049e6e3223db729a2148aa10bc1251a4c1209c4af75bd77e4c14d0001af4d91c526e2963d9b5fc81684c0601e25e64d6c21d2defa7ee1f3c5c6a5702e83a63d4566b0360affe8b273b31090c9ff2773d6677bc62bd80e34fdc5a132b4ce98c8e8881745de21dada686ab4d7c0cf7bfb42cd0a52b2419467e72c9f0164a84598bcd4af610dd258db2390251fbfbd30f0e19975e1895bd639a2e32517fc2594a6d849bb185d8115745d4a5cc1af86635cc5503465b9329d28575485afd911d67ae6e4e5b3a4297bfcbda77d8043536e6acbe4ce5936e515179c77b2b9e0a2147885c162a01c2ca77b81f83253b889b46d864c4f6b007d672fd980fc65d29e25a54081c01346829c25a489fa06a89930ed41becc14c6f8d98ed5e0e6e3d8d3e32dac95bc77b314307603ed55b55c840b21e11cd7eebe3582fbfb1fb2dbd8d803f76f8ab26126eb9cdf57e4902e475513fe5b6b82e59252cde1fc5ed48a823de8310674bb0d321a8f62ad5bec2006555e814873b5db03c9f17b705c6fdf74f0e4446e01bdb22f64f2669ebc63cfad5227623f28c839b85da41e8dbd9004d274ac2ed929ab33337d99e5332493624cb351ecd7fcff169df5f10492aa62f50beaf1d11535dc7347e6880cf9525f8f2f3a9c04787fb9133984d046d5f69ca9c174d1a6bceca2928c23f5b2711db06800e94425d629bbcdd70e129521e8c34b6946928dbec060472535b8d3c9a1d13e29f33bb07ffbe06f17e7b611e7b871076af60b61f30dcb9072458867309f67bd313a71963b981bbf346ccd2fdd69a829c2701aa85807eb59d75857b2fb11b585eeeef16daf2900e9e24cb7f07f33e1017808ff73c0fff114e8e6b7c96c79b6a5734f43422d4dbffcf24626c952574b16b2028ccb703df0b369834fca8ac9b4dc2f5547eaa400d5dd9ec1eaef672c96c4450a72511fbf990a7e17f7f4d52dcf78a49e3e6907e124a8480ec138acacaa38a01dcb887bd3469f43fa2c65efbecbbaa7f4b277265c1f9614b68995ed9a8b5bc885b10ffb4fffc40d35b1b8839d6e9f04c9c7eb4cc8171712d3316304f8a5a2a6e3bbe81803d5809f0eec00d95f130c69812d11623e7db07cbf6a9266f08a0793e213083d91bb0cfe88ebf472562cc520eb2951bacd3aa55f26430a41b77c6627cc7adbc769ce8debac342a76e3d89186e8afb330543f04256f8c881a48adeded1a595a6a0e58a12fc3baca0f692ef3f94bd1cf5575384944fcb533055563402867475073653cf21ef5854d9ba9a75567b044075c4799d01b214a8a1fd3360cb1d58cbc0736b20f4be2ae115201d5ef23c5a1a78d2e8649ccb58f18004c3734a7c39ad208455609954951031cc1fdf09d1155e5bf4b70367e0a8f8bba0edc9a508d6a80bc935a078791d63c701446abcdc04ba45427766930b2d529ae3d39ca04dd8de1bc553bd270134f0a28e3eb6b7fda85b9ef95e0f1227b8f6a931aeefdfc17b0e5ff788928748fa5e8ed2c3f8af0a62f73aae7b34283b373a04e23106b6672a5325b5a9b75cae525df601f801156cb262e94fe60d5207b64d5a5c62c1ccda920acf8ca453092e5e53a85016c05a16b32de3a7d469777a5564545bec6f95f02f50df9e9adc27335a46f467f94a66029dcc60b3edfa38aebec8b086c84d987521561e9cf729846f3ed6a98ad29d932881240fbb5da217ea0164b67ff6e20f6bebf8f6d11a4a69c4c37db0b26ce9b7fb623021cbf5ed05ebb7f41402e107ad714da0e476cea2f8098e5596b85e028d7a065a8382f1aeb5f91b1f4577a212eb4dc271b30f4c1b07b0b7e4a1057a2b9501d07e487fafdcad8945aaae19192f6bef5c2cce9c85f07b34004804f83af7778ecd2f2cd8f978e63be3e8d2f08cfa6ec24e56ca9c135ef34b4c018964da8d093094c6a91e397a90fd088322d0a75a4e8a9486b478e61c2991955548a84f0754fc1f83abf257ba38a2999ddee37df8e6dfe81f9f2ce5c55d0cca443192fb07090c978a50829140eac65bbc3600fef4ea37b1ac278ef7db92f57b81fc3a0a404bf27f311f80366619cb781304d1467d3b23f39eebe1d3c7010c81674a5d5d356ae8f26017bd2168c08380ffd828af4b241287ce3d9f9320cb7218e6e5ffec7e22cb9cfcbdad2c3003db6624c98dce57d511f49874991e84d17e8bf5020651d5bbafd401f4a43dad381afb6d6a8bad2c8fe29821fffff6ff8e0c8da00f635f0663691d51522b37804aa90f43953ab0dfe9e707db19f5e5b0fc78949281e60c0411c9a6f77a7790d76b61fc4ab8bbda4e8840dc9e5a84f5021622a8784cc47504eed240fbeb2f28b507b884c13cf5824d533a404a7a1ec439a45538df28d95d3854de9978620e9b3eebc78c77e26f099a96e1b05b264eba14b8576d9bc2add6363bf351371ea7116b82fa6267de79801c574413a61f0bb9cfb2eba45c3d7bffe85659fe523b0b23e7f4bf1d8e0cd4957bfad2dc48b5be2a3b94c141d6c3a45a4ff7bab70f4f6ab9c08421c2d31a1d8d1a7276bdfa5529345101189a5ff5e2158a4972bd9fd3942783c923310d48c4f1fc3bf158fd6ff3d57edb030ed55246e5c18e36e602e3858e0e6a3c6b6ca9cd5c13adc19162b53b667ae233045527b3c2084dcbbc80f4d84882a8cb736afffbe5a5496ac29ead356210e372c58bffdaae35bd2d75fcca4e4f501942855a0313d4462e5af98e29fb4c2083eea85754e139b9d55cb246ee5a71acb7567268996f90813f80fa8b02b70fff037113ae10f866082815fc5bd1f0f89ed7cd8cd2f39499c64cef271884f972b92c904b6d2fd5260ade3844beb085430666b87d8f641e49a100cc0b34f1e6eb802f3a0db096b85f05764b0221a3cc9f24a32b8b0700bc8f55b29c77547f07b86ca2f59c0679cf7de73e5905eadb37aa6a56a15ceaa1ee0ca46ab892124e7f6a2d820010ca4543342ddb57eecc261429d936fb8755ec97e92b00da3bc78ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b90386632e0c01358b53168341006dcc8fc6a924ae89c9ea5c8771831b0a771751e0kiwi-ngkiwi-ngkiwicompatrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootpython-kiwi-9.24.43-150100.3.90.1.src.rpmpython3-kiwipython3-kiwi(aarch-64)@@     /usr/bin/python3kiwi-systemdeps-corepython(abi)python3python3-PyYAMLpython3-docoptpython3-lxmlpython3-requestspython3-setuptoolspython3-simplejsonpython3-xattrrpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)screen9.24.43-150100.3.90.13.63.63.0.4-14.6.0-14.0-15.2-1kiwi-man-pagespython2-kiwi9.24.434.14.1gH[@g4g4fըf@f'@f'@f'@f@fg@e~@ee5@ee]@eB=e;@e:Tdddddgd~d d6@d6@d*d%yc@c[@c[@bbw@bBb\@b\@a@a@av@`y|@`t6@`J@`J@`J@`J@_@_j_@_@_ǁ_3_@^n@^2^^@^H^H^@^@^@^@]f@]f@]f@]]@]+]]]@]@]rJ@]H@]H@]H@]H@]H@]H@]H@]H@]H@]%@\C@\@\v{\n\R@\R@\P@@\@\@\@[G[F[F[F[R@[i@[@[@[@[t[t[t[t[t[t[t[t[t[#@[[[@[[:@[[[[Q@[Q@[[[@[@[s[D[z@[z@[z@[z@[z@[z@[z@[z@[j@[j@[j@[j@[i[i[h8@[h8@[h8@[h8@[h8@[h8@[h8@[h8@[a[a[a[`O@[`O@[^[^[^[^[[ @[[ @[[ @[Xf@[W[Q[P}@[L[L[L[L[L[L[L[L[L[L[L[L[L[H@[H@[H@[H@[GB[E@[E@[E@[E@[D[?Y[?Y[?Y[<[6@[*A[*A[(@[!@[!@[[[[[[{@[{@[)[)[)[)[)[5@[[@[ @[ @[ @[ @[ @[ @[ @[ @[ @[@Z@Z@ZZZZZz@ZZZ@Z@Z@Z?Z?ZK@ZK@ZK@ZK@ZK@Z@Z@Z@Z@Z@Z@Z@Z@Z@Z@Z@Z@Z@Z@Z@Z@Z@ZZZ@Z@Z@Z@Z؄Z؄Z؄Z3@Z3@Z3@ZZZZZZZԐ@ZZ̧@Z̧@Z̧@ZUZUZa@Za@ZZľ@Zľ@ZlZlZlZZ2@Z@Z@Z@Z@Z@Z@ZZZZZI@Z@Z@Z@ZZZZZ`@Z`@ZZZZZZ@Z@Z@Z@Z@Z@Z@ZkZkZkZkZw@Zw@Zw@Z%Z@Z@Z@ZZZZ1@Z@Z@Y>@Y>@Y>@Y>@Y:Y:Y:Y:Y:Y9<@Y9<@Y9<@Y9<@Y9<@Y9<@Y9<@Y7Y7Y7Y6@Y6@Y1S@Y0Y0Y0Y0Y0Y.@Y.@Y.@Y-^Y-^Y, @Y, @Y, @Y*Y(Y%uY%uY%uY%uY$$@Y$$@Y$$@Y$$@Y$$@Y"Y"Y"Y@Y@Y@YYYYYY;@Y;@Y;@YYY@Y@Y@Y@YYYYR@YR@Y@Y]Y @Y i@Y i@Y.Y.Y@Y@Y@YYX:@X:@X:@XXXXh@Xh@Xh@Xh@XXXXX@X@XsXsXsXsXsXsXsX-X-X@X@X@X@X@X@XXXXXX9@X@X@X@XP@XP@XP@XXXXX @X @XӸXg@Xg@Xg@Xg@Xg@Xg@XXXX@X@X@X@XX~@X,X,X@X@X@X@X@XƉXƉXƉXƉX•@XCXCX@X@X@X@X@XXXXXXXXXXXO@XO@XO@XO@XZXZXZXZX @XXXf@Xf@Xf@Xf@Xf@Xf@XXXX @X @XX+X@X@X@X@X@X@XYXYXYXYXYX@X@X@X@XXe@XpXpX@XXXXXX*X6@XXXXXXAXAXAXAX@X@XXX@X@XXX~@X~@X~@X~@X|Xx@XtXtXtXs{@Xs{@Xs{@Xs{@Xs{@XY@XY@XVz@XVz@XS@XS@XRXOXOXOXN@XIK@XIK@XGXF@XF@XF@XEVXEVXEVXEVXEVXEVXEVXEVXAb@X@X@X@X>@X>@X<@X8'X6@X6@X6@X6@X6@X43@X43@X2X2X2X2X2X.@X.@X.@X-X-X-X-X,J@X,J@X,J@X,J@X*X*X*X*X*X*X)@X)@X(UX(UX'@X%X$a@X$a@X$a@X$a@X#X#X#X!@X!@X!@X!@X!@X!@X!@X!@X lX lX lX@Xx@Xx@Xx@Xx@Xx@X&X@X@X@X@X@X@XXXX2@X2@X2@X=X=X@X@X@XXI@XI@XI@XI@XI@XI@XI@X X X X @X @XXXXX`@X`@X`@X`@X`@X`@X`@X`@X`@X`@XXXXXXXXXXXXXXXXXXXX@X@X@X@X@X@XWw@Ww@Ww@Ww@Ww@Ww@Ww@Ww@Ww@Ww@W%W@W@W@W@WWWWW@W@W@V>@V>@V>@V>@V>@V>@VVVV͛@V͛@V͛@V͛@V͛@V͛@V͛@V͛@V͛@V͛@V͛@V͛@V͛@V͛@VIVIVIVIVIVIVIVIVIVIVIVIV@V@V@V@VɦVɦVɦVɦVɦVɦVɦVɦVɦVVVVVVVVŲ@VŲ@VŲ@VŲ@VŲ@VŲ@V`V`V`V`V`V`V@V@VVVVVVVV@VwVwVwVwVwVwVwVwVwVwVwV&@V&@V&@V&@V&@VVVVVVVVVVVVVVV1V1V1V1V1V1V1V@V@V@V@V@VVVV=@VVVVV@V@V@V@V@V@V@VT@VT@VT@VT@V@V@V@V_V_V@V@V@V@V@V@V@V@V@V@V@V@V@V@V@V@V@V@V@V@V@V@VVVVV@V@V@V@VvVvVvVvVvVvVvVvV%@V%@V%@V%@V%@V%@V%@V%@V%@VVV@V@V@V@VVV<@V<@V<@V<@V<@VVVVVVVVVV@V@V@V@V@V@V@V@V@V@V@VGVGV@VV@V@V@V@V@V^V^VVVj@Vj@Vj@Vj@Vj@VuVuVuVzVzVzVy;@Vy;@Vy;@Vy;@Vy;@VwVwVwVwVwVwVwVwVwVwVwVs@VrVrVrVrVrVqR@VqR@VqR@VqR@VqR@VqR@VqR@VqR@VqR@VpVpVpVpVpVpVpVpVpVn@Vn@Vn@Vn@VjVjVjVii@Vii@Vii@Vii@Vii@Vii@Vii@Vii@Vii@Vii@Vii@VhVhVhVhVhVhVhVhVetVd#@Vd#@VbVbVbVbVbVbVbVbVbVbVbVbVbVboholecek@aaannz.eumarcus.schaefer@suse.commarcus.schaefer@suse.commarcus.schaefer@gmail.commarcus.schaefer@suse.commarcus.schaefer@gmail.commarcus.schaefer@suse.commarcus.schaefer@suse.commarcus.schaefer@suse.commarcus.schaefer@gmail.commarcus.schaefer@suse.commarcus.schaefer@suse.commarcus.schaefer@gmail.commarcus.schaefer@gmail.commarcus.schaefer@gmail.commarcus.schaefer@gmail.commarcus.schaefer@gmail.commarcus.schaefer@gmail.commarcus.schaefer@gmail.commarcus.schaefer@gmail.commarcus.schaefer@gmail.commarcus.schaefer@gmail.commarcus.schaefer@gmail.comjesus.bv@suse.commarcus.schaefer@gmail.comdcassany@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comfvogt@suse.dedcassany@suse.comdcassany@suse.comms@suse.dedcassany@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comms@suse.dems@suse.dedcassany@suse.comms@suse.dems@suse.dems@suse.dedcassany@suse.comms@suse.dems@suse.dedcassany@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comms@suse.dems@suse.dems@suse.dedcassany@suse.comms@suse.dedcassany@suse.dedcassany@suse.comdcassany@suse.comms@suse.dedcermak@suse.comdcermak@suse.comms@suse.dedcermak@suse.comdcermak@suse.comdcermak@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.dedcassany@suse.dems@suse.dedcassany@suse.dedcassany@suse.dedcassany@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.dedcassany@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.dedcassany@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.dedcassany@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.dems@suse.dems@suse.dedcassany@suse.dedcassany@suse.dedcassany@suse.dems@suse.dedcassany@suse.dedcassany@suse.dems@suse.dedcassany@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.dedcassany@suse.dedcassany@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.dedcassany@suse.dems@suse.deadrian@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.dems@suse.dems@suse.dems@suse.dengompa13@gmail.comms@suse.dems@suse.dedcassany@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.dedcassany@suse.dedcassany@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comdcassany@suse.comms@suse.dedcassany@suse.comms@suse.dedcassany@suse.comdcassany@suse.comms@suse.dems@suse.dems@suse.dedcassany@suse.comms@suse.dedavidcassany@gmail.comms@suse.dems@suse.dems@suse.dedcassany@suse.comdcassany@suse.comdcassany@suse.comms@suse.dedcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comms@suse.dems@suse.dems@suse.dedcassany@suse.comms@suse.dedcassany@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comms@suse.dedcassany@suse.comdcassany@suse.comms@suse.dedcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comdcassany@suse.comgmoro@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comms@suse.dems@suse.dems@suse.dedcassany@suse.comdcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comms@suse.dems@suse.dems@suse.dedcassany@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comms@suse.dems@suse.dems@suse.deMichalMarek1@eaton.comms@suse.dedcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.detom_schr@web.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.deamajer@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comms@suse.deMichalMarek1@eaton.comms@suse.deagraf@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comms@suse.dems@suse.dems@suse.dengompa@datto.comms@suse.dems@suse.dems@suse.deMichalMarek1@eaton.comMichalMarek1@eaton.comrjschwei@suse.comms@suse.dems@suse.dems@suse.dems@suse.derjschwei@suse.comrjschwei@suse.comms@suse.dems@suse.dems@suse.decyberorg@cyberorg.infodcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.deMichalMarek1@eaton.comms@suse.deMichalMarek1@eaton.comms@suse.dems@suse.dedcassany@suse.comdcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comms@suse.dems@suse.derjschwei@suse.comms@suse.dems@suse.dedcassany@suse.comdcassany@suse.comdavidcassany@gmail.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comdcassany@suse.comms@suse.dedavidcassany@gmail.comms@suse.dems@suse.demartin.mohring@5eecosystems.comdcassany@suse.comdcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.deMichalMarek1@eaton.comms@suse.dems@suse.dems@suse.deadrian@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedimstar@opensuse.orgms@suse.dems@suse.dems@suse.dedcassany@suse.comms@suse.dems@suse.dedcassany@suse.comdcassany@suse.comms@suse.dems@suse.dedcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comdcassany@suse.comms@suse.dedcassany@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comdavidcassany@gmail.comms@suse.deJellyfrog@users.noreply.github.comJellyfrog@users.noreply.github.comJellyfrog@users.noreply.github.comJellyfrog@users.noreply.github.comryan@desfo.orgryan@desfo.orgms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comdcassany@suse.comJellyfrog@users.noreply.github.comms@suse.deJellyfrog@users.noreply.github.comdcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedimstar@opensuse.orgms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.deJellyfrog@users.noreply.github.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.deludwig.nussel@suse.deludwig.nussel@suse.deludwig.nussel@suse.deludwig.nussel@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comdcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comdcassany@suse.comms@suse.dems@suse.dems@suse.dedcassany@suse.comms@suse.deJellyfrog@users.noreply.github.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.deJellyfrog@users.noreply.github.comJellyfrog@users.noreply.github.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.demartin.mohring@5eecosystems.commartin.mohring@5eecosystems.commartin.mohring@5eecosystems.comdcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comdcassany@suse.comms@suse.dedcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comdcassany@suse.comdavidcassany@gmail.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dengompa@datto.comdcassany@suse.comms@suse.dedcassany@suse.comdcassany@suse.comdcassany@suse.comms@suse.dems@suse.dems@suse.dedcassany@suse.comms@suse.dedcassany@suse.comms@suse.dems@suse.dedcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comdcassany@suse.comms@suse.dems@suse.dedcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comms@suse.dems@suse.dedcassany@suse.comdcassany@suse.comms@suse.dedcassany@suse.comdcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.detoms@suse.dedcassany@suse.comdcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comdcassany@suse.comms@suse.dems@suse.dems@suse.dedimstar@opensuse.orgms@suse.dems@suse.dedcassany@suse.comms@suse.dedcassany@suse.comdcassany@suse.comdcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comms@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dems@suse.dedcassany@suse.comdcassany@suse.comms@suse.dengompa@datto.comms@suse.comdcassany@suse.comtoms@suse.detoms@suse.dems@suse.comms@suse.comms@suse.comtoms@suse.dems@suse.comdcassany@suse.comms@suse.comJellyfrog@users.noreply.github.comms@suse.comngompa@datto.comms@suse.comdcassany@suse.comms@suse.comngompa@datto.comngompa@datto.comngompa@datto.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comdcassany@suse.comngompa@datto.comngompa@datto.comngompa@datto.comdcassany@suse.comdcassany@suse.comms@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comms@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comms@suse.comms@suse.comdcassany@suse.comms@suse.comms@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comdavidcassany@gmail.comdcassany@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comngompa13@gmail.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comkukuk@thkukuk.dems@suse.comms@suse.comms@suse.comms@suse.comms@suse.comkukuk@thkukuk.dekukuk@thkukuk.dekukuk@thkukuk.dems@suse.comms@suse.comms@suse.comms@suse.comdavidcassany@gmail.comms@suse.comms@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comms@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comdcassany@suse.comms@suse.comms@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comms@suse.comdcassany@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comdcassany@suse.comms@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comtbechtold@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comtbechtold@suse.comms@suse.comms@suse.comms@suse.comtbechtold@suse.comms@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comms@suse.comms@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comms@suse.comdcassany@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comdcassany@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comdcassany@suse.comdcassany@suse.comms@suse.comdcassany@suse.comms@suse.comms@suse.comms@suse.comtbechtold@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comjmason@suse.comjmason@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comcbruckmayer@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comtoms@suse.dems@suse.comms@suse.comms@suse.comms@suse.comtoms@suse.detoms@suse.detoms@suse.dems@suse.comms@suse.combo@suse.debo@suse.dems@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.combo@suse.debo@suse.debo@suse.debo@suse.detbechtold@suse.combo@suse.dems@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.combo@suse.debo@suse.dems@suse.combo@suse.debo@suse.debo@suse.debo@suse.debo@suse.debo@suse.debo@suse.debo@suse.debo@suse.dems@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comtom_schr@web.detom_schr@web.detom_schr@web.dems@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comtom_schr@web.detom_schr@web.detom_schr@web.dems@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comtoms@suse.detoms@suse.detoms@suse.detoms@suse.detoms@suse.dems@suse.comms@suse.comms@suse.comtoms@suse.detoms@suse.dems@suse.comtoms@suse.dems@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comtoms@suse.detoms@suse.detoms@suse.detoms@suse.detoms@suse.detoms@suse.detoms@suse.dems@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comtoms@suse.dems@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@novell.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comtoms@suse.dems@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comtoms@suse.dems@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comtom_schr@web.detom_schr@web.detom_schr@web.detom_schr@web.dems@suse.comms@suse.comms@suse.comdvaleev@suse.comms@suse.comms@suse.comtoms@suse.dems@suse.comms@suse.comms@suse.comtoms@suse.dems@suse.comtoms@suse.detoms@suse.dems@suse.comtoms@suse.dems@suse.comms@suse.comms@suse.comtoms@suse.detom_schr@web.detom_schr@web.dems@suse.comms@suse.comtoms@suse.dems@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@novell.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comtom_schr@web.detom_schr@web.dems@suse.comtom_schr@web.dems@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@novell.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@novell.comms@novell.comms@novell.comms@novell.comms@novell.comms@novell.comms@novell.comms@novell.comms@suse.comms@novell.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comtoms@suse.detoms@suse.dems@suse.comms@suse.comms@suse.comms@suse.comms@suse.comtom_schr@web.detom_schr@web.detom_schr@web.dems@suse.comms@suse.comtoms@suse.detoms@suse.dems@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.comms@suse.com- Fix boot support for ISO media on ppc64 add CHRP boot support for ppc64 and add xorriso option to avoid file name reduction to MS-DOS compatible 8.3 format Co-authored-by: Steffen Winterfeldt Co-authored-by: Michal Suchanek - Update doc config to match with latest theme- Set grub-bls default to false for SUSE on SLES15 For the time being, SLES15 distributions cannot handle KIWI's default to use BLS with GRUB2. Until they catch up, revert this for them only. bsc#1233196- Fixed resize of dos table type on s390 On s390, parted is used to detect the partition table type. In contrast to blkid the name for DOS tables is reported as 'msdos' and not 'dos' which impacts several conditions in the kiwi initrd code which checks for 'dos'. This commit fixes the get_partition_table_type() method to return a consistent table name for DOS tables. This Fixes bsc#1228729- Update virtualenv setup types-pkg_resources got dropped from PyPI- Fix kiwi-repart restrictions The kiwi repart dracut module reads a profile file and if it does not exists it dies in the initrd. However, that profile file is not mandatory for the main resize functionality. Thus this commit turns this into a warning message. In addition the module-setup for 90kiwi-repart makes sure to include the required and optional profile files. This Fixes bsc#1228118- Do not exclude the .profile env file by default kiwi's initrd modules read a .profile file which gets included into the initrd produced at build time. To allow rebuild of a host-only initrd from the booted system this information should be present such that it is possible to re-use kiwi initrd code. This is related to bsc#1228118- Add rd.kiwi.oem.force_resize boot option Forces the disk resize process on an OEM disk image. If set, no sanity check for unpartitioned/free space is performed and also an eventually configured configuration from the image description will not be taken into account. This Fixes bsc#1224389- Set default output console to gfxterm for grub If no console setting is done in the image description for grub the default output console is set to: gfxterm and the default input console is set to: console. This Fixes bsc#1219074- Live ISO Wait for udev events after repart Make sure to wait for the event queue to become empty after the creation of the write partition. When kiwi calls the code to create the write partition this emits new udev events. It's important to wait for the event queue to become empty to avoid a potential regression on the use of the device nodes. In the processing of the events it can happen that a device gets removed and re-added. If we don't want for udev to process the entire queue it can happen that the wrong block device is used. This wrong selection is only possible because the way how hybrid ISOs are designed exposes both, the disk and the partition for the root device with the same label. This Fixes bsc#1213595- Fixup cleanup of zipl templates Make sure temporary modifications to the zipl template and config file are not effective in the later system. This Fixes bsc#1221469- Fixed grub terminal setup The grub terminal setup is divided into the setting for the output and the input console. For both settings different parameters exists. So far kiwi did not differentiate between the two parts of the console setup and that could lead to a wrong setting if only one value is provided in kiwi's console= attribute which lead to the grub setting, GRUB_TERMINAL=value. If value is set to e.g gfxterm grub takes this for both input and output and it's obviously wrong for the input. To make this less error prune the kiwi code changes with this commit to set GRUB_TERMINAL_INPUT and GRUB_TERMINAL_OUTPUT rather than GRUB_TERMINAL and also runs sanity checks on the provided values if they are applicable. The information for setting up the console in the schema stays untouched though. That's because it's used for all bootloaders and also because grub supports multiple values for the console in/out setting in one GRUB_TERMINAL variable even though kiwi does no longer use it. To make this clear for the users also the documentation for the console attribute setup has been updated. If we want to wish two distinct attributes for input and output console settings a schema change and also differentiation between bootloaders is needed and that I only see for the kiwi-10 branch if at all. This Fixes #2419 and Fixes bsc#1218095- Fixed regression in GRUB_SERIAL_COMMAND setup The condition to write the serial line setup was broken. This commit fixes it. Related to Issue #2419 and Fixes bsc#1228808- Fix overwrite of kiwi_oemunattended In case rd.kiwi.oem.installdevice is set, there is an overwrite of the kiwi_oemunattended setting. However the variable was set in local scope of a function and therefore the change was not effective in other methods which also evaluates this variable. This commit fixes it such that the overwrite happens in the early initialize method which provides the environment for all code running in the dracut module. This is related to jira#PED-7180- Allow install disk overwrite from cmdline Add rd.kiwi.oem.installdevice=DEVICE. Configures the disk device that should be used in an OEM installation. This overwrites any other oem device setting, e.g device filter or maxdisk and just continues the installation on the given device. However, the device must exist and must be a block special. This Fixes jira#PED-7180- Add partx to module-setup of kiwi-lib too Part of bsc#1216465 (cherry picked from commit cf125437776b07e77900b6a53aeb065cd1572367)- Change partprobe fallback to partx Informing the kernel about a new partition geometry can be done in a busy state and is also effective for new devices and new mounts based on the new geometry. busy state mounts of course will not see it until swap of the busy state but a complete refuse of operation like it happens with blockdev is imho not required. Just as partprobe, partx is less restrictive on the busy state. That's why this commit changes the partprobe fallback to use partx instead of blockdev Part of bsc#1216465 (cherry picked from commit db9042af8ed36ede0dfe9572d9fe2c546c25b901)- Create live persistent storage without busy state With the former logic the live ISO was already mounted when an eventual persistent storage partition was created. This leads to an issue on re-reading the partition table, not for all but several tools. This commit changes the order of tasks such that the setup of the persistent write storage is performed prior mounting the live ISO. In addition to this change an alternative method using blockdev to re-read the partition was added in case partprobe is not present. This also allows to get rid of the parted dependency which provides partprobe Part of bsc#1216465 (cherry picked from commit 53ddc4ecbedd6dc98294e4d0387370908f0bc657)- Fixed linter errors Fixed white space issues now reported by flake8- Fixed unit tests- Temporary disable mypy checking The current code base is not mypy clean when called on newer versions of mypy. This will be fixed with the next full upstream port- Update CI workflows Update tox and workflow files to run with a newer tox version as it's been used upstream- Cleanup condition for SECURE_BOOT=yes|no The statement serves the purpose for an if/else construction to become a better read. In addition delete the probably left-over print statement from the test- Add SECURE_BOOT no when the firmware is efi This Fixes bsc#1211102- Add alternative re-reading of the partition table To inform the kernel about disk geometry changes, kiwi uses partprobe as a primary tool. However it is provided by parted and not necessarily available due to the package requirements on the dracut module. A second attempt via blockdev which is expected to exist is therefore made by this commit Part of bsc#1216465 (cherry picked from commit 4ab089ac5244c1d867be850ec99bc81814466bf7)- Adding a comment to explain the s390 specific path Signed-off-by: David Cassany (cherry picked from commit 8b9c5d766eb2113e55132eb4b4043c960b981b90)- Use parted only in s390 arch This commit ensures parted is only called in dracut-kiwi-lib for s390 arch. It also fixes the spec to only require parted for s390 builds. In addition parted requirement has been removed from dracut-kiwi-live package since parted is not used in any other dracut module beyond kiwi-lib. Signed-off-by: David Cassany (cherry picked from commit 0947fce33a39eaa7c4f1f83481782c41b4e15488)- Expand DASD partition table with parted Fixes bsc#1209247 Signed-off-by: David Cassany (cherry picked from commit b12ebcedb7cb18e05ce6a19e3312c16f5c5529a9)- Add parted dependency for s390 Signed-off-by: David Cassany (cherry picked from commit cc993f47cd93551ae6b87ca9ac39cb2291ab57f6)- Use rsync defaults to sync the initrd root-tree This commits makes use of rsync default options to sync the root-tree of the boot image for custom initrds. Fixes bsc#1207128 and bsc#1221915 where it was noted hardlinks were not preserved inside the initrd. Signed-off-by: David Cassany (cherry picked from commit ab4abf97dade534e51b32ad04b7202f649e40c4b)- Fixed kexec options setup in kiwi-dump-reboot The dracut module 99kiwi-dump-reboot creates an options list for kexec. Under certain conditions the options list can contain multiple spaces which leads to an error when calling kexec. This commit makes sure to trim white spaces. This Fixes #2178 Backported from upstream c694e25b22- Bump version up to 9.24.43 This version includes: * Fixed error handling for setfiles policy lookup Errors from os.scandir were not catched. In addition the path to run scandir was not properly created * Prefer file based syscall in kexec when possible (bsc#1203896) Use file based syscall in kexec if available. This is needed to support boot on an secure boot enabled system and is in general more reliable to boot into the system on real hardware platforms * Correct setfiles relabeling This change was inspired by a change done on Fedora's livecd-tools from here: livecd-tools/livecd-tools#236. The patch corrects issues with the setfiles SELinux relabel command. The issues become apparent when the host and guest policies differ. Thus it becomes required to explicitly set the policy to decouple from eventual unwanted host settings. * Fix helper method to detect dracut outfile format The method _get_boot_image_output_file_format_from_dracut_code is used in kiwi to match parts of the dracut code for the used output file format. Beginning with dracut-056 the code part checked has changed syntactically such that the match did no longer work. This commit increases the scope of the match and replace pattern and Fixes #2149 * Fixed handling of signing_keys in cmdline options When passing signing_keys with the --add-repo|--set-repo commandline options the delimiter to separate the single key information is a colon(:). However, this is stupid when kiwi expects the signing key to be references as an URI format like file://... Therefore this patch changes the delimiter from colon(:) to semicolon(;) * Setup SELinux on every system prepare / build (#2148) Setup SELinux on every system prepare / build such that all image types benefit from it not only the disk (oem) type * Install all of QEMU to Ubuntu arm integration test * rename user to ubuntu for Ubuntu integration test * Move to sphinx>=5.0.0 * Fixed sphinx extlinks rendering In Sphinx v5 warning will be treated as errors. This results in the following warning to be an error: extlinks: Sphinx-6.0 will require a caption string to contain exactly one '%s' and all other '%' need to be escaped as '%%'. This commit applies the required quoting * Added example aarch64 integration test for Ubuntu Created a RaspberryPI image description for Ubuntu(jammy) as integration test for building aarch64 images and added it to the integration test matrix * Added --target-arch for image info Allow cross arch dependency solving * Add support for group id in users setting Allow to specify the group id in the groups list a user should belong to. The group id can be placed as part of the group name separated by a colon like in the following example: Please note kiwi checks if the provided group already exists and only creates a group if it is not already present in the system. As default groups are usually provided by the OS itself including its preferred group id, you will intentionally not be able to overwrite group id for existing groups. This Fixes #2064- Remove mailmap so email is not updated for old changelog entries in IBS Signed-off-by: David Cassany - Bump version up to v9.24.36 This version includes fixes for: * Preserve LABEL setting (#2108) Preserve the LABEL= setting when the grub config file is re-generated. the GRUB_ENABLE_LINUX_LABEL setting does not exists upstream and not in any SUSE distribution. Set the grub setting such that LABEL is preserved on SUSE distros. (bsc#1197616) * Add ensure_empty_tmpdirs option for OCI containers (bsc#1197783) Since #1759 was merged, the contents of /run/ and /tmp/ are excluded from built images. This causes problems for some containers, notably Ceph when deployed in a Rook/k8s environment, which needs to have certain directories present inside /run/. This commit adds the ability to return to the previous behaviour and *not* empty those temporary directories, if you specify . Fixes: https://github.com/OSInside/kiwi/issues/2093 Signed-off-by: Tim Serong * Set /.snapshots subvolume to mode 0700 (bsc#1194992) Avoid that users other than root can enter or even change the content. This is what snapper does as well.- Bump version: 9.24.16 → 9.24.17 This version includes fixes for: * Fix booting GRUB submenu entries with hybrid images (linux/linuxefi) Variables assigned with "set" are not visible in submenus for some reason. Export $linux and $initrd, so that they also work in submenu entries. Fixes bsc#1192523- Stick to pytest v6.x.y Signed-off-by: David Cassany - Don't exit the script on deprecated function use (bsc#1196644) The "exit 0" there stops processing of the calling script with a success exit code, which leads to incomplete and broken images.- Ensure backward compatibility on deprecated methods This commit ensures backward compatibility for deprecated config bash script utilities. Fixes bsc#1195229 Signed-off-by: David Cassany - Bump version: 9.24.15 → 9.24.16 This version upgrade includes several fixes: * Fixed regression in compression detection The change from 282529de8f612dee32d54ee868c2365dcd829220 Introduced a bad regression. The assumption was made that the xz tool could be used to detect if a file is compressed or not. However, this requires the file to be locally present. In the scope of the method call is_compressed() and within a remote deployment e.g PXE this is not the case. Therefore the former way to "detect" the compression according to the .xz postfix of the source filename was restored. In addition the function name was changed to is_xz_compressed() because that's what the method can do and not more. This Fixes #2015 Fixes a regression in the scope of bsc#1192975 (#c16) * index.rst: Change title (bsc#1189294#c2) * 'KIWI NG 9: KIWI NG Documentation' -> 'Building Linux System Appliances with KIWI Next Generation (KIWI NG ) * suggested in bsc#1189294#c2 for more clarity * change has been discussed with and approved by main author (Marcus S.) * Care for different snapper template locations snapper recently changed their config template location from etc/ to usr/. This commit handles the two locations and Fixes bsc#1192940 * Do not force dracut into a compression setting So far we called dracut with --xz which forces the initrd to be xz compressed. There are other compression formats used by the distributions and they might differe from xz. The selection for a compression tool is done by a dist configuration in dracut.conf.d which is provided by the distributions as they see fit. For us this means not forcing dracut into a specific compression setting allows to make use of the distro provided setting and also allows to change/override this setting by an overlay file. This Fixes bsc#1192975- Bump version: 9.23.20 → 9.24.2 This version upgrade includes several fixes: * Fixed secure boot fallback setup Make sure MokManager gets copied. The name and location of the mok manager is distribution specific in the same way as the shim loader. Thus we need to apply a similar concept for looking it up. This Fixes bsc#1187515 * Allow creation of LUKS system with empty key To support cloud platforms better we should allow the creation of an initial(insecure) LUKS encrypted image with an empty passphrase/keyfile. This Fixes bsc#1187461 and bsc#1187460 * Delete obsolete ddb.adapterType patching When building a vmdk image with pvscsi as adapter type, kiwi implicitly changed the adapter_type from pvscsi to lsilogic because qemu only knows lsilogic. At the end kiwi patched the adapter type in the descriptor of the vmdk header back to pvscsi. That patching seems to be wrong according to information from users and VMware support. This commit deletes the descriptor patching and only leaves the pvscsi setting in the guest configuration(vmx). This Fixes bsc#1180539 and Fixes #1847 * Make dracut version check more robust The check_dracut_module_versions_compatible_to_kiwi() runtime check calls the package manager from the host and reads the package database from the image root. Doing this requires the package database in the image to be compatible with the package manager on the host. However this cannot be guarenteed and it is more robust to chroot into the image root and call the package manager from there. However, this change also comes with the cost that it's required to have a package manager available in the image root tree. Therefore along with the chroot based call, eventual exceptions from the call are now catched and leads to a debug message in the log file but will not lead the runtime check to fail. I consider the cases without a package database inside of the image to be less critical than the incompatibility issue between the host tooling and the package database in the image. This Fixes bsc#1185937 * Fixed setup of repository architecture Unfortunately the architecture reported by uname is not necessarily the same name as used in the repository metadata. Therefore it was not a good idea to set the architecture and manage the name via a mapping table. It also has turned out that repo arch names are distro specific which causes more complexity on an eventual mapping table. In the end this commit changes the way how the repository architecture is setup in a way that we only set the architecture if a name was explicitly specified such that the user keeps full control over it without any mapping magic included This Fixes bsc#1185287 * Do not apply default subcommand for derivate containers This commit does not apply the default subcommand for derivate containers. Fixes bsc#1184823 * Added openssl to the core requires openssl is used in kiwi to construct a password hash if the plaintext password feature for user settings is used. This Fixes bsc#1184128- Fix appx manifest for WSL containers This patch is two fold * This commit prevents KIWI from setting Identity Name attribute and DisplayName and PublisherDisplayName elements. Fixes #1780 * Fix WSL appx filemap relative paths not preserved During WSL appx image type creation step the file hierarchy under metadata_path is written to a temporary file for eventual use as argument to utility appx. The file hierarchy information is dropped resulting in all filemap entries appearing to be at the metadata_path root. The resulting image will side load and run but without icon and other resources. Stricter checks at Windows Store submission will fail due to mismatch between image manifest and contents. Fix by preserving relative path of filemap entries relative to metadata_path. Add log output showing both input absolute path and output relative path. This is related to jsc#SLE-12986- Recommend kiwi-systemdeps-containers This commit recommends kiwi-systemdeps-containers instead of a hard requirement in kiwi-systemdeps package for SLE builds. This is needed because the containers tool chain is spread in different SLE modules.- Require qemu-img in any filesystem based image This commit moves the qemu-img requirement into the `kiwi-systemdeps-filesystems` to ensure ISO, OEM and PXE images include it in the build service. Also this is required for images that are simple root-trees in a filesystem (image=ext4). (cherry picked from commit 4e91e028eba763321a0958ff0febee107d944af8)- Add a requirement for kiwi-systemdeps-iso-media on disk images This commit adds a requirement for `kiwi-systemdeps-iso-media` in `kiwi-systemdeps-disk-images`. This is to ensure that installing `kiwi-systemdeps-disk-images` is enough to build OEM images including install media. (cherry picked from commit 307b7e0234c01846587024c008166310e8d7d8b0)- Turn fb-util-for-appx requirement into a recommendation This commit relaxes the requirement for `fb-util-for-appx` since the utiliy is not part of all SLE-15 service packs.- Bump version: 9.23.19 → 9.23.20 This version upgrade includes several fixes: * Refactor grub2 installation This commit refactors grub2 installation method to split it in two parts. Former grub2.install method was meant to run the grub2-install tool, however, in addition it was also running the secure boot installation shim-install. The install method in KIWI is skipped for those architectures and firmware combinations for which bios support doesn't exist. This was leading to skip the secure boot installation. The current approach strips the secure boot installation logic from the grub2.install method, so skipping the install method does not automatically result in skipping the secure boot installation. Fixes bsc#1182211 * Fix lsblk flags to get sorted output This commit modifies the lsblk command flags to get a sorted output according to the disk layout. This is related to 176c7eab commita and it fixes bsc#1182264, bsc#1182963 and bsc#1183059 * Avoid using generators in pre-mount hooks This commit deletes the generator that was creating the sysroot.mount unit for ramdisk deployments. Generators, specially the sysroot.mount is expected to be created on very early stages of the boot procedure as this has impact on relevant targets such as initrd-root-fs.target, which does not depend on sysroot.mount if the unit is not there. In ramdisk deployments some data is known on pre-mount stage as as it is downloaded from the PXE server. At this stage it is not safe to generate a sysroot.mount unit that depends on initrd-root-fs.target as the target is close to finalize or even finalized already and could potentially skip sysroot.mount exection. Instead we include a mount hook which is only executed on ramdisk deployments that simply runs the mount command to mount /sysroot. This fixes bsc#1178670- Reference commit for SUSE maintenance This commit adds a reference to bsc#1180781- Fixed validation of bool value in dracut module The oem-multipath-scan setup results in a bool variable inside of the initrd code. The variable kiwi_oemmultipath_scan is therefore either set to "true" or "false". A check in code of the form [ -n ... ] is stupid since the variable always contains text. This commit fixes the validation to make use of the bool() method provided for these type of variables- Reference commit for SUSE maintenance This commit adds a reference to Issue SUSE-Enceladus/azure-li-services#255 and the report in bugzilla bsc#1179562- Omit multipath module by default The plain installation of the multipath toolkit activates the dracut multipath code. The setup if the target image runs in a multipath environment or not should however be decided explicitly in the image description via and not implicitly by the presence of tools- Fixed multipath disk device assignment in kiwi lib The former lookup of the multipath mapped disk device contained a race condition. If the lookup of the device mapper files happened before multipathd has finished the initialization, kiwi continues with the unix node name and fails when the device mapper keeps a busy state on it. This commit changes the code such that in case of an explicit request to use multipath the lookup of the mapped device becomes a mandatory process that runs until the DEVICE_TIMEOUT is reached. Default timeout is set to 60 sec. This references Issue SUSE-Enceladus/azure-li-services#255- Bump version up to 9.21.7 This version upgrade includes several fixes: * Skip filesystem check for XFS prior xfs_grow running xfs_repair check isn't strictly necessary before resizing, and in some cases it may even prevent resizing by giving an error that would be cleared through mounting the fs (e.g. when the fs wasn't cleanly umounted, and thus letting xfs recover and replay its journal). Given that xfs can only grow online (while being mounted), this is sufficient to ensure that the fs is in a state where it can be resized. This is related to bsc#1174009 * Fixed grub setup in EFI/BOOT directory kiwi copied the same grub.cfg file as it exists in boot/grub2 to the efi path. This is wrong as the setup in the efi boot directory is used to enable normal grub loading and not providing the user grub configuration. In addition the changes here makes sure that the early grub boot code is placed into the system in any EFI case except for secure boot when shim-install is present. If shim-install is present it also creates the early grub boot setup such that kiwi doesn't have to do it. This Fixes #1491 and Fixes bsc#1172908 * Use rsync in inplace transfer mode Using the --inplace option in rsync helps to save space on syncing the rootfs data and prevents e.g OBS workers from running out of VM space when transfering root filesystem data. Also using --inplace allows to keep hardlinks intact. This is related to bsc#1096738 * Don't keep copy of grub2-install in the system To prevent shim-install from calling grub2-install in uefi mode kiwi temporary replaces the tool by a noop. This acts as a workaround for an issue in shim-install. However the workaround left a file copy of grub2-install in the system which should not happen. This commit Fixes bsc#1173226 and Fixes #1490 * Fixes live ISOs This commit fixes iso images. Due to a change introduced in c7ed1cf live ISOs were no longer booting as the rootfs.img filesystem was copied to the squashfs container while being still mounted. Because of that, at boot time, it refused to mount. This commit adds umount method for the filesystem base class, so it can be umounted before deleting the instance. Fixes #1489 and bsc#1173356 * Support grub timeout_style parameter Grub supports a style setting that influences the display of the menu depending on the configured timeout value. With this patch kiwi allows to specify the style via a new bootloader parameter named timeout_style="hidden|countdown". If not set the grub default applies which shows the menu in any case. This Fixes bsc#1165730 and Fixes #1404 * Use auto video mode as default for grub An explicit video mode 800x600 was used for grub if no video mode setup exists in the XML description. For grub this should better result in the auto mode. Related to bsc#1165730- Bump version up to 9.21.23 This version upgrade includes several fixes: * Do not exclude filesystem folders in OCI images This commit does not exclude filesystem folders during the rsync call in OCI images. It has been noted that including an empty /dev folder does not hurt and it can eventually help to work around some limitations of container related tools such as buildah. Fixes bsc#1176129 (cherry picked from commit 44c0029ce5893bd4c68b21df14bda5bf32a5c869) * Fix/Refactor s390 support This changes the s390 support on several stages: 1) On s390 the boot process is based on zipl which boots into an initrd from which a userspace grub process is started to support the grub capabilities. The implementation of this concept is provided via the grub2-s390x-emu package. Once installed the setup of the bootloader is done via the grub2-mkconfig and grub2-install commands and therefore from a caller perspective the same as with any other grub2 setup process. For kiwi this means no extra zipl bootloader target code is needed. Therefore this commit deletes the zipl setup from kiwi and puts on the standard grub2 process. This Fixes bsc#1170863 2) To support different targettypes the grub2-s390x-emu provided zipl template must be adapted. Parts of the former zipl bootloader setup therefore now applies to an update of the zipl2grub template file 3) Support for CDL/LDL DASD targets has been disabled in the schema When testing 4k devices and a respective zipl2grub template setup for CDL/LDL targettype it has turned out that grub2-install is not able to run on such a device. My assumption is that the device code in grub2-install does not work for 4k devices with an fdasd created partition table. As this needs further investigations and most probably adaptions on the grub toolchain for s390, we disabled the setup of these modes for now. emulated DASD (FBA) and SCSI targets stays supported. (cherry picked from commit 836633c7b2b9b4aa31c1501c2e9817dc00af290d) * Fix compat link for rpmdb location This commit fixes the symlink creation for `/var/lib/rpm`. More specific for derived container images in which the base root tree already included the `/var/lib/rpm` the link, the `ln` command was creating a symlink inside the `/var/lib/rpm` folder givent that it was following the already existing symlink. Adding the `--no-target-directory` force `ln` command to treat `/var/lib/rpm` path as the fully qualified symlink name. Fixes bsc#1176977 (cherry picked from commit a6f56179b7879d160f0aab985ebda20bc49a83be) * Fixed s390/sle15 Virtual disk integration test The integration test used FBA mode as target. As the target is expected to be KVM this is the wrong setting. SCSI should be used instead. This Fixes bsc#1170863 (cherry picked from commit 33c5780d5a8f4e6b41d51bce6bb3e838ac7ded4b) * Support dynamic linux/linuxefi in any case Instead of restricting the dynamic linux vs. linuxefi setup to a specific grub version, support this setup for any version of grub. This Fixes bsc#1175729 and bsc#1176134 (cherry picked from commit 988404ff9f04384c3efb53644e69d520c022c03c)- Fixed check for root device in grub config There is a code path that fixes the grub2-mkconfig used root device when building in an environment that does not allow to resolve the by-X path names, e.g an obs build worker without udev. For images that explicitly defines a root=... value in the kernelcmdline attribute the root device check was not called because the _get_root_cmdline_parameter method returns None. This commit fixes the method to return the expected root device in any case such that the grub2-mkconfig root device check has a chance to fix what grub2-mkconfig has created. This fixes bsc#1172928 (cherry picked from commit 0ae7bbe74e2d2dddccddda40db6c2f8a04b53543)- Fixed spec file This patch is two fold. First the py2 version of kiwi was dropped since py2 is EOL. To indicate that correctly on the package level python3-kiwi has to obsolete python2-kiwi. The other part of the change is a file conflict of the files: etc/bash_completion.d/kiwi-ng.sh /usr/share/doc/packages/python-kiwi/README which were provided by the kiwi-man-pages sub-package but were moved to be provided by the main python3-kiwi package now. On update of the package with an older version of kiwi that maintains this files to belong to kiwi-man-pages a file conflict at install time appears. To solve this python3-kiwi now conflicts with kiwi-man-pages < %{version} This Fixes #1413 and Fixes bsc#1168973 and bsc#1156677 (cherry picked from commit aba2505524850557e03a3f315b05fe58b28bc07d)- Fix string formatting After a flake8 upgrade to v3.8.0 these changes were required to pass the `tox -e check` validation. (cherry picked from commit 7e43b86cd9e56de48a63943f671cd047dede7521)- Fixed _get_grub2_mkconfig_tool Last patch on this method breaks the search for alternative mkconfig names. It returns always on the first lookup which could be none. This breaks on systems that uses a different name than grub2-mkconfig, like on Ubuntu.- Increase spare space on disk repart The sizing of the virtual cylinders in parted seems to be unfavorable, as with some disks and SD cards here the device size is not a multiple of the cylinder size, so the last incomplete cylinder is wasted. If this wasted space is more than 5MiB, kiwi tries to resize indefinitely. Therefore min_additional_mbytes gets increased to prevent running into this situation. This Fixes bsc#1165823- Fixed return value from _get_grub2_mkconfig_tool The method returned the basename of the tool if it could be found by Path.which(). But the method's scope has been changed in a way that the return value of the method must be the result from Path.which() to allow working on the full path name.- Make CommandCapabilities.check_version take the longest match This commit ensures that when trying to parse the version of a tool the comparison is done with the longest match for the given regular expression. This solves cases such in `grub2` where the tool name already provides some digit that could be seen as a version.- Fixed check for grub mkconfig capabilities The check for the capabilities of the tool were applied to the tool installed on the host but the later call of the tool will be done with the tool inside the image root- Validate use of GRUB_USE_LINUXEFI On systems that uses GRUB_USE_LINUXEFI with grub2 version less than 2.04 there is no support for dynamic EFI environment checking. In this condition we extend the grub setup to add this support. The change kiwi does is as follows: * Apply only on grub < 2.04 1. Modify 10_linux to set linux/initrd as variables 2. Write hybrid setup as 01_efihybrid This Fixes bsc#1165960 and bsc#1168480- Bump version up to 9.20.5 This version upgrade includes several fixes: * Fixed result map for OEM pxe install Fixes bsc#1165578 * Add SECURE_BOOT parameter for grub2 in efi mode This commit adds the SECURE_BOOT parameter on bootloader sysconfig for grub2. Fixes bsc#1167746 * Fix order in fstab Any mount point directly under / should be just right after the root mountpoint and before the custom mountpoints based on user's subvolume configuration. Fixes #1349 and bsc#1164310 * Fixed handling of fillup templates Systems using a template tool to generate config files might not be effective when they see the intermediate config files we need from the host to let certain package managers work correctly. Therefore the cleanup code in kiwi takes care to restore from an optionally existing template file if no other custom variant is present. This Fixes bsc#1163978 * Start using tftp system user package With this commit we start requiring tftp system user package. This user was created and managed by multiple packages before, with the risk of having inconsistent criteria on its defaults. Now there there a system user package so whatever package that requries this user should just require this package and do not create or modify the tftp user. Related with bsc#1143454- Bump version: 9.19.7 → 9.19.8- Update libyui-ncurses-pkg10 to libyui-ncurses-pkg11 In Tumbleweed there is no longer the libyui-ncurses-pkg10 its been superseded by libyui-ncurses-pkg11. This fixes the test-image-qcow-openstack integration test- Reference commit for SUSE maintenance This commit adds a reference to Issue #1301 and the report in bugzilla bsc#1159538. The issue was fixed in commit 7d96d19c- Fix grub2 configuration for shim fallback setup If shim fallback setup is enabled the grub.cfg is copied to the EFI partition. This commit makes sure that the grub.cfg is copied to the EFI partition according to the efi mount point. Fixes bsc#1159235- Ensure no swap volume is added on btrfs When the selected filesystem is btrfs the volume manager is not LVM. In that case the swap partition is not volume, it is a completely independent partition. So that we cannot add and additional volume for swap when swap is specified in the description file. This patch fixes #1301 and fulfills #1297- Fixed installation chapter in the documentation The chapter still outlines multipython support but we dropped support for python2 some time ago- Bump version: 9.19.6 → 9.19.7- Fixed swap setup if btrfs is used In case of a volume manager the simplified variant of the device name is used in the fstab file to reference the swap device. However this is only correct for the lvm volume management but not for btrfs. In case of btrfs the swap space is not a subvolume but a real partition and thus the simplified device spec in fstab puts in the loop mapped device which is wrong. This patch fixes it and is related to bsc#1156908- Bump version: 9.18.16 → 9.19.6 This version includes several fixes: * Fixed setup of default grub config In /etc/default/grub GRUB_CMDLINE_LINUX_DEFAULT also contained the root= information. If grub2-mkconfig runs with that information it places the root device information twice because grub2-mkconfig resolves this information itself. This commit prevents the root= information to be placed in the default grub config and Fixes bsc#1156908 * Include grub.cfg inside the efi partition This commit ensures the grub.cfg file is included within the vfat efi partition. This fixes #1271 and bsc#1157354 * Reference commit for SUSE maintenance This commit adds a reference to Issue #1261 and the report in bugzilla bsc#1157104 * Fixed zipl bootloader setup for s390 images The preparation to call zipl and the call itself were wrong. For whatever reason the kernel image the initrd are moved to another location prior to calling zipl. That move broke the system because no kernel/initrd existed at the expected place anymore. In addition the zipl call itself was issued from a the wrong directory. Also no config file was written as an after effect of the refactoring in Issue #1194. This Fixes #1173 and bsc#1156694 * Ensure grub.cfg is copied in EFI/BOOT folder This commit fixes the live images in efi mode. Grub configuration file is copied to the correct location in /EFI/BOOT. Fixes bsc#1155815 * Fix the sha256 generated file content This commit makes sure the generated sha256 file in a 'kiwi result bundle' call includes the filename with the correct extension. For compressed files it was omiting the suffix that included during the compression. Fixes #1223 and related to bsc#1139915- Fixed rpmdb compat link setup On older versions of zypper the path /var/lib/rpm was hardcoded and not used from the rpm macro definition. For such systems and to support them properly on hosts that have the rpm database already moved a compat link was created. However if the host has the rpm database at /var/lib/rpm the link doesn't make sense. This patch fixes this and therefore bsc#1150190- Bump version up to 9.18.16 This version upgrade includes several fixes: * Add --add-bootstrap-packages option (bsc#1149686) The prepare and build commands now allows to specify additional packages to be installed as part of the early bootstrap phase This Fixes #1151 * Avoid default installation of dracut kiwi modules With this commit dracut modules won't be installed by default in the initrd unless they are requested by the commandline calling dracut or by a dracut configuration file. Fixes bsc#1142899 bsc#1136444 Fixes #1103 * Add support for custom fstab script extension In addition to fstab append and patch features we also allow an fstab.script file that is called chrooted. The change is needed to support overlay mounting of filesystems as part of the initrd. If system filesystems needs to be changed in a way that they can be used in an overlay mount, the standard mount entry has to take the x-initrd.mount capability which requires a modification of the fstab which is cumbersome to handle as a patch file. This concept is currently used as part of the MicroOS project in SUSE and is applied in the integration test build maintained for this target. This Fixes bsc#1129566 * Add crypt dependency to kiwi-lib dracut module This commit fixes the dependencies of the kiwi-lib dracut module to include crypt module required by kiwi-luks-lib.sh. In addition it also updates the check() section to return 255 instead of 0. In check section a return code of 0 means install it, 255 install only if required by another module, anything else, do not install. Related with bsc#1142899 * 99-kiwi-lib requires rmdir, install it Fixes bsc#1143033 * Do not crash on missing HOME Fixes bsc#1149686 * Extend spare partition setup The spare partition could be used to introduce one additional partition table entry. With this patch the following new type attributes will be added: * spare_part_fs="fsname" * spare_part_mountpoint="/location" * spare_part_is_last="true|false" Along with the setup of the partition size the filesystem and its mountpoint can be specified. If set the contents of the rootfs at the specified spare location will be synced to that partition. The spare_part_is_last attribute will place the spare partition at the end of the disk. Note this attribute is only available for the simple vmx disk type. This is related to bsc#1129566 * Preserve licenses/other txt files by baseStripFirmware (bsc#1132455) (Fixes #1063) LICENSES are usually not large and should be kept alongside of the binaries. Also some firmware files sideload additional txt files (like for example brcmfmac43430 needs the sdio description txt files). We should just always include them because they're not listed as needed files. Co-Authored-By: Dan Čermák * Delete check_grub_efi_installed_for_efi_firmware The motivation is nice to check if the required grub module package is part of the package list if the efi firmware is requested, but as long as there is no distribution wide standard for packaging grub this check will cause more trouble than it is of help. Currently it failed for the arm architecture and the grub2-arm64-efi package. We decided to prevent checking against static lists and dropped this runtime check. Missing grub modules will be recognized at the grub stage when we search for them. Fixes bsc#1149686 * Support optional fstab.patch file In addition to the support for fstab.append, users can now also provide a patch file to change the contents of the fstab file as it got written by kiwi. The feature is probably rarely used but needed in the area of suse's transactional update mechanism. This Fixes bsc#1129566 and Fixes #945 * Write sha256sum --check compatible shasum format Change the output format of the bundler shasum file to be compatible with a 'sha256sum --check' call. This fixes bsc#1127173 * Fixed import of signing keys In reference to bsc#1112357 it was required to add the compat symlink /var/lib/rpm such that zypper can read the signing keys. Unfortunately zypper does not use the configured rpmdb from the rpm macro setup. * Fix location of grub unicode font This is a follow up patch for #f5bac4495d34. The change of the location of the font file was not applied if an iso target, live or install image is being built. This patch completes the change and Fixes bsc#1124885 * Handle location of the rpm DB on the macro level The location of the rpm database is no longer a standard path one can trust. Some distributions put it to /var/lib others to /usr/lib. This introduces the problem of dealing with different locations between the bootstrapping (host rpm) phase and the image installation (image rpm) phase. This commit implements a solution based on an intermediate rpm database configuration. KIWI creates the macros.kiwi file inside of the image root which is read by any call of rpm in the inner and outer system. During bootstrap phase the rpm dbpath from the host system is used and later in the install phase the dbpath from the rpm package as it was installed by the target image distribution is used. In case of a dbpath difference the database is automatically moved to the new location by setting the _dbpath_rebuild macro to the correct location. At the end the custom KIWI macro is deleted. As this process allows custom macro defintions during the KIWI run it also serves as the base for a solution to Issue #771 which will be done in a follow up request to this commit. Also the workaround for bsc#1112357 which uses a static dbpath to store an optionally given signing key will be addressed with this commit. The macro setup happens before the import_trusted_keys method which makes any specification for a strict dbpath obsolete. Last the implementation deletes the obsolete dump_reload_package_database code. rpm is able to automatically do the conversion of different db versions such that the code in kiwi is obsolete. In addition that code only worked for rather old db versions. The public API has not changed though, but the method is marked obsolete and does nothing anymore. In addition to the deletion of obsolete code a new API method post_process_install_requests_bootstrap has been introduced to handle actions required after bootstrap and before installing of packages from inside the new image- Bump version: 9.17.15 → 9.17.16- Do not create a new machine-id file This commit ensures KIWI is not creating a new machine-id empty file in case it was not provided during the system installation. Fixes bsc#1141168 (cherry picked from commit afd9b3019ae37980524554452e113d544e9676aa)- Update documentation references The kiwi project has been moved into its own upstream organisation named OSInside. Due to the move some doc and README references needs to be adapted (cherry picked from commit d09ccc520633c03d5393039ccbc4989779f803d0)- Extend the development documentation Co-Authored-By: Thomas Schraitle (cherry picked from commit 5ba515236d817bfe50200abe5fdaa8a3ac8e6dc4)- Add GitLab CI pipeline badge to README.rst (cherry picked from commit af773d67b9e9ca18a851893b1604c2fa866e7bee)- Fixed permanent redirect links in documentation (cherry picked from commit 921fa17f4fe7415e4e5e21a8636c72e7d76dc1d3)- Add GitLab CI pipeline status to README.rst (cherry picked from commit 0681fb4d7335c1b496a62663fae4b56876ffdc8e)- Extend quickstart to be more viable as a stand-alone document (cherry picked from commit fe7c7f59bdf6d1970550a28fff479233e95b85d1)- Add pytest-xdist to dev-virtualenv to run the unit tests in parallel - fix CLI args not being passed to pytest by tox for unit_py3_4 and unit_py3_6 - enable parallel run on travis - document how to run the unit tests in parallel (cherry picked from commit 0fbc2c5ff950cb1857fe7b45e66983272bf1fc4d)- Update documentation The kiwi-descriptions repository has been moved into the OSInside organisation (cherry picked from commit 70bc4fdda17bab4d6760c708ac5b8c2d77139466)- Bump version: 9.17.14 → 9.17.15- Update compression flag for qcow2 format In case of a qcow2 format we store the result uncompressed Since the format conversion only takes the real bytes into account such that the sparseness of the raw disk will not result in the output format and can be taken one by one This Fixes bsc#1128146 In addition the commit includes a refactoring for the evaluation of the compress flag in the runtime config. Instead of the global overwrite, the flag gets evaluated individually at the time the result metadata is created- Bump version: 9.17.13 → 9.17.14- Fixed disk detection from root device The method lookup_disk_device_from_root assigns the disk device matching the root device uuid. However in a multipath environment multiple disk devices matches the same root device. The code to assign the multipath map in this case was missing in the dracut code base. This Fixes #954 and Fixes bsc#1126283 and bsc#1126318- Fixup code issues reported by new flake8 version Travis has updated the flake8 version which caused more strict issue reports on the code. This commit fixes the new issues reported by flake8- Changed default value for bundler compression If no compression is configured in the kiwi config file the default was set to: False. However this lead to big trouble on the obs side for images which has fixed storage disk sizes configured, e.g Azure images which requests 30G disk size per instance. Thus the default for the bundler compression has changed to be: True- Bump version: 9.16.19 → 9.17.13 This version upgrade contains fixes for: * Support alternative EFI and grub modules paths In SUSE products EFI binaries are historically located in /usr/lib*/efi. In a recent move to package grub2 as noarch fate#326960, a collision between x86_64 and aarch64 has been identified, as both place platform-specific files in the same spot. To rectify this, a new location was devised: /usr/share/efi/$(uname -m). At the same time /usr/lib/grub2 will move to /usr/share/grub2. This Fixes #924 * Fixed Xen guest detection We only support Xen setup e.g in the Amazon Cloud for the x86_64 architecture. This Fixes bsc#1123186 and bsc#1123185 * Fixed location of grub unicode font file grub2 is expecting the unicode font below the fonts directory in the /boot/grub*/ depending on how the distribution installs grub2. This Fixes bsc#1119416 * Add Codec utils for bytes literals decoding In case of a literal decoding failure it tries to decode the result in utf-8. This is handy in python2 environments where python and the host might be using different charset configurations. In python3 this issue seams to be solved. Fixes #829 and bsc#1110871 * Fixed URI handling with token query option So far only the query format ?credentials=... was supported. In case of ?random_token_data the returned uri was truncated and also the format check on the query caused a python trace. This Fixes #830 and Fixes #828 and bsc#1110869 and bsc#1108508- Fix disk size calculation for VMX Disk size calculation must take into account the empty volumes that are to be mounted in a directory that does not exist in the root tree otherwise there is KeyError. The result of storate/setup._calculate_volume_mbytes must be a dict including all defined volumes. Fixes #904- Bump version: 9.16.18 → 9.16.19- rebuild auto generated code with stable generateDS For some reason the xml_parse code generated by generateDS v2.29.24 caused warnings on simple type XSD patterns. Therefore I rebuild the code with the stable build version v2.29.14 which fixed that issue Fixes bsc#1119792- Update flake8 call in tox.ini This commit ignores some issues in the code style reported by recent flake8. A flake8 update on the CI raised new issues also for the branches in maintenance mode. In those cases, just to minimize changes and backports, new issues are just ignored.- Add Codec utils for bytes literals decoding In case of a literal decoding failure it tries to decode the result in utf-8. This is handy in python2 environments where python and the host might be using different charset configurations. In python3 this issue seams to be solved. Fixes #829 and bsc#1110871- Make use of the quiet flag of mountpoint command This commit sets the use of -q flag of mountpoint. Kiwi only checks the return code, thus any stdout is useless in this case. Fixes #829- Adding bugfix trace for bsc#1110869 bsc#1108508 ticket was fixed with request #831 from SUSE/fix_uri_handler- Fixed URI handling with token query option So far only the query format ?credentials=... was supported. In case of ?random_token_data the returned uri was truncated and also the format check on the query caused a python trace. This Fixes #830 and Fixes #828- Fixed broken link to ec2uploadimg tool- Bugzilla reference commit This commit references the fix from commit:6b9e321048602945214 with the bug id bsc#1109882 in bugzilla.- Disable version tagging in maintenance branch- Disable deploy stage in Travis- Bump version: 9.16.17 → 9.16.18- Create parent qgroup when snapper is present This commit creates a new parent quota group (1/0) of level 1 when btrfs_quota_groups is enabled and snapper present into the image root tree. Related to bsc#1093518 and #812- Bump version: 9.16.16 → 9.16.17- Fixup make build target Don't include auto generated schema docs into the source tarball. Also cleanup MANIFEST.in from files no longer present in the repository- Bump version: 9.16.15 → 9.16.16- Disable warnings report from pytest By default pytest now generates warnings for all modules used in the tox environment. This information is nice but taints the test output of the code of this project and is therefore unwanted.- Bump version: 9.16.14 → 9.16.15- Customize latex output for look and feel- Update development doc chapter per review by Tom- Make volume id customizable for installation ISOs This commit makes volid attribute also available for OEM images. The installation media makes use of the volid value. Only posix safe names are allowed, up to 32 characters. Fixes #811- Include PDF build of documentation to the package Bundle a PDF version of the online documentation with the rpm package build. Due to the complexity of getting a latex build environment into the travis CI which does not take forever to install, the bundling of a built PDF into the pypi archive has been skipped. Users installing from pypi would need to install a latex env on their machine and run make latexpdf from the installed bundle. This Fixes #819- Update docs for setting up development environment Reference py3.6 when showing example tox call. Also delete a py version reference where it was not needed- Update kiwi tools README Delete obsolete entries for tools no longer present- Adding bugfix trace for bsc#1108508 bsc#1108508 ticket was fixed with bf556a96 and 77517cff commits. Just adding the ticket reference here.- Fixed disk detection for live iso in loopback grub If the live iso is used as a disk on e.g USB sticks and is configured to setup a persistent write space via the initrd option rd.live.overlay.persistent, it's required to find the disk device to create a write partition on it. This detection worked if the live iso is binary dumped on the disk and bootet due to the hybrid support each iso built by kiwi provides. However if the live ISO deployment should not destroy existing data on the disk there is an alternative setup which uses grub's loopback support and puts the iso as a file on some partition of the disk. In this mode the kiwi-live dracut module failed to find the disk device and could not setup a persistent write partition.- Bump version: 9.16.13 → 9.16.14- Fixed spec template Directory delimiter missing in call for install_dracut target- Bump version: 9.16.12 → 9.16.13- Make use of kiwi/utils/sysconfig This commit makes use the sysconfig kiwi utility in order to read and eventually update the /etc/sysconfig/snapper file.- Snapper configuration for btrfs quota support refactored This commit refactors the snapper configuration for btrfs quota support when btrfs_root_is_snapshot is enabled. The sysconfig file /etc/sysconfig/snapper is now taken into consideration. Fixes bsc#1093518- Fixed overlay of intermediate config files Some config files e.g etc/hosts needs to be temporary copied from the buildsystem host to the image root system. This is done by a custom copy with the .kiwi extension and a symlink to that file. During the installation process the package manager either overwrites the file or creates a .rpmnew variant. In case a .rpmnew variant exists there is code in kiwi which restores that .rpmnew variant to become the real file. However that _restore_intermediate_config_rpmnew_variants() method runs after overlay files has been applied to the system because it's part of the final cleanup step. In order to preserve an eventual overlay version of the file the .rpmnew variant gets only restored if the real file does not exist. This Fixes #807- Fixed dice documentation The chapter: Building in a Self-Contained Environment holds a fixed ruby version in the package install which was outdated. It also still referenced the container as tar.xz but we have changed to uncompressed containers by default a while back- Fixed filesystem builder use of exclude list kiwi defines a global Defaults.get_exclude_list_for_root_data_sync method but it was not used in the scope of the filesystem builder. Thus this builder was missing the exclusion of the .buildenv file. This references Issue #422 and Fixes #814- Enhance /etc/snapper/configs/root file parser- Fix quota groups management when snapper is present * Fixes the config file path if root is snapshot * Uses the correct QGROUP="" syntax * Do not overwrite the config file if already present Fixes bsc#1093518- Separate dracut module install by Makefile target The dracut modules like kiwi provides it should not be part of the default install target. If kiwi gets installed from source or via pip all dracut code gets installed on that system which is unwanted and in the worst case leads to boot trouble next time this system rebuilds its initrd via dracut. Therefore an extra Makefile target which is used in the spec of an rpm but not in the install target of setup.py is provided in this commit. As a consequence the installation from pip will not install any dracut modules on that system which is intentional. Installing from source requires to run make install_dracut which if called assumes the caller knows what he/she does :)- Bump version: 9.16.11 → 9.16.12- Follow up fix for skip_cleanup use make sure doc_travis tox target has created the manual pages such that the environment contains this data- Bump version: 9.16.10 → 9.16.11- Use skip_cleanup for deploy stage in travis We need the tox build environment to run the deployment- Bump version: 9.16.9 → 9.16.10- Follow up fix for deploy target Integration of man pages must be done as part of the sdist setup because the travis pypi deployment only uses the sdist target to bundle the sources- Bump version: 9.16.8 → 9.16.9- Fixed deploy target As part of the deploy process in travis a bundle to pypi is uploaded. The bundle is missing the compiled manual pages because the doc_travis stage did not create them.- Bump version: 9.16.7 → 9.16.8- Update pxe server setup documentation Delete the suggested modifications to /etc/sysconfig/atftpd and trust the defaults provided by the package- Added support for system wide config file If there is no user specific config file we are also looking for a system wide /etc/kiwi.yml file- use more meaningful variable names- Fix baseStripUnusedLibs config method This commit arguments handling of the baseStripUnusedLibs that was not prepared to handle quoted variable containing a list. Fixes #798- Added doc chapter for remote live boot- Added support for pxe live boot via AOE The live ISO should support a network reference. We are using the Ata Over Ethernet protocol to achieve this. In combination with pxe boot of the kernel/initrd a live iso can boot from the network using the following parameter example: root=live:AOEINTERFACE:e0.1 rd.kiwi.live.pxe Export of the live iso file via AOE can be achieved using the vblade toolkit which needs to be available on the exporting system and compatible with the live operating system. This Fixes #796- Run schema validation/update per XSL stylesheets- Added XSL stylesheet to auto update schema Drop oem-ataraid-scan from oemconfig if specified- Update vagrant doc chapter redirect links- Drop oem-ataraid-scan from schema Along with the change we pin generateDS version to 2.29.14 because the newer version (2.29.19) creates broken python syntax for elements with a value list for their content like it's the case for the packagemanager element. The tool uses the name k.packagemanager.content as class name which is invalid for python.- Delete dmraid aka: softraid soft/fakeraid support In fate#323743 the decision was made to drop dmraid from the distribution. Along with the low business case for those controllers and the support for linux softraid via mdadm we also drop the support in kiwi for oem-ataraid-scan- Fixed unresolvables in EC2 integration build For some reason libyui-ncurses-pkg8 is gone now- Fixed unresolvables in integration builds For some reason libyui-ncurses-pkg8 is gone now- Bump version: 9.16.6 → 9.16.7- update vagrant doc chapter per review by Tom- Added vagrant setup chapter in the docs Document steps to create a vagrant box for the libvirt provider. Also provide information on provider support This Fixes #792- Use xattr 0.9.3 Latest xattr is broken on pip- Fixed make obs_test_status The helper script .obs_test_status looks up the build results from the integration tests. With the introduction of multibuild integration tests the script has to apply some modifications to get the correct results This is related to Issue #791- Bump version: 9.16.5 → 9.16.6- Fix result bundle command This commits fixes a regression introduced in 98c9c77a- Bump version: 9.16.4 → 9.16.5- Fixup validation of boottimeout attribute If boottimeout is set to zero it is evaluated as "not set" and the default applies. However it's a fairly well approach to set a zero second boot timeout. This Fixes #789- Add build tests for CentOS- Do not replace version from the image name This commit makes sure that replacing version to version plus the build id on resulting files happens only on version suffixes. Before that if image name was including the version string it, this part was also replaced. Fixes #787 (bsc#1102868)- Extending result bundle task tests to better cover corner cases This commit adds some tests to better cover a couple of cases: * image name contains the version of the image * the file in result does not include the version- Cleanup misleading error message In root_bind if the cleanup failed to remove a directory hierarchy the error message was just displaying the path as it would be on the host root and not based on the root of the image root tree.- Modify python-yaml dependency for CentOS and RHEL 7 This commit fixes #785- Do not run Codacy analysis on tests- Fixup DiskFormatOva implementation The inheritance and super call concept used in this class destroys the OO design concept of loosely coupled code and also leads to a broken build because it bypasses the post_init constructor called by the base class- Exclude tests in codacy analysis- Bump version: 9.16.3 → 9.16.4- Added grub2 module packages for GCE test build- Fixup timezone and keytable setup for GCE build- Second round of package fixes for GCE test build- Update schema for GCE build test to latest version- Fixup package list for GCE test build- Added Google Compute Engine build test- Deleted obsolete landscape setup Code quality is checked via codacy now- Rebuild schema documentation- Fixed building VMware images with pvscsi adapter Qemu does not natively support the pvscsi adapter type. However there is a VMware suggested procedure which allows to change the lsilogic setup to pvscsi inside of the DDB of a formerly created lsilogic configured image format. This patch implementes that procedure and Fixes bsc#1099569- Rebuild schema documentation- Bump version: 9.16.2 → 9.16.3- Fixed name of checksum file for pxe type The pxe image build generates among others a checksum file with the suffix '.md5' This file is read by the legacy netboot code and is expected to have the same basename as the image file itself. However if the compressed attribute is set the image file name is set to 'image.xz' and the checksum is named 'image.xz.md5' which is wrong because 'image.md5' is expected. This patch makes sure the checksum file is always set to 'image.md5' no matter if the compressed flag is configured or not- Fixed custom_args argument assignment in BootImage custom_args has been deleted from BootImageKiwi class but was still passed in the Factory- Added runtime check for label use Added check_volume_label_used_with_lvm to check if custom volume labels are used in the scope of LVM- Fixed GCE image file name In former times Google requires the image name to follow their naming conventions. However that seems to have changed and it is no longer required to match a certain pattern. Thus this patch changes the output name of the GCE tar file to use the same naming schema as KIWI applies to its output files- Add codacy.yml config file- Move from landscape.io to codacy.com- Updated Travis check icon to forked project- Support label attribute in volumes The optional label attribute in a volume section allows to specify a filesystem label for the selected volume. The label setup will have no effect on filesystems which implements their own volume management like it's the case for btrfs. This Fixes #738- Update schema tron rules for btrfs type attributes The btrfs_* attributes only applies for vmx and oem types- Fixed some code smells * Use of unused variables, and dangerous defaults * Update of design patterns on pylint and landscape- Add support for activation of btrfs quota groups If the new type attribute btrfs_quota_groups is set to true this will enable the quota group system for btrfs based systems. This Fixes #772 and bsc#1093518- Improve coding style, tests and label format validation- Add '--add-container-label' flag This commits adds a command line flag to add a label for container image types. The flag can be used multiple times. Fixes #770- Added system cleanup methods Some files in the system gets created by services like systemd or zypper and are meant to be created once on the target system. However in the image they might be unwanted. Thus this commit adds convenience methods to delete files which gets automatically re-created by the services on startup. Whether or not the methods are used is in the responsibility of the author of the image descripion. This Fixes bsc#1098535- avoid double quoting of disturl in label (...="'obs://...'"). avoid always printed warning of missing disturl make use of disturl variable- Bump version: 9.16.1 → 9.16.2- Simplify configfile loading prefix and root variables are correctly set, thus calling the "normal" command has the same effect than the explicit call for "configfile"- Prevent building custom efi image If the distribution provides a prebuilt efi image kiwi should use it instead of building its own image.- Bump version: 9.16.0 → 9.16.1- Avoid module loading in grub config template This patch is two fold. First part replaces the import of dedicated video modules in the grub image by the all_video module. Second part avoids runtime module insertion which requires access to the boot filesystem which is not guaranteed on sophisticated rootfs structures like btrfs plus readonly snapshots and what not. Thus we make sure all boot code is embedded into the grub image(s) and no extra loading of modules at runtime will be needed. This Fixes bsc#1096937- Fix for bsc#1094788 This is just an empty commit to include the bugfix reference in the repository history. The bugfix for bsc#1094788 was actually commited in: commit 835cebfe5c488515dfbcdf33dab6262613ca5508 Author: Marcus Schäfer Date: Tue May 29 16:42:55 2018 +0200- Complete GUID change from signed to unsigned Follow up fix to complete the binary packing of the GUID format to use unsigned types. Missed to move short source from signed to unsigned. This Fixes bsc#1095267- Bump version: 9.15.4 → 9.16.0- Move fedora integration test build to fc28 distro- Use the versioned Python interpreter path to run build helper scripts The kiwi build process mostly does the right thing in terms of executing with the correct Python interpreter throughout the build process, with the exception of the Makefile not correctly locating the versioned Python interpreter executable path, and the bash completion generator being executed using '/usr/bin/python' without regard for what the target environment was. This is a problem when a build environment complying with PEP 394 as it stands today does not have Python 2 installed, such as when kiwi is being built as a Python 3-only package in Fedora. Thus, the Makefile has been adjusted to not only correctly locate the versioned Python interpreter, but to also execute 'completion_helper' with the correct interpreter. Additionally, a trivial change to the shebang to 'completion_helper' was made to be consistent with other Python-based build helper scripts. This is part of the overall effort to eliminate the dependencies on Python 2 in Fedora. Reference: https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3- Bump version: 9.15.3 → 9.15.4- Fixup move_to_root method move_to_root is called to check each element of a given list and changes any path specification to a valid path if the given root path would be it's root(/). This tranformation implied the creation of paths containing double slashes like //foo which was considered harmless. However it has turned out that the dnf package manager makes a difference here which requires to fix the resulting paths. This Fixes #761- Adding license tag under description tag in schema This license tag does not effect the resulting image in any way. The tag is just included to state the license of the kiwi image sources in case they are distributed. Fixes #728- Make sure profile env is included in live images For all images which boots via dracut the .profile file is included except for live iso's because no information is needed from that file to boot or customize the boot. However the .profile contains the kiwi_revision information which is useful for any image type. This Fixes #755- Add config-cdroot to description import list During the prepare step the image description and mandatory files needed in the create step are copied into the image root system below the image/ directory. In case of the optional config-cdroot archive this copy action was missing which lead to the problem that the archive was not present if the kiwi system create command is sequence is used. This Fixes #756- Added true module to grub image list When kiwi creates a grub image a list of modules are embedded. For the purpose of snapshot boot the true module seems to be used but was not included at build time when kiwi created the grub image. This Fixes bsc#1093917- Changed GUID format from signed to unsigned With reference to Microsoft Guid constructors it seems unsigned values are allowed which could exceed the value range of the binary unpack used in kiwi. This Fixes bsc#1095267- Fix SC2164 complain of shellcheck- Updating shellcheck call from tox Recent shellcheck versions are more strict and complain about backslashes "\" used in literals claiming it is preferred to use double backslashes "\\". As is just a styling advise and we use backslashes in multiple commands (echo, sed, etc) I believe this can be ignored.- Relax runtime check for ISO images using dmsquash This commit relaxes the dracut-kiwi-live module requirement if dmsquash dracut module is selected in flags attribute.- omit multipath module in live iso initrd The multipath module creates device maps which puts the device in a busy state and prevents the creation of a persistent write partition. As multipath seems never useful for the root of a live iso image we generally omit this module from being included- Fixup LOADER_LOCATION in sysconfig/bootloader By default we always set LOADER_LOCATION=mbr which is wrong if EFI is in use. This patch updates the value to be correct. It also seems that this variable is only consumed by the yast2 bootloader module from past days. Thus we consider it obsolete and on the to be droped list in future releases. This Fixes #746- Bump version: 9.15.2 → 9.15.3- Fix setup of LOADER_TYPE in sysconfig/bootloader LOADER_TYPE value for the grub2 bootloader depends on the use of EFI. This Fixes bsc#1094883- Added documentation for config-cdroot archive- Added support for config-cdroot archive The image description now allows an optional file named: config-cdroot.tar[.compression_postfix]. The file gets unpacked as user data for live and install ISO images. This allows users to add e.g license files or reference documentation to the ISO image. This Fixes #737- Verify file does not exist before creating symlink- Add service dependencies in generators Correctly adding the initrd-root-fs.target service dependency to auto generated sysroot.mount for kiwi-live and kiwi-overlay dracut modules. Fixes #741- Do not create static dev nodes in root init For compatibility reasons kiwi created a set of static device nodes when initializing a new image root system. With the presence of devtmpfs this should no longer be needed. In addition the static dev node setup now also causes problems on filesystems like btrfs which was the reason to delete this code now. This Fixes bsc#1087104- Do not delete uncompressed base docker images Fixes #739- Bump version: 9.15.1 → 9.15.2- Fix zypper add lock operations This commit fixes the arguments passed to zypper in add lock operations.- Add correct GPL-3.0-or-later license Add the correct license reference in the spec License field Fixes #732- Make container compression a configuration option Change the ContainerBuilder class to evaluate on the configuration options to decide if the container archive should be compressed or not. By default the archive will be compressed, thus there is no change to the former behavior but can be setup in ~/.config/kiwi/config.yml as follows: container: - compress: none|xz This Fixes #725- Return file name after archive or compression call Extend the ArchiveTar and Compress classes such that their archiving and compression methods returns the result file name after the operation- Allow docker root import from uncompressed file Check the given file name for its compression format and only uncompress if a supported format could be detected. This Fixes #730- Add additionaltags containerconfig attribute This commit adds `additionaltags` attribute, so multiple tags to a container image can be defined in a comma separated value. Fixes #713- Bump version: 9.15.0 → 9.15.1- Add a chapter for uninstall package requests in docs (#726) Add a chapter for uninstall package requests in docs- Update arm integration test Existing panda build was outdated and non functional. Move the test to a more popular target and write the image description to use technology matching the suse arm development effort. Target is now Rpi(64bit)- Use latest version of sphinx Formerly sphinx==1.6.7 was used because travis-sphinx failed with latest sphinx. Now travis-sphinx fails with 1.6.7 and I hope using latest sphinx will fix that- Bump version: 9.14.7 → 9.15.0- Add comment in pinch_system calls- Refining the uninstall type implementation- Add uninstall pacakges type This commit adds a new `uninstall` type for packages. Packages listed with this type will be removed by the package manager cleaning also any unneeded dependency. The removal is executed after running `config.sh`. Also in this commit `delete` type for packages is now executed after `uninstall` packages, meaing it also happens after `config.sh`. Fixes #625- Bump version: 9.14.6 → 9.14.7- Some simple code cleaning- Fixed check for volume group in use The former implementation evaluates the output of the vgs command and set the volume group as in use if one of the listed volume groups on the host contains the group name set by the image description. This would also match if the group name set in the image description is e.g 'System' and the a volume group on the host with name 'SystemVG' exists. However a conflict only exists on exact match of the name. The proposed fix is to use the --select feature from vgs and let it show information on exact match of the vg_name field. The code in kiwi then just evaluates if the selection by vgs has a value or not. This Fixes #721- Fix setup of kiwi_lvm profile variable kiwi_lvm was always set to true if a volume management system is in use. However it should only be set to true if the selected volume management system is lvm. The same applies to the kiwi_lvmgroup variable which also only makes sense if the lvm volume management system is used. This Fixes bsc#1090427- Bump version: 9.14.5 → 9.14.6- Extend test-image-azure integration test Use xfs as filesystem and set a tag to also test image tags- Use /dev/zero to really write a zero byte The cleanup of the 512 byte block for the vhdfixed tag was based on reading from /dev/null which does effectively nothing. As the block should be filled with zero bytes this patch changes the source from /dev/null to /dev/zero This was found by tests to reproduce the issue reported in bsc#1090953 but is not causing it- Add test for the utils class StringToSize This commit adds a couple of unit tests for the StringToSize class.- Bump version: 9.14.4 → 9.14.5- Run doc target in travis test stage- Fixup doc conf.py Do not load kiwi logging which is unneeded and causes many superfluous messages on the console when sphinx build runs- Fixup docstring warning from sphinx build- Fixup travis unit test stages Build docs in deployment stage only- Include doc_travis_deploy in travis deploy stage- Fixed syntax errors shown by travis lint- Revert "Fixup travis.yml" This reverts commit 79ccbdff394e2aba4f1e8fb6390a9a8e0d1925e2.- Revert "Yet another try to get travis stages correct" This reverts commit aca057c3554795b79c651f63a58967138d00f3c8.- Yet another try to get travis stages correct- Fixup travis.yml Looks like empty lines are not allowed- Revert "Clearly separate unittest stage from deployment" This reverts commit 5fd27924c931b6b60903b0015d0a8cf31cf499f7.- Bump version: 9.14.3 → 9.14.4- Some improvements on size calculation This commit simplifies the unpartitioned area size calculation. Fixes #709 and it is related to fate#323874- Clearly separate unittest stage from deployment- Use travis stages feature for pypi deployment Problem ist that the deploy section is called for every item in the former matrix: setup. This means the pypi upload was triggered twice for the same archive which means one target always fails. In order to deploy only once travis provides a stages feature which is used in this commit- Bump version: 9.14.2 → 9.14.3- Adding unpartitioned size attribute This commit adds the possibility of setting some unpartitioned area after the systemdisl partition into the image. Fixes #709- Fixed creation of machine settings file If no vmnic setup is present a request to iterator over a NoneType object is attempted and failed. This Fixes #710- volume_manager API docs cleanup- repository API docs cleanup- system API docs cleanup- package_manager API docs cleanup- build API docs cleanup- Fixed docstring :rtype: values In Python the string type name is str not string- Cleanup of the iso_tools API docs- Cleanup of the utils API docs- Cleanup api doc strings This cleans up and fixes the api documentation for the public interface of the projects boot source code files and Fixes #700- Cleanup of the solver API docs- Fixup docstring typos per review- Cleanup api doc strings This cleans up and fixes the api documentation for the public interface of the projects storage source code files and Fixes #698- Fixup download url in setup.py Better point to installable packages. This Fixes #702- Cleanup api doc strings This cleans up and fixes the api documentation for the public interface of the projects toplevel source code files and Fixes #697- Fixup creation of vmware settings file The kiwi schema allows for multiple vmnic sections but kiwi only took the primary one into account. This patch uses all configured vmnic sections. This Fixes #688- Support lookup for fstab.append on fstab creation At the time kiwi creates the fstab with all required fields to boot the system it now also looks for an optional fstab.append file and appends its contents to the fstab file. This allows to setup custom fstab entries for filesystem mounts which are established outside of the kiwi image building process by e.g a service at first boot- Add auto release to pypi on release tags This will automatically release kiwi on pypi if a new tag in master is set. This happens when bumpversion is called followed by a push and push --tags. Only if the tag is pushed the travis deployment gets triggered. This Fixes #678- Change variable quoting for Rm/Rpm shell helpers The two methods exists to overlay their call with a logging facility. Thus it is ok and expected that the caller can pass arguments for the program e.g (Rm -rf foo) which resulted in (rm '-rf foo') leading to a runtime error.- Bump version: 9.14.1 → 9.14.2- Fix default initrd_system values This commit fixes the default initrd_system value for some image types. Since this value is included in profile and potentially taken into account for some of the config script functions, it is important to have consistent values even when the image type has no initrd choice or it doesn't have initrd at all. Related to #689- Check partition table after cow part creation Proceed with the persistent write partition setup only if the cow partition could have been created successfully- Fixed detection of disk node in live iso images If the live iso is booted as disk the initrd code needs to find the correct disk node pointing to the iso image. This was formerly done by checking if the populated disk devices contains an iso header with an application id. The information was obtained using the isoinfo tool. isoinfo is a tool provided by the obsolete and xorriso replaced cdrtools kit. In addition the lookup was unsafe because any iso with an application id would have been valid. Thus this patch changes the detection mechanism to use the volume id as it is used in the root assignment on the cmdline. The volume id is populated as device label for the assigned block device and can therefore be used as a unique id. The volume id itself is a configuration option in the image XML description. If not set the default is 'CDROM'. The information can be obtained via blkid and therefore also eliminates the isoinfo requirement- Fixup test-image-docker unresolvable state genisoimage seems no longer present in the distro- Update etc/default/grub setup kiwi writes optional grub boot parameters to the GRUB_CMDLINE_LINUX variable in default/grub. This information is then picked up by grub2-mkconfig and written to grub.cfg However there is also another variable named GRUB_CMDLINE_LINUX_DEFAULT which according to the documentation should be used preferably. While it does not seem to matter for grub it matters for yast. Thus this patch changes the configuration variable and fixes bsc#1084117- Bump version: 9.14.0 → 9.14.1- Fixed truncation of image when writing vhd tag When writing the vhd tag into a vhdfixed formatted image the image was opened with the wrong open bits 'wb' and thus was truncated at the 64k offset. This patch fixes the open bits to allow in-place tag writing. This Fixes bsc#1077096- Make use of autoremove in Yum and Dnf to clean dependencies- Enable no forced deletion for dnf, yum and apt package managers This commit makes apt, yum and dnf support equivalent to zypper in terms of being capable to delete packages using the package manger tools (implies dependencies deletion is handled by the package manager) or deleting explicitly only listed packages using packager tools even if this implies breaking dependencies.- fix vmx fileName parameter, bsc#1084157- Update schema version in free schema doc generator- Update schema version in headline of doc chapter- Bump version: 9.13.9 → 9.14.0- Rebuild online schema documentation- XSL Auto update descriptions due to schema change- Delete obsolete hybrid attribute from type Any iso image we create will be a hybrid image. That was already the default for any install iso image and was a configuration option for live images. The optional selection only existed for systems which do not provide tools to make an iso hybrid. All distributions kiwi supports provides this capabilities and there is no good reason why a live or install iso should not be hybrid and bootable as iso and as disk. Also the boot in disk mode became the preferred boot method for the majority of our users which requires to provide a hybrid iso- Add efiparttable type attribute This commit allows to choose the partition table type for efi firmwares using the efiparttable type attribute. Fixes #638- Update spec file to require xorriso- Cleanup hybrid call and use of iso tool options The extra isohybrid call is only needed if the mkisofs tool category is used. Thus it should be only visible at the place where the isofs is created and not as an extra step in the builder tasks. Additionally the handling of extra options was mkisofs specific and should be better done as a common meta_data record. The tool specific options should only appear in the tool specific class implementations- Allow to configure iso tool category Switch to xorriso by default but allow to setup cdrtools in the runtime configuration file- Remove xml_parse.py shebang in spec It removes the shebang from the autogenerated file and also removes the exception in rpmlint to ignore non-executable-script warning. Fixes #666- Remove unneeded shebangs from dracut modules Fixes #668- Added IsoToolsXorrIso class As an alternative to mkisofs/genisoimage there is now the IsoToolsXorrIso class which implements the IsoTools interface by using xorriso. This Fixes #635- Update package MANIFEST.in Include new iso_tools directory- Added iso_tools api documentation- Add list_iso method to iso_tools api- Update FSF address The address has been taken from the header example published here https://www.gnu.org/licenses/old-licenses/gpl-2.0.html Fixes #667- Add create_iso method to iso_tools api- Seperate iso tool handling into its own namespace The Iso class only provides generic helper methods around the creation of ISO filesystems. For the creation of the filesystem itself we encapsulate the tool parameter handling into its own class. For the option compatible mkisofs/genisoimage tools the IsoToolsCdrTools class exists. This allows to create e.g IsoToolsXorrIso class as a future implementation- Refactor iso helper tools There are several tools available to build iso images. genisoimage, mkisofs and also xorriso. The history of the tools shows them to be used in the range of available Linux distributions. Thus kiwi contains an abstraction layer to support them but assumed they are option compatible. With the xorriso implementation this is no longer correct and therefore a refactoring of the iso tools api is required before support for xorriso can be added. This references Issue #635- Make build type mandatory in XMLState- kiwi_inode_size value is no longer hardcoded in more than one place- Add warning message for dasd- Rearrange defaults and some comments- Rearrange variable start_sector attribute to be a Partitioner attribute- Add disk_start_sector type attribute This commit adds the disk start sector attribute to configure the first disk sector for the first partition of the disk. Fixes #575- Rebuild online schema documentation- Bump version: 9.13.8 → 9.13.9- Bump version: 9.13.7 → 9.13.8- Fixed base package requires kpartx is used by kiwi but was not required in spec- Update gitignore Do not manage changes in .pytest_cache- Tell plymouth to quit only if a dialog is called In case of a dialog kiwi uses the dialog program which conflicts with the plymouth splash system. Thus we tell plymouth to stop This patch changes the request to be send to plymouth prior to a dialog call and not in general- Bump version: 9.13.6 → 9.13.7- Update bootloader console for oem test image Set bootloader_console="serial" for the oem test image to allow testing in the Kanku CI- Add profile dependencies With this commit the profile can include other profiles as a dependency. This way it is possible build an image defined by multiple profiles by just calling a single composed profile from the command line. Fixes #658- Bump version: 9.13.5 → 9.13.6- Disable multipath from oem build test- Fixup setup of root_filesystem_is_multipath The variable is set to a boolean value or None. If set to False due to a configuration of oem-multipath-scan this will cause the dracut multipath module to be omitted. In any other case the presence of the multipath module decides whether it will be included into the dracut generated initrd or not.- Fixup python-kiwi base package requires There is no need for the base package to require multipath. Those tools are only needed for dracut modules- Use dracut modules based on feature use As the kiwi build dracut initrd is a generic one which includes all installed dracut modules we missed a way to exclude modules from beeing incorporated even if we know it would not be needed. One example is the multipath module which would only be useful if the oem multipath scan is configured in the image description- Update test-image-oem build Create hostonly dracut initrd on first boot and replace kiwi's grub config by the result of grub2-mkconfig- Delete invalid motd file from build tests- Prepare test-image-oem build test for Kanku Activate unattended mode and preselect the installation target Also specify a fixed swapsize value to be independent of the host main memory which is used to calculate swap if no size is specified- Bump version: 9.13.4 → 9.13.5- Fixed btrfs search path in earlyboot script If kiwi generates its own efi image for the boot process it does not setup the btrfs relative path setup in the earlyboot script embedded into the generated efi image. This has a bad impact on the file search because the btrfs setup done in kiwi puts root below the @ volume which we then need to specify of the relative lookup is not activated. Fixes bsc#1082155- Bump version: 9.13.3 → 9.13.4- Use LABEL for the swap partition If multipath and device maps are active the fstab entry should use the LABEL reference. Systemd calls swapon and it only works properly with multipath devices when LABEL reference is used or calling directly on the /dev/dm-* device file.- Bump version: 9.13.2 → 9.13.3- The order of the options for mkisofs matters Setting -eltorito-platform after -b causes mkisofs to fail- Resize partition table after image resize The command 'kiwi image resize' allows to resize the size of a disk image. Depending on the partition table type it is also required to resize the partition table inside of the image to let the file size change become effective This Fixes #534- APT: Support patternType in the bootstrap phase With patternType="onlyRequired" (the default), run debootstrap with --variant=minbase to install only essential packages. With patternType="plusRecommended", let debootstrap also install important packages. This is not exactly what the patternType keyword means with other targets, but it allows to choose between an absolutely minimal image and a small but usable system.- Bump version: 9.13.1 → 9.13.2- Reactivate device mappings after repart. Fixes #645 This commit recreates removed device maps and triggers again systemd generators in order to adapt again device units to the new context. Fixes #645- Refactor ovftool check The way this was done mask errors from the call with the check if the tool exists on the host. This patch refactors this and makes clear where we check for the tool to be installed and where we actually call it- Extend has_option_in_help to also check error data- Check if isotool supports eltorito-platform option Along with the change there is a small refactoring to populate the iso tool search to the public api of the Iso class- Set eltorito-platform for efi The default eltorito platform is set to "x86_64 PC", however in an alternative bootloader spec for efi this would be the wrong platform spec. This patch adds the correct platform to the alt-boot setup for efi. References #643- Fixup obs test status helper Use osc results output to get better status information- Fixed get_free_disk_bytes in dracut kiwi-lib The method used any device from the lsblk output, but it can happen that some device nodes with different name point to the same physical device. The method would then calculate the free space wrong. This patch takes the PARTUUID value into account to make sure any partition device size is used only once. This Fixes #648- Use pytest instead of py.test From pytest 3.0, it is recommended to use "pytest" as the main command. The use of "py.test" is deprecated and is potentially removed in the future.- Update tox setup Add python 3.6 target and activate it for the travis and the local make targets Use major python version for the check(flake) and doc targets where the interpreter minor version is not primarily important This references #641- Update yast setup documentation Incorporate changes per review by Tom- Fixed oem build test bind-utils explicitly required for obs to be able to resolve the package dependencies- Bump version: 9.13.0 → 9.13.1- Only delete sub path if not empty- Fixed package lists for azure and ec2 build tests- Reference commit for bugzilla With regards to the changes done in Issue #637 this commit just creates a reference to a related bug bsc#1082163- Cleanup config functions shell coding- Use mkisofs instead of wodim- Delete obsolete/unused methods- Add functions.sh to shellcheck- Added doc page how to setup yast on firstboot- Allow arch attribute for profiles specification A profile could be relevant for only a specific architecture. There was no way to express that in the XML description. With the change in this commit a specification like the following is possible: Profile A is only usable on the aarch64 architecture, whereas profile B would be usable on all architectures. * Selecting an arch specific profile from the commandline via the --profile option on a system which is not of that architecture will result in an error message. * Using the import="true" attribute in the definition for an arch specific profile will cause the import of that profile only on that architecture and silently ignore the import on any other architecture This Fixes #637- Update build-test descriptions for Kanku As part of the buildservice there is now also a CI system called Kanku which allows for image boot/run tests. The only requirement on the image level which is missing in our build test descriptions is the setup of the serial console. This patch updates those image descriptions which could be tested by kanku to provide a serial console at boot time. The plan is that our build-test images automatically gets boot tested by the Kanku CI. This should include boot, console-login, reboot, console login, shutdown. The required job description to do this needs to be worked out together with the Kanku team- Adding publisher attribute for ISOs This commit adds the 'publisher' attribute in type only for ISO image type. It sets the publisher name of the resulting ISO. Fixes #630- Fixed yum vs. yum-deprecated binary lookup When using the yum package manager it could be either provided as yum or yum-deprecated binary. Because of this the search method to find the binary needs to know the context from which the call is performed. This could be either the host system or the created image root. This Fixes #624- APT: Run debootstrap with --variant=minbase This selects only packages with Priority: required, which is more in line with what the other package managers are doing. A patch for kiwi-descriptions has been submitted to adapt to this new behavior.- Bump version: 9.12.9 → 9.13.0- Do not emit linuxefi/initrdefi on non-x86 platforms Grub wants to have linuxefi/initrdefi commands to execute Linux via the UEFI calling convention on x86. However, all other platforms simply use the normal linux/initrd commands, because there grub assumes that an EFI grub wants to run an EFI payload. Reflect this architecture difference in the generated grub configuration. Signed-off-by: Alexander Graf - Fixup grub2 theme setup The presence of a background file was mandatory for kiwi to use the theme. But the background information is optional- Deleted obsolete boot descriptions The custom kiwi boot descriptions has been moved into the kiwi-descriptions github repo and builds the compat package kiwi-boot-descriptions from there. The build of the boot image(initrd) is done by dracut and the dracut module packages provided by kiwi. The classic custom boot descriptions can still be used as alternative method if the above package is installed. Related to Issue #576- Create compatible boot options The boot option root=install:CDLABEL= is mandatory for install images which uses the dracut initrd system. But for the custom kiwi oemboot descriptions this is causing a problem when detecting the install device. Thus the above boot option is only applied for the initrd system which actually makes use of it- Update boot description search path With the move of the boot descriptions in its own package the kiwi search path needs to be adapted to look for boot descriptions in /usr/share/kiwi/custom_boot. In addition a runtime check to exit early if the boot description could not be found or is not specified will be provided. Related to Issue #576- Update the docs to the current example present in kiwi-descriptions- Bump version: 9.12.8 → 9.12.9- Update .virtualenv.dev-requirements.txt sphinx 1.7.0 is not compatible with travis-sphinx thus we stick with 1.6.7 until travis-sphinx followed the sphinx changes- Add restrictions to Path.remove_hierarchy When an iso file is used as repo, this iso will be loop mounted on the host and bind mounted into the image root as long as the image builds. When the mount is released a recursive cleanup of the complete path happens. This is done by calling Path.remove_hierarchy. However if a sub path of the mount path contains a system root directory which is mandatory for the Linux root system it is not allowed to be deleted even if it is empty at the time of the mount cleanup. Thus this patch adds a lookup for protected directory names and only runs the recursive deletion as long as no protected member is part of the path. This fixes bsc#1080301- Initial support for building Debian/Ubuntu packages in spec This adds support for producing the main kiwi package as well as the packages for the dracut modules to be used when building Debian-based distribution images with KIWI. The Debian/Ubuntu package is built using debbuild: https://github.com/ascherer/debbuild- Fixed build_pxe_root_filesystem documentation The article still used filename references from v7 code stream This patch updates the docs to match the sources it refers to- Update dropped features documentation The information on the partition based install method was unclear and misleading. This patch clarifies the documentation in this regard- Delete obsolete ovf format value Support for ova has been added which makes the ovf format value obsolete and redundant- OVA: Print a user-friendly message if ovftool is not available- OVA: Require ovftype="vmware"- Expand consistency check for grub efi package to cover debian based and RH distros- Bump version: 9.12.7 → 9.12.8- Exclude install source device from target list- Fixed kiwi-dump timing issue The install code needs to wait in the pre-udev phase for the device containing the installation data to become ready before proceeding with the actual installation code.- Fixed dialog size of install confirmation dialog The size was too small to show device names which causes a line break to be displayed in the next line- Fix style error- Early exit if firmware is efi or uefi but the expected grub module is not part of the package list- Cleanup misleading method name- Fixed coverage report setup Latest version of the coverage module requires a report setup- Fixed target path name for gce format get_target_name_for_format in case of the gce format does not return a path spec which leads to an incomplete result information for a later bundle command. This patch fixes this. In a follow up pull request we will also update the method name from the misleading get_target_name_for_format function name to get_target_path_name_for_format- Use live-grub-stick- Fix packages file generation This commit checks the %_dbpath value of the image rpm tool. This is needed since recent rpm versions switched the default database path, thus running rpm queries to different roots might lead to errors. Fixes #605- Bump version: 9.12.6 → 9.12.7- Update per review by Tom- Update per review by David- Update per review by Tom- Added chapter for live-fat-stick deployment With the support for the iso-scan feature in KIWI live ISO image, also the ability to deploy file based on FAT32 usb sticks via the live-fat-stick tool exists. This chapter describes how to do it and Fixes #521- Update pre review by Tom- Update per review by Tom- Update per review by Tom- Remove vmdk metadata update procedure This commit removes the method _update_vmdk_descriptor from DiskFormatVmdk class. The code part causes vmdk format issues in current up to date hipervisors such as VMWarePlayer 14 or Virtualbox 5.2. Removing this code does not produce any failure, at most can only imply loosing some features provided by open-vm-tools package. Fixes #591- Fixed use of profile variables in kiwi-dump module The profile environment was not imported in the dracut kiwi-dump module. Thus custom settings like oem-unattended did not had an effect- Fixup docstrings in xml_state- Allow only one dracut variable for kiwi debugging- Bump version: 9.12.5 → 9.12.6- Fixed kiwi dracut config for the final system Once the image has been deployed on the target and the system is up and running some of the kiwi dracut modules used for deployment are no longer needed and should not be taken into account when another dracut call happens on the system.- Add support for building OVA images Implement support for format="ova" using VMware's ovftool. We use the vmdk format as a basis and then just call ovftool to convert *.vmdk + * .vmx to an OVA.- Update documentation Update the documentation with regards to the move from the plain kiwi initrd to the dracut initrd system. This is related to Issue #576- flake8: Use a more conservative max-complexity setting Set the default threshold to 12 and annotate the outliers with "noqa: C901". Most of the cases are due to lack of switch statement in python, but there are some worth titying up. Now we can grep for them :).- Bump version: 9.12.4 → 9.12.5- Make sure there are no busy devices on reboot If the dracut kiwi-repart module skips the repartition step because the disk was already repartitioned it leaves devices in busy state which leads to a rescue shell at the system mount stage- uboot-setup-panda.tgz was readded by mistake as boot hooks are no longer needed- Adding opensuse ports repository- Bump version: 9.12.3 → 9.12.4- Don't lookup zImage symlink Due to the workaround to lookup the gzip compressed variant of a zImage to find its version, it's required to find the full name of the zImage in order to rematch the gzip variant. Looking at the zImage link will make this to fail because there is no vmlinux link- Bump version: 9.12.2 → 9.12.3- Fixed kernel version check for zImage kernels build as zImage contains the decompressor code as part of the kernel image and could be therefore compressed by any possible compression algorithm. In this case we assume/hope that there is also a standard gz compressed vmlinux version of the kernel available and check this one instead of the zImage variant. Fixes #587- Bump version: 9.12.1 → 9.12.2- Update the man pages- Fixed installation image builder Use get_boot_names from BootImage instance to ask for the name of the initrd instead of constructing this information from static values. The name of the initrd is different per distro and toolkit- Provide a get_boot_names method in boot classes The naming schema for an initrd file name depends on the boot image type as well as on the underlaying initrd creation toolkit. In order to encapsulate that in a clear interface the code to know about the correct names has been moved into the classes which are responsible for it and out of the builder/disk class- Image name generation for GCE images + Fix the name generation for GCE images. The implementation assumed that GCE images are of a type that use a kiwi generated initrd, looking for image name components based on the boot attribute in the type element. This assumption is not correct, use the name provided in the XML to compose the image name.- Bump version: 9.12.0 → 9.12.1- Fixed dracut-kiwi-oem-dump requires setup on rhel/fedora multipath is provided by device-mapper-multipath- Adding package_gpgcheck flag as an option for set-repo and add-repo Fixes #565- Adding uboot-setup kiwi hooks For some reason the uboot-setup-panda.tgz file did not get into master branch, probably was not properly pushed in the former include_build_tests_arm branch.- Fix build tests to match new locale setting strategy (#586)- Added timezone package to build tests With the latest update on how kiwi handles the locales with systemd-firstboot, only locales defined in timezone package can be set, thus Europe/Berlin is not possible if timezone is not installed- Fixed build tests for azure and ec2 Packages yast2-storage and recode no longer provided- Bump version: 9.11.30 → 9.12.0- Update build test image descriptions Update to latest schema by auto conversion and delete use of oemboot kiwi code by switching to dracut- Fixed reading device node path lsblk should be called with -p because it's a mistake to assume any device lives below /dev. There could also be subtree devices in /dev/mapper or /dev/disk/.. We leave it up to lsblk to provide us the correct information- No need to actively stop the dialog service- Added required packages for dmraid and multipath- Added handling for dmraid and multipath devices- Adding iso-scan feature to kiwi-live dracut module This commit adds the iso-scan scripts to kiwi-live module_setup if the former files are found in the system inside the dmsquash-live dracut module directory. Fixes #574 and is related to #521- Fixed Arrays implicitly concatenate by shellcheck- Add support for net install in dracut kiwi-dump This implementes one of the tasks from Issue #576- Added runtime check for dracut-kiwi-oem-dump The installation of the above mentioned dracut module package is required for oem images which uses dracut as initrd system and have the creation of an installation image requested. This is related to Issue #576- Update schema version in documentation- Auto update all schema descriptions to v6.8- Delete hwclock from profile and system setup- Delete hwclock section from schema Deletes hwclock section from schema and provides xslt style sheet for schema auto conversion from schema version 6.7 to 6.8- Deprecate suseConfig method and remove hardware config method This in this commit: - the contents of the suseConfig method from kiwi/config/functions.sh are replaced by a deprecated message. - the setup_hardware_clock method from SystemSetup is removed as it is not used anywere in the code.- Extend CommandCapabilities to also check version- Added dracut-kiwi-oem-dump subpackage to spec- Update locale settings (#579) * Use systemd-firstboot in order config basic settings This commit updates locale and keyboard settings in order to make use of the systemd tools, as this will be the only valid method starting from SLE15. Fixes #577 * Added CommandCapabilities utils class- Bump version: 9.11.29 → 9.11.30- Deleted syslinux from ppc/oemboot/suse-SLES15 syslinux is not provided for ppc. This Fixes bsc#1073310[boot] fix double quote in grub menu which makes kernel updates for CentOS / RHEL / Fedora break grub.cfg- Omit kiwi-repart dracut module in oemboot initrd KIWI's oemboot initrd with initrd_system="dracut" together with installiso="true" requires to have dracut-kiwi-oem-repart package installed in the system, thus it ends up also being included in the recreated dracut initrd after booting the oemboot initrd from the installation iso. This kiwi-repart module causes a boot failure in that case since no .profile file is present, moreover, it has no sense to run it at that stage, since the disk is already reparted by the oemboot code. This commit allows installiso="true" and initrd_system="dracut" to play well together.- Improve locale pattern in schema Now the locale pattern in the schema also supports POSIX. Note that POSIX will be only accepted if listed in the first place of the comma separated list. This commit fixes #570- Bump version: 9.11.28 → 9.11.29- Allow to choose dracut live module There is the standard dracut dmsquash-live module based on the device mapper technology and the kiwi-live module based on the overlayfs technology. The setup of the live iso structure in kiwi is compatible to both modules. Thus it makes sense to allow to choose the technology via the flags attribute Please note both modules supports a different set of live features. This Fixes #568- Bump version: 9.11.27 → 9.11.28- Fixed ec2 and azure test builds cryptconfig is no longer provided- Bump version: 9.11.26 → 9.11.27- Apply target permissions only if target dir exists- Bump version: 9.11.25 → 9.11.26- Fixed use of stat result in os.chmod oct method returns a string representation which was mistakenly used in a subsequent os.chmod call. This Fixes #564- Fixed tox doc target Correctly include schema pictures after travis-sphinx build- Bump version: 9.11.24 → 9.11.25- Update failsafe kernel option list Delete obsolete parameters and make sure a failsafe boot does boot into runlevel 3. This Fixes #554- Apply xslt validation on boot images- Do not match comments and PIs in XSLT templates I wanted to add a simple vim modeline to my XML description: This made kiwi consume insane amounts of memory during the XSLT transform step. While this may be a bug in my version of lxml, we do not transform comments on processing instructions in the conversion templates, so the easiest solution is not to match them. Signed-off-by: Michal Marek - Make sure toplevel target dir keeps permissions When syncing data via rsync we make sure the toplevel target directory the data gets synced to does not change it's origin permissions. This Fixes #557- Rebuild schema documentation- Fixed dependencies for dracut-kiwi-lib Adapt package names for gdisk/gptfdisk and btrfs-progs/btrfsprogs Install and require fdasd only on s390 architecture Delete fbiterm requirement since the project seems unmaintained and the use of the framebuffer terminal is an option in the code but not mandatory. This Fixes #559- add missing deps for docker builds. Moving kiwi-image:* provides to -requires package- Update text per review- Fix and cleanup tox setup Along with the cleanup of the tox setup also the workaround using an older version of the py module has been fixed- Fixed travis-sphinx call syntax- Update dropped feature list Legacy kiwi's oem recovery feature will not be ported due to technologes like ReaR, snapper, btrfs and due to the container, cloud and public cloud orientation of OS images- Implementation of dracut kiwi-dump module Provide the capabilities of the oem install code as dracut module. The implementation covers the result of the installiso="true" configuration. Installation from remote sources still needs to be done and will follow in an extra pull request. This addresses Issue #576- Bump version: 9.11.23 → 9.11.24- Fixed URL to semver.org in development guide- Bump version: 9.11.22 → 9.11.23- Fixed module setup for dracut-kiwi-lib lsblk tool used in code but missing in dependencies- Fixed test-image-azure build test azurectl does not resolve because of missing AppScheduler but for the integration test image we also don't need azurectl Thus it was just deleted from the list- Fixed test-image-azure build test pam-modules package doesn't exist anymore- Bump version: 9.11.21 → 9.11.22- Fixed typo in spec file The use of the suse_version macro from the last change introduced a syntax error which caused the package build to fail in obs- Bump version: 9.11.20 → 9.11.21- package: Prepare for Tumbleweed moving to suse_version 1550- Bump version: 9.11.19 → 9.11.20- Only add package manager on image package requests (#550) If an image description only contains package requests from a bootstrap section but no image packages, it's not required to install a package manager package into the system- Add device-mapper requirement for dracut-kiwi-live- Post build constraint validation refactored- Bump version: 9.11.18 → 9.11.19- Update gfxboot.cfg for iso images Don't move down one menu entry the first time a F-key is used This Fixes bsc#1068790- Adding quotes to ensure '%_dbpath' is treated as string- Add max size post build command This commit includes a post build constraint validation into the Result class. With this commit any file included to the result tuple is verified not to exceed the maximum size configured into the runtime configuration file config.yml. Fixes #468- Fixed ec2 integration test requirements for unneeded crash package broken- Fixed ec2 integration test nothing provides pam-modules- Removes the hardcoded path of the rpm database With this commit the rpmdb path is evaluated from the %_dbpath macro instead of being hardcoded. Fixes #537- Bump version: 9.11.17 → 9.11.18- Added runtime check for dracut-kiwi-oem-repart OEM images if configured to use dracut as initrd system requires the KIWI provided dracut-kiwi-oem-repart module- Fixup py vs. pytest-cov version incompatibility- Bump version: 9.11.16 → 9.11.17- Delete atftp from SLE15 boot descriptions atftp will not be part of SLE15 per fate#323633. This Fixes #543- Fixed blocksize setup in losetup The -L option was used to set the blocksize value for losetup However there is an option name clash between suse util-linux and upstream which now leads to the problem that option -L has changed its meaning and actually means --nooverlap which completely breaks the call in kiwi. This patch changes the call to use the long form --logical-blocksize. This Fixes bsc#1066873- Code cleaning and enhancing variables names- Use usr/lib/rpm if present instead of var/lib/rpm With this commit OEM recovery tries to backup usr/lib/rpm if present, if the directory is not present it tries to backup the old default configuration, var/lib/rpm.- Extend checkmedia runtime check In addition to the correct architecture the check also includes the lookup of the required tagmedia tool to be present on the building host. This Fixes #538- Remove hardcoded any /var/lib/rpm path This commit changes any /var/lib/rpm reference to the call 'rpm -E %_dbpath' which returns the path of the rpmdb which has been recently updated to a different location in recent rpm versions. Now the rpmdb path is determined dynamically. Fixes #537- Adding a s390 oem test image- kiwi-hooks should be packed in tar Remote OBS source service is no capable of packaing a folder into a tar.- Include arm build test- Adding test image descriptions This commit adds the image descriptions used to test KIWI within the Open Build Service.- Add support for apt repository priorities Apt handles repository priorities in a preferences file per repository and calls that pin-priorities. The implementation here sets the configured priority for all packages of the given repository- Add missing hooks to the other architectures- Add pre/post mount hook for oem- Clarify how strip works- Add more OEM hooks- updated contributing link- s/42.1/42.3/- Bump version: 9.11.15 → 9.11.16- Fixed validation of isohybrid warnings The list of warning messages is evaluated line by line and those not matching the ignore warnings list are treated as errors. However if an empty line exists it did not match the ignore warnings list but is also not an error. This patch makes sure only non empty warning information has an effect- Bump version: 9.11.14 → 9.11.15- Do not require cracklib-dict-full in boot images- Bump version: 9.11.13 → 9.11.14- Cleanup SLE12 boot image descriptions- Bump version: 9.11.12 → 9.11.13- Cleanup SLE boot image descriptions Don't use packages which does not exist on SLE, Fixes #523- Improve coding style to make flake8 happy This commit includes the exact Exception class that the 'except' statement catches. According to the new flake8 3.5.0 version it should be explicit rather than implicit.- Add OCI reference in skopeo copy call and umoci config call Skopeo, since v1.24, does no longer assume 'latest' as the default tag/reference and requires explicit tag or reference in skopeo call. In KIWI the default was only used to import the base rootfs, with this commit the imported container is tagged as 'base_layer'. The current patch works for all skopeo versions.- Update hooks documentation- Bump version: 9.11.11 → 9.11.12- Add more hooks for oemboot This follows netboot behavior- Fix vmdk descriptor file This commit fixes the descriptor file of the vmdk images. Before this commit the descriptior file was appended at the end of the image instead of overwritting the current one at the very beginning. Fixes bsc#1050665- Bump version: 9.11.10 → 9.11.11- Follow up fix for isohybrid error handling Allow to handle multiple messages from isohybrid as warnings. Only if the list of messages still contains information after all non error conditions had been checked out, an exception is thrown- Bump version: 9.11.9 → 9.11.10- Cleanup boot descriptions The still existing kiwi boot descriptions contained wrong information about no longer existing packages and many other obsolete information.- Bump version: 9.11.8 → 9.11.9- Prefer image packages section for bootincludes If a package is marked bootinclude prefer section in the target XML as primary target and only if no such section exists put the package in the section- Keep NVMe drivers in the initrd Support systems with the root filesystem on a NVMe device- Bump version: 9.11.7 → 9.11.8- Changed permissions of /srv/tftpboot to be readable (bsc#940608)- Bump version: 9.11.6 → 9.11.7- Also handle multiple error conditions- Allow to ignore certain isohybrid warnings kiwi treates warning from isohybrid as fatal errors becuase in most cases they are fatal. However some of them are kind of historical and should be ignored like the one described here: http://www.syslinux.org/archives/2015-March/023306.html- Bump version: 9.11.5 → 9.11.6- Make sure xz options are used with pxe tarball The tar command used in the pxe builder did not utilize threading and/or the xz options provided by an optional kiwi config file. This Fixes #507- Move depmod into baseUpdateModuleDependencies Kernel module dependencies should be resolved after kiwi has called all the stripping functions and not as part of the baseCreateCommonKernelFile which runs before. This Fixes #508- Fixed order of volume mount list re-order mount_list by mountpoint hierarchy. This is needed because the handling of the fullsize volume and all other volumes is outside of the canonical order. If the fullsize volume forms a nested structure together with another volume the volume mount list must be re-ordered to avoid mounting the volumes in the wrong order- Update issue template- Bump version: 9.11.4 → 9.11.5- Rebuild schema documentation- Show results in a dialog- Improve display of runMediaCheck results The splash screen should be switched off in order to let the user see the mediacheck results as well as a delay timeout before the boot continues or stops is useful- Call plymouth default theme setup in build command Make sure plymouth-set-default-theme is called as part of the system build command and not only as part of the system prepare command- Fixed package requires for dracut-kiwi-live On Fedora/RHEL cdrkit is only a source package building other packages. The package dracut-kiwi-live really needs is genisoimage- Added dracut kiwi oem module and library A new dracut module kiwi-repart used to be the successor of the custom kiwi oemboot code to repartition the disk has been added. Along with the module a dracut library kiwi-lib will also be delivered.- Fix trailing pipe character in .packages file In addition make sure the field layout is consistent across the .packages files no matter which package manager was used to create the information. This Fixes #501- Bump version: 9.11.3 → 9.11.4- Update documentation Link to the obs overview page to show build test results- Added Fedora integration test build to obs status- Limit the characters set for volid attribute This commit fixes #493- Revert "Fixed package requires" This reverts commit a8d50a593911725965e09b0e8c2f3b9bc742202b.- Fixed package requires On Fedora xattr is provided by python[3]-pyxattr- kiwi-boot-requires only required for suse(obs)- Update project intro page- Update project intro layout- Update project intro page- Bump version: 9.11.2 → 9.11.3- Added disk format="vhdx" support Support dynamic VHDX (gen2) image format for Hyper-V. This Fixes #490- Added additional required attr schematron rule The new rule allows to check for required attributes for a specific image type and is used for the filesystem attribute which is required for the image type oem, vmx and pxe. This Fixes #476- Bump version: 9.11.1 → 9.11.2- Rebuild online schema documentation- Bump version: 9.11.0 → 9.11.1- Fixed kernelList function The kernelList function searches for the installed kernels and applies the corresponding initrd name. The information the method provides is used in case of a custom initrd which should be used instead of the result of dracut. When requesting the use of the kiwi firsboot initrd also in the system via the element, the information from the list is used to correctly link the kiwi initrd named initrd.vmx to the expected name of the system as dracut would create it. The creation of the list was broken which lead to an empty list and the after effect that the system was not able to reboot. This Fixes #483- Update oemboot/rhel-07.0 due to isolinux changes With the move of the isolinux setup operation into the python code and the deletion of the old code from the images.sh scripts it's required to keep syslinux in the boot image otherwise the builder can't find it when explicitly deleted before the isolinux setup- Update device node names for devmapper nodes Partition devices created by the device mapper could use the _part or the -part naming schema. This patch allows for both variants and Fixes #480- Added e2fsprogs to s390/netboot During bootup of a diskful netclient when it comes to e2 filesystem operations the tools were missing. Fixes #479- Rename source label This commit renames the source label to a more explicit name. This commit also relates to bsc#1055542 and fixes #473- Add mediacheck handler for live iso This fixes bsc#1049304- Added live iso integration test build to obs status- Bump version: 9.10.6 → 9.11.0- Delete atftp from boot descriptions In SLE15 / Leap15 atftp has been dropped. This Fixes bsc#1056951- Deleted Leap 42.1 JeOS Leap 42.3 has been released- Fixed list of gfxboot modules Bad bug, missing comma caused the list to be interpreted differently by python which screwed up some list items- Delete obsolete suseGFXBoot kiwi boot code The code has been moved into the python source at bootloader/config/isolinux.py- Delete vmxboot descriptions vmx boot is now fully integrated with dracut- Make get_initrd_system a state method Make sure the default initrd_system is set to dracut for the vmx image type and to kiwi if no initrd_system is specified. This allows to simplify other code parts as we can trust there is a value set- Update schematron rules for boot and initrd_system The boot and initrd_system attributes are no longer used by the vmx image type and are therefore not allowed anymore.- Added runtime checks for overlay disk images Checking if the dracut-kiwi-overlay package will be installed as part of the build and also for the supported EFI setup since the EFI secure boot setup would try to perform changes on the filesystem which is a readonly squashfs, this is not supported- Fix isohybrid call isohybrid errors printed on stderr were not treated as fatal but should be treated as such. In addition isohybrid should distinguish for efi setup according to the efi setup of the image itself- Refactor _get_source and _get_source_label methods- Support overlay disk images via dracut Using the kiwi-overlay module to boot up systems configured with the overlayroot="true" attribute in the system image XML configuration. Fixes #65- Added kiwi-overlay dracut module and package Package dracut-kiwi-overlay providing kiwi-overlay dracut module- update README Use normal style dash character- update README- Delete isoboot descriptions Live ISO boot is now fully integrated with dracut- Added runtime check for dracut module on live iso Live ISO images uses a dracut initrd to boot and requires the KIWI provided kiwi-live dracut module to be installed at the time dracut is called. Thus this runtime check examines if the required package is part of the package list in the image description- Include the source label in container images This commit fixes bsc#1055542, it includes the DISTURL parameter as a label into the container metadata when the build happens inside the buildservice. The new label included is named: * org.opencontainers.image.source in line with the current OCI annotations schema.- Added kiwi-live dracut module and package Package dracut-kiwi-live providing kiwi-live dracut module- Update schematron rule for boot attribute The boot attribute is no longer used by the iso image type and is therefore not allowed anymore- Update allowed values for iso image attribute With the move to dracut only the options implemented for the kiwi-live dracut module are available- Move to dracut for live ISO images Instead of the kiwi isoboot layout the live layout has been changed to follow the rules of the live system support offered by dracut. The initrd used to boot up the system is now a dracut generated initrd and can be customized via the 'flags' attribute in the kiwi XML description. In order to meet the kiwi live requirements a custom dracut module called kiwi-live is provided along with the changes in kiwi. This Fixes #470- Bump version: 9.10.5 → 9.10.6- Added boot descriptions for SLE15 on ppc- Added boot descriptions for SLE15 on s390- Bump version: 9.10.4 → 9.10.5- Added handling of formatoptions attribute Custom disk format options passed in the formatoptions attribute were not handled. In addition options with a value passed to qemu were handled in the wrong way. This commit addresses both problems and Fixes #463- s/sles/openSUSE/- copy SLE15 files for Leap 15- add Leap 15 macros- leap_version is deprecated. use sle_version+is_openuse instead- Added azure integration test build to obs status- Bump version: 9.10.3 → 9.10.4- Fixed resize if all free volume in oemboot/repart- Fix space calculation for lvm volumes It is required to take the other configured volumes into account in order to solve the problem of nested volumes. The size of e.g the root volume must be reduced by the size other volumes inside of the root volume needs. This is especially required if the root volume is not the fullsize volume- Fixed setup.py requirements record PyYAML is required by KIWI- Add description of Overlay Files to Terminology- Bump version: 9.10.2 → 9.10.3- Export *.verified also for images based on apt-get This commit includes support in system/setup.py to run a package verification also for images based in apt-get package-manger Related to #457- Include .packages file for apt-get based images This commit renames export_rpm_packages_list method to export_packages_list and it includes support for listing debian packages if apt-get package manager is used. Fixes #457- Fix calculation of needed disk space for oem types The calculation did not include the minimum volume requirements if a volume setup exists- Update expected compatible major version every version of umoci/skopeo <= major v1.x.x is expected to work with the implementation used in kiwi- Extend scope of check_docker_tool_chain_installed The runtime check only checks for the presence of the docker tools umoci and skopeo but as we are expecting incompatible api changes in the next major version release the check has been extended to look at the major versions of the installed tools as well. Fixes #454- Fixup schema version in chapter topic- Bump version: 9.10.1 → 9.10.2- Fixup XSL stylesheet v6.7 Apply templates matching all processing instructions in order to match
text
- Rebuild schema documentation- Remove xml_state.get_build_type_mediacheck method The method was not needed since a direct call to xml_state.build_type.get_mediacheck was already producing an equivalent output (True, False or None), where 'None' can be easily treated in the same way as False.- Add runtimecheck for mediacheck attribute on non x86 hosts This commit rearranges some method and variable names and includes a new runtimecheck to ensure the mediacheck attribute is not set when building non x86 images. Patch related to bsc#1049304- Auto update image descriptions to schema v6.7- Update schema to version v6.7 Cleanup of the schema, delete obsolete and unused attributes and sections. Details of the change can be found in the conversion stylesheet convert66to67.xsl- Add XSL stylesheet to convert from v6.6 to v6.7 Delete the following obsolete and unhandled attributes and sections * * * * * * * * * * * - Adding mediacheck menu entry for liveCDs This commit adds the checkiso attribute in type tag, only available for iso image types. Checkiso is boolean that determines the presence of0 a Mediacheck menu entry or not in the bootloader. This patch is related to bsc#1049304- Fixup encoding handling for profile file If an element like displayname or oem-boot-title contains characters outside of the ascii table this causes trouble when kiwi writes out the profile file and the code is called through python2. The reason here is that the default encoding on write() (and other methods) is set to ascii in python2 and when it receives unicode characters outside of the ascii spec a UnicodeEncodeError is thrown. Now all of kiwi is using Unicode which means this does not produce a problem when calling the code through python3 because the default encoding is utf-8 there. This patch introduces a method which allows to change python's default encoding and calls it at the code point where we write the profile because we got unicode and we want to write unicode in any case. This fixes at least one situation for python2-kiwi to allow the use of non ascii characters in the XML setup. If other places will be found the same approach should allow to fix it for python2- Fix RHEL spec check- Bump version: 9.10.0 → 9.10.1- Add LVM overhead for lvm based images LVM itself requires metadata stored in the metadata block kiwi did not take a size value for this data into account- Use dmsetup to cleanup device maps Instead of the broken kpartx -d we use dmsetup remove directly on the maps kiwi has created- Evaluate file strip before kernel strip Information from the optional section was handled as part of the suseStripInitrd method which is called after suseStripKernel. However if a request to delete a driver file is part of the above mentioned strip section the checks for the driver dependency and also for potential superfluous firmware is not applied. Thus the evaluation of the section happens earlier in the suseStripKernel method. Fixes #442- Added ec2 integration test build to obs status- Added Xen setup runtime validation Added check_xen_uniquely_setup_as_server_or_guest runtime check to check for a unique dom0 or domU guest setup Fixes #429- Rebuild schema documentation- Make vmdisk optional for the machine setup The guest machine information might not require information about the disk. Issue #429- Fix some spelling- Fix some spelling- Use the same option type (long form) for clarity- Use kernel compatible XZ options for kiwi initrd The kernel requires specific XZ options for the initrd in order to read the compressed data. This values should not be configurable by the user and are set to the same options as used by dracut now. Fixes #435- Change default XZ compression options Use all cpu cores by default. Fixes #433- Update spec file provides for schema version- Bump version: 9.9.5 → 9.10.0- fixed: fdupes is also available on Fedora- changed: simplify diff to orig spec file template- added: support for Fedora 25 / 26, fixed support for CentOS 7 in the spec file- Include default container name This commit includes a default container name for KIWI container images. This makes possible to create OCI and Docker containers without forcing the user to include a section in the description file.- Refactor code which deals with Xen Provide two methods is_xen_guest and is_xen_server which are used instead of the former machine domain and firmware processing. Issue #429- Apply schema v6.6 stylesheet to XML descriptions Updates all XML descriptions to latest schema version and also includes adaptions to the test XML descriptions for testing the new Xen guest and server setup- Fixup shell test condition Variables used in shell conditions should be quoted- Update schema to version 6.6 * Deleted domain attribute from machine section * Added xen_server attribute to specify a type to be a Xen dom0 * Added xen_loader attribute in machine section to specify the target guest loader this image is expected to become loaded with- Added schema 6.5 to 6.6 conversion Delete the Xen domain attribute from the machine section and introduce a new xen_server attribute which is set to true for any machine section with a Xen dom0 configuration- Added Makefile target obs_test_status Call make obs_test_status and get an overview about the current integration test builds and their status- Bump version: 9.9.4 → 9.9.5- Added s390 tumbleweed boot descriptions- Bump version: 9.9.3 → 9.9.4- This commit fixed root_init when running inside the buildservice This commit fixes regression bug introduced in #422- Exclude kiwi files from images This commit from one hand includes a get_exclude_list_for_root_data_sync method in Defaults which returns a list of the files used by KIWI that should not be part of the resulting image. From the other hand makes use of the exclusion default list in live, archive and container images, it fixes #423.- Bump version: 9.9.2 → 9.9.3- Revert "Include .buildenv file inside the buildroot" This reverts commit d30bf4a19ff11f7132c9a31528ddfa103e01b299. This also includes the get_buildservice_env_name method in Defaults to centralize '.buildenv' occurrences.- Fixup helper/kiwi-boot-packages Make sure the code also works in python2- Search for python interpreter in path Allow more flexible path spec to find python interpreter- More comfort in calling with compat arguments In addition to the 'kiwi --compat -- ...' style we also support calling the kiwi compat mode as a service via 'kiwi compat ...' The preferred way of calling kiwi with legacy options is via the new compat service. Thus the documentation also changed to no longer mention the --compat option but it still exists for compatibility reasons. Fixes #407- Allow use of more fine grain ignore repos options The meaning of the --ignore-repos option has changed back to ignore all configured repositories. A new option named --ignore-repos-used-for-build has been added which allows to ignore all except imageonly repositories. The command manual pages has been changed to document the options. This Fixes #410- Cleanup use of python interpreter invocation Prevent strict call of a specific version of the python interpreter. All code has been written to work with py2 and py3 thus the venv environment setup should decide what version a call of python is. Fixes #424- Make sure the KIWI buildroot has the /.buildenv file This commit makes sure the that the KIWI build root will always contain the /.buildenv file. Fixes #421- Include .buildenv file inside the buildroot With this patch if KIWI is running inside the buildservice the /.buildenv file is copied from the build environment to the build root of KIWI. At installation time some packages test the existance of this file in order to know if they are being installed inside the buildservice or not. Fixes #421- Fix url validation in buildservice (#420) This patch changes the remote URL validation strategy when running inside the build service. By design, inside the build service build environment connections to the outside world are not allowed, thus any validation attempting to do that will fail. With this patch, when running inside the build service, KIWI will not try to test if any download URL is reachable. Fixes #418- Bump version: 9.9.1 → 9.9.2- Refactor Uri is_public method Don't call a nested is_remote from is_public, instead the method was rewritten to explicitly cover the responsibility to check under which conditions we treat an uri as publicly available or not- Fixed Uri is_remote method If called inside of the buildservice the obs uri type is not a remote uri because the translation ends in a local path- Bump version: 9.9.0 → 9.9.1- Fixup setup and package requirements python requests is needed due to latest changes- Bump version: 9.8.1 → 9.9.0- Update doc string for Uri::translate method The method was missing doc info about the check_build_environment parameter and the return type of the method- Delete obsolete --obs-repo-internal switch- Create obs project download link like obs does it In reference to _download_repository_link.html.erb from https://github.com/openSUSE/open-build-service, we use the same mechanism to create the download link from an obs:// project definition- Fixup unit test for help command- Follow up fix for man page move make sure kiwi calls the man page from the now changed section level 8- Move man pages to correct section The man pages were incorrectly written to section 2, which is for syscalls. Since KIWI is an administrator's tool, it has been moved to section 8.- Make sure system image strip sections are applied in boot image This commit calls copy_strip_sections from the system image xml to the boot image xml. This is needed to make sure strip sections are applied into the boot image. Fixes #414- Refactor handling of obs repositories * Delete kiwi internal ibs: and suse: types * Delete handling for --obs-repo-internal and provide a compatibility message to the user * Buildservice download server url and scope can be configured via ~/.config/kiwi/config.yml * Translate obs urls to http in import_repositories_marked_as_imageinclude * Use new Uri.is_public method in renamed runtime check check_image_include_repos_publicly_resolvable- Fix a code block in workflow.rst Fixes #412- Fix xml_state test- Accept an empty string as a repo priority xml_parse code is autogenerated, thus no changes there should be considered. When adding a repository from the command line it can happen that the repository priority is mapped to an empty instead to a None valuei, when the priority is not specifically set. xml_parse will only support a parseable string to int or a None value as the default option, so, if an empty string is used, it throws an exception. With the current patch anything that cannot be casted to an int, will be considered as None. Fixes #408- Move check_image_include_repos_http_resolvable Call the check_image_include_repos_http_resolvable runtime check after the check and setup for the obs runtime environment. In case of obs uri types and a kiwi build outside of the buildservice those source locations could be translated into a public url and thus allow for use with the imageinclude attribute. However building inside of the buildservice maps those to a local path which is private to the used worked instance. In such a case the obs uri type is translated into a suse uri type and running the check_image_include_repos_http_resolvable after that translation will run from the translated and thus correct source uri information- Bump version: 9.8.0 → 9.8.1- Add unit tests for compat mode- Do not translate obs scheme to suse scheme for imageonly repos Fixes #404- Fixed compat setup for upgrade command Value for --root option was added after other options- Translate obs to suse derived from image uris This commit performs a translation from obs scheme to suse scheme for derived from image uris when kiwi is running in a buildservice worker. Fixes #399- Bump version: 9.7.4 → 9.8.0- Fix content layout of zypper credentials file Missing line break for entries in zypper credentials file- Allow imageinclude repositories inside the build service Fixes #397- Fixed doc_travis tox target using shell syntax requires calling a shell process- Allow imageinclude in add|set-repo commandline The --set-repo and --add-repo commandline options now allows additionally to specify a true|false value to indicate if the repository should be part of the system image repository setup or not. This Fixes #398- Fixed travis whitelist_externals test command is used in target- Fixed travis whitelist_externals commands cp and/or true are used in target- Fixup travis doc deployment Custom diagram images needs to be deployed manually- Update schema documentation- Delete unused data from schema docs processing- Flag --ignore-repos do not ignore imageonly repos This commit fixes #395, with it, using --ignore-repos, does not delete imageonly repositories from the description file. This way imageonly is prepared to be used in the buildservice even when using the 'obsrepositories:/' reference style.- Build schema documentation with Oxygen Given there is a valid Oxygen license owned by the company as described in https://www.oxygenxml.com/oxygen_scripting.html the schema documentation can be created using Oxygen. This commit allows building the schema docs with alternative doc builders and in case of Oxygen would change the way the schema docs are generated in the following way: 1. Install Oxygen and setup the license to activate the tool 2. Setup the KIWI development shell environment to export the schema_tool variable to point to the schemaDocumentation.sh script provided by the Oxygen installation export oxygen_tool=/path/to/Oxygen/schemaDocumentation.sh 3. In any case of a schema change manually call: tox -e schema This step was done before as part of the tox doc target but can't be done automatically because it would require a correctly licensed Oxygen installation in the travis environment. Thus the result data has to be part of the pull request 4. Build the documentation and review the result tox -e doc 5. Create the pull request- Update schema docstring for oem-systemsize- Bump version: 9.7.3 → 9.7.4- Fixed setup_plymouth_splash The schema generated get_bootsplash_theme() method returns a list because it's section content. The return value of the method was used as a string which caused a runtime error- Added creation of zsync control file in bundler If a --zsync_source url is provided to the bundler call a zsync control file is created for the compressed parts of the bundle. This Fixes #364- Add package manager in image info task solving process This commit includes the package manager package in the packages list to be solved in image info task.- Bump version: 9.7.2 → 9.7.3- Fixed gce disk format The order of the files in the tarball is important. The first entry must be the manifest.json followed by disk.raw- Make sure CliTask instance reads the config file Any instance of a CliTask has to read the runtime config file if present- Add generic access for attributes The layout of the yaml runtime config is based on an element topic containing a list of attributes. For now only the xz topic with its options attribute is in use but for the future more elements might be supported which can use the same access method- Setup plymouth splash in the image prepare process In case the plymouth-set-default-theme tool can be found in the image root system and a bootsplash theme is configured in the XML description, the tool is used to setup the theme configuration This Fixes #366- Include patternType information to resolv packages in image info task This commit includes ingore_recommended flag in the Sat.solve method. This way if the description file states to include only required packages (without recommendations) it is respected and taken into account to resolv the packages list. Fixes #381- Added custom xz option handling for ArchiveTar Allow to pass custom xz options for create_xz_compressed method. Issue #373- Make sure options are returned as list- Added custom xz option handling for Compress Allow to pass custom options for xz method. Issue #373- Activate reading of runtime config in tasks Implement reading of runtime configuration file in base commandline class. Issue #373- Cleanup doc string of base task class- Add runtime config man page section Describe the contents of the KIWI runtime config file- Added RuntimeConfig class An instance of RuntimeConfig reads in ~/.config/kiwi/config.yml if present and provides access methods to the expected information of the config file- Added PyYAML requirement to package and venv The KIWI config file is yaml based and thus we need support for reading the file in KIWI- Implement custom argument handling for xz_options Evaluate and hand over custom_args processing for the xz_options argument to all classes which performs xz compression tasks. This Fixes #373- Read xz options from runtime config Read xz options from the kiwi runtime configuration file and pass along the information to the commands which performs compression tasks- Fixed alpha order of options in build command- Update custom_args doc for DiskBuilder class- Fixup class docstrings The attribute list should provide information about the construction of an object of this class. Some fields were missing or superfluous- Consider only repositories used for build in image info This commit makes sure that the repositories marked with imageonly flag are not included in the packages solve procedure. This is related to #362- Removing has_repositories_marked_as_imageinclude method With the current repository management this method is not required anymore, since the setup repositories method does not modify the image if no repositories are present. It is related to #305 and #191- Fixed typo in isoboot/fedora-25.0 It does not really matter because the package manager setup is inherited from the system image XML configuration to the boot image, but for consistency it should be correct in the isoboot description too- Added isoboot/fedora-25.0 boot description- Change to more explicit method names- Cleanup use of suseGFXBoot regarding grub The shell method suseGFXBoot from the config/functions contains code which should be better moved to the python code base dealing with the bootloader configuration. In this commit all grub parts of it has been moved to the BootLoaderConfigGrub2 class- Cleanup isoboot descriptions There is no need to install bootloader packages to the initrd, all information regarding the bootloader setup is taken from the system root directory- Fixup iso image builder(s) lookup path Don't lookup bootloader required files in the boot image root directory. Those needs to be looked up in the system image root directory- Refactor boot image factory Make sure the root directory of the base image is always accessible by any boot image type for consistency. In addition introduce a post_init method which explicitly setup the boot image root directory as needed for the selected boot image type and document it as such- Include imageonly attribute for repositories This commit adds imageonly attribute support for the repository element. imageonly is a boolean attribute that if true indicates that the repository is no used for the build but needs to be configured for the resulting image. Fixes #362- Fixup use of syslinux v6 modules There is support for library loading in syslinux modules which requires to provide the lib modules when available. This Fixes #351- Bump version: 9.7.1 → 9.7.2- Update rpm-check-signatures documentation- Fix default location repository config file for apt This commit fixes the apt config file management for default locations. The template subsitution always needs to be executed providing all the substitution parameters, as it does not make any kind of default assumption when parameters are missing. Fixes #370- Revert "Refactor detection code for grub directory name" The former detection of the grub directory name in boot was correct whereas the new code introduced a problem. This reverts commit b3e4b871d52da2b5ab579d592ccc7ae39de75339. This Fixes #371- Include repository_gpgcheck and package_gpgcheck documentation- Improve package/repository signature checking setup This commit adds repository_gpgcheck and package_gpgcheck attributes to the repository tag in schema. With this change each repository can be configured individualy to enable repository signatures check and/or enable signature package check. The configuration is done at repository level, thus it is not conflicting with the wide package manager configuration flag . Fixes #358- Update PXE building chapter Redesign PXE building chapter to follow style guide. Thanks to Thomas Schraitle for review and additional contributions to this topic. This Fixes #323- Update chapter due to review- Update OEM building chapter Redesign building chapter to follow style guide. Issue #323- Bump version: 9.7.0 → 9.7.1- Refactor detection code for grub directory name The method get_grub_boot_directory_name was based on checking for the name of the grub2 install tool, but this is not always reliable because the name of the grub2 install tool has no direct connection to the grub2 path. The method changes in a way that it checks for the presence of the grub2 installation directory which is /usr/lib/grub or /usr/lib/grub2. Depending on the result the location in boot is /boot/grub or /boot/grub2 which seems to be a more reliable check- Fixup detection of grub directory name In order to put grub data to boot/grub2 or boot/grub a check for the grub2-tool vs. grub-tool name is performed. This requires access to the image root directory on a file basis which is not always applicable. When setting up the grub bootloader for e.g EFI boot on an iso image the rootfs can't be directly accessed because the iso image contains the rootfs in a compressed format. This commit refactors the check to be generic for all image types- Fixup EFI setup for iso images The embedded efi fat image on the iso filesystem must follow the same rules compared to the setup on a disk- Fix docstring and apply ReST markup Avoids the the following warning: Definition list ends without a blank line; unexpected unindent. Docstring contains ReST markup from http://www.sphinx-doc.org/en/stable/domains.html#cross-referencing-python-objects- Some corrections for Building Docker image docs- Rearrange Docker docs This commit rearranges the Docker image builds documentation in order to match the criteria exposed in #323- Bump version: 9.6.2 → 9.7.0- Make sure all required yum repo options are set enabled and gpgcheck parameters has to be set for any configured yum repository- Fixup repository setup for yum Yum cannot handle spaces between the key and the value. This patch provides a method to tell ConfigParser to use no spaces for the '=' delimiter and thus Fixes #357- Reactivate warnings report in pytest- Fixup kernel name lookup If multiple abi compatible kernel module packages are installed the kernel version of the boot kernel could be different from the kernel module versions. In order to find the boot kernel all kernel versions found must be checked. Fixes #355- Fix/workaround invalid xsd pattern translation The data structures are auto generated by the generateDS tool which works nicely except for the arch-name xsd pattern used in the RelaxNG schema. For some reason the used regular expression is translated by generateDS into a python expression not matching the original expression from the schema. The result is an invalid python warning message after the schema has successfully validated the arch string. The problem has been reported to the generateDS developer. As long as their is no fix available in generateDS the following workaround in kiwi applies: The original xs:token pattern validation will be disabled on the generateDS level and applies only to the schema. This Fixes #347- Allow vendor specific grub config file location On e.g Fedora systems the EFI grub config file for secure boot systems is expected to be located in the vendor specific efi boot directory from where the shim loader gets loaded by the firmware- Some fine tune updates * Updated the docs for system_create command * Reverted dracut image initialization * Updated yum comment about repo_gpgcheck option * Updated variable name in disk builder * Typo correction- Include signing-key feature for boot images This commit extends the behavior of --signing-key options in order to import the provided key file into the boot image, in addition to the regular image root tree. Related to #342- Fix use of pre requires in spec file- Fixup working dir for editboot scripts editbootconfig and editbootinstall scripts needs to be called from within the correct directory to allow access to the written bootloader config files. For live images the working directory was set to the wrong place. This Fixes #353- remove duplicated code from dhclient setup IPADDR is assigned within dhclientImportInfo original patch by Dinar Valeev - Fix spelling of 'processor' https://bugzilla.opensuse.org/show_bug.cgi?id=957927- Use glob pattern to match shim modules- Fixed pre-req for kiwi-pxeboot subpackage the binaries groupadd and useradd used in the preinstall scriptlet and provided by the shadow package needs a pre requirement on shadow to make sure they exist when the package gets installed. Fixes (bsc#1040256)- Fix existing root check, fixes #349 This commit fixes the validation of an existing root directory for the command 'system build'. System build used to create the root directory before performing the root existance check, thus the check was always failing in any case. The root directory is created inside the RootInit class within the 'create' method. Fixes #349- Added fallback setup for grub secure boot The current implementation is based on the presence of the shim-install tool. This tool does not exist on all distributions. In case shim-install is not present a kiwi fallback solution applies. Fixes #337- Extend --signing-key to Apt package manager This commit extends support for --siging-key to the Apt package manager. However it has only been included for the chrooted operations, as current implementation of the bootstrap procedure does not provide signature check capabilities. Related to #342- Extend --signing-key option to Yum and Dnf This commit extends the --signing-key options support to Yum and Dnf package managers. In addition, signature check for repositories had to be disabled for Yum and Dnf, as kiwi unrelated issues were found while testing. Nevertheless, package signature checks are fully functional. Related to #342- Add --signing-key option This commit adds --signing-key option which sets a key file to import into the package manager trusted keys database. This commit adds this flag support only for zypper. Fixes #342- Don't print warning report The auto generated xml_parse.py uses the python warnings module The unit tests uses the coverage module in py.test to create a report. The latest py.test update now also creates a warnings report which is unwanted because some of the unit tests intentionally causes the creation of a warning as the expected result but we don't want to see that in a py.test warnings report. Therfore this patch switches off the creation of that warnings report- Update manual page of build command Add information for --allow-existing-root option- Fixup default behavior of build command The build command automatically used an existing root tree from a former build attempt. However this could cause an inconsistent image if the former build root was not based on the same image type setup. Thus it is better to allow this only if the --allow-existing-root option is specified along with the build command call- Fixed alpha sorting of options- Complete zypper cache cleanup also the raw and solv cache needs to be deleted- Update manual pages Add information and use case for --clear-cache option- Added --clear-cache option The system prepare and build commands now provides the option --clear-cache which deletes all cache data associated with the repositories to build the image. This Fixes #341- Let dracut create a compressed initrd dracut was called in a way to create an uncompressed initrd archive and kiwi later runs the xz compression on it. That way the default compression parameters used by dracut get lost. Fixes #335- Improve rpm-check-signatures support This commit ensures the signatures are checked for both: the repository and the rpm package. It applies for zypper, dnf and yum package managers.- Fixup boot-load-size for efi loader in iso Pass the real boot-load-size of the used loader as number of 512byte blocks to the iso creation call. Related to (bsc#939456)- Update documentation to meet review results- Added GCE image primary setup information- Added Azure image primary setup information- Added EC2 image primary setup information- Map partition ID's from sgdisk to lowercase- rework building virtual disk image chapter Adapt to style as used in the live iso chapter and add references to low level topics regarding the setup of the image to work in the public cloud. Related to #323- Get the first two characters of the gdisk partition code output According to the gdisk documentation the gdisk maps the partitions IDs to the MBR codes, but they are multiplied by 0x0100 in hexa. Meaning 0x8300 code is equivalent to 0x83 in MBR. This commit only considers the first two characters of the sgdisk partition code output. With this change the partition types are comparable, regardless of using MBR or GPT.- Fixes OEM deployments on a free partition, bnc#1039469 This commit updates the boot code for oem images. In case oem-partition-install flag was set, the boot code was not capable to find an appropriate partition due to not attaching properly the raw image as a loopback device. KIWI was calling 'losetup' command with wrong arguments. Fixes bnc#1039469- Bump version: 9.6.1 → 9.6.2- Use 'yum-deprecated' if it exists when using Yum On Fedora and Mageia systems, the Yum package manager binary is named 'yum-deprecated', and 'yum' redirects to DNF. This is a problem for being able to build images of Linux systems that use Yum as its package manager, like RHEL/CentOS 7. So, in order to ensure we use the right package manager, we check for the 'yum-deprecated' binary and use it if it exists.- Restructure low level topic (iso_to_usb) The low level topic references information from the base topic. In this case the name of the previously built image. I think we should provide information on each low level topic which references information from a base topic.- Handle rpm-check-signatures flag for each package manager This commit adds support for the rpm-check-signatures flag, which sets the package manager to verify or not each package signature. By default KIWI assumes no gpg checks are done.- Separate low-level topics (dumping) * Separate the high-level (building) from the low-level part (dumping) * Introduce a subsection ("Working with Images"); not sure, if this is useful under "Building Images" * Enhance with some (general) advise about booting from USB- Provide missing _hybrid_iso label- Fixup check_target_directory_not_in_shared_cache The runtime check compared the given target path if it starts with the cache directory /var/cache/kiwi. This however also matches for e.g /var/cache/kiwi-foo which would be a valid target directory. This patch changes the matcher in a way to really check if the target directory points to the same cache directory structure.- Set default dracut output format to match upstream- Added dracut output file format detection Unfortunately the dracut initrd output file format varies between the different Linux distributions. Tools like lsinitrd, and also grub2 rely on the initrd output file to be in that format. Thus when kiwi uses dracut the same file format should be used all over the place in order to stay compatible with what the distribution does. Fixes #325- Revised example for issue #323 * Add abstract (use `.. sidebar`, not sure if we should use it) * Collect all concept oriented text in the beginning * Introduce procedure and create steps * Remove lonely subsection and combine it with the procedure TODO: * Review * Decide, if `.. sidebar` is ok (or should we better use `.. topic`?) * Add additional, related information?- Bump version: 9.6.0 → 9.6.1- Update build docker images documentation This commit includes steps to install umoci and skopeo, descriptions for the configurable metadata in KIWI and some simple style fixes.- Fixed tox.ini doc target location of schema docs has changed, and we better disable the spell check as long as not all unknown technical terms are added to the wordlist.txt- Use correct service name variable- Refactor documentation layout and structure The current design of the documentation does not allow for continous improvement and development. It's missing a basic structure and concept for documenting step-by-step workflows and generic explanations.- Remove erroneous statement in request_package_exclusion() for Yum+DNF- Fixed markup in contributing chapter The headline of a subsection wrongly indicates a toplevel entry- Evaluate UNIONFS_CONFIG filesystem This commit makes sure the filesystem is parsed from the UNIONFS_CONFIG configuration variable when the PXE image is loaded to a block device. This commit fixes #316- Fixed GPL license text to match headers and spec source headers and spec file is pointing to GPL v3 but the license file was still at version 2- Add support for excluding packages when using DNF- Add support for excluding packages when using Yum- Fix comment about Zypper locks to reflect reality- Bump version: 9.5.0 → 9.6.0- Additional container commandline options Added --set-container-derived-from and --set-container-tag commandline options which allows to overwrite the data set in the XML configuration- Implement obsrepositories source on derived_from The following reference to a derived container: obsrepositories:/container#latest Will be translated into the following buildservice local path: /usr/src/packages/SOURCES/containers/_obsrepositories/container#latest- Implement obs source on derived_from The following reference to a derived container: obs:/project/repo/container#tag Will be translated into the following buildservice local path: /usr/src/packages/SOURCES/containers/project/repo/container#tag- Use urlparse to detect uri scheme The source location postfix can contain several different formats e.g :/, or :// or even just :, python's urlparse is able to cope with all that which allows to work with the url scheme base name and thus makes handling this code more robust- Bump version: 9.4.11 → 9.5.0- Include '--delete' in OCI images DataSync This commit includes #310 patch for OCI images. It also corrects the end of line format for kiwi/container/docker.py and test/unit/container_image_docker_test.py, so flake tests are all green.- Include --delete flag in DataSync for docker images This commit includes the --delete flag in order to synchronize the docker images. This is relevant for derived images where the new layer might not only add files, but also remove something from the base image. Fixes #309- Define correct default locations for sources-dir and preferences-dir In order to ensure that the defined repositories in the KIWI configuration are set to the correct places for installing into the image, the sources-dir and preferences-dir need to be redefined to point to the in-image location, as it is done for the other package managers.- Do not purge the repositories before inserting them There are no good reasons to be purging the repo directories, especially when it is common for some distributions (Red Hat/CentOS/Fedora, for example) to ship repository configuration as packages. Deleting them puts the package manager in the system into a weird state, so we want to avoid this.- Fix default reposdir path for Yum- Add support for OCI images This commit adds support for OCI images. Most of the docker related code is reused for OCI classes and Docker classes have been refactored so now they are a splecialization of the OCI classes. It is done this way since KIWI internally only uses OCI format to operate with containers, therefore docker images just differ from OCI images by the way they are packaged or unpackaged.- Add clear attribute for entrypoint and subcommand sections This commit adds the possibility of clearing asny subcommand or entrypoint. This is relevant for docker derived images, as they inherit the configuration and it might lead to some bad behavior.- Bump version: 9.4.10 → 9.4.11- Add require/recommend installation support for yum This commit adds support to install required only or required plus recommended packages using yum as the package manager.- Add support for required/recommended packages This commit enables support to install only required packages or install required plus recommended packages.- Include 'plusRecommended' management for dnf Add support to enable/disable installation of recommended packages for dnf package manager. With this commit 'plusRecommended' patternType triggers on installation of recommended packages, which is turned off by default.- Make sure debian repositories database is populated before install This commit includes an 'apt-get update' call before any 'apt-get install' command. This way the packages database is always ready, even if no bootstrap procedure has been executed.- Bump version: 9.4.9 → 9.4.10- Add warning logs for unkown base image URIs- Update spec template for SLE13->SLE15- Rename SLE13 to SLE15- Follow up fix for grub2 setup in live builder The live iso builder still used a fixed boot/grub2 path but due to the refactoring this path is now distro dependant and should be obtained dynamically- Cleanup use of bootloader path in boot code Instead of repeating the bootloader path only specify it once per setup path- Add method to setup installation of recommended packages With this commit package manager are always set to include only required packages or set to include required and recommended packages. This commit fixes #285- Bump version: 9.4.8 → 9.4.9- Update development and contribution chapter Fix some minor inconsistencies due to latest code changes with regards to py2 and py3 compatibility and also change the style of the chapter to be more straight forward for people who would like to contribute from scratch- Bypass bootstrap procedure if no bootstrap packages section This commit updates kiwi to bypass bootstrap procedure in case there is no bootstrap packages section. It also adds extra validation in root_bind.- Bump version: 9.4.7 → 9.4.8- Fixup grub2 template parameters The boot_directory_name parameters was missing for live and install image builds- Bump version: 9.4.6 → 9.4.7- Fixup grub2 bios module setup Only copy grub2 bios modules if the architecture supports it- Bump version: 9.4.5 → 9.4.6- Avoid GRUB_DISTRIBUTOR setup in etc/default/grub The GRUB_DISTRIBUTOR information can't be provided in a generic way for all distributions. The information should be either placed by a package post script (as done by most of the distributions) or by a custom kiwi config.sh or images.sh script. Fixes #286 Fixes (bsc#1032119)- Added support for unknown uri types for base image references This commits bypasses any URI check if the uri schema is unknown in RootImport class. This way the URI is bypassed to skopeo if it couldn't be translated to any known type. That enables referencing images with any URI supported by skopeo, i.e. DockerHub images.- Keep imported image in OCI format instead of docker Kiwi always uses OCI format for container manipulations, so it is easier to assume the image kept between prepare and create step is also in OCI format, this way less format convertions are needed.- Fixup bootloader menu title setup If the menu title is setup via the displayname attribute in the XML configuration, kiwi should not change this text by a prefix or any other style adaptions. Fixes #287 Fixes (bsc#1032118)- Fixup copy of array in boot code The filtered nic interface names are stored in an array and copied back into the original array. The copy of the array was semantically wrong- Fixup grub2 setup and tool calls Depending on the distribution the grub tools are either named grub2-tool or grub-tool. Additionally the grub configuration data is expected to live in boot/grub2 or boot/grub. This commit handles the tool calls and also the grub boot directory setup in a generic way- Include SLE13 boot descriptions for x86_64 and arm This commit includes boot descriptions for SLE13, the descriptions are based on leap 42.3.- Delete obsolete ec2 disk format The ec2 value in the format attribute is deprecated and no longer supported It remained in the schema for a while and has now reached EOL- Bump version: 9.4.4 → 9.4.5- Fixup theme setup in boot Make sure grub theme data is populated in the boot directory. Checking only for the presence of the theme directory is not enough. If the theme directory in boot does not contain the requested theme it must be provided including a warning if the theme data could not be found in the system- Do not change the API in an incompatible way- Use request_package_exclusion method in prepare- Refactor method name of package manager interface The request_package_lock was renamed into request_package_exclusion because that is the goal, to actually exclude(skip) a package. From an implementation point of view this is done to set a lock in the zypper case. However other package managers might do it differently. The interface should stay consistent with regards to the user goal and not with the package manager specific implementation. This Fixes #248- Added element Allow network interface names to be filtered by the given regular expression. The expression is handled by the bash regexp operator. Interface names matching the rule will be filtered out, all others stay. It is also possible to pass the variable kiwi_oemnicfilter as kernel command line in a PXE deployment. Fixes #245- Bump version: 9.4.3 → 9.4.4- Delete no longer needed btrfs bootpath setup The adaption of the bootpath in the grub.cfg file with regards to the btrfs toplevel volume named '@' was the wrong solution. The fixes in the btrfs filesystem setup and the config files etc/default/grub and sysconfig/bootloader caused the grub toolchain to work properly. This Fixes (bsc#1030038)- Convert user input to absolute paths This commit converts the paths provided by the user with the command line to absolute paths. The effected arguments are: * --root * --target-dir * --bundle-dir This supersedes and fixes #271- Support editbootconfig also for the iso type This Fixes #274- ensure grub.cfg exists in EFI path for iso images For live and install iso image boot configurations the bootloader configuration must also exist in the EFI boot path- Throw a proper msg on missing filesystem reference Don't set a filesystem factor if no filesystem reference is set- Throw a proper exception on missing boot reference- Update schema documentation Add explanation for attributes with no documentation Fixup explanation for hybrid attribute- Recommend jing in case of XML validation errors, jing is used to provide good error messages. jing as a requirement will pull in all of java which is unwanted, but a Recommends seems appropriate- Update flags attribute and its documentation Delete the seed and compressed value as it is not implemented and won't be supported in the future. Properly document the existing overlay methods- Added doc info for kiwinoswapsearch boot parameter- Bump version: 9.4.2 → 9.4.3- Fixed checksum file creation If the checksum should be created from a compressed file it is expected that the checksum of the uncompressed file is added to the checksum file. This is because in a pxe deployment the uncompressed version of the file is put on disk and compared with the reference information in the checksum file- Refactor ip link detection There is no reliable way to check if a link is unplugged, thus the code has changed into the following workflow 1. use interfaces which returns success on ip link set up 2. wait for the UP state on all of these interfaces and return if one of them enters the UP state 3. call a fixed wait state to allow to kernel network drivers to settle 4. run through all remaining interfaces, discover the link state and call a DHCP discovery- Bump version: 9.4.1 → 9.4.2- Fixup pxe builder filesystem image rootfs was not in toplevel- Bump version: 9.4.0 → 9.4.1- Fixup pxe builder Generate a tarball containing all relevant pxe boot result files instead of a bunch of extra files. This also turns the pxe builder to be compatible again with the legacy kiwi pxe bundler- Don't create shasum over an md5 file- Bump version: 9.3.3 → 9.4.0- Allow https location as repository source- Refactor RootImport to keep images with a default name RootImport has been refactored so the image is kept with a known name that can be obtained with the Defaults class.- Added SLE13 distribution matcher- Update distribution matcher in spec file- Refactor ContainerBuilder Use Checksum instance to run a checksum match Check for existence of base image at earliest opportunity when constructing a ContainerBuilder- Added checksum matcher method to Checksum class- Delete unused code Also fixed corresponding unit test- Make sure LICENSE and README got installed- Handle derived image as Uri instance- Add completion for versioned binaries when installing kiwi via pip, no alternatives setup done when installing via rpm will be performed. In order to allow the bash completion to work also the versioned binaries needs to be added in the completion script- Bump version: 9.3.2 → 9.3.3- Add documentation hint for multipython package- Setup package for multipython build Build package for both python2 and python3- Refactored RootImport and included checksum validation First, commit refactors RootImport in order to also copy the imported image after sychronizing the import. Second, it includes a checksum of the copied image which is validated in later steps.- Added Leap42.3 boot descriptions- Deleted openSUSE 13.2 boot descriptions- Refactor Uri constructor Make repo_type an optional parameter, which is only required if the specified uri leaves a type choice- Fixup PyPI entry registry The wrong project url was referenced- Support for layered docker images This commit includes support for building layered docker. A new layer is added on top of the base image referenced by `derived_from` attribute.- Bump version: 9.3.1 → 9.3.2- Fixed MANIFEST.in kiwi.solver code was not included into source archive- Bump version: 9.3.0 → 9.3.1- Fixed doc api build for renamed source file- Bump version: 9.2.4 → 9.3.0- Flake8 fixes for unit tests- Apply code quality checks for unit tests too- Fixed import of solv module- Import root system from a given image This commit includes the root import feature. A `derived_from` attribute has been included with the section to make reference to the image file to import. The image format to import is assumed to be the same as the build type to import. The current format supported is docker- Flake cleanup for unit tests- Prevent use of project relative import statements For details on the motivation of this change please visit: https://wiki.python.org/moin/FutureProofPython- Allow activation/deactivation of sysV services systemd is still legacy sysV init compatible, thus the kiwi helper scripts to activate/deactivate services should not only be limited to systemd services. Fixes #256- Support package capabilities in sat solver A solver operation can receive a package or pattern name but a capability name was considered a package name and failed to resolve. This commit fixes the solver operation with regards to package capabilities- Add runtime check for kernel match If a kiwi initrd is used, the kernel used to build the kiwi initrd and the kernel used in the system image must be the same in order to avoid an inconsistent boot setup. This is related to (bsc#1027610)- Added runtime check for boot image reference If an initrd_system different from kiwi is selected for a vmx (simple disk) image, it does not make sense to setup a reference to a kiwi boot image description, because no kiwi boot image will be built. Despite that it does not hurt it's still an inconsistent setup. This is related to (bsc#1027610)- Bump version: 9.2.3 → 9.2.4- Update documentation the docker build container is now build with the correct namespace. Thus no image tagging is required anymore- Bump version: 9.2.2 → 9.2.3- Support container names with slashes (#254) Umoci tool doesn't require any other parameter than a tag to identify the container. So container_name value is not used in umoci. This Fixes#253- Use default command only if no entrypoit and subcommand aren't set Fixes #251- Fix tagging for OCI images This commit fixes the tagging schema for umoci. An OCI image name is path[:tag], this commit rearranges some variable names to avoid confusions between names and tags. Fixes #249- Add support for repository credentials The package and solver repository classes did not provide an interface to deal with repository credentials. This commit add support for the zypper package manager and the generic urlopen based download method of the solver class. This Fixes #246- Bump version: 9.2.1 → 9.2.2- Update documentation Add detailed information how to update the docker Build Container on the official dockerhub registry. This is needed to use custom or newer versions of the currently published Build Container- Bump version: 9.2.0 → 9.2.1- Update documentation The changes in building docker images now allows for using the docker load command to import the dice container- Fix default reposdir path for DNF- Bump version: 9.1.0 → 9.2.0- Added support for exclude docs for dnf- Fixup default cache and plugin dir for dnf- Update distribution support status Add information that Fedora systems are now supported as well- Make sure bootenv can be initialized An existing grub bootenv file should be deleted prior to calling grub2-install in order to allow grub2 to create a new correct bootenv file- Added DNF package management implementation DNF is the package manager used on Fedora systems and will also most likely replace yum for the next generation of RHEL. Along with the implementation here an example JeOS image description for Fedora can be found on: https://github.com/SUSE/kiwi-descriptions. This Fixes #36- Follow up fix for network driver delay Each network interface will be switched off for a short moment when the kernel network driver is loaded. During that time the link status information would be misleading. Thus we wait a short time before the link status check is started- Include compression optimization flags for mksquashfs command This commit includes some flags for mksquashfs command in other to achieve higher compression rates. Also note that those flags were already present in KIWI former versions, thus they have been included again for compatibility reasons. This commit fixes #242- Allow to convert GPT into MBR The type attribute force_mbr allows to convert a system selected for use with a GPT to use an MBR (msdos table). The attribute only takes effect on image configurations which would select the GPT partitioner. This Fixes #236- Wait for network drivers to pass init Before we check for the link status a waid period of 3 seconds should guarantee that the network drivers have passed the init routines- Refactor waitForLinkUp Put code which does not belong into the loop outside of the loop. Also maintain sleep timeout and retry count in variables- Fixed waitForLinkUp and setIPLinkUp The setIPLinkUp method did not handle the return value of the waitForLinkUp call and always returned success even if waitForLinkUp ran into a timeout The waitForLinkUp method was improved in a way that it does not wait if the link detection discovered the interface is unplugged. The detection if a cable is connected or not only works if the ifplugstatus tool was found in the initrd- Bump version: 9.0.2 → 9.1.0- Implement handling for efipartsize- Decrease default EFI partition size to 20MB The former default of 200MB was way too large and is a waste of space. Related to Issue #237- Added efipartsize attribute in type setup The attribute allows to specify a custom size for the EFI partition. Fixes #237- Allow bootloader="custom" for bootloader attribute If specified as such the bootloader configuration and installation will be skipped. However the editbootinstall and editbootconfig scripts will still be called. This Fixes #235- Fixed create_repository_solvable If the solvable already exists, the method should return it- Added handling for spare_part attribute Add a spare partition right before the root partition of the configured size. Fixes #234- Added new type attribute spare_part spare_part receives a size value with an optional unit (M|G) and is used for disk images to allow the creaton of a spare partition of the configured size. Issue #234- Delete all traces of vboot firmware The vboot firmware setup was a workaround on arm for the chromebook platform several years ago. From a todays perspective the setup and the way to boot would be different and obsoletes the special case implementation. Thus this is gone now. Related to Issue #234- Prevent quoted domain name in dhclientImportInfo We're getting domain name by parsion a lease file. Unfortunately in lease file domain name is quoted, which breaks linux resolver. This commit gets domainname unquoted- Add manual page for image info command- Added kiwi image info command Allow to list information about the image description. In a first implementation one can show the image name as well as run a dependency resolution for the packages listed in the XML description- Bump version: 9.0.1 → 9.0.2- Added uri translation for SUSE factory The obs uri 'obs://openSUSE:Factory/standard' does not follow the standard http url translation schema and needed a special handling in order to resolve correctly- Eliminate instsource element and requirements The schema defintions for kiwi v8 still contained the product schema definitions aka instsource which is no longer supported by this version of kiwi. Building SUSE products is done with the kiwi v7 code base and will most probably be handled by an extra product builder tool in the future maintained and developed by the buildservice team. We would be proud if the api of the kiwi v8 code base can be helpful for the product builder in the future- Bump version: 9.0.0 → 9.0.1- Added arch attribute for ignore section The packages subsection only accepted a package name to become ignored. However a subsection to install a package allows for an arch selection. The same should apply to ignore a package. In addition the allowed content for the arch attribute has been changed from simple text to a regular expression. Allowed is a comma seperated list of reserved architecture words like they are displayed by uname -m- User format method to form the message- Added support for package locking for zypper Zypper supports the al (add lock) command which allows to ignore a package in the dependecny resolution process. This is useful to prevent installation of a package which was pulled in by e.g a recommendation flag from the spec file. Packages marked to be ignored are not handled for apt and yum right now. Using this feature together with an unsupported package manager backend results in a warning to the user- Included some file naming convetions- Components of an Image Description section This commit extends the doc/sources/workflow.rst documentation by including details about config.sh and images.sh files.- Bump version: 8.29.6 → 9.0.0- Update documentation Add information about new hook: handleMachineID- Bump version: 8.29.5 → 8.29.6- Fixup isolinux timeout configuration isolinux counts the timeout in units of 1/10 seconds. Thus the value provided in the image description needs to be adapted correctly. This Fixes #228- Bump version: 8.29.4 → 8.29.5- Fixup setupMachineID Cleaning up existing machine id files by deleting them causes an interactive session to be started by systemd This is something we don't want. As the consequences of touching the machine id files seems to be too critical the method has been turned into a hook caller. This allows the user to make use of it on their own purpose and by default doesn't mess with the machine id files- Bump version: 8.29.3 → 8.29.4- Change processing of setupMachineID Instead of creating new machine ids for systemd and dbus the method now cleans up all existing machine ids and leave it up to systemd to initialize and create new ids. This allows to make use of the native way how systemd retrieves and handles machine ids- Fixup typo in ReST style- Bump version: 8.29.2 → 8.29.3- Add utils.sysconfig to api documentation- Completion for grub bootloader configuration The configuration files /etc/sysconfig/bootloader and /etc/default/grub needs to be created/updated with the relevant values regarding the bootloader setup done by kiwi. This Fixes #226- Apply volume attributes for btrfs and lvm The chattr utility is used to apply file attributes So far only the no-copy-on-write attribute can be specified in a volume setup. If further attributes are needed they will be added on demand- Added attributes element in volume type- Added volume attribute copy_on_write The copy_on_write attribute allows to activate or deactivate the copy on write functionality for the desired volume. This Fixes #218- Make sure there is a storage default setup on s390 Storage disks on s390 requires an information about the type and the blocksize. In case these information is not provided in the kiwi XML configuration, None was set as value in the zipl configuration which lead to an error. This commit provides default values for those parameters- Bump version: 8.29.1 → 8.29.2- Allow unix device names in oem-unattended-id setup In order to allow a raw device name in oem-unattended-id the /dev tree has been added to search list. This is useful if e.g a ramdisk device which is not part of any /dev/disk/... or /dev/mapper device map should be used as target disk for the deployment. Thus a setup to stick the deployment to e.g /dev/ram1 would look like this ram1 This Fixes #221- Don't delete ip tools from oemboot network tools are needed for oem disk deployment via pxe- Added .coveragerc Clearly indicate which source files are excluded from the coverage report- Make sure setupMachineID also cares for dbus Systemd and dbus should use the same machine-id. Therefore a symlink /var/lib/dbus/machine-id pointing to /etc/machine-id is created right after systemd-machine-id-setup. Fixes #219- Fixup duplication of btrfs toplevel volume If using root btrfs snapshot, the default toplevel subvolume is set to /@/.snapshots/1/snapshot, thus all defined subvolumes are mounted under that cusomized default subvolume. For the first time subvolumes are mounted it is fine to include /@/.snapshots/1/snapshot prefix as root is not yet set to that specific path, however in any future mount this path prefix is not needed any more, as the root get mounted in /@/.snapshots/1/snapshot by default. Fixes (bsc#1015549)- Add check_docker_tool_chain_installed Runtime check to check for required docker tools umoci and skopeo. As long as tools tools are not available in the core distro of all distributions we avoid spec file requirements and check at runtime if they can be found- Bump version: 8.29.0 → 8.29.1- Rebuild schema documentation- Bump version: 8.28.3 → 8.29.0- Running config.sh after including the image repositories This commit rearranges some code lines in order to run the config.sh script after the repositories of the image have been included, this way repositories can be trusted and refreshed in config.sh script.- Refactor docker container creation Instead of creating a simple tarball the tools umoci and skopeo from the docker tool chain are used to create official docker images. Along with those tools more information to describe a container has been added to the schema. A complete container setup now consists of the following elements ... ... ... ... ... - Update container builder code to new schema layout- Auto update image descriptions to schema v6.5- Update schema for container setup In preparation to support creation of native docker containers the way docker likes it, the kiwi schema has to be adapted. So far there was no way to specify additional metadata information for containers. With this commit a new section called is provided. containerconfig is a subsection of the type and only allowed for the docker image type. This constraint is checked via a schematron rule. In addition an xslt stylesheet moves the currently existing container attribute, which was used to set a name for the container, into the new containerconfig section as name attribute- Bump version: 8.28.2 → 8.28.3- Fixed quadruple_token tokenizer Information not provided should end up as a None type in the list in any case. If an empty string was provided via e.g --add-repo source,type,, the tokenizer puts in an empty string. If the information was provided as --add-repo source,type a None type was used. The code handling the information expected a None type for not provided information, with an empty string we end up in validation code which e,g complains that an empty string can't be converted into an integer base repo priority- Bump version: 8.28.1 → 8.28.2- Update documentation Default provider must be set in the caller environment if different from the default docker provider- Bump version: 8.28.0 → 8.28.1- Update container builder documentation Add information about the now available kiwi build box and the use of it as part of libvirt provider setup for vagrant- Bump version: 8.27.5 → 8.28.0- Bump version: 8.27.4 → 8.27.5- Fixup spec file build requires shadow tools are needed for %pre tasks using groupadd/useradd tools- Bump version: 8.27.3 → 8.27.4- Fixup spec file tftp group/user setup Let %pre fail if groupadd/useradd failed and show the error to the user- Added DiskFormatVagrantLibVirt class Allow to build vagrant boxes for the libvirt provider This Fixes #15- Update vagrantconfig schema setup Delete the virtualbox provider, As long as there is no opensource variant for the ovf creation available we won't support that provider- Bump version: 8.27.2 → 8.27.3- Adapt documentation to rtd schema replace topic node used for abstract by a hint. This results in a color box for the abstract which looks better than what rtd does with simple topics- Adapt schema generator to rtd doc schema- Move to rtd sphinx schema The read-the-docs schema fits better into the mainstream of online documentation- Bump version: 8.27.1 → 8.27.2- Added check_volume_setup_has_no_root_definition The root volume in a systemdisk setup is handled in a special way. It is not allowed to setup a custom name or mountpoint for the root volume. Therefore the size of the root volume can be setup via the @root volume name. This check looks up the volume setup and searches if there is a configuration for the '/' mountpoint which would cause the image build to fail- Prevent warning about unknown opt in workflow doc- Bump version: 8.27.0 → 8.27.1- Rebuild schema documentation- Add a docstring for the extension section Short description what the extension section is good for- Prevent any type from attribute recursion The schema parser to create the documentation run into an endless recursion for the new k.any type. As any could be anything there is not much do document for this type. Thus it is now skipped from the traversal- Bump version: 8.26.1 → 8.27.0- Update documentation per review- Including minimum volume size offset in disk size calculation This commit adds Defaults:get_min_volume_mbytes() to the disk size calculation algorithm. This should be sufficient to hold fdisk default offset when creating the first partition and also to hold the LVM metadata.- Added extension documentation- Make sure to catch exceptions from xsltproc- Add extension validation and data access If an extension section exists the xml data in this section is validated against the RelaxNG schema which must be part of the xmlcatalog for the used extension namespace. If the data validates the method get_extension_xml_data can be used to access the etree parse result for each of the extension configurations- LVM volumes management during grub2 install During the grub2 install process volumes were not mounted properly, a proper mount order was not taken into consideration and LV device information was not given by the method get_volumes in VolumeManger. This commit forces the mount (and umount) operations to be done in coherent order and also modifies the get_volumes method in order to return the device associated to each volume.- Allow section for custom plugins For the use case to add additional image description information an extension section exists which allows to add custom section and attributes. Custom XML information must be connected to a namespace in order to avoid conflicts with the existing structure. The following example shows how to place additional XML information: - Fixed expansion of msdos disks If the target disk size is beyond 2TB it can't be expanded to the full size if the msdos partition table layout is in use. Because of this the disk expansion will be limited to the allowed maximum for the msdos partition table type which is at 2TB. This fixes bnc#1010966- Bump version: 8.26.0 → 8.26.1- Fixup of string + operator vs. join use- Fixed setup_disk_image_config in bootloader setup The parameter for the uuid is not enough to handle all supported disk geometries. If the disk has an extra boot partition the bootloader setup must read the boot data from the boot partition but must set the root for the kernel cmdline to the root partition. Therefore the interface needs to change and must provide both the boot_uuid and the root_uuid in oder to allow the method to setup the correct values- Parse arch attribute as a comma separated list This commit ensure that the arch attribute of each package section is parsed as a comma separated list. This way, as in previous kiwi versions, each package might be suitable for one or more specified architectures.- Fixup kernel name setup in disk builder The Kernel instance is the only correct place to ask for the kernel name. This class has the responsibility to know information about the selected kernel. The additional arch based assumption on the kernel name in the disk builder were wrong. This fixes bnc#1011936- Fixed typo in solver api documentation- Bump version: 8.25.5 → 8.26.0- No more hard links in result bundle This commit changes the copy command of the result bundle task. Now instead of creating hardlinks a relugar copy is performed. This way we ensure that the bundled files will not be modified by overwritting a linked file.- Documentation workflow review- The Sat solver class - an example The Sat solver class can be used to run a solver operation over a list of packages and/or patterns in order to receive a dependency solved list of all required packages according to the request. In order to do that a set of repositories is required which provides the package metadata and their requirements. The following is an example how to use the Sat class in your application: ```python from kiwi.solver.sat import Sat from kiwi.system.uri import Uri from kiwi.solver.repository import SolverRepository solver = Sat() solver.add_repository( SolverRepository(Uri('obs://leap/42.2/repo/oss', 'yast2')) ) print(solver.solve(['vim'])) ```- Fixup code smell for kernel name list Iterating over only one list item doesn't need a loop- Fixup style to be more pythonic- Fixed release network using ip tool Apply the cidr fix from setupNic and introduce a new method called deleteNic which replaces the wrong ip call from the releaseNetwork method. Fixes bnc#1003091- KIWI workflow documentation This commit ports the workflow documentation from previous KIWI version and also adds a sections for listing the boot parameters configurable in the Kernel command line.- Fixed kernel name lookup Complete the list of kernel names for the lookup. Normally the kernel package provides a symlink to the actual kernel image file. However if the link does not exist we extend the search to a collection of names for possible kernel images. The new list now also covers kernel names as used for arm Along with the change this patch also provides an option to raise an exception if the kernel lookup did not find any kernel, which is used for the get_kernel() request in the dracut initrd system setup where it is mandatory to find a kernel image. This fixes bnc#1010874- Added Sat solver class Added implementation for Solver class based on the SUSE libsolv C library and the solv python binding- Bump version: 8.25.4 → 8.25.5- Fixup lease time in setupNetworkWicked The default lease time with 300s used by wicked is relatively short and different from the default lease time of the former dhcpcd. This change causes wicked to use a lease time of 3600s This is related to bnc#1003091- Fixup default behavior of releaseNetwork If no tool was found to communicate with the dhcp server in order to free the lease the method did nothing. However it should at least bring down the network. This is related to bnc#1003091- Bump version: 8.25.3 → 8.25.4- Fixup get_volumes for lvm manager The method also returned the root volume in the list of volumes but it should only return a list of volumes excluding root volume- Fixup setupNic for address information in cidr Ignore netmask if address is already in cidr format- Bump version: 8.25.2 → 8.25.3- Fixup btrfs property setup The readonly property is set on the filesystem toplevel. kiwi has set the toplevel before any property is set.- vhdfixed images result compression This commit adds compression to the Result instance of the vhdfixed disk. This concrete format is not compressed or dynamic, so that, it makes sense compress them. Also this was the behavior in previous kiwi versions.- Replace tabs with spaces- Fixup handling for root_is_readonly_snapshot The information was not passed to the VolumeManager instance- Fixup mount_volumes in VolumeManagerBtrfs It is required to mount the toplevel btrfs filesystem if not already mounted, prior to mounting the subvolumes- Fixed busy mount state Make sure subvolumes are umounted first. This prevents a busy state in a partition setup with an extra boot partition- Bump version: 8.25.1 → 8.25.2- Fixup creation of etc/default/grub config file Only create the file if the base directory structure in etc/default exists.- Remove empty line too much- Implement loading of snapshots and fix snapshot menu layout. If you want to boot an old snapshot, but not to do a rollback, we need to tell the kernel which snapshot to use. This patch also fixes the broken layout of the grub snapshot menu.- Move source of grub-snapshot.cfg to the right position grub-snapshot.cfg should not be sourced at the begining, but at the end of grub.cfg. Else with creating the first snapshot this entry is getting the default boot target and the system does not boot automatically anymore.- Fixup netboot code for multipath boot device If the root disk in a netboot deployment is a multipath device we have to make sure the multipathd is started and the boot device is mapped to the wwn- Bump version: 8.25.0 → 8.25.1- Update doc string for download_from_repository The doc string for this method contained a mime string which is spuriously validated by the sphinx url checker. This commit rewords the text in a way that the checker is happy again- Bump version: 8.24.10 → 8.25.0- Do not delete all repositories if there aren't repositories to import (#191) This commit adds a tester method to check if there is any repository marked as imageinclude. The method is used to execute import_repositories_marked_as_imageinclude method only when it is actually needed.- grub.cfg: Fixes for btrfs as rootfs This addresses the following issues * An image based on btrfs using the entire boot as a subvolume causes grub to be unable to find its config file. Thus kiwi now raises an exception in this situation * Don't prefix the bootpath with the snapshot path if the btrfs root is placed in a snapshot. Instead the file etc/default/grub must be written/updated with the SUSE_BTRFS_SNAPSHOT_BOOTING variable set to true. Once this is done the bootpath is consistently set to /boot no matter which snapshot is active- grub.cfg: Source grub-snapshot.cfg if present Add a lookup for /.snapshots/grub-snapshot.cfg to the generated grub.cfg. The file is shell sourced if it exists- No need to mock Path.which There is no need to mock Path.which as isoinfo binary from the platform is needed to run the test, so better let the system look for it, note that the binray can be located in the alternate location (/usr/lib/genisoimage/) which is not part of the PATH. In that particular case the iso_test would fail if we mock Path.which.- Updated system size calculations test- Updated test for vhd-fixed subformat type- Increase the default image size for XFS filesystems When no size is specified in type section the resulting image size is calculated using the size of the whole build-root increased by an empiric factor. Some tests revealed that this factor was not enough for XFS filesystems. The empiric factor has been increased. This commit fixes #186- vhd-fixed name corrected in subformat init class This commit reverts the previous one and it applies the name change to the subformat class initializer. This way the schema is not altered and we keep compatibility with previous description files.- vhdfixed format naming inconsistency vhdfixed storage format name was not updated according its real name in the kiwi schema, making it impossible to build any vhdfixed image. The schema used to expect 'vhd-fixed', however, internally, the code was expecting 'vhdfixed'. The schema has been updated. This commit fixes #184- Implemented SolverRepositoryRpmDir Add support for local rpm-dir repositories- ActivateImage links correction Loading the iso image into a read-only ramdisk caused some issues due to the activatImage method cp commands. With this commit the symlinks are consistent during the preinit phase and also before running the cp command it is tested we are not in a read-only filesystem. This commit is a port form openSUSE/kiwi#613 PR- Implemented SolverRepositoryRpmMd Add support for rpm-md repository types- Fixup ip setup in setupNic The invocation of ip in setupNic was invalid. The way this was done causes the netmask to be set as broadcast address Related to bnc#1003091- Implemented SolverRepositorySUSE Add support for SUSE online and media repository types- Add repo_type info to Uri class This allows to eliminate the repo_type from the paramter list of the SolverRepository class, which then only needs an instance of Uri- Implement SolverRepositoryBase Base class and interface for building a SAT solvable from a given repository- Added API doc hook for solver path- Bump version: 8.24.9 → 8.24.10- Delete sphinxcontrib-programoutput setup Deleted it from virtualenv development requirements and from the sphinx configuration file- Delete use of sphinxcontrib-programoutput The developers of this sphinx extension decided to delete the module on pip and also the source from git... it's dead. Thus I replaced the dynamic usage output in the manual pages with the static version- Initial structure to support SAT solvables A SAT solvable can be used together with python-solv to implement performant package solving tasks. This is the initial structure to allow the creation of such solvable files from specified repositories. We will support the repo types yast2, rpm-md and rpm-dir in the first place.- updateOtherDeviceFstab did not get the fstab location parameter This is port from the kiwi v7 code base openSUSE/kiwi#610- Load the default unicode font in grub2 This commit fixes #179. The default font was never loaded, the loadfont call for the default was missing.- Bump version: 8.24.8 → 8.24.9- Fixed waitForStorageDevice Value for storage_size was not really used- Bump version: 8.24.7 → 8.24.8- Make sure kiwiserver/kiwiservertype is used If kiwiserver and/or kiwiservertype is specified on the kernel commandline they should take over precedence for up- and download of image files compared to the host setup in the IMAGE variable.- Don't mix python module requirements The tox setup mixes the deps modules depending on the tox target with either virtualenv.dev-requirements.txt or fixed deps lists in tox.ini. This change clean up the module dependencies for development targets to be taken from virtualenv.dev-requirements.txt exclusively- Update travis runtime requirements Installing python modules from source via pip requires git- Bump version: 8.24.6 → 8.24.7- sphinxcontrib-programoutput no longer on pypi Use the version from git directly to build the documentation In the long we should find an alternative for this sphinx extension- Fixup root init with existing host cache Creating a new root init with a shared location which already provides directories of the system failed on init of those directories. Only create the not yet existing directories- Fixup the wicked thing again- Put setupNetworkWicked in line with former dhcpcd The way setupNetworkWicked implements the dhcp discovery was incomplete. This Fixes bnc#1003091- Fixup assembling of mdraid array when udev discovers an mdraid array it partially starts the array. That is interfering with the mdadm --assemble call by kiwi which leads to a busy state and an array in inactive state. Therefore the method should wait until the raid array really exists no matter if the assembling is started by udev or kiwi's mdadm call. In addition if the array got assembled but is incomplete because devices are missing or the timout is fired, an additional call to start any array that has been partially assembled is required. pxeRaidAssemble will throw an exception if after this call no md device with a size > 0 will show up after a timeout. This Fixes bnc#1000742- Fixup waitForStorageDevice The function will return success if the size of the storage device can be obtained and is greater than zero. The pure success on reading from the block layer is not enough. In order to actually work with the device it must provide a size > 0. Related to bnc#1000742- Bump version: 8.24.5 → 8.24.6- Fixup initial directory creation for new root During testing of alternative cache locations an init problem with the var/ directory was observed- Do not allow imageinclude for images build in obs Fixes #178- SystemPrepare instance delete before runnig SystemSetup This commit fixes#175, now multiple profiles in OBS are possible using kiwi boot initrd.- Use docopt's default value feature for cache dir- Cleanup unit tests using sys.argv The tests should restore to the default argv option set as provided by the test_helper- Update manual page Include information for new --shared-cache-dir option- Added global option --shared-cache-dir The option allows to specify an alternative shared host_to_image cache directory. The default location is /var/cache/kiwi. Fixes #92- Fixed a couple of constraints- Redo of xml_parse.py with updated generateDS- Initialize the systemd machine ID on first boot The systemd machine id is considered to be a unique information Thus it is required to initialize it on first boot of the image. If the image uses the kiwi boot code (initrd) this action is performed and and Fixes #169- Bump version: 8.24.4 → 8.24.5- Some tests slightly modified in order to improve coverage This commit improves some example kiwi files and tests in order to achieve a 100% code coverage.- Corrections on test kiwi description files Some attributes needed to be changed in the test xmls. With this commit all the description files are consistent with the new co- occurrence constraints.- Co-occurrence constraints included in the schema Constraints for pxe, iso, vmx, oem and docker image types have been included.- config.partids only required for kiwi initrd If dracut is used as initrd system an unused config.partids file is generated. The partition id information is only used by kiwi boot code not by dracut boot code. Related to bnc#1005246- Bump version: 8.24.3 → 8.24.4- Make sure dracut initrd is copied correctly- Fixed a rounding error in partedMBToCylinder method bc truncates number of cylinders to zero decimal places, which results in a partition that is slightly smaller than the requested size. Add one cylinder to compensate.- Integrating Schematron syntax in schema Using Schematron syntax in schema co-occurrence constraints can be easily defined. This commit provides the schematron integration.- Bump version: 8.24.2 → 8.24.3- Write fstab to kiwi boot image only For the dracut initrd system the call happens in the system root tree which already provides the fstab data- Bump version: 8.24.1 → 8.24.2- Dereference boot arch symlinks- Bump version: 8.24.0 → 8.24.1- Fixed typo in build Makefile target- Bump version: 8.23.0 → 8.24.0- Use format method for messages in image_resize There are more places where this cleanup from %x format attributes to the format() method is required. Here it is done in the scope of the image resize task- Bump version: 8.22.0 → 8.23.0- Fixed setup.py custom install target Make install method aware of --single-version-externally-managed This option is passed to the call by pip if not installed as egg- Added setuptools to development requirements- Delete travis pypi deployment After weeks of try and error, this simply does not work for me Manual deployment via make pypi and a local account works fine Maybe this can be solved in the future but for now I can live with a manual step- Package kiwi/boot/arch into sub archive The sdist target runs into an infinite loop if installed via pip. It seems the symlink files below boot/arch confuses distutils- Bump version: 8.21.1 → 8.22.0- Revert "pycparser 2.15 does not play well with xattr" This reverts commit 428436988d1db1017adfb6e92dbc3235d54e06b3.- Only resize disk format if required Only resize the disk format if the raw disk has been changed If the size of the raw disk is the same as the requested size just print a message to the user- Simplify help call- Smarter way to calculate bytes from a size unit- Explicitly bool check for the service name option From docopt we expect a True/False value for the selected service name positional parameter. Thus the code should also make it clear what we expect- Use format method instead of printf like style- Update resize_raw_disk method Do not resize the disk if an attempt to resize to the same size was made. Do not fail in this situation but indicate via a bool return value if an action has happened(True) or not(False)- Use latest version of pip for tox setup- Revert "Fixup travis setup" This reverts commit ee9e633d78833d02a535e6f4d2ce775425082872.- Revert "Fixup travis.yml" This reverts commit 1c80841e8c264ba1957e2ae6b53d2af2929479b0.- Fixup travis.yml Make sure python-tox gets installed- Fixup travis setup No need to install requirements, this is all done by tox- pycparser 2.15 does not play well with xattr Use pycparser 2.14 in setup.py and virtual env requirements- Fixed setup.py install target pip calls the install target but not the build target. For kiwi's tools this means they need to run the tools compilation if not already done prior to the installation of the tools- Call dracut in system root tree Change BootImageDracut class to call dracut in the specified system root directory and not in a self prepared new root environment. dracut reads scripts and dracut module configurations from the installed system components, e.g kdump. Therefore calling it from an isolated runtime environment creates an initrd which is not matching the system components. Fixes bnc#1005246- Added kiwi image resize command The image resize command allows to resize a disk image and its optional disk format to a new disk geometry- Added manual page for image resize command- Add raw format to subformat factory- Allow ftp:// uri style for package repositories- Add grub2-efi-modules in rhel boot descriptions This package provides the efi modules which are needed if a custom efi module is build by kiwi via grub2-mkimage- Fixup doc string for target_removable attribute The default behaviour was not explained clear enough- Added resize_raw_disk method in DiskFormatBase Allow to increase the disk geometry of a disk image file in order to create free space on this disk- Handle target_removable in kiwi disk builder- Handle target_removable in kiwi boot code- Store kiwi_target_removable in profile env- Added target_removable attribute Indicate if the target disk for oem images is deployed to a removable device e.g a USB stick or not. This only affects the EFI setup if requested and in the end avoids the creation of a custom boot menu entry in the firmware of the target machine on first boot. This is related to bnc#993130- Use XML parser to test XML output for info.xml- parenthesis in imports only for multi-line imports- Delete unused textwrap import- Move info.xml test data into its own file- Fixup code smells per review Only import what is needed, concat strings by a join- Create info.xml file for btrfs snapshot If the system is installed into a btrfs snapshot a metadata file called info.xml is created which is used by tools like snapper. Fixes bnc#1000117- Cleanup use of cache location- Updated hideSplash method hideSplash method now hides the splash image regardless of an active console is detected or not. This commit is port from openSUSE/kiwi#601- Fixing wrong spaces- Updated fetchFile method Now it makes sure the splash is hidden before showing any progress dialog. This commit is port from openSUSE/kiwi#601- Bump version: 8.21.0 → 8.21.1- Fixup wicked DNS data validation wicked provides DNS info in DNSSERVERS with a space as separator and not with a ',' as it was the case in dhcpcd- Do not bundle the raw disk if a format is setup Only bundle the compressed version of the .raw disk image if no disk format like qcow2, vmdk, etc... is specified. Fixes #159- Do not compress disk formats Stay compatible with the former version of kiwi and do not compress disk formats like qcow2, vmdk, etc... It also does not make much sense since the disk formats itself are using a compression algorithm. Fixes #159- Support yum repository priorities yum normally installs the latest version of a package, regardless of which repository provides it. The yum-plugin-priorities provides a method to prefer a package from a repository with a higher priority. Fixes #153- Bump version: 8.20.22 → 8.21.0- Fix attributes_not_used helper script The script is used to check which parts of the XML schema are not used by the new (kiwi v8) version. The information is helpful to find missing or obsolete attribute handling in v8 vs. v7- Modified few code lines to match landscape's quality standards- Use tmpfs for write overlay in netboot via nbd/aoe- Added support for multiple `--add-profile` options- Added '--add-profile' option in compat mode This commit fixes #154. With this, the compatiblity mode accepts the `--add-profile` option which was present in previous kiwi versions and that is translated to `--profile` in the current version.- Add set_property_readonly_root for volume manager The custom option root_is_readonly_snapshot is evaluated for the method set_property_readonly_root(). If set and the root filesystem has been installed into a btrfs snapshot the filesystem is turned into read-only mode- Evaluate root_is_readonly_snapshot in disk builder- Added btrfs_root_is_readonly_snapshot attribute The attribute allows to specify if the root filesystem should be set to read-only if it is created as a btrfs snapshot. The option only has an effect if a btrfs snapshot is used as root filesystem. Fixes bnc#1000080- Bump version: 8.20.21 → 8.20.22- Added test for -udf flag for genisoimage/mkisofs- Added forcing UDF filesystem for large images Included -udf flag to force UDF filesystem usage- Fixed secure boot setup for iso media Provide the shim loader and the shim signed grub loader in the required boot path. Normally this task is done by the shim-install tool. However, shim-install does not exist on all distributions and the script does not operate well in CD environments from which we generate live and/or install media. Thus shim-install is used if possible at install time of the bootloader because it requires access to the target block device. In any other case the kiwi fallback code applies- Added support for mkisofs genisoimage and mkisofs tools are slightly different so this commit makes sure all flags are supported in both tools.- Fixed hybrid setup for large ISO images The isohybrid tool uses fseek() to locate the bootloader files. That's unfortunately not 64-bit safe. In case of an ISO image bigger than 4G this leads to 32-bit offset issues. kiwi can workaround this problem by putting the bootloader files near the top of the iso image, which is done by a change in the sortfile of this commit- Added rpm_excludedocs handling for yum rpm supports the --excludepath option. However, yum can not be configured to pass along options to rpm or the python interface it uses. Thus only a warning about excludedocs not being supported by kiwi for yum is issued. Fixes #133- Added rpm_excludedocs handling for apt Setup the appropriate dpkg options to avoid the installation of manual pages and package documentation if rpm_excludedocs is set in the kiwi XML description. Related to #133- Make sure netboot code populates kiwi_RootPart For disk based images the file config.partids is written and imported. However, for netboot stations a disk is optional and no partids information exists. In order to provide at least the partition number for the root partition on netboot stations with a disk, the kiwi_RootPart is exported from the provided client configuration file. Fixes bnc#1000194- Bump version: 8.20.20 → 8.20.21- Call grub2-install as chroot operation In addition to the chrooted call make sure all volumes from the volume manager (if used) are mounted at call time- Fixup grub default module list The test module is a required module in any case- Make sure fstab exists in initrd creation system- Umount volumes prior to bootloader installation- Bump version: 8.20.19 → 8.20.20- Respect setup of devicepersistency for swap part If a swap boot partition is requested it should be added to the fstab file according to the device persistency setup or its uuid default- Update schema documentation- Bump version: 8.20.18 → 8.20.19- Respect setup of devicepersistency for boot part If an extra boot partition is requested it should be added to the fstab file according to the device persistency setup or the default uuid persistency type- Only sync .mod grub2 module files When syncing the grub2 modules to the boot directory only the .mod version of the module needs to be present- Mount boot volumes on grub install If there are volumes below /boot they need to be mounted before grub2-install / shim-install is called in order to make sure all data is available in the volume- Bump version: 8.20.17 → 8.20.18- Make sure boot image dump is cleaned up- Refactor DiskBuilder class The DiskBuilder class is able to build a disk its corresponding format and the installation image to install this disk by using the InstallImageBuilder. However all three tasks were handled in a row which lead to the problem that resources like active mount processes were still open when e.g the disk format is created. The race conditions produced here lead to an undefined state of the resulting disk format and/or install image. In order to avoid this the DiskBuilder class has been refactored in a way that each tasks is an atomic operation which is freeing its resources after success- Delete root, boot, efi fstab setup from kiwi boot The kiwi boot code was responsible for setting up the contents of the fstab file on first boot. However the build process now provides an fstab with the generic label or uuid based fstab entries which allows to remove that part from the kiwi boot code- Add root, boot and efi partitions to fstab Make sure the above partitions are added to the generic fstab with their label or uuid at build time- Added BlockID class Class to provide support for retrieving block device metadata- Use BlockID class for block operations- Fixed fstab entries for btrfs subvolumes mount options must be part of the subvol information which itself is also a mount option- Corrected DEVICE_TIMEOUT variable validation Now it uses regex in order to validate the variable is an integer- Bump version: 8.20.16 → 8.20.17- Normalize mount path in get_fstab for lvm volumes- Fixed get_fstab parameter order for lvm- Bump version: 8.20.15 → 8.20.16- Delete fstab setup for volumes from kiwi boot code For persistent devices like LVM volumes or btrfs sub volumes the fstab setup can be done at build time. Fixes #142- Custom device timeout variable added This commit patches the issue bnc#992992. Now DEVICE_TIMEOUT variable can be used in order to set the device waiting timeout in watForStorageDevice function. Must be a numeric value expressed in seconds.- Implement get_fstab for btrfs volume management- Fixed btrfs mount_volumes if root is snapshot The provided subvolume name contained the snapshot path which is invalid. In addition nested volumes e.g /var/cache were reduced to /cache which is wrong- Cleanup unit test Use only one instance of context manager for all tests- Create fstab entries for persistent devices Instead of creating the fstab at boot time, those entries which are generic and not depending on an unknown device name can be created as part of the image building process.- Implement get_fstab for LVM volume management- Added get_fstab to volume manager interface The volume manager interface should allow to provide fstab entries for the volumes it manages- Bump version: 8.20.14 → 8.20.15- Fixed evaluation of Dialog return value The return code from the Dialog boot code was evaluated after other shell code was executed. Thus the return code from the call in question was lost and misinterpreted- Make sure volumes are mounted prior to install- Fixup invalid character in bash source- Bump version: 8.20.13 → 8.20.14- Fixup chroot adaption for caller environment The ZYPP_CONF path is provided as part of the caller environment and not as a zypper caller parameter. However the path adaptions when calls happens chrooted was only done for the commandline arguments but not for the command environment. This patch also adapts the environment, related to Issue #133- Make ifplugstatus available in boot images Added ifplugd to kiwi oem|netboot images for leap and tumbleweed- Prefer ifplugstatus for link up check Use ifplugstatus if present to check if the network link is up. Fallback is the old ip based method- Fixup theme setup in grub2 config template Only set the theme if the .txt file describing it exists- Fixup yum group install yum groups can contain spaces, thus quoting is required Fixes #138- Bump version: 8.20.12 → 8.20.13- Follow up fix for setupNetworkWicked IP address information from wicked is imported twice. However the plain IPv4 address validation happened only on the first import. Fixes bnc#992989- Fixed pxe install archive md5 file The md5 sum must be created from the uncompressed version of the disk image- Added missing trigger file for oem pxe install The config.vmxsystem trigger file was missing in the oem install initrd used when deploying a disk image over pxe- Bump version: 8.20.11 → 8.20.12- Integrate schema documentation into doc process The schema documentation is auto generated via the schema_parser helper tool. The tox doc target now also generates schema docs Fixes #53- Schema docs generation helper A simple script to parse the RelaxNG schema that grabs relevant information in order to produce autogenerated documentation from the schema inline comments.- Added handling for rpm-excludedocs for zypper In zypper zypp.conf can be setup to prevent the installation of %doc marked items from rpm packages. The section in the kiwi XML description is used to provide this functionality. So far this feature is only implemented for zypper. References #133- Make sure EFI modules are provided in uefi mode For EFI secure boot (uefi) the grub2 efi modules were not copied to the target directory. shim-install normally does that by invoking grub2-install. However shim-install does not allow to call grub2-install with the required parameters as needed for loop (image) based targets. Thus kiwi calls shim-install but skips grub2-install and takes care to provide the needed EFI modules.- Revert WaitForStorageDevice patch The logic to setup a wait timeout by asking a device property from a device which does not yet exist raises a chicken and egg problem- Fixed message typo (bnc#996255)- travis: Update pypi password Next try to get the automatic deployment on pypi fixed.- Move to tar.gz as sdist target PyPI is planning to support only .tar.gz in the near future. See https://www.python.org/dev/peps/pep-0527. This Fixes #132- Activate partition using parted instead of sfdisk sfdisk changes their caller semantics incompatible. Therefore we move to a tool which is still stable in the caller options Fixes #129- Update baseStripRPM Method is a noop and only exists for compatibility kiwi handles the deletion of packages in the core builder code- Bump version: 8.20.10 → 8.20.11- Revert "Update doc string for kiwi_compat.py" docopt strings are not allowed to be interrupted by a newline This reverts commit b1b92ed830820530bfd7bdc5256525f3dfc01a4a.- Bump version: 8.20.9 → 8.20.10- Use os.linesep Python's os module provides a portable version for the line separator which should be used whenever possible. Fixes #130- Bump version: 8.20.8 → 8.20.9- Fixed custom entries in vmdk machine config Each custom entry must be written in a separate line- Update API documentation Recall sphinx-apidoc and update the generated result markup- Update doc string for kiwi_compat.py Make sphinx happy- travis: Update pypi password Next try to get the automatic deployment on pypi fixed.- Bump version: 8.20.7 → 8.20.8- Fixup get_build_type_vmconfig_entries Make sure we can rely on a list return even if no machine section exists at all.- Add evaluation of machine's vmconfig_entry As part of the machine section it is possible to setup a custom entry which is stored in the machine configuration file. The evaluation of such an entry for the vmdk (.vmx) config file was still missing. This Fixes #122- travis: Next try to fix automatic pypi deployment Also the travis command which added the pypi deployment part formatted the yaml file.- Fixed bootloader configuration custom kernel parameters should be added to GRUB_CMDLINE_LINUX and not GRUB_CMDLINE_LINUX_DEFAULT Fixes bnc#994910- Use str.format for int to string convertion- Setup tests corrected #124- Fixes #124- Rearranged waitForStorageDevice code comments- Added a case statement for transport types- Removed some backquotes in favour of $()- Bump version: 8.20.6 → 8.20.7- Make repository an optional element So far one repository was mandatory in the XML description. However, this is not required because all repositories can be specified on the commandline- Added quotes to protect against spaces- Added getDeviceTransportType method The method gets the transport type of the given device. WaitForStorageDevice reacts according to the transport type by having a shorter timeout in case the device is a usb.- WaitForStorageDevice patch The function has been modified in order to distinguish a shorter timeout if the device is a usb.- Bump version: 8.20.5 → 8.20.6- Update compat options for create step The --ignore-repos, --set-repo and --add-repo options are allowed to be specified for compatibility reasons if --create is specified in the compat commandline. However, they are not used in the next generation kiwi create step because the repo information is persistently stored after the prepare step has finished, which is not the case for the legacy kiwi version- Support --ignore-repos in compat mode- Added --ignore-repos for build and prepare tasks The option allows to ignore all repos configured in the XML description. This allows to specify a complete set of repositories via the commandline- Bump version: 8.20.4 → 8.20.5- Preserve timestamp on grub2-install copy In order to workaround the bug in shim-install which unnecessarily calls grub2-install we replace the binary by a noop before calling shim-install. However all file attributes of the grub2-install binary, timestamp, modes, etc should stay untouched (bnc#993825)- Update documentation Move information about legacy kiwi in its own chapter- Bump version: 8.20.3 → 8.20.4- Update documentation Prevent to use non public url references- Bump version: 8.20.2 → 8.20.3- Fixup vmdk header update due to the wrong file open mode the result image was truncated on update of the vm tools version- Bump version: 8.20.1 → 8.20.2- Update documentation delete broken links to online ssh key blogs- Bump version: 8.20.0 → 8.20.1- Binary opened file should receive bytes Avoids TypeError: 'str' does not support the buffer interface for the vmdk header update- Fixed setupNetworkWicked IP address information from wicked dhcp reply consists out of two parts but we are only interested in the plain IPv4 address information at this point. Fixes bnc#992989- Make sure DHCPCHADDR is upercase Fixes bnc#992988- Delete obsolete section The section was formerly used as part of the section. kiwi no longer supports static split images in favour of overlay systems based on e.g overlayfs. Fixes #120- Better logging if Path.which doesn't find the file- Added docstring for KiwiDescriptionConflict- Fixup Command.run if called with raise_on_error set to False- indentation fix- Updated logging message Updated logging formating in a way that landscape does not complain- Updated Command to use Path.which Command.run and Command.call now make use of Path.which in order to test if the command is available or not. Also Path.which has been extended in order to support custom environments and to be able to test file permissions (read. write, execute)- protect systemd-detect-virt Protect systemd-detect-virt from being deleted in the kiwi initrd- Command validation This commit includes a validation in Command.run and Command.call in order to verify the existance of the command before running it. It case it is not found in the specified environment it raises a KiwiCommandNotFound Exception.- Detailed schema validation report This commit adds the execution of a jing process if the validation fails, that way the user has more information about what is actually failing during the validation process. If jing command is not found, it just produces an info message to warn the user and kiwi finalizes as expected.- Workaround Fix for pypi travis deployment Use all_branches: true, as we do only tag with bumpversion for a release this workaround works for us. For reference see https://github.com/travis-ci/travis-ci/issues/1675- Bump version: 8.19.6 → 8.20.0- Fixed suseSetupProduct Avoid shell complaining about binary operator- Fixed baseUpdateSysConfig Check if referenced config file exists- Delete obsolete use of SuSEconfig SuSEconfig was a tool long time ago and does not exist anymore- Delete obsolete sysV init boot code Traces of chkconfig, inittab, etc/init.d are gone now- Fixed suseSetupProduct Fixed shell variable evaluation syntax- Less complex user, group traversal- Simplified example config file- Updated get_users and get_user_groups methods Get_users method has been updated in order to be able to append the groups attribute when a user is defined in multiple sections in the description file. Appart from groups, all other user attributes are ignored if the user was already processed when parsing the description file. Get_users_groups method has been also updated so it returns a list of groups with unique values, keeping the description file order.- Updated xml_state The changes here modify the method get_users in xml_state in order to provide a simple list of users instead of nested lists. Also a new method to get the groups for a given user has been included in xml_state. This is done in order to slim down and facilitate the code in kiwi/system/setup.py. This way users and groups can be handled in more natural way.- Rebuild RNG schema and parser for 6.4- Auto validate XML descriptions for schema 6.4- Added schema conversion convert63to64.xsl- Bump kiwi schema version 6.3 -> 6.4- Fixed 6.2 to 6.3 XSL conversion Deletion of attributes of the same section must be handled in one iteration- Updated the user schema layout Now each user item may or may not have a groups attribute. The groups attribute is a comma separated list of group names. If present the first group name will be the login or primary group, if not present, the underlying toolchain will assign the default login group for that user.- New generated schema and parser- Some corrections needed after rebuilding schema and parser- Update true/false handling of text nodes The latest version of generateDS handles
true|false
text values in a way that it returns a boolean python type instead of the text string. With this change the kiwi code has to be adapted at the level of writing the shell profile which needs the string value of boolean information- Regenerate data structures Regenerate xml_parse with latest version of generateDS. The call works in the python2.7 tox virtual environment as part of the following make target: $ make kiwi/schema/kiwi.rng- Switch to latest version of generateDS Data Structures are auto generated from the XML schema. So far the development environment has requested an older version of generateDS which will go out of service soon- fixing user schema layout- Fixed typo in boot headers OpenSuSE vs. openSUSE- Fixed typo in translation OpenSUSE vs. openSUSE- Make sure awk is available in oemboot- Explain why bytes type is redefined In python2 bytes is string which is different from the bytes type in python3. The bytes type from the builtins generalizes this type to be bytes always. However the redefinition of the bytes type is marked as Smell in landscape. Thus the code should at least inform why this is done- Use six.Iterator instead of global object builtin The use of six.Iterator as base class for the CommandIterator seems more clear and explicit compared to the global object type overwritten by the builtins import. Fixes Smell reported by landscape- Added kiwi/archive/tar class description- extending kiwi/archive/tar- Fixing gce format build The patch is two fold, first it fixes the name of the raw disk when it is copied as disk.raw. Second it fixes the content list of the tarball to be dynamicly build instead of a static allocation. Reason for this change is that the list of files depends on the XML description whether or not a gce disk tag is configured. Fixes #113- Fixes #111: Included support for vdi format- Bump version: 8.19.5 → 8.19.6- Fixed changelog generator- Don't ask to start recovery in unattended mode If oem-recovery is setup in the XML description along with oem-unattended set to true as well we don't ask for confirmation to run the recovery when the recovery menu entry is selected at boot time- Release automatically on pypi (2nd try) Last try from 142ca22d8e was not working. Update the secure hash and also set explcitly the master branch when looking for tags.- Added integration build test link to doc index- Bump version: 8.19.4 → 8.19.5- Don't require an iso creation toolkit- Bump version: 8.19.3 → 8.19.4- prefer newer overlayfs mount method mount succeeds in compat mode but this mode should only be used on older overlayfs implementations- Bump version: 8.19.2 → 8.19.3- Message commit for bug reference Fixup of VMware disk tag references (bnc#988086)- Prevent duplication of context manager in test- Bump version: 8.19.1 → 8.19.2- Complete doc string for Path.which method- Implement Path.which Python provides methods to do this but we can't rely on them to be available in all python versions- Conditionally prefix encoding to vmware disk tag Prior code was always adding the encoding statement to vmware disk tag; in the event it is already present there's no need to add it a second time. See also https://github.com/openSUSE/kiwi/pull/586/commits/af1fed77af862dc44bd4322680425299ef5ad654- Remove null padding on the vmware disk tag The block of data read via dd is null padded; adding the tools data after the padding breaks detection of the data. We need to remove the nulls (0x0) so appends can occur adjacent to the block of strings. See also https://github.com/openSUSE/kiwi/pull/586/commits/ee8931c76c17c79d30a128c05cc6f839a1de7156- Update documentation Cleanup structure of contribution guide- Update documentation Complete documentation about required C libraries which needs to be installed prior to setting up the python virtual development environment- Fixup dependency on genisoimage Only for SLE12 the package requires genisoimage for any other distribution mkisofs is required. The community variant with genisoimage seems to be quite outdated. However, on SLE12 only genisoimage exists. Fixes #106- Lookup tool name by path lookup- Update import statement parenthesis only needed for multi-line multi-import- Refactor block depth on get_volumes return early if the condition makes it clear that there is nothing more to do in this method- Lookup iso creation tool Instead of strictly using genisoimage allow for using either the community variant or mkisofs as provided by J.Schilling- Refactor reading of volume variables in boot code Use new style profile variables without name limitations Related to #39- Refactor profile for volume setup Don't use volume names in bash variables. In addition that removes the name limitations we had for volume names Related to #39- Delete obsolete volume condition checks No need to check for LVSwap or LVComp in volume setup. If at all those volumes are created at boot time. Related to #39- Refactor use of kiwi_allFreeVolume_ Do not expect the value to come from an exported variable Instead a method to provide the information is implemented Related to #39- Bump version: 8.19.0 → 8.19.1- Fixup cleanup of intermediate config files kiwi uses e.g etc/hosts from the host system for proper name resolution during the build. The temporary variant of that file will be deleted by kiwi at the end of the installation process. However depending on the package manager and the distribution it could happen that the intermediate config file added by kiwi is treated as existing config variant. In case of rpm a .rpmnew file variant of the config file is created and that needs to be handled by kiwi. Therefore this patch adds a private restore method for the .rpmnew case. It might be needed to add other restore methods to deal with this issue depending on how other (non rpm) based package managers handles the situation. Fixes #104- Bump version: 8.18.9 → 8.19.0- Make sure mtab link exists in kiwi initrd On Debian systems the filesystem tools requires the presence of the mtab file, thus we make sure this file exists and links to proc/self/mounts- Refactor use of dialog program in boot code Cleanup the mess, provide only one method to run a dialog Prevent use of subshells for running the dialog program- Fixed use of shutil.copytree The target dir must not exist. However in order to force copy a potentially existing target is deleted before- udev console init requires kbd_mode on Ubuntu keep kbd_mode in initrd- Added oemboot description for ubuntu-xenial Also add kiwi linuxrc/preinit links for vmxboot- Allow alternative location for udev console init yet another name and location for the console init utility- Remove lxc configuration from docker images Docker does not use LXC execdriver anymore. Fixes #40- Bump version: 8.18.8 → 8.18.9- Fix linkcheck in container_builder.rst- Fix linkcheck in container_builder.rst- Bump version: 8.18.7 → 8.18.8- Update Documentation Update state of supported distributions- Apply editorial review changes- Apply editorial review changes- Apply editorial review changes- Delete traces of obsolete code- Prevent unconditional deletion of toplevel data The kiwi initrd descriptions calls suseStripInitrd() as part of the images.sh script. This function unconditionally removes toplevel directories like /home. Instead of deleting the data it is better to exclude them when the cpio archive is created- Bump version: 8.18.6 → 8.18.7- Added serial console support for isolinux loader Generate a serial line setup for the isolinux.cfg file according to the bootloader_console attribute from the XML description. In addition delete the use of the obsolete vga kernel parameter and work with the MENU RESOLUTION ui configuration parameter instead- Bump version: 8.18.5 → 8.18.6- Fixed setup of default install menu entry The attribute installboot allows to specify the default boot menu entry in an install image. It can be set to harddisk, install or failsafe install. The setup of that information in the bootloader configuration was not properly processed- Fix landscape Smells- Update location of build container- Update dice source link- Update Dice project location- Apply editorial review changes- Bump version: 8.18.4 → 8.18.5- Fixed building of install image If dracut is requested as initrd_system in combination with building an installiso we have to overrule the initrd_system setup for building the install image. The code to install an image is kiwi's oem install code and unknown to dracut. The process will end up using dracut as initrd in the system image but kiwi's initrd on the install image- Delete kiwi-tools from rhel boot descriptions kiwi-tools is no longer a requirement but an optional package It contains tools like utimer or dcounter which provides nice boot timer or progress dialogs for showing data transfer progress. In the Virtualization:Appliances:CommonBoot repo we provide mandatory and optional packages used by kiwi if they don't exist for the target distribution- Better warning message for root cmdline setup Under certain circumstance the root=UUID= parameter must be setup in the cmdline of the image. If the required uuid value is not provided a warning message is shown to the user. This commit makes the warning message more meaningful- Extend unit tests for boot image setup Expect kiwi_initrdname to be set in the profile of the boot image root system- Call plymouth only when installed- Add delete method for profile variables- Added article about self contained building The article describes how to make use of the dice project to control and maintain image build processes in a contained environment- Fix grub bootloader template Keep gfxpayload- Update bootloader console setup in boot code Use the variable kiwi_bootloader_console which represents the setup of the bootloader console from the XML description and setup the GRUB_TERMINAL configuration option to allow grub2-mkconfig to pick up the value. If no console setup exists in the XML description, gfxterm is used by default- Make bootloader_console availabe in profile The variable kiwi_bootloader_console is exposed into the profile environment- Delete obsolete code All traces of lilo and elilo are gone now- Fixed grub2 bootloader config template Load fonts only when they exist, do not duplicate font setup in template- Fixed bootloader theme check The check for the theme was not always called, but this is required since the theme check will reset the bootloader console if no graphics theme could be found- Bump version: 8.18.3 → 8.18.4- Apply back openSUSE 13.2 support Until Leap42.2 is not yet released we should keep the support for 13.2- Added support for setting the bootloader console Some bootloader e.g grub supports graphics, text and also serial consoles to hand over the output of the bootloader menu. With this patch we allow to customize the console used by the bootloader. So far only grub makes use of the new attribute This references Trello: https://trello.com/c/q9EhNKKV/155-support-for-grub2-serial-console- Bump version: 8.18.2 → 8.18.3- Fixed typo in message text- Fixed vmxboot/ubuntu-xenial boot description dracut should be installed to support initrd_system="dracut"- Update iso|vmxboot debian boot descriptions- Fixup ldd check for unused libraries- Update vmxboot/ubuntu-xenial boot description Complete description to be usable with kiwi initrd boot code too- Added baseCreateCommonKernelFile The stripKernel functions return early if the dracut initrd system is requested. However it is required in any case to lookup the kernel and provide a common name kiwi expects to be present- Set logger mode to append- Bump version: 8.18.1 → 8.18.2- Add distro flag match for Leap42.2- Bump version: 8.18.0 → 8.18.1- Preserve zypper package cache zypper deletes the package cache if a repo is removed. For the purpose of image building this should not happen- Pass initrd_system to profile The common functions baseStripInitrd and baseStripKernel need to be skipped if the initrd system is set to dracut. They read that information from the exported kiwi_initrd_system profile environment variable- Don't delete dracut from boot image environment If the dracut initrd system is requested we need dracut to stay in the environment from which it is called- Fixup copy_boot_delete_packages if no section exists in the target the code does not add the packages to become deleted. This patch changes the behavior in a way that a new section is created- Add isoboot support for Ubuntu system Next step to allow creation of Debian based live systems Related to Issue #37- Added suse-leap42.2 descriptions Obsolete suse-13.2- Update hyper links in project README- Rename kiwi boot code files Maintain them as common code base for all distributions During the years of development it has turned out that differences in the boot process between the distros can be handled in one code base. There is no need to maintain a basically identical copy for the different distributions- Style fixes: E275 missing whitespace after keyword- Delete obsolete C tools- Prevent use of setctsid setctsid is a suse extension to start a program on a new controlling terminal. While it is very useful it does not exist on other distributions which causes a problem in kiwi's common initrd code. This patch replaces the use of setctsid with setsid and sulogin- Open log file in mode 'w' and in utf-8 locale- Delete obsolete mkinitrd code This version of kiwi supports only distros using dracut- Delete obsolete sysV init console setup code- Make use of utimer in kiwi initrd optional- Bump version: 8.17.0 → 8.18.0- Adapt to common python style Private methods should start with _f() not __f()- Prevent temporary files to be synced to image The package manager instances created temporary package manager configuration files. The instance destructor and thus the cleanup of the instance should be called prior to the sync of the root filesystem data in order to prevent temporary configuration files to be present in the image- Grammar fixes for doc strings- Syntax change for Importing one module- Update test_load_schema_from_xml_content test Read schemaversion from RelaxNG instead of using a fixed value- debootstrap errors deserve their own exception- Avoid glob imports This could start a series of further changes in the unit test as we have allowed for glob imports there. So treat this one as a start- Add documentation for Exceptions- Support Tox with interactively positional arguments Use posargs for py.test, see http://tox.readthedocs.io/en/latest/example/general.html- Format message with named format parameters- Avoid re-assigning variable- Fixed unit test for profile variables- Handle XML per content or file more explicit- Differentiate between Python 2.7 and 3 in doc- State Python 2.7 in Trove category of setup.py- Refactor RootInit class Instead of calling multiple subprocesses make use of the os capabilities for directories, symlinks and device nodes- Fixed use of shutil.copytree- Update ubuntu xenial vmxboot description Make sure all drivers exists when dracut is called to allow inclusion of potentially all needed driver modules- Fix Lithuanian translation- Fix Ukrainian translation- Update grub2 config tempplate Load font collection- Refactor use of os.walk result- Integrate python improvement suggestions- Integrate python improvement suggestions- don't intermingle suse namespace with debian- Deleted libxslt-tools from spec template- Fixup indentation of travis setup- Fixed license setup in spec file- Remove unused import (F401) and an extra line (W391)- Fix tests for Python3- Fix tests for the XPath processing- Allow XMLDescription to be loaded also from the XML string- Release automatically on pypi for new tags When a new tag gets created, automatically release it on pypi so we don't have todo it manually.- Reimplement XSLT processing using LXML instead of calling 3rd party tools- Added tox 2.7 target for travis- Fixed creation of password hashes kiwi uses the openssl command for this purpose but did not strip the newline at the end of the hash output- Apply python 2.x compatibility decorators- Added tox target for python 2.7- python 2.x compatibility added new requirements six and future modules are needed for the compat layer- Fixup grub2 theme setup We can't expect that specific fonts to exist for all theme packages in all distributions. The code here should rely only on theme.txt In addition we check if any theme or font related data is found in the legacy grub location boot/grub which imho should not be used for grub2- Update ubuntu-xenial boot description No need for a drivers setup here, vmxboot is only the container to run dracut- Bring byte strings to Py2 compatibility in ISO- Make iterators Py2 comptible- Added boot image description vmxboot/ubuntu-xenial- Replace 'builtins.open' with patch_open decorator- Add mock_open and patch_open helpers- Remove double requirement- Use ConfigParser from six- Move urlparse to the Six package- Remove duplicate key- Add print function for Python 2- Add missing init file- Add Python2 compatibilitiy requirements- debootstrap installs apt-get Don't add the specified package manager to the list of bootstrap packages for apt-get, because that is covered by debootstrap- Allow additional bootstrap packages for apt-get- Don't run apt-get with mounted /dev- Fixed force-yes option for apt-get- Allow unattended installation of debian packages- Added PackageManagerApt class Support installation/removal of deb packages Related to #37- Support for apt-get package manager Starting to support Debian based distributions also means to support the deb repository types. This commit adds the RepositoryApt class to handle deb repositories for image building. Related to #37- Bump version: 8.16.5 → 8.17.0- Added pypi make target for upload Please note an appropirate ~/.pypirc file and registered user is required to upload- switch_root / pivot_root quiet call- Increase default boot partition size to be 300M- Delete obsolete isFSTypeReadOnly from boot code The check was used to detect if a read-only root filesystem is in use, which can be done by checking if kiwi_ROPart is defined- Refactor use of global FSTYPE variable The kiwi boot code populates a global FSTYPE variable which was used at several places. However there was no clarity for which storage device this filesystem value was detected for. Thus the entire handling has been refactored and there is no global FSTYPE variable anymore- Add attribute Allow to activate the overlay root setup for disk images- Bump version: 8.16.4 → 8.16.5- Update development status Status :: 5 - Production/Stable- Don't search for kiwicompat in fixed absolute path Allow alternative locations from search PATH- Integrate git attribute setup to sdist command- Add C tools binaries to git ignore list- Fixed command class name for distutils The overwritten build and install commands should not change their name in order to stay consistent on e.g --help- Fixed kiwicompat binary lookup The test for os.path.exists on just the binary name without a path specification always fails if not present in current directory. Let execvp do the job for us- Fixed entry point for kiwicompat- Use path lookup for kiwi-ng in kiwi_compat Instead of a fixed path use the PATH lookup. This would allow to install kiwi at alternative places as long as the path is part of the shell search PATH- Create completion data at build time- Move all build and install tasks to setup.py In an effort to distribute kiwi on pypi it should not be required to call make targets for a complete installation. Therefore the compilation of the C tools as well as the installation of the man pages and the bash completion has been added to setup.py. The spec file to build an rpm package has been changed to use setup.py exclusively- Delete obsolete .releasetags from MANIFEST.in This avoids a warning on setup.py build- Fixed warnings in C written tools- Bump version: 8.16.3 → 8.16.4- Fixed spec file update-alternatives is used, thus needs to be required- Support for overlay disk images overlay disk images uses a readonly root partition and are overlayed using overlayfs to hook in a cow based read-write space. This commit implements the basic disk setup. Implementation to boot such a disk in the kiwi boot code is still missing, as well as the investigation if dracut is able to boot such a disk too. References #65- Bump version: 8.16.2 → 8.16.3- Fixed completion generator In addition cleanup the main docopt definition- Fixed completion conflict with legacy kiwi- Bump version: 8.16.1 → 8.16.2- Fixed spec file rpmlintrc file must be mentioned as source- Bump version: 8.16.0 → 8.16.1- Update quickstart documentation kiwi can also be used as a module in other python3 projects. An example how to do that has been added to the quickstart- Bump version: 8.15.5 → 8.16.0- Added support for grub2 console switch entry An additional hidden entry allows the user to switch between the graphics and the serial console by pressing the 't' key. The kiwi grub2 template adds this switch if the terminal mode is set to graphics. The additional entries are only effective of the grub_platform is set to efi. Fixes #80- Fixed add_repo for zypper repositories Always run zypper addrepo in order to make any change in the repository definition to become effective- Fixed add_repo for yum repositories Always create the repo file from scratch in order to make any change in the repository definition to become effective- Bump version: 8.15.4 → 8.15.5- Split quickstart into two parts Split the quickstart information into a development and a user part- Bump version: 8.15.3 → 8.15.4- Added readonly check for persistent data When creating a partition for persistent data, check if the device class has the readonly flag set before trying to write anything there. Fixes #74- Bump version: 8.15.2 → 8.15.3- Fixed removal of a package in XMLState If a was unwanted in a section the former code sets the name of the package to a python None type. This causes the rest of the code to operate on potential None types which causes unexpected TypeError's under certain conditions. Instead of leaving an inconsistent package section the entire package section reference should be deleted from the packages instance holding it. Fixes #76- Exit code for --version call should be zero- Bump version: 8.15.1 → 8.15.2- Set config.sh and images.sh scripts as optional- Bump version: 8.15.0 → 8.15.1- Fixed landscape smell Unused variable 'key'- Fixed landscape smell Redefining built-in 'help'- Fixed landscape error Dangerous default value [] as argument- Refactor import_description split code into more readable parts- Make sure mandatory vmdk settings exists Even without a machine section configuration the minimum required information must be presented to the settings template- Added store_to_result for vmdk format The vmdk format provides more than the standard result store. for vmdk we need to store the vmdk and the settings file- Reduce amount of mountpoint check calls- Refactor subformat classes Add a generic store_to_result method which allows to store the format result files into an instance of Result. This allows to customize result handling per format when needed- Create VMware settings file for vmdk subformat In order to run or convert the vmdk with VMware products a settings file is required.- Added dropped features information for lxc- Bump version: 8.14.2 → 8.15.0- Fixed script/archive lookup If a script or archive is specified with an absolute path in the image description, kiwi should not assume this path to exist below the image description directory but just take the absolute path as it is. Fixes #70- Load logging at runtime for MountManager- Runtime checker message fixes Start with an empty line to improve readability- Integrate runtime checks for tasks Call appropriate runtime checks for prepare, create and build tasks. Fixes #20- Create instance of runtime_checker for any CliTask- Fixed building documentation- Reuse env in tox.ini Reuse virtualenv directory with envdir. Should speed up things a bit. Taken from https://blog.ionelmc.ro/2015/04/14/tox-tricks-and-patterns/#partial-environment-reuse https://blog.ionelmc.ro/2015/04/14/tox-tricks-and-patterns/#environment-reuse- Use more compact config for tox.ini Rewrite basepython to make it more compact Taken from https://blog.ionelmc.ro/2015/04/14/tox-tricks-and-patterns/#compact-configuration- Add requirements section in Quick Start * Describe what KIWI needs to run, further requirements, and for development * Introduce 'ghkiwi' as prefix in "extlinks" to shorten external links and to make linking to KIWI's GitHub repository more intuitive and consistent. For example, the string :ghkiwi:`tox.ini` is replaced with https://github.com/SUSE/kiwi/blob/master/tox.ini- Added check_target_directory_not_in_shared_cache Runtime checker method to check if the target directory was set to - or below the shared cache directory- Bump version: 8.14.1 → 8.14.2- Move creation of mountpoint dir to setup method The volume management classes should create the temporary mountpoint directory when it is needed and not when an instance of the class is created- Cleanup use of temporary directories All mkdtemp created directories are created with the 'kiwi_' prefix. In addition all code parts which leaves tmpdirs in the system after kiwi is done were fixed- Bump version: 8.14.0 → 8.14.1- Added python3-xattr dependency- Added xattr checker for DataSync class The method target_supports_extended_attributes() checks if the sync target directory supports extended filesystem attributes. The method is called on sync_data() and will remove the -X / -A options if provided. A warning message is issued to the caller if the rsync option list has changed because of the underlaying filesystem limitations- Fixed subformat creation The option -c makes only sense for the qcow2 subformat, whereas on all other format it cause qemu-img convert to fail- Use iterator protocol instead of StopIteration CommandIterator contains already the __iter__ magic method. We don't need to manually use while and next() in order to advance to the next element. => Code refactored to "for line in self.command" which does exactly the same job, but is better readable. Plus we avoid the nasty try...except block.- Remove kiwi.logger.init() function The init function is mostly unneccessary and can be directly created in the kiwi.logger module.- Remove useless __init__.py- Fixup usage messages- Bump version: 8.13.4 → 8.14.0- Added support for custom rootfs label A new attribute has been added This Fixes #66- Update grub2 bootloader template menuentries Mark all menuentries as --unrestricted. Fixes #64- Bump version: 8.13.3 → 8.13.4- Fixed shared local repository mounts- Bump version: 8.13.2 → 8.13.3- Added evaluation of imageincluded repositories repositories marked as imageinclude needs to be added permanently to the image. Fixes #56- Make xz the default compressor for squashfs When creating squashfs compressed files use xz as compressor if not other compressor is specified. Fixes #63- Added --add|delete package for prepare command Allow additional packages to be installed/deleted when calling system prepare. Fixes #62- Alpha sort option documentation Alpha sort options in usage and man pages- Added --add|delete package for build command Allow additional packages to be installed/deleted when calling system build. Related to Issue #62- Fixed completion generator complete for kiwi and kiwi-ng- Prevent double render on usage- Add check_image_include_repos_http_resolvable Runtime checker method to check if repositories marked with the imageinclude attribute are using a publicly available protocol- Add shared cache location to Defaults- Bump version: 8.13.1 → 8.13.2- Allow alternative if isolinux-config failed If the setup of the base directory failed because isolinux-config was not able to identify the isolinux.bin signature, we create a compat /isolinux directory and hardlink all loader files- Fixed typo in message Fix condition to show the grub module info message- Use program output for synopsis in documentation- Provide custom usage message Instead of the docopt way to show the usage information we provide a kiwi specific usage information. The usage data now always consists of: 1. the generic call kiwi [global options] service [] 2. the command specific usage defined by the docopt string short form by default, long form with -h | --help 3. the global options- Fixed loadSELinuxPolicy enforce policy is located in /sys/fs/selinux- No authconfig on RHEL >= 7- Activate SELinux for RHEL systems Added new boot method loadSELinuxPolicy and call it as part of the rhel-preinit phase. This put SELinux in enforcing mode also from the kiwi initrd- Handle fsmountoptions attribute in all builders- Refactor custom_args handling for VolumeManager class Allow for two elements fs_create_options and fs_mount_options in a VolumeManager instance and pass along the information to the FileSystem and MountManager instances- Refactor custom_args handling for FileSystem class Any FileSystem class can receive a custom_args dictionary which by defaults ensures the presence of an empty list for create_options and mount_options. The create_options are used in the subclasses when the filesystem is being created and the mount_options are passed to the MountManager when the filesystem is mounted for e.g data_sync- Make kiwicompat understand --version | -v option- Small spelling corrections Apply title style: * package -> Package * module -> Module * Use backticks for kiwi.* modules to avoid spelling problems- Update spell-checking wordlist GitHub, JeOS, KIWI, LXC, squashfs, stderr, stdin, stdout, Submodules, Subpackages, zypper- Add "spell" rule in Makefile Also included in the help target- Enable Acronyms, importable modules, and builtins- First draft to "beautify" HTML appearance * Add GitHub button and "Fork me" widgets * Add Travis button * Remove obsolete code- Bump version: 8.13.0 → 8.13.1- Added support for SELinux file security contexts Systems using SELinux require the filesystem data to be labeled according to a security context configuration. kiwi now checks for the presence of /etc/selinux/targeted/contexts/files/file_contexts and labels accordingly if it exists. This Fixes #52- Make grub2 installation path lookup dynamic Not all linux systems installs grub2 below /usr/lib/grub2 For example RHEL7 packages it below /usr/lib/grub. Therefore kiwi needs to be flexible with this path- Used :returncode: for sphinxcontrib-programoutput Fix a warning when calling "kiwi-ng". As the script returns 1, it is considered to have failed by the program-output directive. The returncode line fixes that. See more info here: https://pythonhosted.org/sphinxcontrib-programoutput/#error-handling- Integrate version string from placeholder Use |version| placeholder, no bumpversion etc. is needed. Actually, it's taken from conf.py- Added RuntimeChecker class An instance of RuntimeChecker allows to semantically check for error conditions according to the provided image description and build options. Related to #20- Spell checking doc and extended word list- Add filesystem requires in kiwi-boot-requires In order to have all filesystem creation tools available when building in the buildservice we need to require them in kiwi-boot-requires- Bump version: 8.12.0 → 8.13.0- Set ident export-subst git attribute on version.py- Bump version: 8.11.0 → 8.12.0- Fixed documentation link references Use redirected target and fix broken targets according to link check on make build- Fixed typo in documentation Missing question mark at end of sentence- Bump version: 8.10.1 → 8.11.0- Fixed typo- Added Legacy KIWI vs. Next Generation chapter- md -> rst, radically shortend README- More substantial changes of the doc * Overall: try to be more consistent * index.rst * Move "Supported Distributions" and "Dropped Features" sections * Quick Start: * Add abstract * Add note about automatic link creation * Move "example appliance description" sections and subsections further down * Streamlined "Contributing" section * Corrected titles and distinguish more between descriptive and procedural- Remove useless substitutions (placeholders)- Add KIWI logo- Move Motivation section from quickstart to index- Correct heading and remove build status- Add QuickStart Guide and improve documentation * Added Quick Start Guide, taken from README.md * Improve index/main file: * Shortend main entry page * Make more headings * Add feature highlights to draw attention * Add sidebar with important KIWI links * Use ordered list of KIWI concept (prep and creation step)- Add package manager requirements in spec file- Update README- Update README- Update README- Move program name from kiwi-py3 to kiwi-ng- Added genisoimage requirement to kiwi spec file On SLE12 we only have genisoimage, on Leap and Tumbleweed we have both genisoimage and mkisofs. For the moment both toolkits produces working iso images with kiwi, thus I chose the save default with genisoimage- Be more flexible for isoinfo lookup isoinfo can either be provided by the community package in /usr/lib/genisoimage/isoinfo or by the mkisofs package from J. Schilling in /usr/bin/isoinfo. kiwi should be smart enough to lookup which tool is installed. /usr/bin/isoinfo will be preferred- Update README Added link to documentation- Try with latest version of travis-sphinx- ghp-import required for travis-sphinx deploy- Make sure enchant library is present for travis- Update tox setup Update TOXENV targets- Move travis-sphinx build tox target to script section- Use tox target for travis-sphinx- Put travis-sphinx build into script section- Make travis-sphinx deploy work It's required to call travis-sphinx build in order to be able to run the deploy command- Fixed documentation linkcheck results- Make sure shared mount directories exists Create shared directory path on the host _and_ in the new root directory to make sure the bind mount works- Update documentation entry page- Use travis-sphinx to deploy doc to github https://suse.github.io/kiwi- Fixed package requirements libxslt-tools provides required xsltproc- Update README for style and markup- Fixed README, wrong markup- Update README Add information how to build with dice- Add part_msdos module for self build EFI image- Update tox.ini Documentation building requires sphinx_rtd_theme and sphinxcontrib-programoutput- Update volume_manager inline API documentation References #49- Update utils inline API documentation References #49- Update tasks inline API documentation References #49- Complete system inline API documentation References #49- Use Path.wipe instead of directly calling rm- Update system inline API documentation References #49- Update storage inline API documentation References #49- Fixed typo- Cleanup use of partition id maps For the partition setup the Disk class uses dictionaries to map the partition name to the partition number. However there are public partition names such as 'kiwi_BootPart' and kiwi internal partition names such as 'boot'. The code should make it more clear which mapping table is used- Update repository inline API documentation References #49- Update partitioner inline API documentation References #49- Complete bootloader inline API documentation References #49- Update README Add chapter about signing commits- Update README- Update README- Update package_manager inline API documentation References #49- Update filesystem inline API documentation References #49- Update container inline API documentation References #49- Update builder inline API documentation References #49- Update bootloader/template inline API documentation References #49- Complete bootloader install interface- Update bootloader/install inline API documentation References #49- Move get_failsafe_kernel_options to Defaults- Update bootloader/config inline API documentation References #49- Update boot/image inline API documentation References #49- Update archive inline API documentation References #49- Delete traces of zfs support- Update inline API documentation References #49- Update inline API documentation- Update inline API documentation- Update inline API documentation- Update inline API documentation- Ignore auto generated code for API docs- Update inline API documentation- Update api documentation setup- package kiwi-pxeboot must not be noarch We want to specify for which arch we provide it. Thus it's not allowed to specify it as noarch even though it provides only noarch data- Create Initial autodoc structure Called 'sphinx-apidoc -o source/api ../kiwi'- Fixup docstring for kiwi/command.py- Move manual page documentation in subdirectory Separate api documentation from manual pages- Update virtualenv development setup make sure we can build the docu in the development environment- Add docstrings for Cli class References Issue #49- Fixed ppc setup of etc/default/grub_installdevice On power grub must be installed into the Prep partition into the master boot record of the disk- Add Python 3.5 to be consistent with Travis- Fixed logger unit test- Make color output an option By default no color output is used- Added missing kiwi-packagemanager provides The buildservice looks up for a package manager capability- Fixed spec file syslinux is not a requirement for the base package- Check for derived description path in prepare too- Refactor SystemSetup class the information about the description_dir is part of the provided xml_state instance. There is no need to pass that information along twice- Fixed use of derived_description_dir Only in import_description we need to check for both locations- Make sure import_description preserves archives- Refactor InstallBootLoaderGrub2 constructor architecture dependant device setup belongs to the install method where it is actually needed. That prevents the construction of the instance to be architecture specific- Make list of efi grub modules arch dependant- Revert "Delete efi_uga module from list" This reverts commit 191d423eb571d3cc08f34b5e4ef15eb6296a6563.- Delete efi_uga module from list- add multiboot grub module only on demand multiboot is only needed for self build grub images in Xen guest mode- Don't raise if kversion exits with error In this case a default value applies- Activate partitioner support for arm- Add optional derived_from param to XMLDescription An instance of XMLDescription can now optionally become constructed with a path to an image description this instance was derived from. This is currently used for building the kiwi boot image to tell the boot image XML description instance from which system image instance it was derived from- Evaluate default video mode for iso images- Added custom profile for arm/oemboot/suse-tumbleweed- Update firmware types for arm architectures Add efi and uefi as allowed types, complete architecture name list set efi as default firmware for arm- Added pre/post hooks for bootloader setup/install preInstallBootLoader, postInstallBootLoader preSetupBootLoader, postSetupBootLoader- Fixed architecture dependant tests- Added support for virtual boot partition on arm Triggered by the firmware="vboot" setup an EFI setup plus a raw partition without filesystem is created as first partition. The size of the partition can be controlled by the vbootsize attribute. The vboot feature is used by the arm architecture to provide a space in the partition table for custom code as required by e.g the chromebook. The final customization of the vboot space is board specific and can't be implemented in a generic way in kiwi. For finalizing the vboot space the script hooks editbootconfig and editbootinstall can be used This is related to Issue #17- Rename partition id kiwi_JumpPart to kiwi_EfiPart This makes it explicit for what purpose the partition is really used. EFI is not configured the same for all architectures but what is consistent is that on this partition an efi image is located to become loaded by some firmware- Activate boot partition only for msdos tables- have tar preserve all xattrs By default tar will only preserve a subset of the capabilities with --xattrs. Adding --xattrs-include=* should preserve all capabilities (e.g. user.*, security.capability etc.).- Preserve hybrid GPT status on boot Added createHybridGPT method and setup the hybrid GPT/MBR table if requested by the XML configuration. In addition move the partition activation call also into the partition table finalize method. This is related to Issue #17- Refactor partition table setup code Added two methods preparePartitionTable and finalizePartitionTable which are used to prepare the partition table to allow resizing and to finalize for partition flags after resizing. This replaces the updatePartitionTable method- Delete obsolete GPT fixup code Related to bnc#825221 code was added to recreate the disk with a new GPT label. The reason was that parted created a gpt_sync_mbr partition table when kiwi repartitioned the disk to use the full geometry. This was an unwanted behavior by parted and causes the additional code in kiwi. The current parted version behaves correctly and thus makes this additional code obsolete- Added support for hybrid GPT Embedding an MBR into a GPT is required for a collection of boards, e.g arm rapberry PI. The kiwi configuration provides a new attribute called , initrd-- Skip local repos if they don't exist Instead of raising an exception if a local repository does not exist, we will continue with a warning message. This is needed for a flawless integration with the buildservice. Inside of a buildservice environment only those repos are setup from which packages were taken. Thus it can happen that a configured repository does not exist in the buildservice build environment if the resolver would not take any package from this repository. kiwi should not fail to build such an image- Avoid lvcreate to ask for wiping swap signature When kiwi creates the logical volume for the swap space and there is already a swap signature at the place on disk, lvm stops and asks what to do with it. This should be generally avoided at that stage in the boot process Fixes (bnc#968601)- Calculate checksum in chunks- Don't prevent an oem image from a custom disk size An oem disk ist a self expandable disk and thus it normally doesn't make sense to specify a disk size for it. However there are filesystems like btrfs which are very hard to precalculate a minimum required disk space for X bytes of data. In this situation a user should have the opportunity to specify a size- Don't call dracut in background from kiwi initrd This was useful to speedup the boot but opens a potential race condition if a reboot happens while dracut is still processing. With the last extension to use dracut as initrd system people now have the choice what fits their needs better and this allows us to revert the background call- Added support for using dracut initrd As of today only the kiwi initrd could be used with an image build. This commit adds a new initrd_system attribute and allows to select between kiwi and dracut as initrd system. Please note the dracut initrd does not support all features of the kiwi initrd. This fixes #25- Add a feature drop list to the README- update MANIFEST.in due to structure changes- Update README Use the real executable name for the documentation- Continue Refactor into subpackage storage operations should have their own namespace- Continue Refactor into subpackage container and container_setup should have their own namespace- Continue Refactor into subpackage disk namespace init is not a factory, thus the Disk class should have its own namespace. We choose disk.storage- Continue Refactor into subpackage rename dformat to subformat- Continue Refactor into subpackage The builder classes should have their own namespace- Fixed update alternative setup for kiwi completion kiwi itself is provided as update alternative for kiwi-py3 Thus the completion should be based on kiwi-py3- Refactor into subpackage to fix #23 Codecoverage are 100% and tests are green Changes: * Refactor archive_*.py -> archive subpackage * Refactor partitioner_*.py -> partitioner subpackage * Refactor package_manager_*.py -> package_manager/ subpackage * Refactor bootloader_config*.py -> bootloader/config/ subpackage * Refactor bootloader_template*.py -> bootloader/template/ subpackage * Refactor bootloader_install*.py -> bootloader/install/ subpackage * Refactor repository*.py -> repository/ subpackage * Refactor filesystem*.py -> filesystem/ subpackage * Refactor dist_*.py -> dist/dformat subpackage The name `dformat` as package name is needed to avoid any name conflicts with the built-in function `format`. * Refactor volume_manager*.py -> volume_manager/ subpackage * Refactor boot_image*.py -> boot/image/ subpackage- Remove unecessary Travis requirements- Fix check target Didn't have a basepython line, fixed strange tox error- Enhanced Contributing, add new Developing section * Create a procedure in section Contributing * Add new Developing section to describe how to use tox- Fixed device map for VolumeManagerBtrfs The return value from get_device must be a map containing an instance of a DeviceProvider, not only the DeviceProvider- Refactor use of mount/umount calls Provide a MountManager class and handle all mount/umount calls in instances of MountManager- Don't write grub.cfg to EFI directory Originally the file was written there as reference, but nothing will ever update that file if the real grub configuration changes. Thus it doesn't make sense to provide this information (bnc#968270)- Add support for POWER architecture Implements requirements for the partition and bootloader setup in order to build images for ppc64 architectures. Fixes #18- Refactor grub2 bootloader installation Make use of grub2-install to install the bootloader- Changed debug log in case of failed command Also log the stdout data from a failed command. So far we expected error data on stderr but there are also commands which print error messages on stdout. It should us at least worth a debug message with this information- Use tox in .travis.yml, remove .travis.script- Fixed helper/kiwi-boot-packages Take care for packages marked for a specific architecture- Delete unused helper/run-pep8- Adapt make flake target to changed tox target- Add --cover-min-percentage=100 and helper script- Fixed spec file for kiwi-boot-requires The meta package for the buildservice has to require the new python3-kiwi package- Use --cover-min-percentage=100 instead of coverage- Replace helper/coverage-check with coverage Use --fail-under=99 option which fails for tests under 100%- keep packages in yum cache- Rename flake -> check, move spell * Move spell target/step to doc.spell * Call doc.spell in the doc target/step * Rename flake to check (to make it independant of any tool)- Spelling fixes- Tox setup updates Integrate with Makefile, delete pep8 target from Makefile, use flake8, update travis script, delete coverage reference, we want 100% anywhere- Fixed raid_device_test The test did not mock os.path.exists and thus could fail on systems which uses a raid system- Update word list- Remove empty line to avoid error message Avoid following error message: CRITICAL **: enchant_is_title_case: assertion `word && *word' failed- Activate personal spellchecking dictionary- Open travis check for all branches- Added kiwi-filesystem provides to spec template The main python3-kiwi package provides support for these filesystem image types- Integrated Tox * First incarnation of tox.ini * Extend MANIFEST.in * Add doc/requirements.txt * Extend conf.py with 'sphinxcontrib.spelling' extension * Add wordlist to doc/source/spelling_wordlist.txt * Add flake8 section in setup.cfg- Fixed cmdline lookup Only check contents of cmdline if it is not None- No fdupes checking required anymore- Don't track root/usr/share/locale in boot images The data there is now generated by the make po target- Fixed fuzzy i18n for en_US/LC_MESSAGES/kiwi.po- Added kiwi-image provides to spec template The main python3-kiwi package provides support for these image types.- Prevent any output if quiet is set If exec >/dev/null is run before setterm clears the screen, then "Failed to find cpu0 device node" is displayed even if quiet is set.- Fixed shell syntax in grub2 template Fixes (bnc#961334)- Refactor suseStripKernel The way the method downsizes the kernel tree is wrong in several places and very hard to read. Therefore the code has been refactored and splitted into task methods which can run independently from each other. As one result the kernel tree is not missing any metadata and/or update weak-updates paths anymore. Fixes (bnc#965830)- Remove flush before resize filesystem According to the manpage, -F is flushing the fileystem buffer caches. which is only really useful for doing resize2fs time trials. With current Tumbleweed installed on MMC, -F triggers a Inappropriate ioctl for device while trying to flush error, and then fails to resize.- Update arm boot image descriptions Grub2 adds 35MB to the initrd for no reason on armv6/v7, as those images use u-boot scripts for booting.- Fixed checkFileSystem call In the refactoring fc363cc, the parameters of checkFileSystem got changed to expect the device name, but one of the invocations didn't pass down the device name due to a typo.- Ignore fdasd errors Like fdisk, fdasd also reports an error when re-reading the partition table. But the table was written correctly so we continue for the moment and add a debug message- Fixed boot image result filename Has to follow the naming convention- Fixed pxe builder kernel/hypervisor target path- Use bytes type with hashlib- Refactor result bundler instead of being clever in the result bundler we should be more explicit when adding a result to the result instance. Therefore the result.add method now also allows to specify if this result should be part of a result bundle and whether it should be placed compressed or uncompressed in this bundle- Added metadata rpm files to all builders rpm packages and verification information is now added to all builder results. Fixes #13- Fixing code smells from Landscape.io https://landscape.io/github/SUSE/kiwi/161/messages/smell Fixed issues: * Unused imports * Unused variables * Specify string format arguments as logging function parameters (log.warning("%s bla" % x) -> log.warning("%s bla", x)- Ignore backup files- Added the following system setup methods export_rpm_package_list and export_rpm_package_verification Used to provide rpm package metadata and verification information for rpm based image builds- Improve doc * Consistently use KIWI * Fixed punctuation * Added zypper ar for adding KIWI's OBS repo- Fixed unit test read return result Unit test mocking read should return a bytes array and not a string because that's what python3 would do in reality- Fixed path location in disk_format_image result- Fixed disk format builder This one was missing the output image name adaptions- Regenerate xml_parse data structures for python3- Better error response in debug output If a Command.run fails with an error code != 0 but not data was produced on the stderr channel, we provide this as information to the caller- Port kiwicompat to python 3- Port helper tools to python3 Also fixes completion to correctly parse the toplevel --compat option- Do not activate dmraid paritions Only activate the device itself, not the partitions, that may also exist. If partitions exist, the UDEV rules will create the corresponding "_partX" symlinks for each partition within "/dev/mapper, which is totally sufficient.- Fixed cut and paste error in spec template correct the project Url- Update README add install information for python3-devel- Fixed README wrong reference to env2 where it should be env3- Update README- Update travis env to python 3.4- Port application from python 2.7 to 3.4 For new applications like this kiwi version and its use cases it is better to base it on a more recent python version- Fixed bundling container results Container images are already compressed, there is no need for the bundler to do that again- Use pinch_system with force in any case Deletion of packages should be done with the force flag set. Otherwise the package manager computes a resolved list for the deletion targets which causes other packages to be deleted which is unwanted- Fixed host to image root data setup On bind mounts check if the origin path exists on the host. On copy check if the origin file exists on the host- Fixed deactivate_systemd_service Check if the service file exists, if not there is no need to deactivate an non existing service.- Use alternatives mechanism for completion file This avoids the package conflict with the legacs kiwi version- Weaken kiwi-tools requirement- Handle 32bit Intel arch as ix86 in boot code- Allow building 32bit bios images- Delete %post from kiwi-pxeboot We do not provide a default config file for the pxe setup anymore. There is no good default file we can provide here because we don't know how the user has configured a pxe image. The documentation should explain how to setup the pxe config and infrastructure with the help of the static data provided by the kiwi-pxeboot package- Don't require python-Sphinx at build time Sphinx is not available on all platforms and required only to build the manual pages. Thus the make build target can build the man pages and pack the result into the source tarball- Don't strip ctc_configure from initrd ctc_configure is used on s390 images- Added man page for result bundle command- Added result bundler- Added kiwi-boot-requires buildservice meta package- Delete unused .releasetags helper Fixes #9- Update README- Update README- Added system update manual page- Create manual pages Create man pages for result list, system build, prepare and create- Added pv xen drivers to boot descriptions Beginning with SLE12 SP2 the default kernel is a pvops capable kernel. This means it can be used in a Xen HVM full virtual machine as well as in a PV - paravirtual machine. However it's required to keep the paravirtual net, block modules in the initrd. As their location also has move an update of the boot image descriptions was necessary- Fixed wait message in waitFor boot functions Better indicate for what we are waiting- Load xen modules by alias only- Fixed validation of custom root cmdline variable A variable of the format root=LABEL=x was not correctly validated- Change default ec2 root_cmdline_parameter For ec2 based firmware the value root=UUID=x is provided instead of a static device node- Refactor internal boot image task Make a factory out of the task and allow to have e.g a dracut boot image task at a later point in time. The BootImageBase class creates an interface for this implementation. So far only BootImageKiwi is implemented- Added export_modprobe_setup method to SystemSetup export_modprobe_setup copies the contents of etc/modprobe.d to a specified target root directory. The method is used to transfer the modprobe configuration from the system image to the boot image- Fixed archive_builder_test Mock platform value- Added compatibility information to main man page- Put arch and version to output image file name- Added quick start example to main kiwi manual page- Fill master manual page with content- Added git like command completion Provide a 'Did you mean' log message for unclear task names- Update README- Fixed non-executable-script rpmlint warning- Man pages are below level 2- Fixed rpm-buildroot-usage rpmlint warning- Fixed non-executable-script rpmlint warning- Delete unused .md5 script- Fixed rpm package build- Fixed dracut call Always create a generic initrd, don't pass -H- Fixed custom args setup for vmdk format custom args is a hash with option/value pairs. For vmdk the option could be e.g adapter_type=value and the value is None. This is by intention because qemu which receives those type of options allows only the syntax "-o option=value". The kiwi code setting up the options did not check correctly if there really is a value for e.g adapter_type- Allow alternative locations for grub installation Different distributions install grub2 to different places. Therefore kiwi should not use a fixed location but allow to lookup grub data at several places- Fixed unit test for fix_boot_catalog on big endian- Fixed unit test for fix_boot_catalog on big endian- Make sure to cleanup yum requests after processing- Fixed CommandIterator check for output before sending an iteration stop- Fixed stateful copy of repository section Profiles are not copied because they might not exist in the target description- Fixed host to root path patcher Don't be confused by multiple /'es- Added support for yum package manager- Fixed use of iso mounted repositories When using an iso as repo, kiwi mounts it to a temporary location. The location is different for each build and therefore the zypper repo file needs to be recreated for any new build in this situation- Check if config file exists Before updating a config file, check if it exists. If it is not present skip the configuration and print a warning message- Added yum repository support- Make man install target more stable- Update source manifest include only doc Makefile and source, the pages are build at build time- Include installation of man pages to spec file- Added man page templates for all commands- Added man page templates Added template for master page and result_list- Added initial sphinx documentation structure The documentation will cover kiwi manual pages. more detailed documentation will be written and maintained in colaboration with the documentation department- Fixed use of noglob shell option- Added support for kiwi --compat The --compat call will trigger the call of the kiwicompat tool written to support legacy kiwi commandlines. An example could look like the following call: sudo kiwi --compat -- --build /my/description --type vmx -d /my/dest Please be aware the -- is required to tell docopt to treat all options as parameters- Prevent duplicate error logging- Refactor CommandProcess class Use an iterator class to run through the process. implement poll variants explicit and clear structured- Fixed updateRootDeviceFstab Support by-label mount entries for btrfs subvolumes This fixes bnc#964474- Add kiwicompat to Makefile build and install target- Update README- Update README- Bump version: 8.10.0 → 8.10.1- Prepare for package building- Follow up fix for fstab setup Use the system installed fstab as default if present- Support building in buildservice worker The repo setup inside of a buildservice worker uses a static path below /usr/src/packages/SOURCES/repos/. We need to adapt the provided obs uri type to match this criteria- Don't add kernel filesystems to fstab Systems with systemd which this kiwi version aims for, doesn't need proc, sysfs, debugfs and friends to be part of the fstab This fixes bnc#964472- Fixed btrfs build with snapshots- Allow system to be installed on btrfs snapshot This fixes (bnc#946648)- Put kiwi_btrfs_root_is_snapshot to boot profile- Recompile schema and data structures New attribute btrfs_root_is_snapshot and methods- Evaluate kiwi_btrfs_root_is_snapshot in boot code If set it's required to mount the subvolumes like it is done with lvm volumes. In addition this patch fixes the update of the fstab file which has to contain an entry for each subvolume excluding snapshots and the toplevel This is related to (bnc#946648)- Added btrfs_root_is_snapshot attribute This is related to (bnc#946648)- Added fix_boot_catalog and relocate_boot_catalog- Prevent duplicate validation of cmdline- Fixed grub2 xen guest bootloader config- More modules not present for grub2/x86_64-xen- There is no multiboot module for grub2/x86_64-xen- Make sure get_partition_table_type returns a value- Use bash to call config scripts- Fixed regular expression pattern use re.escape to make sure the search string has special regular expression characters quoted correctly- Added support for using internal build service An option --obs-repo-internal was added- Add support for alternative config file *.kiwi- Allow to build directly from buildservice checkout- Fix misleading variable name- Move default boot timeout to Defaults class- Fixed boot exclude for zipl case- Fixed zipl bootloader setup and install quote special characters in title for menu. refactor the zipl bootloader install class to know about the boot partition device node- Added title quoting method for older loaders- Move VTOC creation into Disk class- Fixed missing setup_disk_boot_images for zipl The interface class implements this with a raise condition by default. For zipl no bootloader images needs to be created Thus implement the method and pass- Fixed typo in list assignment- Fixed LoopDevice class custom blocksize value must be passed as string to the command level not as integer- Platform fixes for XML tests- Platform endian fix for vhd tag test- Platform fixes for unit tests- Platform mock for grub2 bootloader tests- Platform mock for grub2 bootloader tests- Added BootLoaderInstallZipl class- Activate zipl bootloader config in factory class- Finished BootLoaderConfigZipl class and tests- Delete unused patch statement from test- Added BootLoaderConfigZipl class The implementation is still unfinished- Pass the disk device to the bootloader config As a custom option the BootLoaderConfig instance now receives the target disk device node. So far this is only used in the zipl case where it is needed which is the reason why it is kept as a custom argument- Allow custom options for bootloader config classes- Added zipl bootloader template- Added partitioner_dasd for s390- Refactor Firmware class more information from the XML description is needed in order to make e.g decisions about the partition table type to use according to the firmware setup in combination with e.g the target loader type on s390. Thus the class now receives an instance of the XML state and not only the firmware attribute value- Disable setup of hwclock hwclock seems not exist on all supported architectures. In addition the build process should not fiddle with the build host hardware clock- No need for a condition if there is no alternative- No need for a condition if there is no alternative- Use 800x600 default for grub2 gfxmode- Close progress line with CR when finished- Added ImageBuilder factory- Added system build command Allows to combine prepare and create into one big task- Better error message for pickle exceptions There is no meaningfull error message for pickle.load exceptions. Thus only provide the exception type and our own message- Use pickle instead of marshal- Fixes for the container builder in the setup if the files to update do not exist the process failed. This patch adds a check prior to changing the file- Make sure the create task creates the target dir- Fixed result object dump marshal.dump requires an open file object not a filename- Added ContainerBuilder currently supports building of docker containers- Added ContainerImage class Factory plus implementation for docker- Refactor variable name for root directory If it is clear the source directory is the root directory of the image the variable should be named root_dir not source_dir- Fixing landscape issues- Added ContainerSetup classes Base and Factory plus implementation for docker- Refactor user/groups setup Provide an easier to travers data type in xml_state for the user and groups. The get_users() method returns a list of tuples which assigns each user list the group name and id it belongs to- Use normpath to avoid double slash in output- Added kiwi result task Implementing 'kiwi result list' which marshal loads the serialized result instance from a previous build and shows the build results- Dump the result instance as a marshal dump- Add clic as supported live media build target- Added FileSystemClicFs class- Fixed contents of header_end block off by one bug- Finished LiveImageBuilder for overlay iso type- Added check if UDF extension is needed or not- Put supported live image iso types into defaults- Added live ISO grub2 efi template and setup- pep8 fixes- Rebuild schema and data structures- Allow xfs as hybrid RW file system- Continue with LiveImageBuilder class Added isolinux bootloader setup, finished live build procedure Live metadata injection still missing. grub2 efi boot for live image still missing- Don't use filesystem specific mount option When mounting the read write filesystem, prevent using filesystem specific options like barrier- Use HYBRID_EXT4_OPTS in fat container filesystem- Check read write filesystem prior to mounting If a filesystem type could be identified on the read write partition check it before mounting to eliminate a potential dirty state- Cascade exfat mount try normal mount first, if this does not work try fuse mount Normally this is done automatically by the mount program but if not we will give the direct fuse mount a chance- Fixed Makefile target to build data structures A change in kiwi/schema/kiwi.rnc triggers the build of the schema rng version as well as an auto update of the data structures via python's generateDS. The intermediate xsd schema format is only relevant for the data structure creation process- Make createFileSystem more robust When passing in a loop file instead of a device name, the method should be smart enough to handle the name without shell evaluation- Added support for exfat as hybrid filesystem In addition to fat also exfat is now supported as persistent write filesystem. Because of the limitations of a fat filesystem fat and exfat are only used as a container filesystem providing an ext4 linux filesystem as a cowfile. The algorithm to create the size of the cow file has also been changed to use half of the size of the write partition or on fat a max size of 4G. The size of the cowfile is also prepared to become overwritten. However the XML definition and implementation to do this is still missing- Reread partition table after hybrid setup The hybrid write partition is created via fdisk. Some version of fdisk does not send the ioctl to let the kernel reread the table or fdisk itself holds it busy. Thus we actively initiate a reread via blockdev- Optimize ext4 hybrid write filesystem options Optimized for 512kB erase block size- Use mount options to increase overlay performace For overlay filesystems not writing into a tmpfs performance is more important than safety. We use this combination of options for now, if you encounter stability problems please let us know- Use -f force option for extX filesystem checker- Refactor and cleanup setupReadWrite Fix misleading error message and refactor the code to be less complex and more clear in the processing of tasks- Allow custom cowfile name for persistent data Instead of a fixed name 'cowfile' we allow a custom name which is predefined in HYBRID_PERSISTENT_FILENAME and prepared to become overwritten by an XML defintion whose implementation will follow later. Reason for the change is that a cowfile is visible as plain data file to the operating system if e.g used on a live stick. It should be more clear to the user what this file is good for- Protect mkfs.exfat from being deleted Added to the strip tools section in order to keep it in the initrd- Added support for exfat creation and probing In preparation to use exfat instead of vfat in a loop container for persistent data it's required to provide support for mkfs.exfat- Make loop_setup and loop_delete more robust The methods did not cope well with filenames containing bash characters with special meaning e.g spaces. For use with a iso hybrid cowfile whose name is visible in the OS the methods should be able to work with any given filename- Started with LiveImageBuilder class Added interface and required steps. tests and implementation are missing and will follow- Added archive builder- Added repo handling to compat caller Also added process execution with translated arguments- Add compat translation for prepare/create/upgrade- Added kiwicompat to support legacy commandline- Added install pxe archive support- Added warning message if pxedeploy section is used At the moment there is no class to build the pxe client config file from information provided with the optional pxedeploy section. However this is not fatal to the build because the file could be created manually too. Thus a warning message is shown which will go away when the pxe client config file creation has been ported- cleanup test data to be consistent- Added recovery setup- Added DiskFormatGce class implementation- Fixed suffix name for compressed archives- Added creation of gnu and xz archives to tar class- Refactor result collection Put the creation of a result object into the builder classes and return them from there. The builder instances knows about the results not the task instances- Fixed option handling for vmdk format- Activate disk format building in disk builder If disk format and install media is configured together only the install media will be built and a warning message for skipping the disk format is shown- Added custom argument handling for disk formats- Added DiskFormat factory- Added DiskFormatVmdk class implementation- pep8 fixes- Added DiskFormatVhdFixed class implementation- Delete unused test data symlinks- Added DiskFormatVhd class implementation- Added DiskFormat base class Also added implementation for DiskFormatQcow2. More format classes will follow next- Fixed import of kernel parameters including spaces Kernel parameters like PRODUCT_TYPE=“PRODUCT BANANA” breaks the code in includeKernelParameters. This patch allows spaces for values in a way that it replaces the embedded whitespace with \030 before parsing and then reverting after parsing. Thanks to Jay Nitikman for providing the patch- Fixed LUKS setup for dracut The system image has to provide /etc/crypttab to allow dracut to create a working initrd for reboot. In addition the name of the luks map must be 'luks' to make dracut happy.- luks setup triggers boot partition by default- Add LuksDevice class and implementation Also implemented luks support in DiskBuilder- Handle /boot/vc files for Raspberry Pi openSUSE Tumbleweed raspberrypi-firmware[-branding-openSUSE] packages have been updated to install files to /boot/vc rather than /boot. Ensure that all files in /boot/vc are provided in image/loader for further reference- Refactor file system check in boot code- Make sure VolumeManager instance updates root map An instance of volume manager could cause the creation of a new device e.g in case of LVM. The master device map in the disk builder has to be updated with this device- Fixed unconditional lookup of boot partition id- Package check for packages marked for deletion If none of the packages to become deleted are installed we will raise an error, basically to force people to fixup the image description- Better error message for call with unknown command If kiwi is called with an unknown command an error message showing which commands actually exists should be shown- Fixed user group creation The command name is groupadd not addgroup- Fixed label and UUID support for XFS creation- Traverse dictionary in ordered mode- Return sorted lists for packages/archives- Traverse dictionary in ordered mode- Traverse dictionary in ordered mode- Traverse dictionary in ordered mode- Added __githash__ to version.py Any time the version.py is changed and committed the git ident will be reset by git. After a checkout of version.py the ident will be updated in version.py to the git commit id of version.py Whenever we relase a new kiwi version the process is as follows: 1. run bumpversion to set the version for the release 2. run tox to create the source tarball for the release We have to make sure tox calls a git checkout of version.py- Consolidate use of Makefiles for schema conversion As we are going to switch to tox the Makefile setup should be cleaned up. The make targets to build xsd and rng schemas has been moved to the master Makefile- Consolidate use of Makefiles for locale setup As we are going to switch to tox the Makefile setup should be cleaned up. The make targets to handle po files and their installation has now been moved to the master Makefile- Update translation po files with template- Consolidate use of Makefiles for compiling tools As we are going to switch to tox the Makefile setup should be cleaned up. I'm going to move the various places and its tasks into one master Makefile to make it easier to move the targets one after the other into a tox setup.- Refactor source code structure All files referenced by kiwi should live below the kiwi namespace and should be referenced by the resource_filename() method from the pkg_resources- Update exclude list for boot image runtime data There are some directories needed during boot image creation time, e.g grub2 modules to create grub images. But at boot time this data is no longer required and would just waste space in the initrd- Delete dracut from boot images dracut is needed in the system and also called from there by the kiwi boot image, but inside of the boot image it is not needed and just wastes space- Add some paths not needed in the boot image- Added boot messages translations- Exclude /image from boot images- Change default boot image description path Let the default boot image description path point to boot/arch- Make sure the boot image profile provides its name The variable kiwi_initrdname was added to the .profile environment for boot image builds- Update boot image functions Delete a lot of legacy code from the bash boot code- Added boot image descriptions Provide boot(initrd) image descriptions for supported architectures and distributions- Fixed unit tests, mock NamedTemporaryFile- Added coverage to developer requirements- Use "next generation" string To distinguish it between old and new KIWI- Review and add corrections * Consistent spelling: kiwi -> KIWI, python -> Python * Add punctuation * Use backticks for scripts and dirs- Update development status to be inline with setup.py- Deleted no longer needed bin/kiwi script- Update README Added developer information how to contribute- Minor changes in virtualenv setup file names Moved the requirements.txt setup files into a namespace called .virtualenv in order to stay compatible with the .travis requirement files- Update development status in setup.py- Fix #5: Improve setup.py * setup.py: - use setuptools always, no need to check for distutils - include keywords 'include_package_data', 'zip_safe', and 'classifiers' * setup.cfg: - add bdist_wheel and sdist section * Add missing MANIFEST.in (needed for setup.py dist) * Remove executable bit for LICENSE and README.md- Fix #3: Requirement for Virtual Envs * Add requirements.txt and dev-requirements.txt The dev-requirements.txt installs requirements.txt automatically * Ignore .env, .env2, and .env3 virtual env directories- Fix #4: support bumpversion with .bumpversion.cfg- Added RaidDevice class implementation in disk_builder- Fixed hybrid call offset number should be passed as string to Command__VERSION__ -> __version__- Rename __VERSION__ -> __version__- Added hybrid ISO setup- Refactor creation of a PackageManager factory- Refactor creation of a Repository factory- Refactor creation of a BootLoaderInstall factory- Refactor creation of a VolumeManager factory- Refactor creation of a BootLoaderConfig factory- Refactor creation of a Partitioner factory- Refactor creation of a FileSystem factory- Fixed travis setup- Refactor InstallImageBuilder no need to provide the name of the disk image, this information can be created from the xml state- Fixed missing md5 file on install media- Travis testing needs cdrtools for isoinfo- Added two pass ISO creation system The kiwi ISO's are prepared to be hybrid by adding an end header block so that isohybrid can place its gpt header at the correct offset address- Added user log messages for install media builder- Fixed grub bootloader template for install case Template was missing the cdinst option- Added create_header_end_block method in Iso class- Added isols method in Iso class- Fixed ui theme setup in isolinux.cfg- Added isolinux bootloader support- Prevent zypper failing on outdated system solvable- landscape: fix unused imports- Refactor boot data extraction from boot image Allow data extraction multiple times, don't move files away from their original location- landscape: fix unused imports- landscape: fix unused variables- Add debug message for repo cleanup- landscape: fix unused variables- landscape: fix unused imports- landscape: fix dangerous defaults- landscape: fix dangerous defaults- Added landscap config file skip checking auto generated code- Update README- Set naster branch for travis setup- Update README- Update README Travis and Landscape status- Update README- Update READMEpython2-kiwih04-armsrv2 1733115323  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~9.24.43-150100.3.90.19.24.43-150100.3.90.1     !!!! ""#######""""""$$%%%%%$$$$&&''''''&&&&&(())(&***++,,+--......-----+//0000000000//////////1122222222222221111133444433311111111556666666666666655555555778887755555599::::::::::999999999;;<<<<<<<<<<<<<<<<<;;;;;;;;;;;;;;;;==>>>>===?????????????????????????????????????????????@ABBkiwikiwi-ngkiwi-ng-3kiwicompatkiwicompat-3kiwikiwi-9.24.43-py3.6.egg-infoPKG-INFOSOURCES.txtdependency_links.txtentry_points.txtnot-zip-saferequires.txttop_level.txt__init__.py__pycache____init__.cpython-36.pycapi_helper.cpython-36.pycapp.cpython-36.pyccli.cpython-36.pyccommand.cpython-36.pyccommand_process.cpython-36.pycdefaults.cpython-36.pycexceptions.cpython-36.pycfirmware.cpython-36.pychelp.cpython-36.pyckiwi.cpython-36.pyckiwi_compat.cpython-36.pyclogger.cpython-36.pyclogger_color_formatter.cpython-36.pyclogger_filter.cpython-36.pycmount_manager.cpython-36.pycpath.cpython-36.pycprivileges.cpython-36.pycruntime_checker.cpython-36.pycruntime_config.cpython-36.pycversion.cpython-36.pycxml_description.cpython-36.pycxml_parse.cpython-36.pycxml_state.cpython-36.pycapi_helper.pyapp.pyarchive__init__.py__pycache____init__.cpython-36.pyccpio.cpython-36.pyctar.cpython-36.pyccpio.pytar.pyboot__init__.py__pycache____init__.cpython-36.pycimage__init__.py__pycache____init__.cpython-36.pycbase.cpython-36.pycbuiltin_kiwi.cpython-36.pycdracut.cpython-36.pycbase.pybuiltin_kiwi.pydracut.pybootloader__init__.py__pycache____init__.cpython-36.pycconfig__init__.py__pycache____init__.cpython-36.pycbase.cpython-36.pycgrub2.cpython-36.pycisolinux.cpython-36.pycbase.pygrub2.pyisolinux.pyinstall__init__.py__pycache____init__.cpython-36.pycbase.cpython-36.pycgrub2.cpython-36.pycbase.pygrub2.pytemplate__init__.py__pycache____init__.cpython-36.pycgrub2.cpython-36.pycisolinux.cpython-36.pycgrub2.pyisolinux.pybuilder__init__.py__pycache____init__.cpython-36.pycarchive.cpython-36.pyccontainer.cpython-36.pycdisk.cpython-36.pycfilesystem.cpython-36.pycinstall.cpython-36.pyckis.cpython-36.pyclive.cpython-36.pycarchive.pycontainer.pydisk.pyfilesystem.pyinstall.pykis.pylive.pycli.pycommand.pycommand_process.pyconfigfunctions.shstrip.xmlcontainer__init__.py__pycache____init__.cpython-36.pycappx.cpython-36.pycoci.cpython-36.pycappx.pyoci.pysetup__init__.py__pycache____init__.cpython-36.pycappx.cpython-36.pycbase.cpython-36.pycdocker.cpython-36.pycoci.cpython-36.pycappx.pybase.pydocker.pyoci.pydefaults.pyexceptions.pyfilesystem__init__.py__pycache____init__.cpython-36.pycbase.cpython-36.pycbtrfs.cpython-36.pycclicfs.cpython-36.pycext2.cpython-36.pycext3.cpython-36.pycext4.cpython-36.pycfat16.cpython-36.pycfat32.cpython-36.pycisofs.cpython-36.pycsetup.cpython-36.pycsquashfs.cpython-36.pycswap.cpython-36.pycxfs.cpython-36.pycbase.pybtrfs.pyclicfs.pyext2.pyext3.pyext4.pyfat16.pyfat32.pyisofs.pysetup.pysquashfs.pyswap.pyxfs.pyfirmware.pyhelp.pyiso_tools__init__.py__pycache____init__.cpython-36.pycbase.cpython-36.pyciso.cpython-36.pycxorriso.cpython-36.pycbase.pyiso.pyxorriso.pykiwi.pykiwi_compat.pylogger.pylogger_color_formatter.pylogger_filter.pymarkup__init__.py__pycache____init__.cpython-36.pycany.cpython-36.pycbase.cpython-36.pycxml.cpython-36.pycany.pybase.pyxml.pymount_manager.pyoci_tools__init__.py__pycache____init__.cpython-36.pycbase.cpython-36.pycbuildah.cpython-36.pycumoci.cpython-36.pycbase.pybuildah.pyumoci.pypackage_manager__init__.py__pycache____init__.cpython-36.pycapt.cpython-36.pycbase.cpython-36.pycdnf.cpython-36.pycmicrodnf.cpython-36.pycpacman.cpython-36.pyczypper.cpython-36.pycapt.pybase.pydnf.pymicrodnf.pypacman.pyzypper.pypartitioner__init__.py__pycache____init__.cpython-36.pycbase.cpython-36.pycdasd.cpython-36.pycgpt.cpython-36.pycmsdos.cpython-36.pycbase.pydasd.pygpt.pymsdos.pypath.pyprivileges.pyrepository__init__.py__pycache____init__.cpython-36.pycapt.cpython-36.pycbase.cpython-36.pycdnf.cpython-36.pycpacman.cpython-36.pyczypper.cpython-36.pycapt.pybase.pydnf.pypacman.pytemplate__init__.py__pycache____init__.cpython-36.pycapt.cpython-36.pycapt.pyzypper.pyruntime_checker.pyruntime_config.pyschemakiwi.rnckiwi.rngxsi.xsdsolver__init__.py__pycache____init__.cpython-36.pycsat.cpython-36.pycrepository__init__.py__pycache____init__.cpython-36.pycbase.cpython-36.pycdeb.cpython-36.pycrpm_dir.cpython-36.pycrpm_md.cpython-36.pycsuse.cpython-36.pycbase.pydeb.pyrpm_dir.pyrpm_md.pysuse.pysat.pystorage__init__.py__pycache____init__.cpython-36.pycclone_device.cpython-36.pycdevice_provider.cpython-36.pycdisk.cpython-36.pycintegrity_device.cpython-36.pycloop_device.cpython-36.pycluks_device.cpython-36.pycmapped_device.cpython-36.pycraid_device.cpython-36.pycsetup.cpython-36.pycclone_device.pydevice_provider.pydisk.pyintegrity_device.pyloop_device.pyluks_device.pymapped_device.pyraid_device.pysetup.pysubformat__init__.py__pycache____init__.cpython-36.pycbase.cpython-36.pycgce.cpython-36.pycova.cpython-36.pycqcow2.cpython-36.pycvagrant_base.cpython-36.pycvagrant_libvirt.cpython-36.pycvagrant_virtualbox.cpython-36.pycvdi.cpython-36.pycvhd.cpython-36.pycvhdfixed.cpython-36.pycvhdx.cpython-36.pycvmdk.cpython-36.pycbase.pygce.pyova.pyqcow2.pytemplate__init__.py__pycache____init__.cpython-36.pycvagrant_config.cpython-36.pycvirtualbox_ovf.cpython-36.pycvmware_settings.cpython-36.pycvagrant_config.pyvirtualbox_ovf.pyvmware_settings.pyvagrant_base.pyvagrant_libvirt.pyvagrant_virtualbox.pyvdi.pyvhd.pyvhdfixed.pyvhdx.pyvmdk.pysystem__init__.py__pycache____init__.cpython-36.pycidentifier.cpython-36.pyckernel.cpython-36.pycmount.cpython-36.pycprepare.cpython-36.pycprofile.cpython-36.pycresult.cpython-36.pycroot_bind.cpython-36.pycroot_init.cpython-36.pycsetup.cpython-36.pycshell.cpython-36.pycsize.cpython-36.pycuri.cpython-36.pycusers.cpython-36.pycidentifier.pykernel.pymount.pyprepare.pyprofile.pyresult.pyroot_bind.pyroot_import__init__.py__pycache____init__.cpython-36.pycbase.cpython-36.pycoci.cpython-36.pycbase.pyoci.pyroot_init.pysetup.pyshell.pysize.pyuri.pyusers.pytasks__init__.py__pycache____init__.cpython-36.pycbase.cpython-36.pycimage_info.cpython-36.pycimage_resize.cpython-36.pycresult_bundle.cpython-36.pycresult_list.cpython-36.pycsystem_build.cpython-36.pycsystem_create.cpython-36.pycsystem_prepare.cpython-36.pycsystem_update.cpython-36.pycbase.pyimage_info.pyimage_resize.pyresult_bundle.pyresult_list.pysystem_build.pysystem_create.pysystem_prepare.pysystem_update.pyutils__init__.py__pycache____init__.cpython-36.pycblock.cpython-36.pycchecksum.cpython-36.pyccodec.cpython-36.pyccommand_capabilities.cpython-36.pyccompress.cpython-36.pycfstab.cpython-36.pycoutput.cpython-36.pycprimes.cpython-36.pycrpm.cpython-36.pycrpm_database.cpython-36.pycsignature.cpython-36.pycsize.cpython-36.pycsync.cpython-36.pycsysconfig.cpython-36.pyctemporary.cpython-36.pycveritysetup.cpython-36.pycblock.pychecksum.pycodec.pycommand_capabilities.pycompress.pyfstab.pyoutput.pyprimes.pyrpm.pyrpm_database.pysignature.pysize.pysync.pysysconfig.pytemporary.pyveritysetup.pyversion.pyvolume_manager__init__.py__pycache____init__.cpython-36.pycbase.cpython-36.pycbtrfs.cpython-36.pyclvm.cpython-36.pycbase.pybtrfs.pylvm.pyxml_description.pyxml_parse.pyxml_state.pyxslconvert14to20.xslconvert20to24.xslconvert24to35.xslconvert35to37.xslconvert37to38.xslconvert38to39.xslconvert39to41.xslconvert41to42.xslconvert42to43.xslconvert43to44.xslconvert44to45.xslconvert45to46.xslconvert46to47.xslconvert47to48.xslconvert48to49.xslconvert49to50.xslconvert50to51.xslconvert51to52.xslconvert52to53.xslconvert53to54.xslconvert54to55.xslconvert55to56.xslconvert56to57.xslconvert57to58.xslconvert58to59.xslconvert59to60.xslconvert60to61.xslconvert61to62.xslconvert62to63.xslconvert63to64.xslconvert64to65.xslconvert65to66.xslconvert66to67.xslconvert67to68.xslconvert68to69.xslconvert69to70.xslconvert70to71.xslconvert71to72.xslconvert72to73.xslconvert73to74.xslconvert74to75.xslinclude.xslmaster.xslpretty.xslprint.xslkiwi-ngpython-kiwiLICENSEREADME/usr/bin//usr/lib/python3.6/site-packages//usr/lib/python3.6/site-packages/kiwi-9.24.43-py3.6.egg-info//usr/lib/python3.6/site-packages/kiwi//usr/lib/python3.6/site-packages/kiwi/__pycache__//usr/lib/python3.6/site-packages/kiwi/archive//usr/lib/python3.6/site-packages/kiwi/archive/__pycache__//usr/lib/python3.6/site-packages/kiwi/boot//usr/lib/python3.6/site-packages/kiwi/boot/__pycache__//usr/lib/python3.6/site-packages/kiwi/boot/image//usr/lib/python3.6/site-packages/kiwi/boot/image/__pycache__//usr/lib/python3.6/site-packages/kiwi/bootloader//usr/lib/python3.6/site-packages/kiwi/bootloader/__pycache__//usr/lib/python3.6/site-packages/kiwi/bootloader/config//usr/lib/python3.6/site-packages/kiwi/bootloader/config/__pycache__//usr/lib/python3.6/site-packages/kiwi/bootloader/install//usr/lib/python3.6/site-packages/kiwi/bootloader/install/__pycache__//usr/lib/python3.6/site-packages/kiwi/bootloader/template//usr/lib/python3.6/site-packages/kiwi/bootloader/template/__pycache__//usr/lib/python3.6/site-packages/kiwi/builder//usr/lib/python3.6/site-packages/kiwi/builder/__pycache__//usr/lib/python3.6/site-packages/kiwi/config//usr/lib/python3.6/site-packages/kiwi/container//usr/lib/python3.6/site-packages/kiwi/container/__pycache__//usr/lib/python3.6/site-packages/kiwi/container/setup//usr/lib/python3.6/site-packages/kiwi/container/setup/__pycache__//usr/lib/python3.6/site-packages/kiwi/filesystem//usr/lib/python3.6/site-packages/kiwi/filesystem/__pycache__//usr/lib/python3.6/site-packages/kiwi/iso_tools//usr/lib/python3.6/site-packages/kiwi/iso_tools/__pycache__//usr/lib/python3.6/site-packages/kiwi/markup//usr/lib/python3.6/site-packages/kiwi/markup/__pycache__//usr/lib/python3.6/site-packages/kiwi/oci_tools//usr/lib/python3.6/site-packages/kiwi/oci_tools/__pycache__//usr/lib/python3.6/site-packages/kiwi/package_manager//usr/lib/python3.6/site-packages/kiwi/package_manager/__pycache__//usr/lib/python3.6/site-packages/kiwi/partitioner//usr/lib/python3.6/site-packages/kiwi/partitioner/__pycache__//usr/lib/python3.6/site-packages/kiwi/repository//usr/lib/python3.6/site-packages/kiwi/repository/__pycache__//usr/lib/python3.6/site-packages/kiwi/repository/template//usr/lib/python3.6/site-packages/kiwi/repository/template/__pycache__//usr/lib/python3.6/site-packages/kiwi/schema//usr/lib/python3.6/site-packages/kiwi/solver//usr/lib/python3.6/site-packages/kiwi/solver/__pycache__//usr/lib/python3.6/site-packages/kiwi/solver/repository//usr/lib/python3.6/site-packages/kiwi/solver/repository/__pycache__//usr/lib/python3.6/site-packages/kiwi/storage//usr/lib/python3.6/site-packages/kiwi/storage/__pycache__//usr/lib/python3.6/site-packages/kiwi/storage/subformat//usr/lib/python3.6/site-packages/kiwi/storage/subformat/__pycache__//usr/lib/python3.6/site-packages/kiwi/storage/subformat/template//usr/lib/python3.6/site-packages/kiwi/storage/subformat/template/__pycache__//usr/lib/python3.6/site-packages/kiwi/system//usr/lib/python3.6/site-packages/kiwi/system/__pycache__//usr/lib/python3.6/site-packages/kiwi/system/root_import//usr/lib/python3.6/site-packages/kiwi/system/root_import/__pycache__//usr/lib/python3.6/site-packages/kiwi/tasks//usr/lib/python3.6/site-packages/kiwi/tasks/__pycache__//usr/lib/python3.6/site-packages/kiwi/utils//usr/lib/python3.6/site-packages/kiwi/utils/__pycache__//usr/lib/python3.6/site-packages/kiwi/volume_manager//usr/lib/python3.6/site-packages/kiwi/volume_manager/__pycache__//usr/lib/python3.6/site-packages/kiwi/xsl//usr/share/bash-completion/completions//usr/share/doc/packages//usr/share/doc/packages/python-kiwi/-fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -gobs://build.suse.de/SUSE:Maintenance:36624/SUSE_SLE-15-SP1_Update/86540d44e92e8595fadc748331636468-python-kiwi.SUSE_SLE-15-SP1_Updatedrpmxz5aarch64-suse-linux           Python script, ASCII text executabledirectoryASCII textpython 3.6 byte-compiledemptyBourne-Again shell script, ASCII text executable, with very long linesXML 1.0 document, UTF-8 Unicode textXML 1.0 document, ASCII text, with very long linesXML 1.0 document, ASCII textPython script, UTF-8 Unicode text executablePython script, ASCII text executable, with very long linesRuby script, ASCII textASCII text, with very long lines  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR"aibZڿokiwi-man-pageskiwi-systemdeps9.24.43-150100.3.90.1utf-823886231a46af291da67e2b0e66ab330eb9c96f2504cb20acd96fffc9282d5b5?7zXZ !t/9 ]"k%a Ì(xﭹ1T}'23_J8 8ȓҷ[^ I ba"%Pfw6ƳTd]CNse'a޻&eҤEXtb扮/8bh.^z%Lhrˡrɓ" |)Lrb-J(E)YlPg42GbZyiBgoolR] )lI?#-炆t7E6C+nἕM{6^m)cu[R;s[Tc?az {œT٣Xdc{X(Og4ѪEY/U) R#fg"S]WdxW޲bܥ*Dw+FWX/'(,V_4zr^L]`DZIJ_H9 Vd7 xi.@*|UUx-v[B>#^ ʚƯMC "_:E%M$v؈FPz vCB> =60޶zaOkS(aG̴Nb'E/l.sU[_(10E(ճ 3—8nxiYcX%URP|K&baXu}bO&oF1LZ5 kJP $ĈS\(<a,;fX'm\! @PgSQs69.pYMu x۳0OF_NRkN ,>2w}NXSH Pos?+ʴ>>&oCb`_:,Lm=cayF]@|1B/$3*4-R)L,Z> ډ`ڐPh:QIUZM(D/ YiB0;vZx}& (ϰaPU-:__ R o6;ֿ D-FwzɞzEHQx X+z&(Eɀk?߿7H.8+dkE'W'CB7rHi̶`kyݡ:n OR*IiTáÏ>dE(G> +":6?$0G>PU2H>k*df'@9̇HTȻկE7L1ϏC)In9fKL݉A&n{y^킎x%o*lzʳU&J{O̓s 6JToJ,Ey}277KN{T c}̊_>*RiCͥug\s8F_h{)ȔeWҡ[> >~>^:*1$tV@p44a^dG\Zߐ~Aumm6^aV90<.OGc-O[:K,o2U䭶ۨA5~ڂ1f5$RP7ttVv U`")VRbZ<:5m!G}Ol3v~VVA~mN[+z<Ⳕ-97bwf<_N/ .ry '0Km &BM!$e덿o7ԧyRJqH5 ˈב${!EVV=WVlNW9 +lNJ Z*8l3M+-XhCP4)} "gʔP)$g[)eގ |]tD%hټ^>vCY al~nSy%Ðd:8:{]qf-D-qK7lQ&Tf1EEk+|&4Zzr=-i\Feh+o$ZRre(hDg ""hOFOj ;?l%.GbNIn^ŀ=P Zך {/Ч%&B~'ɋ"QXDlf]jO/P*2]_C nKvk40ZO_J% K v:fF nj&L1yExBڄ<]B6?Bwt̝ N>.([A$ؿfW+÷zLzweR(>n>Y=E!B7& h7w s>< ;[n ^6 "B;?yTtUL)q%?/FO3gJh^` ט&Z3M1p?gY#n5cFnG/ zjwb!h BEt+yw؃l?ToKj,10]ӀGa RPfT6m&qa:vٮb]jn!Հvef׆hۋ\YKCpnFi\K9c@v(ux~%N|jYၜ s@UCy領,@ufMSUusaL: ; H_3\;Y//=aJٯ@ kgYTƫYZ=gx=xaE\7շ gsK>[ֹF^ zK"n@1f1aO1;)= Cg$&n*3얺/ͨ'RX8>pTiU7P7O9Iѭ5)\mׄ'p9” TPo2^vc a-|Phx \$pbDwb[씇#Gx(^Fqc,լ!IN*>s#i?*KYPZ?gvK*\t$sI- M9*O&yJ -]w"`B (`pdGοI&CXUm,9)ȋ̽u]H~~|5ק1霾ګ"zuL%YE=$U[0Dˍ* 3rqj,*%)đp!f<>y|Q8oŇ> 0WDIonnLz}jEK>PT~<}F2[<„잖Ʋ@J(z :dک^?|X(Wu%0п8_Qfz[>jGN1)H=^d_b-/wE y\ÃYdNS[>/ 1vK# ss8] ?e'K) 1~NYG!ubVl y6P}p,]\@s!B)na\G.HA!FfXxȘ6D]=90d#mAFȁ@>m%DN*D%F;]RwL! p3Rie/NϢ-UP_>rjS^PEWMK \gg=ctT(>E*! ZT1r ֙j>F7UO؊Yή"zP]ܩnɛ\n Ra0D 0c,%x*[d';dĶ_{F!Q`(G~G -k./&C>[{TJJ+KwC&rd S!E[~wFi쩽$rSi؂\0%ݿ0'n lwovg*iUXZQ#X[tCSsp\_aC+U~/b`^өW ڊLږJp?q9MLkԊsW4*$sz?ڭp>/1f4]L_m.F JR 8-?z *?~u*juHɆH_bSB_|I"jbzK:si6O^&u Zҗ`VY"ܝoB{#e Dg]_ uﲪVrOoasFlbUVO_eaE@vYFXN%Qh!sGr޲O@ZV_Lox:M^e ~a<:_J@K0B ێ#uNh،ʑ4G EFW l5S uxNB)? I`bT8zHWqaU && 0 E Dx6!ZJNLs-凬ň_jjEF3N0X,2+v4 4@ťajmc(M )wεv5Um%_m0 G<{nz9Mv%vSe&s"L)o lk}WGp ~rzŴf1 i0Wkuux8 n >hA-[ yӫaQ"av!OLg.< `Cqz0-`E\CXShv=UQsnpsZ֛4f1ui{-~BPolU=+\G~}~ 77*^a^3 ђ/_N޼+X(YQ (ڱ*)dtnCtBU+Sn6!!0?һb8 MҼG+giMt 4gWjXA-./d ')_> bFO`I *)"Moݾ%x{6frLaEaV`z.H4/W@n2)gUϗ+K=/>EðL?m=891c1Ѩ}ze/aL1^c$L $(|VM-F[xl)9ۉ' D#0 C$fAP)'{uyy_F[-2@L0ax}A | H)TP u6!:HRQI=n#gRHW|s[% ^fwD}t0<^zͪSilD>4r_F\Lk&d2"tCǧ"EljLqF:hVU-g3Xփ{ƒ 4V۩aSgA M~*7aUy1|R!2q?'Vd !L}iUl!̢&H_T#րU&2 DBaŒLi!P2M' qL1xr.NZ6⇵nV\%/!UEWm luE$bL)1&l$)A]`plTM e. %R+G9xƥX `_JJM`U/ q"}23nh g>/~ lvW!1 ,E>'|ԎJqի4gw2MqPnzUѹYL4CGAlp+Q>VljJLoBf\M {1Ɣ_~]_`l;qvx ).g3VҺj=Np}8Q<ӝM1C"3.(Up "v!Q0_p\PjXy-au?UOx9c-,DAHς7.P6[zf>5,V%=;Uղ#ۧ?w|;tcaZ3 ?+kXΖj[F.am]\W4kV gVM֬ۂN-px [ &@$rm^9:ݷJSVa4=E=-x $.vz!>6d@@.Ǝ5A,  Zv_N,li;4~Mc7^j fd/R!Md4ʗcHbBC~h/x|G~m&*WQq 8&6M7{Quej{uSۚ|$pl!q^o*Ap'd%$úl + $%H"~Y*3{ʁch"}s;(a+2B)GB֤iɏ~^Q!'"BC+UsWeMPѠ~wO* q!x#TL^oeJFTvDwuAx#H#Y"3`%^b|֥y6 iZn3)IYNxcC Clw*Rvr0p _!h)=Ga· IX_"  un (T}5~HWͤĢ MVٸКE:w$|ڝ!Gx5դL6\m?2؀ ɐ^.;6‰@<52[Yި;Db%[{o3oj=򶘥;OjT^f ?w-gf#D,@{yG猭m8e%Vc Z|F+˿f'l5!+.;3ŔY,{F?:F4M/SS%kI*R &l5`yό-y)(qO=]S8 8\cC+uO/s-eSM X_4W1${='-l,%kz] wL-G^&%z&Cl&nځi0:`& Hofz@ΧhڕPX9V_zYT3!ahpRj1{gRCP׾uD+#q;%,x;wtB$ I2w˳ьT{ x:X-u4(FOqdx-~=|!k>(<G4gv-0E6)NZ sb6ަsWTQED`A AsIƤ] YZ