Compare commits
900 Commits
feature/pr
...
main/gingo
Author | SHA1 | Date |
---|---|---|
Nuno Gonçalves (Ulukyn) | 7df9b2f255 | 3 years ago |
Nuno Gonçalves (Ulukyn) | 8697553956 | 3 years ago |
nimetu | d2508c8b15 | 3 years ago |
Nuno Gonçalves (Ulukyn) | d385dedabc | 3 years ago |
Nuno Gonçalves (Ulukyn) | ae33eb99bf | 3 years ago |
Nuno Gonçalves (Ulukyn) | 2b88fd66ba | 3 years ago |
Ben Saine | be5bfd992c | 3 years ago |
Nuno Gonçalves (Ulukyn) | 9a24e7557f | 3 years ago |
Nuno Gonçalves (Ulukyn) | 8708fd74c6 | 3 years ago |
Nuno | db86219eab | 3 years ago |
Nuno Gonçalves (Ulukyn) | c6ec8a8d7d | 3 years ago |
Ben Saine | 357934fcde | 3 years ago |
Nuno Gonçalves (Ulukyn) | e784c3aab1 | 3 years ago |
Nuno Gonçalves (Ulukyn) | 22b4c074e8 | 3 years ago |
Nuno Gonçalves (Ulukyn) | 255257a7f5 | 3 years ago |
Nuno Gonçalves (Ulukyn) | 855410f3d0 | 3 years ago |
Nuno Gonçalves (Ulukyn) | 71a2c6f6e8 | 3 years ago |
Ben Saine | 3b2553e3dd | 3 years ago |
Nuno Gonçalves (Ulukyn) | 54c7e09a10 | 3 years ago |
Meelis Mägi | aebab35cad | 3 years ago |
Nuno Gonçalves (Ulukyn) | 7cb6d4287e | 3 years ago |
Meelis Mägi | 663de25cbe | 3 years ago |
Nuno | a7811f553e | 3 years ago |
Nuno | 743bf7f601 | 3 years ago |
Nuno Gonçalves (Ulukyn) | e891dddd1e | 3 years ago |
Meelis Mägi | e185ddc19f | 3 years ago |
Nuno Gonçalves (Ulukyn) | b12c7ac25c | 3 years ago |
Meelis Mägi | 9cff221a1e | 3 years ago |
Nuno Gonçalves (Ulukyn) | 219bf0e066 | 3 years ago |
Meelis Mägi | c012e7ffcf | 3 years ago |
Ben Saine | 82b724fe88 | 3 years ago |
Nuno Gonçalves (Ulukyn) | 9f2d2e7dda | 3 years ago |
Ben Saine | 5df8ec43a0 | 3 years ago |
Nimetu | 7c82f26bac | 3 years ago |
Nimetu | 3521d2d02e | 3 years ago |
Nuno | 88280ef02f | 3 years ago |
Nimetu | 7344c98e6e | 3 years ago |
Nimetu | 005e714f7d | 3 years ago |
Nimetu | 37abc25dcb | 3 years ago |
kaetemi | ec41ba753f | 3 years ago |
kaetemi | 63b4ea547a | 3 years ago |
Nimetu | c31747a939 | 3 years ago |
Nimetu | 8aa1aed3bd | 3 years ago |
Nimetu | 19c5b582bc | 3 years ago |
Nuno | 993d749dba | 3 years ago |
Nimetu | f6ac9bc4c1 | 3 years ago |
Nuno Gonçalves (Ulukyn) | 9e3064871a | 3 years ago |
Nimetu | 36e83e32f4 | 3 years ago |
Nuno | 0df3879358 | 3 years ago |
Nuno | b7e5ac18e9 | 3 years ago |
Nuno Gonçalves (Ulukyn) | 80623a20cc | 3 years ago |
Nuno Gonçalves (Ulukyn) | efbceec12e | 3 years ago |
Nimetu | 013aad73d2 | 3 years ago |
Nuno | de638dfe6c | 3 years ago |
Nuno | 177e2395a5 | 3 years ago |
Nuno | 0e2ec103ab | 3 years ago |
Nuno | 574efe0c36 | 3 years ago |
Nuno | e43515e88a | 3 years ago |
Nuno | 41794a1122 | 3 years ago |
Nimetu | c47db9bf94 | 3 years ago |
Nimetu | b325126b20 | 3 years ago |
Nuno | 35a7a6628b | 3 years ago |
Nimetu | aa34e88101 | 3 years ago |
Nuno | b667ccb6b6 | 3 years ago |
Nuno Gonçalves (Ulukyn) | 568d8ab895 | 3 years ago |
Nuno Gonçalves (Ulukyn) | 7f01b21d11 | 3 years ago |
Nuno Gonçalves (Ulukyn) | d436d5616a | 3 years ago |
Nuno Gonçalves (Ulukyn) | 973e183f2e | 3 years ago |
Nuno | 5c56c87d09 | 3 years ago |
Nuno | c616010246 | 3 years ago |
Nuno | 700a9aadb7 | 3 years ago |
Nuno Gonçalves (Ulukyn) | a246f3e5d0 | 3 years ago |
Meelis Mägi | bbc291b9d3 | 3 years ago |
Nuno Gonçalves (Ulukyn) | a64981a92a | 3 years ago |
Nuno Gonçalves (Ulukyn) | 17c9dd061a | 3 years ago |
Ben Saine | b72a71e87c | 3 years ago |
bensaine | b4ce38099f | 3 years ago |
Nimetu | 9eaf7d3550 | 3 years ago |
Nimetu | 26827d2c66 | 3 years ago |
Nuno Gonçalves (Ulukyn) | b6781af51e | 3 years ago |
Nuno Gonçalves (Ulukyn) | e1b611f219 | 3 years ago |
Nuno Gonçalves (Ulukyn) | 8d7932a271 | 3 years ago |
Nuno Gonçalves (Ulukyn) | 0cc7a35dad | 3 years ago |
Nuno | 2304445c39 | 3 years ago |
Ulu Kyn | 701d7309e5 | 3 years ago |
Ulu Kyn | f3d0c9dc5b | 3 years ago |
Ulu Kyn | a71f022c1a | 3 years ago |
Nuno | cc3d42737e | 3 years ago |
Nuno | 1e590f1a69 | 3 years ago |
Nuno | f450b57be0 | 3 years ago |
Nuno | fbb343ad51 | 3 years ago |
bensaine | e1527b724b | 3 years ago |
bensaine | c3a633ae50 | 3 years ago |
Nuno | a76e8e1a64 | 3 years ago |
Nuno | 2df441225c | 3 years ago |
Nuno | 56cbc51005 | 3 years ago |
Nuno | 7ce53abffe | 3 years ago |
Nuno | 4c4028822e | 3 years ago |
Nuno | b4323b6515 | 3 years ago |
Nuno | 9923062417 | 3 years ago |
Nuno | 8f74ba7851 | 3 years ago |
Nuno | d6f367b2ba | 3 years ago |
Nuno | 3f5c3c5d98 | 3 years ago |
Nuno | 514f4613a8 | 3 years ago |
Ben Saine | 24b0c99034 | 3 years ago |
Nuno | 3dc2aa1bb6 | 3 years ago |
Nuno | 543be4bc4c | 3 years ago |
Nuno | 80007bc602 | 3 years ago |
Nuno | cf9855a6d5 | 3 years ago |
Nuno | bec18c661d | 3 years ago |
Nimetu | 13eef096b4 | 3 years ago |
Nimetu | d8deff3f23 | 3 years ago |
Nimetu | 2efc16ce52 | 3 years ago |
Nimetu | 5064f0417b | 3 years ago |
Nimetu | d893d15daf | 3 years ago |
kaetemi | 82ef7e5e81 | 3 years ago |
kaetemi | 8f839dc9c7 | 3 years ago |
kaetemi | 5fcaafbc60 | 3 years ago |
kaetemi | 6d60cfee71 | 3 years ago |
kaetemi | 3076b62063 | 3 years ago |
kaetemi | 3d208e024d | 3 years ago |
kaetemi | af16f09d52 | 3 years ago |
kaetemi | b9d4aa2abd | 3 years ago |
Nimetu | 759ece01d0 | 3 years ago |
Nuno | 4a06fe15dd | 3 years ago |
Nuno | 575d5d9957 | 3 years ago |
Nuno | 0d68ca05e2 | 3 years ago |
Nuno | 6091e76516 | 3 years ago |
Nuno | 0fbbf10361 | 3 years ago |
Nuno | 557f5d3d6c | 3 years ago |
Nuno | d7d1bc60c2 | 3 years ago |
Nuno | 3709ea4520 | 3 years ago |
Nuno | 70286d36a9 | 3 years ago |
Ulu Kyn | 92ff9f12b0 | 3 years ago |
Nimetu | 8cbb306db8 | 3 years ago |
Nuno | 36c2ff5b86 | 3 years ago |
Nuno | 1a49c4cd0b | 3 years ago |
Ben Saine | 111d4a7a0a | 3 years ago |
bensaine | 6cfc9585f5 | 3 years ago |
Nimetu | f76ad7a3eb | 3 years ago |
Nimetu | ce0d1234cc | 3 years ago |
Nuno Gonçalves (Ulukyn) | 5d91c33ddd | 3 years ago |
Nimetu | 78478e32cd | 3 years ago |
Nimetu | ea6e4d91c3 | 3 years ago |
Nimetu | d388ff78ec | 3 years ago |
Nimetu | 0b503e352b | 3 years ago |
Nimetu | df4833bf0f | 3 years ago |
Nuno Gonçalves (Ulukyn) | 8ef89b80b0 | 3 years ago |
Nuno Gonçalves (Ulukyn) | bdea7d24d2 | 3 years ago |
Nuno Gonçalves (Ulukyn) | 90161cd121 | 3 years ago |
Nuno Gonçalves (Ulukyn) | 583a16d126 | 3 years ago |
Nimetu | 591ea6869e | 3 years ago |
Nuno Gonçalves (Ulukyn) | 01a2508567 | 3 years ago |
Nuno Gonçalves (Ulukyn) | b86b9283b2 | 3 years ago |
Nimetu | 0225beefa6 | 3 years ago |
Nimetu | 0de1580520 | 3 years ago |
Nimetu | d9dd9863b7 | 3 years ago |
Ulukyn | 7bed39665e | 3 years ago |
Nimetu | 9ecda65791 | 3 years ago |
Nimetu | fc6ecc7dbd | 3 years ago |
Nimetu | 5c53148907 | 3 years ago |
Nimetu | 028f6cdd3e | 3 years ago |
Nuno | 6a1ea5ff59 | 3 years ago |
Nuno Gonçalves (Ulukyn) | 72ccfc9a02 | 3 years ago |
Ulukyn | 0e2a14c822 | 3 years ago |
Nimetu | a4248d5fa1 | 3 years ago |
Nimetu | 984b2b3590 | 3 years ago |
Nimetu | 3f3991816b | 3 years ago |
Nimetu | e0d54f7897 | 3 years ago |
Nimetu | 37eec8cd7f | 3 years ago |
Nimetu | 2046c4bf6e | 3 years ago |
Nimetu | 12c515c264 | 3 years ago |
Nimetu | 285cfb163f | 3 years ago |
Nimetu | a40ddf7955 | 3 years ago |
Nimetu | dff191a7c2 | 3 years ago |
Nimetu | f26dc534c8 | 3 years ago |
Nimetu | dfe45029ab | 3 years ago |
Nimetu | 65edd9f95d | 3 years ago |
Nuno | 4331e35227 | 3 years ago |
Nuno Gonçalves (Ulukyn) | ce5817721a | 3 years ago |
Nuno Gonçalves (Ulukyn) | aae899b65a | 3 years ago |
Nimetu | 487f9f060e | 3 years ago |
Nimetu | 2e816ddf6e | 3 years ago |
Nimetu | 5d4a04169b | 3 years ago |
Nimetu | b2ec03d1a1 | 3 years ago |
Nimetu | 234465387b | 3 years ago |
Nimetu | 2133f6d2b7 | 3 years ago |
Nimetu | 63f1fb73dd | 3 years ago |
Nimetu | a040f7a2a8 | 3 years ago |
Nimetu | 565932c18d | 3 years ago |
Nimetu | cade609a3a | 3 years ago |
Nimetu | 093702a704 | 3 years ago |
Nuno Gonçalves (Ulukyn) | 4c66865de7 | 3 years ago |
Nimetu | c00a9be398 | 3 years ago |
Nuno Gonçalves (Ulukyn) | 458861951b | 3 years ago |
Nuno Gonçalves (Ulukyn) | 3f991d3781 | 3 years ago |
Nuno Gonçalves (Ulukyn) | 8d5c0facf8 | 3 years ago |
Nuno Gonçalves (Ulukyn) | 178a22d961 | 3 years ago |
Nuno Gonçalves (Ulukyn) | f9dafe720c | 3 years ago |
Nuno Gonçalves (Ulukyn) | 72691a3379 | 3 years ago |
Nuno Gonçalves (Ulukyn) | bc991c8146 | 3 years ago |
Riasan | 62a821bc1d | 3 years ago |
Riasan | 103179ece7 | 3 years ago |
Nimetu | 19d0162332 | 3 years ago |
Nimetu | 5bf139f690 | 3 years ago |
Nimetu | d0d38238a8 | 3 years ago |
Nimetu | 95716b65ca | 3 years ago |
Nimetu | 75f490d394 | 3 years ago |
Nuno | 64bff20e03 | 4 years ago |
Nuno | 1eb651a946 | 4 years ago |
Nuno | 7da7d8cbbe | 4 years ago |
Nuno | 0ee26a6488 | 4 years ago |
Nuno | 9e404a5965 | 4 years ago |
Nuno | 97099768dc | 4 years ago |
kaetemi | 7d1661df42 | 4 years ago |
kaetemi | 19a0d929bb | 4 years ago |
Nuno | a443848924 | 4 years ago |
Nuno | ca0dc24aa0 | 4 years ago |
Nuno | 6d68e96dd4 | 4 years ago |
kaetemi | 6d4b58c281 | 4 years ago |
kaetemi | fcf97d93df | 4 years ago |
kaetemi | c5658cfe26 | 4 years ago |
Nimetu | bc0071ac57 | 4 years ago |
kaetemi | 37a729b5cc | 4 years ago |
Nuno Gonçalves (Ulukyn) | efc1883cca | 4 years ago |
Nuno | 83a021e1e6 | 4 years ago |
Nuno | 431b1ea339 | 4 years ago |
Nuno | 6c3d6403b0 | 4 years ago |
Nuno | 405974c9c0 | 4 years ago |
Nuno | cc5bd3ddae | 4 years ago |
Nuno | 5613eb855e | 4 years ago |
Nimetu | 5614028f63 | 4 years ago |
Nimetu | a28bda89e6 | 4 years ago |
Nimetu | b2d6c313db | 4 years ago |
Nuno | 74c643f147 | 4 years ago |
Nuno | 3d43c3c626 | 4 years ago |
Nimetu | 78fa873003 | 4 years ago |
Nuno | 6bd853f7bf | 4 years ago |
Nuno | 49b4295765 | 4 years ago |
Nimetu | 3362afaa4d | 4 years ago |
Nuno | c5b34c927e | 4 years ago |
Nuno | fa3eab3305 | 4 years ago |
Nuno | 7d1534fb31 | 4 years ago |
Nuno | 791eb639df | 4 years ago |
Nuno | 772990d421 | 4 years ago |
Nuno | c8fd716f8a | 4 years ago |
Nuno | 72f7cbe4fa | 4 years ago |
Nuno | 9d2fc8c630 | 4 years ago |
Nuno | b4e54d5ad4 | 4 years ago |
Nuno | 904daebd88 | 4 years ago |
Nuno | 9c996b5fe3 | 4 years ago |
Nuno | 7964a42927 | 4 years ago |
Nuno | 24cb13d744 | 4 years ago |
Nuno | c8f4a85f0c | 4 years ago |
Nuno | 7bd936ea24 | 4 years ago |
Nuno | 4bcea9a70e | 4 years ago |
Nuno | 762e3b603e | 4 years ago |
Nuno | 292e142319 | 4 years ago |
Nuno | cdb1786018 | 4 years ago |
Nimetu | 1299484163 | 4 years ago |
Nimetu | 668e15e394 | 4 years ago |
Sit Melai | cdf1bacee1 | 4 years ago |
Nuno | 1ec4f88471 | 4 years ago |
Sit Melai | 673ce18e72 | 4 years ago |
Nuno | 54fd022501 | 4 years ago |
Nuno | 5fe26ec6d6 | 4 years ago |
Nuno | 40a9e782c3 | 4 years ago |
Nuno | 155e268ece | 4 years ago |
Nuno | 649527039b | 4 years ago |
Nuno | d350b1621d | 4 years ago |
Nuno | 22bab29654 | 4 years ago |
Nuno | 5632fffa44 | 4 years ago |
Nuno | 1cc000cc6c | 4 years ago |
Nuno | e9b7345ba5 | 4 years ago |
Nuno | 6f4319bfcb | 4 years ago |
Nuno | ab958d1891 | 4 years ago |
Nuno | c3c7e15c81 | 4 years ago |
Nuno | 568a7a10a9 | 4 years ago |
Nuno | f886d5eac7 | 4 years ago |
Nuno | 540ab1ffc8 | 4 years ago |
Nuno | 629e8f5272 | 4 years ago |
Nuno | 868f462d5f | 4 years ago |
Nuno | 5a7d067a71 | 4 years ago |
Nuno | 17f818eace | 4 years ago |
Nuno | 5825332757 | 4 years ago |
Nimetu | c1170a0a4d | 4 years ago |
Nimetu | 291d332b56 | 4 years ago |
Nimetu | d8f54820c4 | 4 years ago |
Nimetu | 155418b20b | 4 years ago |
Nimetu | d665e1fc45 | 4 years ago |
Nimetu | 36f9888b91 | 4 years ago |
Nimetu | 17782d5d21 | 4 years ago |
Nuno | 85e788da81 | 4 years ago |
Nuno | 54de87acf4 | 4 years ago |
Nuno | ebab993e3e | 4 years ago |
Nuno | 3613dfd305 | 4 years ago |
Nuno | c09f82db16 | 4 years ago |
Nuno | 6402a31e4e | 4 years ago |
Nuno | 27cdcf1e02 | 4 years ago |
Nuno | de90245f27 | 4 years ago |
Nuno | bf2f8e39a5 | 4 years ago |
Nimetu | 26482eef1b | 4 years ago |
Nimetu | 383e362ed7 | 4 years ago |
Nimetu | c09ed63120 | 4 years ago |
Nimetu | fdb271bdb3 | 4 years ago |
kaetemi | dba92deea5 | 4 years ago |
Nuno | 0fb9422426 | 4 years ago |
kaetemi | 2528e542cb | 4 years ago |
kaetemi | 719f178f70 | 4 years ago |
Riasan | f83d8a206e | 4 years ago |
Riasan | 8cd863ff44 | 4 years ago |
Nuno | 89065eee3f | 4 years ago |
Sit Melai | 91b3ff25b4 | 4 years ago |
Nimetu | 4bcf9270eb | 4 years ago |
Sit Melai | c75071b488 | 4 years ago |
Nimetu | 04a5aa372b | 4 years ago |
Nimetu | 29ef76e537 | 4 years ago |
Nimetu | 040eee5c9e | 4 years ago |
Nimetu | c6ede4a8b4 | 4 years ago |
Nuno | adf9a646b7 | 4 years ago |
Nuno | 2aaa928cdc | 4 years ago |
Nuno | 83d0e600f1 | 4 years ago |
Nuno | df69a1706f | 4 years ago |
Nuno | 6651e839f3 | 4 years ago |
Nuno | 62be2ab1fb | 4 years ago |
Nuno | 8c62f4e64c | 4 years ago |
Nuno | 2075bf7443 | 4 years ago |
Nuno | 44caf59afd | 4 years ago |
Nuno | 057cf828f4 | 4 years ago |
Nuno | 8d2071524c | 4 years ago |
Nuno | 6db93a0ef0 | 4 years ago |
Nuno | f61d10c75e | 4 years ago |
Nuno | 90728f372a | 4 years ago |
Nuno | 8fa5de61e3 | 4 years ago |
Nuno | 74dbe1e52c | 4 years ago |
Nuno | 6adf44f0b0 | 4 years ago |
Nuno | 98124a3bd5 | 4 years ago |
Nuno | 46ecaac095 | 4 years ago |
Nuno | 06e2840be5 | 4 years ago |
Nuno | bbabe75247 | 4 years ago |
Nuno | b62ddc49d2 | 4 years ago |
Nuno | 690286b2c4 | 4 years ago |
Nuno | ada7dec7d3 | 4 years ago |
Nuno | 98b091ab63 | 4 years ago |
Nuno | 53252d40db | 4 years ago |
Nuno | 2b648934ea | 4 years ago |
Nuno | 46c7b0309d | 4 years ago |
Nuno | 347ed4b2fb | 4 years ago |
Nuno | b9d29d5cfe | 4 years ago |
Nuno | ea212bcba2 | 4 years ago |
Nuno | 281ec4ba60 | 4 years ago |
Nuno | 951f000be4 | 4 years ago |
Nuno | 4726e74dcd | 4 years ago |
Nuno | c5fffb9ff0 | 4 years ago |
Nuno | ae9989dfe4 | 4 years ago |
Nuno | d35ae0db80 | 4 years ago |
Nuno | 3dbdbad80a | 4 years ago |
Riasan | 0a81f40606 | 4 years ago |
Nuno | c63b21150e | 4 years ago |
Nuno | 9771d79bc3 | 4 years ago |
Nimetu | b70573d1dc | 4 years ago |
Nimetu | 7111cf44b3 | 4 years ago |
Nimetu | cb77552121 | 4 years ago |
Nuno | 2bf8faf29e | 4 years ago |
Nuno | b984e2e3d8 | 4 years ago |
Nuno | 140c380eb5 | 4 years ago |
Nuno | 1225fc0fe8 | 4 years ago |
Nuno | 13cb05c732 | 4 years ago |
Nuno | f84184af25 | 4 years ago |
Nuno | 4b6e0184a3 | 4 years ago |
Nuno | 269526e87f | 4 years ago |
Nuno | b8668813df | 4 years ago |
Nuno | 6f9dce0fdc | 4 years ago |
Nuno | fd8b2436ff | 4 years ago |
Nuno | 588bd79535 | 4 years ago |
Nuno | ced0ca3e1c | 4 years ago |
kaetemi | e998d3a85c | 4 years ago |
kaetemi | 5c3b0cf14b | 4 years ago |
Nuno | c327303222 | 4 years ago |
Nuno | 864eba1629 | 4 years ago |
Nuno | 29c3651063 | 4 years ago |
Nuno | acfb37103f | 4 years ago |
Nuno | 3d38a8ca89 | 4 years ago |
Nuno | 4f34ce36ae | 4 years ago |
Nuno | 8d2b26b738 | 4 years ago |
Nuno | 79e65a6b9e | 4 years ago |
Nuno | 6e59af8dc9 | 4 years ago |
Nuno | d23166ae49 | 4 years ago |
Nuno | 0b110c6a88 | 4 years ago |
Nuno | 13398f094a | 4 years ago |
Nuno | 7018a4439c | 4 years ago |
Riasan | cbbbc74a60 | 4 years ago |
Nuno | dab6321caa | 4 years ago |
Nuno | 07390fed37 | 4 years ago |
Nuno | ec98cd2e65 | 4 years ago |
Nuno | ad52a23437 | 4 years ago |
Nuno | c78d1d934f | 4 years ago |
Nuno | 677933ed98 | 4 years ago |
Nuno | 541529bb3f | 4 years ago |
Nuno | a273f78851 | 4 years ago |
Nuno | cb207bdd9d | 4 years ago |
Nuno | 8ec332fefa | 4 years ago |
Nuno | 2f776eab9c | 4 years ago |
Nuno | 04aa097781 | 4 years ago |
Nuno | 3996327394 | 4 years ago |
Nuno | 27e553ccb5 | 4 years ago |
Nuno | 323be1612e | 4 years ago |
Nuno | 184582cfc9 | 4 years ago |
Nimetu | e39cd0a8d3 | 4 years ago |
Nuno | 0b9599c57b | 4 years ago |
Sit Melai | 9d7f2af1a7 | 4 years ago |
Nuno | e021c09051 | 4 years ago |
Nuno | 52ff736ee9 | 4 years ago |
Nuno | d2c56f4b7c | 4 years ago |
Nuno | 2bdc6fb7ae | 4 years ago |
Nuno | a848eab99c | 4 years ago |
kaetemi | b0f1c73d77 | 4 years ago |
kaetemi | 109ed7eba5 | 4 years ago |
Nuno | 9ae2df4527 | 4 years ago |
Nimetu | 762962ef25 | 4 years ago |
Nimetu | 9f3250f4db | 4 years ago |
Nimetu | e8c18b1b44 | 4 years ago |
Nimetu | 73610be10d | 4 years ago |
Nimetu | 72098f624d | 4 years ago |
kaetemi | 1a6e5e6e2b | 4 years ago |
kaetemi | 7adbb84514 | 4 years ago |
kaetemi | e74e229ad9 | 4 years ago |
Nimetu | ae91cc4179 | 4 years ago |
Nimetu | 6ccd8853db | 4 years ago |
Nuno | cc7793202b | 4 years ago |
Nuno | 0bb160545f | 4 years ago |
Nuno | 0e1b464e98 | 4 years ago |
Nuno | dfe051a8df | 4 years ago |
Nuno Gonçalves (Ulukyn) | 2f6133c8ba | 4 years ago |
Nuno Gonçalves (Ulukyn) | 95f8cefecc | 4 years ago |
Nuno Gonçalves (Ulukyn) | b98cd5e345 | 4 years ago |
Nuno Gonçalves (Ulukyn) | bca2a28187 | 4 years ago |
Sit Melai | b7cbeeb2ae | 4 years ago |
Ulukyn | 5d4e81e24c | 4 years ago |
Ulukyn | c73fff2ca6 | 4 years ago |
Nimetu | 9532fc3a81 | 4 years ago |
Nimetu | 6b59fc0081 | 4 years ago |
Sit Melai | 47bf9ecbc8 | 4 years ago |
Sit Melai | 02732c1241 | 4 years ago |
Sit Melai | f96f0b41b9 | 4 years ago |
Sit Melai | 5dc85db8b1 | 4 years ago |
Sit Melai | 49fcec5759 | 4 years ago |
Sit Melai | b8b21914f6 | 4 years ago |
Sit Melai | bccc86bd99 | 4 years ago |
Sit Melai | e5b3b752d5 | 4 years ago |
Sit Melai | c06469b2a0 | 4 years ago |
Ulukyn | 6fa74cd5c2 | 5 years ago |
Riasan | 8cd685d1f4 | 5 years ago |
Riasan | f31eeff8fc | 5 years ago |
Sit Melai | 7e10c697eb | 5 years ago |
Nimetu | f7be62eb3d | 5 years ago |
Nimetu | 2a4b16ab1b | 5 years ago |
Ulukyn | f7e8e3f516 | 5 years ago |
Ulukyn | 107dbc1987 | 5 years ago |
Ulukyn | 97dc744759 | 5 years ago |
Ulukyn | 012339dcf1 | 5 years ago |
Ulukyn | 884c65fc26 | 5 years ago |
Ulukyn | 07f9a55e48 | 5 years ago |
Ulukyn | a87b0f4c97 | 5 years ago |
Ulukyn | 4138a99fb7 | 5 years ago |
Ulukyn | 7be52a10fe | 5 years ago |
Ulukyn | f4a104bf3f | 5 years ago |
Ulukyn | 80a6bf72a9 | 5 years ago |
Ulukyn | 17e539132b | 5 years ago |
Ulukyn | 27bd2cec01 | 5 years ago |
Ulukyn | 6597f32fc1 | 5 years ago |
Ulukyn | 9e2872d15e | 5 years ago |
Ulukyn | 901f33d9a7 | 5 years ago |
Ulukyn | 421de3fa91 | 5 years ago |
Ulukyn | 08fb509d99 | 5 years ago |
Sit Melai | 6c8aeb6ae3 | 5 years ago |
Sit Melai | 59c794f716 | 5 years ago |
Heernis | 3c052d5fcc | 5 years ago |
Sit Melai | c2e7807f99 | 5 years ago |
Riasan | d130a7f826 | 5 years ago |
Ulukyn | fd2cc53d68 | 5 years ago |
Ulukyn | 6ae34e08d9 | 5 years ago |
Ulukyn | 80568ade1c | 5 years ago |
Ulukyn | a8016b6a59 | 5 years ago |
Ulukyn | d0fdfe175d | 5 years ago |
Ulukyn | 4254b6788a | 5 years ago |
Riasan | ada46dfabc | 5 years ago |
kaetemi | fc197880a4 | 5 years ago |
Ulukyn | ada3c09a51 | 5 years ago |
Ulukyn | 83061f7f03 | 5 years ago |
Ulukyn | 3c6bed32fd | 5 years ago |
Nimetu | 92b3a31f0b | 5 years ago |
Ulukyn | f396858ea9 | 5 years ago |
Ulukyn | eae8f9999d | 5 years ago |
Ulukyn | b8885cd661 | 5 years ago |
Ulukyn | f67a1cde32 | 5 years ago |
Ulukyn | feb1a5647d | 5 years ago |
Ulukyn | f3009c4178 | 5 years ago |
Ulukyn | 820bd23cf6 | 5 years ago |
Ulukyn | c883ea63e0 | 5 years ago |
Ulukyn | 791a6641d9 | 5 years ago |
Ulukyn | 521a5c8fb7 | 5 years ago |
Ulukyn | da876dcf7c | 5 years ago |
Ulukyn | 0069db15a6 | 5 years ago |
Ulukyn | 3da2f45363 | 5 years ago |
Ulukyn | 1143ecaae0 | 5 years ago |
Heernis | bcc107e187 | 5 years ago |
Nimetu | 36187626a9 | 5 years ago |
Nimetu | bde8d008d1 | 5 years ago |
Nimetu | 6993a2731f | 5 years ago |
Nimetu | 52d6f89e1e | 5 years ago |
Nimetu | 5bddfcfb22 | 5 years ago |
Ulukyn | aa15fd4e98 | 5 years ago |
Ulukyn | 0f8673beac | 5 years ago |
Ulukyn | 219914b4bf | 5 years ago |
Ulukyn | fb4aebf506 | 5 years ago |
Ulukyn | 81832ae0af | 5 years ago |
kaetemi | 39d6ca285a | 5 years ago |
kaetemi | c8fc110a9e | 5 years ago |
kaetemi | a9fc9c2015 | 5 years ago |
Ulukyn | e32c852d96 | 5 years ago |
Ulukyn | f3a02d4f2a | 5 years ago |
Ulukyn | bd99cd8aed | 5 years ago |
Ulukyn | 77d8cce15a | 5 years ago |
Ulukyn | aa0d9d0be9 | 5 years ago |
Ulukyn | 0845e19408 | 5 years ago |
Ulukyn | ece240448d | 5 years ago |
Ulukyn | 07ff703de2 | 5 years ago |
Ulukyn | f6116a813b | 5 years ago |
Ulukyn | 422a8bb744 | 5 years ago |
Ulukyn | 25d4cca3a9 | 5 years ago |
Ulukyn | 6a40fcf12d | 5 years ago |
Ulukyn | bf0042173f | 5 years ago |
Ulukyn | 681568ce08 | 5 years ago |
Ulukyn | 47863be96e | 5 years ago |
Ulukyn | ade5b6e702 | 5 years ago |
Ulukyn | ecd8b952a2 | 5 years ago |
Ulukyn | 272f91210b | 5 years ago |
Ulukyn | 24d4fb8253 | 5 years ago |
Nimetu | 24fd5a6230 | 5 years ago |
Riasan | 9043e78794 | 5 years ago |
Nimetu | 5250d22706 | 5 years ago |
Nimetu | 682985978d | 5 years ago |
Nimetu | b3f8f307b0 | 5 years ago |
Ulukyn | b5ffa8becd | 5 years ago |
Ulukyn | 92090056ea | 5 years ago |
Nimetu | a6c7b3dd37 | 5 years ago |
Ulukyn | 1e54da83ef | 5 years ago |
Ulukyn | 6ec06b29ab | 5 years ago |
Ulukyn | 7b15da1018 | 5 years ago |
Nimetu | 598be95efd | 5 years ago |
Nimetu | 7f373a904e | 5 years ago |
Nimetu | 983475ff7c | 5 years ago |
Ulukyn | 44824414b1 | 5 years ago |
Ulukyn | 95b0f63622 | 5 years ago |
Ulukyn | 264b50a5ec | 5 years ago |
Ulukyn | 143b96c214 | 5 years ago |
Ulukyn | d4e5af7df2 | 5 years ago |
Ulukyn | 8dc9b89f94 | 5 years ago |
Nimetu | 2d86c5377d | 5 years ago |
Ulukyn | 04f9d593e0 | 5 years ago |
Nimetu | 3be969a73d | 5 years ago |
Ulukyn | ce8b05b284 | 5 years ago |
Ulukyn | 42b291c73e | 5 years ago |
Nimetu | 4aa94b3ae9 | 5 years ago |
Nimetu | c0110133d7 | 5 years ago |
Nimetu | c36faf2d61 | 5 years ago |
Ulukyn | fef0cad61a | 5 years ago |
Ulukyn | debb6b7d0c | 5 years ago |
Heernis | f11ed5ea49 | 5 years ago |
Ulukyn | 050d9fea2f | 5 years ago |
Ulukyn | 9a8f29bb67 | 5 years ago |
Ulukyn | c2e879ebcc | 5 years ago |
Ulukyn | 11086f9b44 | 5 years ago |
Ulukyn | 311e739d98 | 5 years ago |
Ulukyn | f6f7e553fc | 5 years ago |
Ulukyn | 255271cde5 | 5 years ago |
Ulukyn | 6d233cdc2c | 5 years ago |
Ulukyn | f337a28ae2 | 5 years ago |
Ulukyn | a36694614f | 5 years ago |
Ulukyn | bcb8080d42 | 5 years ago |
Ulukyn | 2c9193fa74 | 5 years ago |
Ulukyn | 7e84ee9ec9 | 5 years ago |
Ulukyn | ff5d4e941c | 5 years ago |
Nimetu | f853adfcba | 5 years ago |
Nimetu | 1f736fc347 | 5 years ago |
Ulukyn | 8f3aaee987 | 5 years ago |
Ulukyn | 8d0172e1fb | 5 years ago |
Ulukyn | f06eebf26c | 5 years ago |
Ulukyn | 31ecfdf181 | 5 years ago |
Ulukyn | 4997576923 | 5 years ago |
Ulukyn | 9b6693763f | 5 years ago |
Ulukyn | b9d1cf26b7 | 5 years ago |
Ulukyn | ae25e054d4 | 5 years ago |
Ulukyn | 269f8c4b2d | 5 years ago |
Ulukyn | a3db3c6ba6 | 5 years ago |
Nimetu | 4d9aa3e684 | 5 years ago |
Nimetu | e99b7e257d | 5 years ago |
Nimetu | 94873c3d3f | 5 years ago |
Nimetu | 586e49282f | 5 years ago |
Nimetu | ca20d582b3 | 5 years ago |
Nimetu | 7cb5c817a6 | 5 years ago |
Nimetu | ec1dfca0c5 | 5 years ago |
Ulukyn | df6c0969c2 | 5 years ago |
Ulukyn | 590abe8bfd | 5 years ago |
Ulukyn | b31fa09af7 | 5 years ago |
Ulukyn | 3220a2aa47 | 5 years ago |
Ulukyn | c639bb3c07 | 5 years ago |
Nimetu | 2f635117f7 | 5 years ago |
Ulukyn | 0cf26cbdf8 | 5 years ago |
Nimetu | 34083dee80 | 5 years ago |
Nimetu | edb0c1fe73 | 5 years ago |
Nimetu | 9aabe0bf35 | 5 years ago |
Nimetu | 3b08d50b83 | 5 years ago |
Ulukyn | 523c07d9d9 | 5 years ago |
Ulukyn | e89d3233dc | 5 years ago |
Ulukyn | 96e95c19ee | 5 years ago |
Ulukyn | e10f79dbf2 | 5 years ago |
Ulukyn | 0aff3b4365 | 5 years ago |
Ulukyn | b0fa434c05 | 5 years ago |
Ulukyn | e349cb4399 | 5 years ago |
Ulukyn | f9cf9db049 | 5 years ago |
Ulukyn | 92f3c01a74 | 5 years ago |
Ulukyn | 3ffab7c1a1 | 5 years ago |
Ulukyn | 4df2489f59 | 5 years ago |
Ulukyn | de6418bb9a | 5 years ago |
Ulukyn | 1db0300515 | 5 years ago |
Ulukyn | 435b4362d3 | 5 years ago |
Ulukyn | f9d37a390a | 5 years ago |
Ulukyn | 99413cff48 | 5 years ago |
Ulukyn | d45f6efcef | 5 years ago |
Ulukyn | 01cb2cfdd8 | 5 years ago |
Ulukyn | 5f762edac4 | 5 years ago |
Ulukyn | bfadcfaff5 | 5 years ago |
Ulukyn | 55172c93b5 | 5 years ago |
Ulukyn | c950373782 | 5 years ago |
Ulukyn | b1d18ddb53 | 5 years ago |
Ulukyn | b869cd07d6 | 5 years ago |
Ulukyn | aaa24fd0f4 | 5 years ago |
Ulukyn | 6747613b03 | 5 years ago |
Ulukyn | ac6afb7b2f | 5 years ago |
Ulukyn | 4048ef29db | 5 years ago |
Ulukyn | b5b395c127 | 5 years ago |
Ulukyn | a7d2175f93 | 5 years ago |
Ulukyn | b16d132e1d | 5 years ago |
Ulukyn | e3cef8803e | 5 years ago |
Ulukyn | cb2201a69a | 5 years ago |
Nimetu | dfeba1426a | 5 years ago |
Ulukyn | c9bec465bc | 5 years ago |
Nimetu | 7856e93723 | 5 years ago |
Nimetu | 8f59a71e3c | 5 years ago |
Nimetu | 15433b263b | 5 years ago |
Ulukyn | 58a731628b | 5 years ago |
Ulukyn | eb8daeb652 | 5 years ago |
Ulukyn | c6d5163c1d | 5 years ago |
Ulukyn | 2c63a3aa96 | 5 years ago |
Ulukyn | 4709e766b9 | 5 years ago |
Ulukyn | b2207337fa | 5 years ago |
Ulukyn | 47dc707c91 | 5 years ago |
Ulukyn | 232af164ed | 5 years ago |
Ulukyn | f18101d97e | 5 years ago |
Ulukyn | 0df2bdec2b | 5 years ago |
Ulukyn | ed17e66d97 | 5 years ago |
Ulukyn | 7f149563f6 | 5 years ago |
Nimetu | e22d271408 | 5 years ago |
Ulukyn | d77d3b7102 | 5 years ago |
Ulukyn | e049c34c8d | 5 years ago |
Ulukyn | 6114cb1044 | 5 years ago |
Ulukyn | 609d6b470f | 5 years ago |
Ulukyn | 414011ee37 | 5 years ago |
Ulukyn | b558a1a18b | 5 years ago |
Ulukyn | b033942d36 | 5 years ago |
Ulukyn | de8c9dddcb | 5 years ago |
Ulukyn | 6e00000b9b | 5 years ago |
Ulukyn | 15ce2cd39c | 5 years ago |
Ulukyn | f9738713a7 | 5 years ago |
Ulukyn | 20b1f3a4c5 | 5 years ago |
Ulukyn | 586d84bc20 | 5 years ago |
Ulukyn | b88341792a | 5 years ago |
Ulukyn | 1c562ddbe6 | 5 years ago |
Ulukyn | 4675b8b8b9 | 5 years ago |
Ulukyn | d2edcbf4ee | 5 years ago |
Ulukyn | 954151ca73 | 5 years ago |
Ulukyn | 45b1bab23f | 5 years ago |
Ulukyn | 123197b90b | 5 years ago |
Ulukyn | 4b847a086a | 5 years ago |
Ulukyn | 9f61f08e74 | 5 years ago |
Ulukyn | aacbcf1e65 | 5 years ago |
Ulukyn | c838136d1a | 5 years ago |
Ulukyn | 0455d07125 | 5 years ago |
Ulukyn | 6785217b3a | 5 years ago |
Ulukyn | cc5423fdd5 | 5 years ago |
Ulukyn | c22f8776f4 | 5 years ago |
Nimetu | f5c0cbcdf3 | 5 years ago |
Nimetu | 8b2108af2f | 5 years ago |
Ulukyn | a7ca6f4499 | 5 years ago |
Ulukyn | 9e5f20a679 | 5 years ago |
Ulukyn | 11573ee85a | 5 years ago |
Ulukyn | 48a9a84d0e | 5 years ago |
Ulukyn | 2f27af125e | 5 years ago |
Ulukyn | 10f864b234 | 5 years ago |
Ulukyn | 0ac92bc08b | 5 years ago |
Ulukyn | 34c1265bce | 5 years ago |
Ulukyn | a6ee9fec63 | 5 years ago |
Ulukyn | fe008c0e52 | 5 years ago |
Ulukyn | 935c5df73a | 5 years ago |
Ulukyn | 7a0737e759 | 5 years ago |
Ulukyn | 09d8346558 | 5 years ago |
Ulukyn | 7f53767d85 | 5 years ago |
karu | 6a7fc98a52 | 5 years ago |
Ulukyn | 3d919974cf | 5 years ago |
Ulukyn | 691bf67c4d | 5 years ago |
Ulukyn | f053eaa157 | 5 years ago |
Ulukyn | 30fabcbd0a | 5 years ago |
Ulukyn | 3966020294 | 5 years ago |
Ulukyn | eeac201cf3 | 5 years ago |
Ulukyn | 357e3f07e4 | 5 years ago |
Ulukyn | 188c3494fa | 5 years ago |
Ulukyn | 51776f9203 | 5 years ago |
Ulukyn | 7b8a4e2210 | 5 years ago |
Ulukyn | 762dcd15e2 | 5 years ago |
Ulukyn | ac43b90ba0 | 5 years ago |
Ulukyn | df3c7c2f2e | 5 years ago |
Ulukyn | 780b9c7e63 | 5 years ago |
Ulukyn | f4ee795fde | 5 years ago |
Ulukyn | c521de1d48 | 5 years ago |
Riasan | d5ceb97fa0 | 5 years ago |
Ulukyn | cdc33730ad | 5 years ago |
Ulukyn | 305a27f0db | 5 years ago |
Nimetu | 4c1daee42c | 5 years ago |
Ulu Kyn | b5b8de283b | 5 years ago |
Ulu Kyn | 7b3c09f873 | 5 years ago |
Ulu Kyn | 3f7fc2e870 | 5 years ago |
Ulu Kyn | 4c0438d702 | 5 years ago |
Ulu Kyn | 139b03f0f1 | 5 years ago |
Ulu Kyn | 99caf036ff | 5 years ago |
Ulu Kyn | 6c35550c83 | 5 years ago |
Ulu Kyn | 8221ee2eb9 | 5 years ago |
Ulu Kyn | fd1f151504 | 5 years ago |
Ulu Kyn | c43b4b8bc0 | 5 years ago |
Ulu Kyn | a806758fad | 5 years ago |
Ulu Kyn | 58e24f9c58 | 5 years ago |
Herrah | 99ededcfcb | 5 years ago |
Ulu Kyn | e32e4492ce | 5 years ago |
Ulu Kyn | e3dc99e078 | 5 years ago |
Nuno Gonçalves | 9e406019d8 | 5 years ago |
Nuno Gonçalves | 19789a2544 | 5 years ago |
Nimetu | e4cce24f80 | 5 years ago |
Nimetu | 2e3fa918d4 | 5 years ago |
Nuno Gonçalves | 89973681a2 | 5 years ago |
Nuno Gonçalves | 683af88cb9 | 5 years ago |
Nimetu | da5b7212f8 | 5 years ago |
Nimetu | 14b1c1232a | 5 years ago |
Nuno Gonçalves | de69dfc285 | 5 years ago |
Nuno Gonçalves | f5776610f1 | 5 years ago |
Inky | 11f2044c7d | 5 years ago |
Nimetu | b53d797745 | 6 years ago |
Nimetu | 8b4c179a15 | 6 years ago |
ulukyn | 959d52fd80 | 6 years ago |
Nimetu | b423c0f057 | 6 years ago |
Nimetu | 7148d476ad | 6 years ago |
Nimetu | c9a5fbacd9 | 6 years ago |
Inky | bfbb8e1292 | 6 years ago |
Inky | 045a80b59e | 6 years ago |
Inky | 1ad5cf7a8e | 6 years ago |
Inky | c752619f13 | 6 years ago |
Inky | 26aef169b1 | 6 years ago |
Inky | 8006dbeabe | 6 years ago |
Inky | 6fdbdc9ed1 | 6 years ago |
Inky | f75e413994 | 6 years ago |
Inky | 3acbf83058 | 6 years ago |
Inky | 77496daef4 | 6 years ago |
Inky | c545629a10 | 6 years ago |
Inky | 1910f7bc86 | 6 years ago |
Inky | c1e76fcbb2 | 6 years ago |
Inky | 20fe11c53f | 6 years ago |
Inky | 6fcb6f0669 | 6 years ago |
Inky | a7cdf29463 | 6 years ago |
Inky | b2b16e3cce | 6 years ago |
Inky | 0f3f64cdc2 | 6 years ago |
Inky | c8927c9c4b | 6 years ago |
Inky | 5d1233e805 | 6 years ago |
Inky | f5e9b7703c | 6 years ago |
Inky | 098df688b9 | 6 years ago |
Inky | 6d16b46890 | 6 years ago |
Inky | 331b0d8718 | 6 years ago |
Inky | d9cb317667 | 6 years ago |
Inky | 90e508032c | 6 years ago |
Inky | 4a5de4cb13 | 6 years ago |
Inky | 9d294ef242 | 6 years ago |
Inky | 860d6e2abb | 6 years ago |
Inky | bfab92082b | 6 years ago |
Inky | 64e26124f8 | 6 years ago |
Inky | 21dfa80b73 | 6 years ago |
Inky | ac4d9efd8b | 6 years ago |
Inky | 00f850f143 | 6 years ago |
Nimetu | a4b3e57fd0 | 6 years ago |
Nimetu | 8b2aef9317 | 6 years ago |
Nimetu | c123f63afd | 6 years ago |
Nimetu | a22767af76 | 6 years ago |
ulukyn | f8af0da354 | 6 years ago |
Riasan | 4f08aa3082 | 6 years ago |
ulukyn | 72d636ded1 | 6 years ago |
Riasan | cba4d7948d | 6 years ago |
ulukyn | 739d000055 | 6 years ago |
ulukyn | 963162855c | 6 years ago |
ulukyn | 89ef083460 | 6 years ago |
Inky | 795606628f | 6 years ago |
Inky | e572cc3e83 | 6 years ago |
ulukyn | bf34575037 | 6 years ago |
ulukyn | 57a32f10ee | 6 years ago |
ulukyn | 6c9a8da387 | 6 years ago |
Riasan | 2aa065d109 | 6 years ago |
ulukyn | 41b0fac726 | 6 years ago |
ulukyn | b7ec1c68ac | 6 years ago |
ulukyn | cc6159a9d5 | 6 years ago |
Inky | 438b521ece | 6 years ago |
Ulukyn | f5f4411a00 | 6 years ago |
Riasan | 29cb0c579f | 6 years ago |
ulukyn | 8434cb1a34 | 6 years ago |
ulukyn | 39004eb54b | 6 years ago |
Riasan | d2df2043c5 | 6 years ago |
Riasan | d8cfde63f8 | 6 years ago |
Nuno Gonçalves | 617682afe6 | 6 years ago |
Nuno Gonçalves | c9d19b4879 | 6 years ago |
ulukyn | 0b507cba7b | 6 years ago |
ulukyn | db5a7b141a | 6 years ago |
ulukyn | 478e2a646f | 6 years ago |
ulukyn | 020c59153d | 6 years ago |
ulukyn | 4f1008a413 | 6 years ago |
Riasan | f14c4d7746 | 6 years ago |
ulukyn | 23fe859e19 | 6 years ago |
Riasan | c6978f769f | 6 years ago |
Riasan | 319ae23064 | 6 years ago |
Riasan | 3e2e6cb696 | 6 years ago |
Riasan | 3c66bf2ba2 | 6 years ago |
Riasan | 1390a45f71 | 6 years ago |
ulukyn | d599fa4c14 | 6 years ago |
ulukyn | b4d09e0774 | 6 years ago |
ulukyn | 6f65197479 | 6 years ago |
ulukyn | 569599281b | 6 years ago |
ulukyn | 10562b720b | 6 years ago |
ulukyn | 1fc73a8079 | 6 years ago |
ulukyn | f821ff6973 | 6 years ago |
Riasan | d51b3b2eae | 6 years ago |
Riasan | 90c99b0b0e | 6 years ago |
Riasan | 48b2e9799e | 6 years ago |
Riasan | 9c680f43ce | 6 years ago |
Riasan | 537865cdb9 | 6 years ago |
ulukyn | 60feb8bc57 | 6 years ago |
ulukyn | dd6057ad71 | 6 years ago |
Riasan | 882e067fc0 | 6 years ago |
Riasan | a82a018f40 | 6 years ago |
Riasan | eb1c367464 | 6 years ago |
teanwen | 4ca7ea8957 | 6 years ago |
ulukyn | 6c731f049e | 6 years ago |
ulukyn | 363a59d238 | 6 years ago |
Riasan | b59b8a51a9 | 6 years ago |
ulukyn | 5648981968 | 6 years ago |
Riasan | c1510a8fb8 | 6 years ago |
Riasan | beb3dca614 | 6 years ago |
Riasan | 80204090d4 | 6 years ago |
Riasan | 57e55ed250 | 6 years ago |
Riasan | 5601d84d60 | 6 years ago |
Riasan | 2b24a51439 | 6 years ago |
Riasan | 3343f46e11 | 6 years ago |
Riasan | 82e5e1a4fc | 6 years ago |
Riasan | 19285bc8e9 | 6 years ago |
Riasan | cdbd2e1f47 | 6 years ago |
Riasan | f8a252abcf | 6 years ago |
Ul U'Kyn | 453c81bc7c | 7 years ago |
Riasan | 56f450782f | 7 years ago |
Riasan | dda9dff6ba | 7 years ago |
Riasan | e0266dedcb | 7 years ago |
Riasan | 28fd5a7265 | 7 years ago |
ulukyn | 085770a098 | 7 years ago |
ulukyn | a5f98add80 | 7 years ago |
ulukyn | bb667c736c | 7 years ago |
ulukyn | d824ff5baf | 7 years ago |
ulukyn | 6cc550732b | 7 years ago |
ulukyn | fcfb17c784 | 7 years ago |
Riasan | 22b06fdb3e | 7 years ago |
Riasan | 05baa720e9 | 7 years ago |
Riasan | 8be4abf0fe | 7 years ago |
Riasan | f47f2b4801 | 7 years ago |
Riasan | 7c8eb4b3c6 | 7 years ago |
Riasan | 146ccbbe4c | 7 years ago |
Ul U'Kyn | eaf08e863e | 7 years ago |
Riasan | 5afbc26916 | 7 years ago |
Ul U'Kyn | b5234633b4 | 7 years ago |
Riasan | c60705a297 | 7 years ago |
Ul U'Kyn | 9d4829ec54 | 7 years ago |
Ul U'Kyn | c37ef9592e | 7 years ago |
Ul U'Kyn | af3fe227c8 | 8 years ago |
Ul U'Kyn | 0e122c76ba | 8 years ago |
Nuno Gonçalves | 14c7013348 | 8 years ago |
Nuno Gonçalves | fbf0d664fc | 8 years ago |
Nuno Gonçalves | 0fd0934111 | 8 years ago |
Nuno Gonçalves | aadf864e4e | 8 years ago |
vl | f86da6ec78 | 9 years ago |
@ -1,27 +1,28 @@
|
||||
4eddbaff0c5e5d685db96ee3e8427aa0fd96ac83 v0.8.0
|
||||
00d9b6e29e95f56785fbf85abe60afd34674f402 v0.9.0
|
||||
79776c337176dd5b02e1a74fe5dfb703b91747aa v0.9.1
|
||||
fedf2aa443d09707beed814b0f499c6a5519cc84 v0.10.0
|
||||
edaa3624a56420b02ccc64c26059801a389927ee v0.11.0
|
||||
e3fe4855f22c3e75722e015dc33c091c340b3ad7 v0.11.1
|
||||
9e583b717fd63be0be9fd60b99087abf1691ea49 v0.11.2
|
||||
bfe5628e14a024ba7ea32e4b326ae433a07856b9 v0.11.3
|
||||
9a6120735daa97c96ac5d85ca35c7f21f607bd87 v0.12.0
|
||||
3e92c7104c20d6bc6c2147b4b5fc289e8621d322 v1.0.0
|
||||
8eb94c3549be898fdc4a7c6d791d2477bdc11a18 v1.0.1
|
||||
3e17907af67e8d66d80e6b714707bbf912607f2a ryzom/3.0.0
|
||||
153e0b605c9e0c83ba05b6428c62838b49cc84b2 ryzom/3.0.1
|
||||
9d41f2994d44b9aad92b83f945f114e4b6bed44a ryzom/3.0.2
|
||||
4300cc14aad098b1f86ea4c55577b7fa4a4cb5d2 ryzom/3.1.0
|
||||
d4060f217f4f834cc62a33f2f1ccdf3c28298066 ryzom/3.1.0-hotfix
|
||||
043aaeb3d8a2a54177581b57bda87a9deaad510e ryzom/3.1.0-april_patch
|
||||
4036ecf59e83960f03acebc2089eb2ff5eeaed0a ryzom/3.2.0
|
||||
18403bb9485da3d9742c6f007a16d5619ebfb196 ryzom/3.2.1
|
||||
822ff8f8917ad66e09e2c21c983282f6f693b9f6 ryzom/3.3.0
|
||||
00dde390a394fce9da06c2f3264140282158d39f ryzom/3.3.0
|
||||
dcd4c4d161ef775136e18c7e8f5072b75dede27e ryzom/3.3.1
|
||||
fc4be8ebec5ca754ef4453bc6a9faef90837c674 ryzom/3.4.0
|
||||
70eba02e8eab6920586dbabf74e9e8180c729980 ryzom/3.4.0-steam_fix
|
||||
3941482843f9cd130cfc16634efc08d34a98ed35 ryzom/3.4.0-atysmas
|
||||
ecae9feb4cceb78103e5d7236caccaf450796cdb ryzom/3.5.0
|
||||
95783afa226f241062134eb62f4323295d29ac84 ryzom/3.5.0.9637
|
||||
4eddbaff0c5e5d685db96ee3e8427aa0fd96ac83 ryzomcore/v0.8.0
|
||||
00d9b6e29e95f56785fbf85abe60afd34674f402 ryzomcore/v0.9.0
|
||||
79776c337176dd5b02e1a74fe5dfb703b91747aa ryzomcore/v0.9.1
|
||||
fedf2aa443d09707beed814b0f499c6a5519cc84 ryzomcore/v0.10.0
|
||||
edaa3624a56420b02ccc64c26059801a389927ee ryzomcore/v0.11.0
|
||||
e3fe4855f22c3e75722e015dc33c091c340b3ad7 ryzomcore/v0.11.1
|
||||
9e583b717fd63be0be9fd60b99087abf1691ea49 ryzomcore/v0.11.2
|
||||
bfe5628e14a024ba7ea32e4b326ae433a07856b9 ryzomcore/v0.11.3
|
||||
9a6120735daa97c96ac5d85ca35c7f21f607bd87 ryzomcore/v0.12.0
|
||||
3e17907af67e8d66d80e6b714707bbf912607f2a ryzom-patch-3.0.0
|
||||
153e0b605c9e0c83ba05b6428c62838b49cc84b2 ryzom-patch-3.0.1
|
||||
9d41f2994d44b9aad92b83f945f114e4b6bed44a ryzom-patch-3.0.2
|
||||
4300cc14aad098b1f86ea4c55577b7fa4a4cb5d2 ryzom-patch-3.1.0
|
||||
d4060f217f4f834cc62a33f2f1ccdf3c28298066 ryzom-patch-3.1.0-hotfix
|
||||
043aaeb3d8a2a54177581b57bda87a9deaad510e ryzom-patch-3.1.0-april_patch
|
||||
4036ecf59e83960f03acebc2089eb2ff5eeaed0a ryzom-patch-3.2.0
|
||||
18403bb9485da3d9742c6f007a16d5619ebfb196 ryzom-patch-3.2.1
|
||||
822ff8f8917ad66e09e2c21c983282f6f693b9f6 ryzom-patch-3.3.0
|
||||
00dde390a394fce9da06c2f3264140282158d39f ryzom-patch-3.3.0
|
||||
dcd4c4d161ef775136e18c7e8f5072b75dede27e ryzom-patch-3.3.1
|
||||
fc4be8ebec5ca754ef4453bc6a9faef90837c674 ryzom-patch-3.4.0
|
||||
70eba02e8eab6920586dbabf74e9e8180c729980 ryzom-patch-3.4.0 Steam Fix
|
||||
3941482843f9cd130cfc16634efc08d34a98ed35 ryzom-patch-3.4.0 Atysmas
|
||||
ecae9feb4cceb78103e5d7236caccaf450796cdb ryzom-patch-3.5.0
|
||||
95783afa226f241062134eb62f4323295d29ac84 ryzom-patch-3.5.0.9637
|
||||
2102fb276eb69d49ed4923042215312a63c47c08 Live-746
|
||||
8eb94c3549be898fdc4a7c6d791d2477bdc11a18 ryzomcore/v1.0.1
|
||||
3e92c7104c20d6bc6c2147b4b5fc289e8621d322 ryzomcore/v1.0.0
|
||||
|
@ -0,0 +1,8 @@
|
||||
# This file is parsed by HunterGate command
|
||||
|
||||
hunter_config(luabind
|
||||
VERSION 0.9.1
|
||||
URL "https://github.com/nimetu/luabind/tarball/2fa4606"
|
||||
SHA1 "3b4646bab9f0b2362d7b8d71d78e40deaf3cc747"
|
||||
)
|
||||
|
@ -0,0 +1,537 @@
|
||||
# Copyright (c) 2013-2019, Ruslan Baratov
|
||||
# All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions are met:
|
||||
#
|
||||
# * Redistributions of source code must retain the above copyright notice, this
|
||||
# list of conditions and the following disclaimer.
|
||||
#
|
||||
# * Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the following disclaimer in the documentation
|
||||
# and/or other materials provided with the distribution.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
# This is a gate file to Hunter package manager.
|
||||
# Include this file using `include` command and add package you need, example:
|
||||
#
|
||||
# cmake_minimum_required(VERSION 3.2)
|
||||
#
|
||||
# include("cmake/HunterGate.cmake")
|
||||
# HunterGate(
|
||||
# URL "https://github.com/path/to/hunter/archive.tar.gz"
|
||||
# SHA1 "798501e983f14b28b10cda16afa4de69eee1da1d"
|
||||
# )
|
||||
#
|
||||
# project(MyProject)
|
||||
#
|
||||
# hunter_add_package(Foo)
|
||||
# hunter_add_package(Boo COMPONENTS Bar Baz)
|
||||
#
|
||||
# Projects:
|
||||
# * https://github.com/hunter-packages/gate/
|
||||
# * https://github.com/ruslo/hunter
|
||||
|
||||
option(HUNTER_ENABLED "Enable Hunter package manager support" ON)
|
||||
|
||||
if(HUNTER_ENABLED)
|
||||
if(CMAKE_VERSION VERSION_LESS "3.2")
|
||||
message(
|
||||
FATAL_ERROR
|
||||
"At least CMake version 3.2 required for Hunter dependency management."
|
||||
" Update CMake or set HUNTER_ENABLED to OFF."
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
include(CMakeParseArguments) # cmake_parse_arguments
|
||||
|
||||
option(HUNTER_STATUS_PRINT "Print working status" ON)
|
||||
option(HUNTER_STATUS_DEBUG "Print a lot info" OFF)
|
||||
option(HUNTER_TLS_VERIFY "Enable/disable TLS certificate checking on downloads" ON)
|
||||
set(HUNTER_ROOT "" CACHE FILEPATH "Override the HUNTER_ROOT.")
|
||||
|
||||
set(HUNTER_ERROR_PAGE "https://hunter.readthedocs.io/en/latest/reference/errors")
|
||||
|
||||
function(hunter_gate_status_print)
|
||||
if(HUNTER_STATUS_PRINT OR HUNTER_STATUS_DEBUG)
|
||||
foreach(print_message ${ARGV})
|
||||
message(STATUS "[hunter] ${print_message}")
|
||||
endforeach()
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
function(hunter_gate_status_debug)
|
||||
if(HUNTER_STATUS_DEBUG)
|
||||
foreach(print_message ${ARGV})
|
||||
string(TIMESTAMP timestamp)
|
||||
message(STATUS "[hunter *** DEBUG *** ${timestamp}] ${print_message}")
|
||||
endforeach()
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
function(hunter_gate_error_page error_page)
|
||||
message("------------------------------ ERROR ------------------------------")
|
||||
message(" ${HUNTER_ERROR_PAGE}/${error_page}.html")
|
||||
message("-------------------------------------------------------------------")
|
||||
message("")
|
||||
message(FATAL_ERROR "")
|
||||
endfunction()
|
||||
|
||||
function(hunter_gate_internal_error)
|
||||
message("")
|
||||
foreach(print_message ${ARGV})
|
||||
message("[hunter ** INTERNAL **] ${print_message}")
|
||||
endforeach()
|
||||
message("[hunter ** INTERNAL **] [Directory:${CMAKE_CURRENT_LIST_DIR}]")
|
||||
message("")
|
||||
hunter_gate_error_page("error.internal")
|
||||
endfunction()
|
||||
|
||||
function(hunter_gate_fatal_error)
|
||||
cmake_parse_arguments(hunter "" "ERROR_PAGE" "" "${ARGV}")
|
||||
if("${hunter_ERROR_PAGE}" STREQUAL "")
|
||||
hunter_gate_internal_error("Expected ERROR_PAGE")
|
||||
endif()
|
||||
message("")
|
||||
foreach(x ${hunter_UNPARSED_ARGUMENTS})
|
||||
message("[hunter ** FATAL ERROR **] ${x}")
|
||||
endforeach()
|
||||
message("[hunter ** FATAL ERROR **] [Directory:${CMAKE_CURRENT_LIST_DIR}]")
|
||||
message("")
|
||||
hunter_gate_error_page("${hunter_ERROR_PAGE}")
|
||||
endfunction()
|
||||
|
||||
function(hunter_gate_user_error)
|
||||
hunter_gate_fatal_error(${ARGV} ERROR_PAGE "error.incorrect.input.data")
|
||||
endfunction()
|
||||
|
||||
function(hunter_gate_self root version sha1 result)
|
||||
string(COMPARE EQUAL "${root}" "" is_bad)
|
||||
if(is_bad)
|
||||
hunter_gate_internal_error("root is empty")
|
||||
endif()
|
||||
|
||||
string(COMPARE EQUAL "${version}" "" is_bad)
|
||||
if(is_bad)
|
||||
hunter_gate_internal_error("version is empty")
|
||||
endif()
|
||||
|
||||
string(COMPARE EQUAL "${sha1}" "" is_bad)
|
||||
if(is_bad)
|
||||
hunter_gate_internal_error("sha1 is empty")
|
||||
endif()
|
||||
|
||||
string(SUBSTRING "${sha1}" 0 7 archive_id)
|
||||
|
||||
if(EXISTS "${root}/cmake/Hunter")
|
||||
set(hunter_self "${root}")
|
||||
else()
|
||||
set(
|
||||
hunter_self
|
||||
"${root}/_Base/Download/Hunter/${version}/${archive_id}/Unpacked"
|
||||
)
|
||||
endif()
|
||||
|
||||
set("${result}" "${hunter_self}" PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
# Set HUNTER_GATE_ROOT cmake variable to suitable value.
|
||||
function(hunter_gate_detect_root)
|
||||
# Check CMake variable
|
||||
if(HUNTER_ROOT)
|
||||
set(HUNTER_GATE_ROOT "${HUNTER_ROOT}" PARENT_SCOPE)
|
||||
hunter_gate_status_debug("HUNTER_ROOT detected by cmake variable")
|
||||
return()
|
||||
endif()
|
||||
|
||||
# Check environment variable
|
||||
if(DEFINED ENV{HUNTER_ROOT})
|
||||
set(HUNTER_GATE_ROOT "$ENV{HUNTER_ROOT}" PARENT_SCOPE)
|
||||
hunter_gate_status_debug("HUNTER_ROOT detected by environment variable")
|
||||
return()
|
||||
endif()
|
||||
|
||||
# Check HOME environment variable
|
||||
if(DEFINED ENV{HOME})
|
||||
set(HUNTER_GATE_ROOT "$ENV{HOME}/.hunter" PARENT_SCOPE)
|
||||
hunter_gate_status_debug("HUNTER_ROOT set using HOME environment variable")
|
||||
return()
|
||||
endif()
|
||||
|
||||
# Check SYSTEMDRIVE and USERPROFILE environment variable (windows only)
|
||||
if(WIN32)
|
||||
if(DEFINED ENV{SYSTEMDRIVE})
|
||||
set(HUNTER_GATE_ROOT "$ENV{SYSTEMDRIVE}/.hunter" PARENT_SCOPE)
|
||||
hunter_gate_status_debug(
|
||||
"HUNTER_ROOT set using SYSTEMDRIVE environment variable"
|
||||
)
|
||||
return()
|
||||
endif()
|
||||
|
||||
if(DEFINED ENV{USERPROFILE})
|
||||
set(HUNTER_GATE_ROOT "$ENV{USERPROFILE}/.hunter" PARENT_SCOPE)
|
||||
hunter_gate_status_debug(
|
||||
"HUNTER_ROOT set using USERPROFILE environment variable"
|
||||
)
|
||||
return()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
hunter_gate_fatal_error(
|
||||
"Can't detect HUNTER_ROOT"
|
||||
ERROR_PAGE "error.detect.hunter.root"
|
||||
)
|
||||
endfunction()
|
||||
|
||||
function(hunter_gate_download dir)
|
||||
string(
|
||||
COMPARE
|
||||
NOTEQUAL
|
||||
"$ENV{HUNTER_DISABLE_AUTOINSTALL}"
|
||||
""
|
||||
disable_autoinstall
|
||||
)
|
||||
if(disable_autoinstall AND NOT HUNTER_RUN_INSTALL)
|
||||
hunter_gate_fatal_error(
|
||||
"Hunter not found in '${dir}'"
|
||||
"Set HUNTER_RUN_INSTALL=ON to auto-install it from '${HUNTER_GATE_URL}'"
|
||||
"Settings:"
|
||||
" HUNTER_ROOT: ${HUNTER_GATE_ROOT}"
|
||||
" HUNTER_SHA1: ${HUNTER_GATE_SHA1}"
|
||||
ERROR_PAGE "error.run.install"
|
||||
)
|
||||
endif()
|
||||
string(COMPARE EQUAL "${dir}" "" is_bad)
|
||||
if(is_bad)
|
||||
hunter_gate_internal_error("Empty 'dir' argument")
|
||||
endif()
|
||||
|
||||
string(COMPARE EQUAL "${HUNTER_GATE_SHA1}" "" is_bad)
|
||||
if(is_bad)
|
||||
hunter_gate_internal_error("HUNTER_GATE_SHA1 empty")
|
||||
endif()
|
||||
|
||||
string(COMPARE EQUAL "${HUNTER_GATE_URL}" "" is_bad)
|
||||
if(is_bad)
|
||||
hunter_gate_internal_error("HUNTER_GATE_URL empty")
|
||||
endif()
|
||||
|
||||
set(done_location "${dir}/DONE")
|
||||
set(sha1_location "${dir}/SHA1")
|
||||
|
||||
set(build_dir "${dir}/Build")
|
||||
set(cmakelists "${dir}/CMakeLists.txt")
|
||||
|
||||
hunter_gate_status_debug("Locking directory: ${dir}")
|
||||
file(LOCK "${dir}" DIRECTORY GUARD FUNCTION)
|
||||
hunter_gate_status_debug("Lock done")
|
||||
|
||||
if(EXISTS "${done_location}")
|
||||
# while waiting for lock other instance can do all the job
|
||||
hunter_gate_status_debug("File '${done_location}' found, skip install")
|
||||
return()
|
||||
endif()
|
||||
|
||||
file(REMOVE_RECURSE "${build_dir}")
|
||||
file(REMOVE_RECURSE "${cmakelists}")
|
||||
|
||||
file(MAKE_DIRECTORY "${build_dir}") # check directory permissions
|
||||
|
||||
# Disabling languages speeds up a little bit, reduces noise in the output
|
||||
# and avoids path too long windows error
|
||||
file(
|
||||
WRITE
|
||||
"${cmakelists}"
|
||||
"cmake_minimum_required(VERSION 3.2)\n"
|
||||
"project(HunterDownload LANGUAGES NONE)\n"
|
||||
"include(ExternalProject)\n"
|
||||
"ExternalProject_Add(\n"
|
||||
" Hunter\n"
|
||||
" URL\n"
|
||||
" \"${HUNTER_GATE_URL}\"\n"
|
||||
" URL_HASH\n"
|
||||
" SHA1=${HUNTER_GATE_SHA1}\n"
|
||||
" DOWNLOAD_DIR\n"
|
||||
" \"${dir}\"\n"
|
||||
" TLS_VERIFY\n"
|
||||
" ${HUNTER_TLS_VERIFY}\n"
|
||||
" SOURCE_DIR\n"
|
||||
" \"${dir}/Unpacked\"\n"
|
||||
" CONFIGURE_COMMAND\n"
|
||||
" \"\"\n"
|
||||
" BUILD_COMMAND\n"
|
||||
" \"\"\n"
|
||||
" INSTALL_COMMAND\n"
|
||||
" \"\"\n"
|
||||
")\n"
|
||||
)
|
||||
|
||||
if(HUNTER_STATUS_DEBUG)
|
||||
set(logging_params "")
|
||||
else()
|
||||
set(logging_params OUTPUT_QUIET)
|
||||
endif()
|
||||
|
||||
hunter_gate_status_debug("Run generate")
|
||||
|
||||
# Need to add toolchain file too.
|
||||
# Otherwise on Visual Studio + MDD this will fail with error:
|
||||
# "Could not find an appropriate version of the Windows 10 SDK installed on this machine"
|
||||
if(EXISTS "${CMAKE_TOOLCHAIN_FILE}")
|
||||
get_filename_component(absolute_CMAKE_TOOLCHAIN_FILE "${CMAKE_TOOLCHAIN_FILE}" ABSOLUTE)
|
||||
set(toolchain_arg "-DCMAKE_TOOLCHAIN_FILE=${absolute_CMAKE_TOOLCHAIN_FILE}")
|
||||
else()
|
||||
# 'toolchain_arg' can't be empty
|
||||
set(toolchain_arg "-DCMAKE_TOOLCHAIN_FILE=")
|
||||
endif()
|
||||
|
||||
string(COMPARE EQUAL "${CMAKE_MAKE_PROGRAM}" "" no_make)
|
||||
if(no_make)
|
||||
set(make_arg "")
|
||||
else()
|
||||
# Test case: remove Ninja from PATH but set it via CMAKE_MAKE_PROGRAM
|
||||
set(make_arg "-DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM}")
|
||||
endif()
|
||||
|
||||
execute_process(
|
||||
COMMAND
|
||||
"${CMAKE_COMMAND}"
|
||||
"-H${dir}"
|
||||
"-B${build_dir}"
|
||||
"-G${CMAKE_GENERATOR}"
|
||||
"${toolchain_arg}"
|
||||
${make_arg}
|
||||
WORKING_DIRECTORY "${dir}"
|
||||
RESULT_VARIABLE download_result
|
||||
${logging_params}
|
||||
)
|
||||
|
||||
if(NOT download_result EQUAL 0)
|
||||
hunter_gate_internal_error(
|
||||
"Configure project failed."
|
||||
"To reproduce the error run: ${CMAKE_COMMAND} -H${dir} -B${build_dir} -G${CMAKE_GENERATOR} ${toolchain_arg} ${make_arg}"
|
||||
"In directory ${dir}"
|
||||
)
|
||||
endif()
|
||||
|
||||
hunter_gate_status_print(
|
||||
"Initializing Hunter workspace (${HUNTER_GATE_SHA1})"
|
||||
" ${HUNTER_GATE_URL}"
|
||||
" -> ${dir}"
|
||||
)
|
||||
execute_process(
|
||||
COMMAND "${CMAKE_COMMAND}" --build "${build_dir}"
|
||||
WORKING_DIRECTORY "${dir}"
|
||||
RESULT_VARIABLE download_result
|
||||
${logging_params}
|
||||
)
|
||||
|
||||
if(NOT download_result EQUAL 0)
|
||||
hunter_gate_internal_error("Build project failed")
|
||||
endif()
|
||||
|
||||
file(REMOVE_RECURSE "${build_dir}")
|
||||
file(REMOVE_RECURSE "${cmakelists}")
|
||||
|
||||
file(WRITE "${sha1_location}" "${HUNTER_GATE_SHA1}")
|
||||
file(WRITE "${done_location}" "DONE")
|
||||
|
||||
hunter_gate_status_debug("Finished")
|
||||
endfunction()
|
||||
|
||||
# Must be a macro so master file 'cmake/Hunter' can
|
||||
# apply all variables easily just by 'include' command
|
||||
# (otherwise PARENT_SCOPE magic needed)
|
||||
macro(HunterGate)
|
||||
if(HUNTER_GATE_DONE)
|
||||
# variable HUNTER_GATE_DONE set explicitly for external project
|
||||
# (see `hunter_download`)
|
||||
set_property(GLOBAL PROPERTY HUNTER_GATE_DONE YES)
|
||||
endif()
|
||||
|
||||
# First HunterGate command will init Hunter, others will be ignored
|
||||
get_property(_hunter_gate_done GLOBAL PROPERTY HUNTER_GATE_DONE SET)
|
||||
|
||||
if(NOT HUNTER_ENABLED)
|
||||
# Empty function to avoid error "unknown function"
|
||||
function(hunter_add_package)
|
||||
endfunction()
|
||||
|
||||
set(
|
||||
_hunter_gate_disabled_mode_dir
|
||||
"${CMAKE_CURRENT_LIST_DIR}/cmake/Hunter/disabled-mode"
|
||||
)
|
||||
if(EXISTS "${_hunter_gate_disabled_mode_dir}")
|
||||
hunter_gate_status_debug(
|
||||
"Adding \"disabled-mode\" modules: ${_hunter_gate_disabled_mode_dir}"
|
||||
)
|
||||
list(APPEND CMAKE_PREFIX_PATH "${_hunter_gate_disabled_mode_dir}")
|
||||
endif()
|
||||
elseif(_hunter_gate_done)
|
||||
hunter_gate_status_debug("Secondary HunterGate (use old settings)")
|
||||
hunter_gate_self(
|
||||
"${HUNTER_CACHED_ROOT}"
|
||||
"${HUNTER_VERSION}"
|
||||
"${HUNTER_SHA1}"
|
||||
_hunter_self
|
||||
)
|
||||
include("${_hunter_self}/cmake/Hunter")
|
||||
else()
|
||||
set(HUNTER_GATE_LOCATION "${CMAKE_CURRENT_SOURCE_DIR}")
|
||||
|
||||
string(COMPARE NOTEQUAL "${PROJECT_NAME}" "" _have_project_name)
|
||||
if(_have_project_name)
|
||||
hunter_gate_fatal_error(
|
||||
"Please set HunterGate *before* 'project' command. "
|
||||
"Detected project: ${PROJECT_NAME}"
|
||||
ERROR_PAGE "error.huntergate.before.project"
|
||||
)
|
||||
endif()
|
||||
|
||||
cmake_parse_arguments(
|
||||
HUNTER_GATE "LOCAL" "URL;SHA1;GLOBAL;FILEPATH" "" ${ARGV}
|
||||
)
|
||||
|
||||
string(COMPARE EQUAL "${HUNTER_GATE_SHA1}" "" _empty_sha1)
|
||||
string(COMPARE EQUAL "${HUNTER_GATE_URL}" "" _empty_url)
|
||||
string(
|
||||
COMPARE
|
||||
NOTEQUAL
|
||||
"${HUNTER_GATE_UNPARSED_ARGUMENTS}"
|
||||
""
|
||||
_have_unparsed
|
||||
)
|
||||
string(COMPARE NOTEQUAL "${HUNTER_GATE_GLOBAL}" "" _have_global)
|
||||
string(COMPARE NOTEQUAL "${HUNTER_GATE_FILEPATH}" "" _have_filepath)
|
||||
|
||||
if(_have_unparsed)
|
||||
hunter_gate_user_error(
|
||||
"HunterGate unparsed arguments: ${HUNTER_GATE_UNPARSED_ARGUMENTS}"
|
||||
)
|
||||
endif()
|
||||
if(_empty_sha1)
|
||||
hunter_gate_user_error("SHA1 suboption of HunterGate is mandatory")
|
||||
endif()
|
||||
if(_empty_url)
|
||||
hunter_gate_user_error("URL suboption of HunterGate is mandatory")
|
||||
endif()
|
||||
if(_have_global)
|
||||
if(HUNTER_GATE_LOCAL)
|
||||
hunter_gate_user_error("Unexpected LOCAL (already has GLOBAL)")
|
||||
endif()
|
||||
if(_have_filepath)
|
||||
hunter_gate_user_error("Unexpected FILEPATH (already has GLOBAL)")
|
||||
endif()
|
||||
endif()
|
||||
if(HUNTER_GATE_LOCAL)
|
||||
if(_have_global)
|
||||
hunter_gate_user_error("Unexpected GLOBAL (already has LOCAL)")
|
||||
endif()
|
||||
if(_have_filepath)
|
||||
hunter_gate_user_error("Unexpected FILEPATH (already has LOCAL)")
|
||||
endif()
|
||||
endif()
|
||||
if(_have_filepath)
|
||||
if(_have_global)
|
||||
hunter_gate_user_error("Unexpected GLOBAL (already has FILEPATH)")
|
||||
endif()
|
||||
if(HUNTER_GATE_LOCAL)
|
||||
hunter_gate_user_error("Unexpected LOCAL (already has FILEPATH)")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
hunter_gate_detect_root() # set HUNTER_GATE_ROOT
|
||||
|
||||
# Beautify path, fix probable problems with windows path slashes
|
||||
get_filename_component(
|
||||
HUNTER_GATE_ROOT "${HUNTER_GATE_ROOT}" ABSOLUTE
|
||||
)
|
||||
hunter_gate_status_debug("HUNTER_ROOT: ${HUNTER_GATE_ROOT}")
|
||||
if(NOT HUNTER_ALLOW_SPACES_IN_PATH)
|
||||
string(FIND "${HUNTER_GATE_ROOT}" " " _contain_spaces)
|
||||
if(NOT _contain_spaces EQUAL -1)
|
||||
hunter_gate_fatal_error(
|
||||
"HUNTER_ROOT (${HUNTER_GATE_ROOT}) contains spaces."
|
||||
"Set HUNTER_ALLOW_SPACES_IN_PATH=ON to skip this error"
|
||||
"(Use at your own risk!)"
|
||||
ERROR_PAGE "error.spaces.in.hunter.root"
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
string(
|
||||
REGEX
|
||||
MATCH
|
||||
"[0-9]+\\.[0-9]+\\.[0-9]+[-_a-z0-9]*"
|
||||
HUNTER_GATE_VERSION
|
||||
"${HUNTER_GATE_URL}"
|
||||
)
|
||||
string(COMPARE EQUAL "${HUNTER_GATE_VERSION}" "" _is_empty)
|
||||
if(_is_empty)
|
||||
set(HUNTER_GATE_VERSION "unknown")
|
||||
endif()
|
||||
|
||||
hunter_gate_self(
|
||||
"${HUNTER_GATE_ROOT}"
|
||||
"${HUNTER_GATE_VERSION}"
|
||||
"${HUNTER_GATE_SHA1}"
|
||||
_hunter_self
|
||||
)
|
||||
|
||||
set(_master_location "${_hunter_self}/cmake/Hunter")
|
||||
if(EXISTS "${HUNTER_GATE_ROOT}/cmake/Hunter")
|
||||
# Hunter downloaded manually (e.g. by 'git clone')
|
||||
set(_unused "xxxxxxxxxx")
|
||||
set(HUNTER_GATE_SHA1 "${_unused}")
|
||||
set(HUNTER_GATE_VERSION "${_unused}")
|
||||
else()
|
||||
get_filename_component(_archive_id_location "${_hunter_self}/.." ABSOLUTE)
|
||||
set(_done_location "${_archive_id_location}/DONE")
|
||||
set(_sha1_location "${_archive_id_location}/SHA1")
|
||||
|
||||
# Check Hunter already downloaded by HunterGate
|
||||
if(NOT EXISTS "${_done_location}")
|
||||
hunter_gate_download("${_archive_id_location}")
|
||||
endif()
|
||||
|
||||
if(NOT EXISTS "${_done_location}")
|
||||
hunter_gate_internal_error("hunter_gate_download failed")
|
||||
endif()
|
||||
|
||||
if(NOT EXISTS "${_sha1_location}")
|
||||
hunter_gate_internal_error("${_sha1_location} not found")
|
||||
endif()
|
||||
file(READ "${_sha1_location}" _sha1_value)
|
||||
string(TOLOWER "${_sha1_value}" _sha1_value_lower)
|
||||
string(TOLOWER "${HUNTER_GATE_SHA1}" _HUNTER_GATE_SHA1_lower)
|
||||
string(COMPARE EQUAL "${_sha1_value_lower}" "${_HUNTER_GATE_SHA1_lower}" _is_equal)
|
||||
if(NOT _is_equal)
|
||||
hunter_gate_internal_error(
|
||||
"Short SHA1 collision:"
|
||||
" ${_sha1_value} (from ${_sha1_location})"
|
||||
" ${HUNTER_GATE_SHA1} (HunterGate)"
|
||||
)
|
||||
endif()
|
||||
if(NOT EXISTS "${_master_location}")
|
||||
hunter_gate_user_error(
|
||||
"Master file not found:"
|
||||
" ${_master_location}"
|
||||
"try to update Hunter/HunterGate"
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
include("${_master_location}")
|
||||
set_property(GLOBAL PROPERTY HUNTER_GATE_DONE YES)
|
||||
endif()
|
||||
endmacro()
|
@ -0,0 +1,83 @@
|
||||
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
|
||||
// Copyright (C) 2010-2019 Winch Gate Property Limited
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU Affero General Public License as
|
||||
// published by the Free Software Foundation, either version 3 of the
|
||||
// License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU Affero General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Affero General Public License
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
#ifndef CL_CSS_BACKGROUND_H
|
||||
#define CL_CSS_BACKGROUND_H
|
||||
|
||||
#include "nel/misc/types_nl.h"
|
||||
#include "nel/misc/rgba.h"
|
||||
#include "nel/gui/css_types.h"
|
||||
#include "nel/gui/css_length.h"
|
||||
|
||||
namespace NLGUI
|
||||
{
|
||||
/**
|
||||
* \brief CSS background info
|
||||
* \date 2021-07-02 11:36 GMT
|
||||
* \author Meelis Mägi (Nimetu)
|
||||
*/
|
||||
class CSSBackground
|
||||
{
|
||||
public:
|
||||
CSSBackground()
|
||||
:color(NLMISC::CRGBA::Transparent),
|
||||
repeatX(CSS_VALUE_REPEAT), repeatY(CSS_VALUE_REPEAT), attachment(CSS_VALUE_SCROLL),
|
||||
xAnchor(CSS_VALUE_LEFT), yAnchor(CSS_VALUE_TOP),
|
||||
clip(CSS_VALUE_BORDER_BOX), origin(CSS_VALUE_PADDING_BOX), size(CSS_VALUE_AUTO)
|
||||
{}
|
||||
|
||||
void setImage(const std::string &value);
|
||||
void setPosition(const std::string &value);
|
||||
void setSize(const std::string &value);
|
||||
void setRepeat(const std::string &value);
|
||||
void setOrigin(const std::string &value);
|
||||
void setClip(const std::string &value);
|
||||
void setAttachment(const std::string &value);
|
||||
void setColor(const std::string &value);
|
||||
|
||||
public:
|
||||
// TODO: only final layer has color
|
||||
NLMISC::CRGBA color;
|
||||
std::string image;
|
||||
|
||||
CSSValueType repeatX;
|
||||
CSSValueType repeatY;
|
||||
CSSValueType attachment;
|
||||
|
||||
CSSValueType xAnchor;
|
||||
CSSValueType yAnchor;
|
||||
CSSLength xPosition;
|
||||
CSSLength yPosition;
|
||||
|
||||
CSSValueType clip;
|
||||
CSSValueType origin;
|
||||
|
||||
CSSValueType size;
|
||||
CSSLength width;
|
||||
CSSLength height;
|
||||
|
||||
private:
|
||||
void positionFromOne(const std::vector<std::string> &parts);
|
||||
void positionFromTwo(const std::vector<std::string> &parts);
|
||||
void positionFromThree(const std::vector<std::string> &parts);
|
||||
void positionFromFour(const std::vector<std::string> &parts);
|
||||
};
|
||||
|
||||
}//namespace
|
||||
|
||||
#endif // CL_CSS_BACKGROUND_H
|
||||
|
||||
|
@ -0,0 +1,193 @@
|
||||
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
|
||||
// Copyright (C) 2010-2019 Winch Gate Property Limited
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU Affero General Public License as
|
||||
// published by the Free Software Foundation, either version 3 of the
|
||||
// License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU Affero General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Affero General Public License
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
|
||||
#ifndef NL_CSS_BACKGROUND_RENDERER_H
|
||||
#define NL_CSS_BACKGROUND_RENDERER_H
|
||||
|
||||
#include "nel/misc/types_nl.h"
|
||||
#include "nel/misc/rgba.h"
|
||||
#include "nel/misc/geom_ext.h"
|
||||
#include "nel/gui/css_types.h"
|
||||
#include "nel/gui/css_background.h"
|
||||
|
||||
namespace NLGUI
|
||||
{
|
||||
class CInterfaceElement;
|
||||
|
||||
/**
|
||||
* \brief Border renderer for GUI classes
|
||||
* \date 2021-06-29 15:17 GMT
|
||||
* \author Meelis Mägi (Nimetu)
|
||||
*/
|
||||
class CSSBackgroundRenderer
|
||||
{
|
||||
public:
|
||||
// alpha value from parent
|
||||
uint8 CurrentAlpha;
|
||||
|
||||
// TODO: should be moved to CSSBackground
|
||||
sint32 TextureId;
|
||||
|
||||
public:
|
||||
CSSBackgroundRenderer();
|
||||
~CSSBackgroundRenderer();
|
||||
|
||||
// return true if no background is set
|
||||
bool isEmpty() const
|
||||
{
|
||||
return m_Background.image.empty() && m_Background.color.A == 0;
|
||||
}
|
||||
|
||||
void setModulateGlobalColor(bool m) { m_ModulateGlobalColor = m; }
|
||||
|
||||
void updateCoords();
|
||||
void invalidateCoords() { m_Dirty = true; }
|
||||
void invalidateContent() { m_Dirty = true; };
|
||||
|
||||
void clear();
|
||||
void setBackground(const CSSBackground &bg);
|
||||
|
||||
// helper function to change background image
|
||||
void setImage(const std::string &bgtex);
|
||||
void setImageRepeat(bool b);
|
||||
void setImageCover(bool b);
|
||||
|
||||
// helper function to change background color
|
||||
void setColor(const NLMISC::CRGBA &color)
|
||||
{
|
||||
m_Dirty = true;
|
||||
m_Background.color = color;
|
||||
}
|
||||
|
||||
NLMISC::CRGBA getColor() const
|
||||
{
|
||||
return m_Background.color;
|
||||
}
|
||||
|
||||
// override painting area to be at least the size of viewport (ie, <html> background)
|
||||
void setFillViewport(bool b) {
|
||||
m_Dirty = true;
|
||||
m_FillViewport = b;
|
||||
}
|
||||
|
||||
void setViewport(CInterfaceElement *root)
|
||||
{
|
||||
m_Dirty = true;
|
||||
m_Viewport = root;
|
||||
}
|
||||
|
||||
void setBorderArea(sint32 x, sint32 y, sint32 w, sint32 h)
|
||||
{
|
||||
m_Dirty = true;
|
||||
m_BorderX = x;
|
||||
m_BorderY = y;
|
||||
m_BorderW = w;
|
||||
m_BorderH = h;
|
||||
}
|
||||
|
||||
void setPaddingArea(sint32 x, sint32 y, sint32 w, sint32 h)
|
||||
{
|
||||
m_Dirty = true;
|
||||
m_PaddingX = x;
|
||||
m_PaddingY = y;
|
||||
m_PaddingW = w;
|
||||
m_PaddingH = h;
|
||||
}
|
||||
|
||||
void setContentArea(sint32 x, sint32 y, sint32 w, sint32 h)
|
||||
{
|
||||
m_Dirty = true;
|
||||
m_ContentX = x;
|
||||
m_ContentY = y;
|
||||
m_ContentW = w;
|
||||
m_ContentH = h;
|
||||
}
|
||||
|
||||
// sizes for em, rem units
|
||||
void setFontSize(float rootFontSize, float fontSize)
|
||||
{
|
||||
m_Dirty = true;
|
||||
m_RootFontSize = rootFontSize;
|
||||
m_FontSize = fontSize;
|
||||
}
|
||||
|
||||
void draw();
|
||||
|
||||
private:
|
||||
sint32 m_BorderX, m_BorderY, m_BorderW, m_BorderH;
|
||||
sint32 m_PaddingX, m_PaddingY, m_PaddingW, m_PaddingH;
|
||||
sint32 m_ContentX, m_ContentY, m_ContentW, m_ContentH;
|
||||
|
||||
// font size for 'rem'
|
||||
float m_RootFontSize;
|
||||
|
||||
// font size for 'em'
|
||||
float m_FontSize;
|
||||
|
||||
// viewport element for vw,wh,vmin,vmax
|
||||
CInterfaceElement* m_Viewport;
|
||||
|
||||
struct SDrawQueue
|
||||
{
|
||||
sint32 TextureId;
|
||||
NLMISC::CQuadUV Quad;
|
||||
NLMISC::CRGBA Color;
|
||||
};
|
||||
std::vector<SDrawQueue> m_DrawQueue;
|
||||
|
||||
const sint8 m_RenderLayer;
|
||||
bool m_ModulateGlobalColor;
|
||||
// if true, painting area returns area at least the size of viewport (ie, <html> background)
|
||||
bool m_FillViewport;
|
||||
|
||||
// if true, then updateCoords() is called from draw()
|
||||
bool m_Dirty;
|
||||
|
||||
CSSBackground m_Background;
|
||||
|
||||
// get clip area based on background-clip
|
||||
void getPaintingArea(const CSSBackground &bg, sint32 &areaX, sint32 &areaY, sint32 &areaW, sint32 &areaH) const;
|
||||
|
||||
// get positioning area based on background-origin
|
||||
void getPositioningArea(const CSSBackground &bg, sint32 &areaX, sint32 &areaY, sint32 &areaW, sint32 &areaH) const;
|
||||
|
||||
// calculate image size based on background-size
|
||||
void calculateSize(const CSSBackground &bg, sint32 &texW, sint32 &texH) const;
|
||||
|
||||
// calculate image position based on background-position
|
||||
void calculatePosition(const CSSBackground &bg, sint32 &texX, sint32 &texY, sint32 &texW, sint32 &texH) const;
|
||||
|
||||
// calculate image tile position, size, count, and spacing based on background-repeat
|
||||
void calculateTiles(const CSSBackground &bg, sint32 &texX, sint32 &texY, sint32 &texW, sint32 &texH, sint32 &tilesX, sint32 &tilesY, sint32 &spacingX, sint32 &spacingY) const;
|
||||
|
||||
// position, size, and count for first tile to cover an area
|
||||
void getImageTile(sint32 &tilePos, sint32 &tileSize, sint32 &spacing, sint32 &tiles, sint32 areaPos, sint32 areaSize, CSSValueType repeat) const;
|
||||
|
||||
// push background color to draw queue
|
||||
void buildColorQuads(const CSSBackground &bg);
|
||||
|
||||
// push background image to draw quque
|
||||
void buildImageQuads(const CSSBackground &bg, sint32 textureId);
|
||||
|
||||
}; // CSSBackgroundRenderer
|
||||
|
||||
}//namespace
|
||||
|
||||
#endif // NL_CSS_BACKGROUND_RENDERER_H
|
||||
|
||||
|
@ -0,0 +1,72 @@
|
||||
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
|
||||
// Copyright (C) 2010-2019 Winch Gate Property Limited
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU Affero General Public License as
|
||||
// published by the Free Software Foundation, either version 3 of the
|
||||
// License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU Affero General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Affero General Public License
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
#ifndef CL_CSS_BORDER_H
|
||||
#define CL_CSS_BORDER_H
|
||||
|
||||
#include "nel/misc/types_nl.h"
|
||||
#include "nel/misc/rgba.h"
|
||||
#include "nel/gui/css_types.h"
|
||||
#include "nel/gui/css_length.h"
|
||||
|
||||
namespace NLGUI
|
||||
{
|
||||
/**
|
||||
* \brief CSS border info
|
||||
* \date 2021-07-23 09:51 GMT
|
||||
* \author Meelis Mägi (Nimetu)
|
||||
*/
|
||||
class CSSBorder
|
||||
{
|
||||
public:
|
||||
CSSBorder()
|
||||
{
|
||||
reset();
|
||||
}
|
||||
|
||||
CSSBorder(uint width, CSSLineStyle style, NLMISC::CRGBA color)
|
||||
{
|
||||
set(width, style, color);
|
||||
}
|
||||
|
||||
void reset()
|
||||
{
|
||||
set(CSS_LINE_WIDTH_MEDIUM, CSS_LINE_STYLE_NONE, NLMISC::CRGBA::Transparent);
|
||||
}
|
||||
|
||||
void set(uint width, CSSLineStyle style, NLMISC::CRGBA color)
|
||||
{
|
||||
Width.setFloatValue(width, "px");
|
||||
Style = style;
|
||||
Color = color;
|
||||
}
|
||||
|
||||
bool empty() const
|
||||
{
|
||||
return Style == CSS_LINE_STYLE_NONE || Style == CSS_LINE_STYLE_HIDDEN
|
||||
|| Width.getFloat() == 0;
|
||||
}
|
||||
|
||||
CSSLength Width;
|
||||
CSSLineStyle Style;
|
||||
NLMISC::CRGBA Color;
|
||||
};
|
||||
|
||||
}//namespace
|
||||
|
||||
#endif // CL_CSS_BORDER_H
|
||||
|
||||
|
@ -0,0 +1,76 @@
|
||||
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
|
||||
// Copyright (C) 2010-2021 Winch Gate Property Limited
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU Affero General Public License as
|
||||
// published by the Free Software Foundation, either version 3 of the
|
||||
// License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU Affero General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Affero General Public License
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
#ifndef CL_CSS_LENGTH_H
|
||||
#define CL_CSS_LENGTH_H
|
||||
|
||||
#include "nel/misc/types_nl.h"
|
||||
#include "nel/gui/css_types.h"
|
||||
|
||||
namespace NLGUI
|
||||
{
|
||||
/**
|
||||
* \brief CSS types used in GUI classes
|
||||
* \date 2021-07-02 11:36 GMT
|
||||
* \author Meelis Mägi (Nimetu)
|
||||
*/
|
||||
|
||||
class CSSLength
|
||||
{
|
||||
public:
|
||||
enum Kind {
|
||||
Auto, Relative, Fixed
|
||||
};
|
||||
|
||||
CSSLength(float value = 0, CSSUnitType unit = CSS_UNIT_NONE, Kind kind = Auto)
|
||||
: m_Value(value), m_Unit(unit), m_Kind(Auto)
|
||||
{}
|
||||
|
||||
void setAuto() { m_Kind = Auto; }
|
||||
bool parseValue(const std::string &value, bool allowPercent = true, bool allowNegative = false);
|
||||
void setFloatValue(float f, const std::string &unit);
|
||||
|
||||
float getValue() const;
|
||||
float getFloat() const { return m_Value; }
|
||||
|
||||
bool isPercent() const { return m_Unit == CSS_UNIT_PERCENT; }
|
||||
|
||||
bool isAuto() const { return m_Kind == Auto; }
|
||||
bool isRelative() const { return m_Kind == Relative; }
|
||||
|
||||
// % uses relValue
|
||||
// em uses emSize
|
||||
// rem uses remSize
|
||||
// vw,vh,vi,vb,vmin,vmax uses vwSize/vhSize
|
||||
float calculate(uint32 relValue, uint32 emSize, uint32 remSize, uint32 vwSize, uint32 whSize) const;
|
||||
|
||||
CSSUnitType getUnit() const { return m_Unit; }
|
||||
|
||||
std::string toString() const;
|
||||
|
||||
private:
|
||||
void setUnit(const std::string &unit);
|
||||
|
||||
float m_Value;
|
||||
CSSUnitType m_Unit;
|
||||
Kind m_Kind;
|
||||
};
|
||||
|
||||
}//namespace
|
||||
|
||||
#endif // CL_CSS_LENGTH_H
|
||||
|
||||
|
@ -0,0 +1,427 @@
|
||||
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
|
||||
// Copyright (C) 2010-2021 Winch Gate Property Limited
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU Affero General Public License as
|
||||
// published by the Free Software Foundation, either version 3 of the
|
||||
// License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU Affero General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Affero General Public License
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
#include "stdpch.h"
|
||||
|
||||
#include <string>
|
||||
#include "nel/gui/libwww.h"
|
||||
#include "nel/gui/css_length.h"
|
||||
#include "nel/gui/css_background.h"
|
||||
|
||||
using namespace NLMISC;
|
||||
|
||||
#ifdef DEBUG_NEW
|
||||
#define new DEBUG_NEW
|
||||
#endif
|
||||
|
||||
namespace NLGUI
|
||||
{
|
||||
|
||||
void CSSBackground::setImage(const std::string &value)
|
||||
{
|
||||
image = value;
|
||||
}
|
||||
|
||||
void CSSBackground::setPosition(const std::string &value)
|
||||
{
|
||||
std::vector<std::string> parts;
|
||||
splitString(toLowerAscii(value), " ", parts);
|
||||
|
||||
if (parts.empty() || parts.size() > 4)
|
||||
return;
|
||||
|
||||
switch(parts.size())
|
||||
{
|
||||
case 1:
|
||||
positionFromOne(parts);
|
||||
break;
|
||||
case 2:
|
||||
positionFromTwo(parts);
|
||||
break;
|
||||
case 3:
|
||||
positionFromThree(parts);
|
||||
break;
|
||||
case 4:
|
||||
positionFromFour(parts);
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void CSSBackground::setSize(const std::string &value)
|
||||
{
|
||||
std::vector<std::string> parts;
|
||||
splitString(toLowerAscii(value), " ", parts);
|
||||
if (parts.size() > 2)
|
||||
return;
|
||||
|
||||
if (parts.size() == 1 && (parts[0] == "cover" || parts[0] == "contain"))
|
||||
{
|
||||
if (parts[0] == "cover")
|
||||
size = CSS_VALUE_COVER;
|
||||
else
|
||||
size = CSS_VALUE_CONTAIN;
|
||||
|
||||
width.setAuto();
|
||||
height.setAuto();
|
||||
return;
|
||||
}
|
||||
|
||||
// height will default to 'auto' if not set
|
||||
if (parts.size() == 1)
|
||||
parts.push_back("auto");
|
||||
|
||||
if (parts[0] == "auto" && parts[1] == "auto")
|
||||
{
|
||||
size = CSS_VALUE_AUTO;
|
||||
width.setAuto();
|
||||
height.setAuto();
|
||||
return;
|
||||
}
|
||||
|
||||
CSSLength newW, newH;
|
||||
bool success = true;
|
||||
if (parts[0] == "auto")
|
||||
{
|
||||
newW.setAuto();
|
||||
}
|
||||
else
|
||||
{
|
||||
float fval;
|
||||
std::string unit;
|
||||
if (!getCssLength(fval, unit, parts[0]))
|
||||
{
|
||||
nlwarning("Failed to parse background-size[0] '%s'", parts[0].c_str());
|
||||
return;
|
||||
}
|
||||
newW.setFloatValue(fval, unit);
|
||||
}
|
||||
|
||||
if (parts[1] == "auto")
|
||||
{
|
||||
newH.setAuto();
|
||||
}
|
||||
else
|
||||
{
|
||||
float fval;
|
||||
std::string unit;
|
||||
if (!getCssLength(fval, unit, parts[1]))
|
||||
{
|
||||
nlwarning("Failed to parse background-size[1] '%s'", parts[1].c_str());
|
||||
return;
|
||||
}
|
||||
newH.setFloatValue(fval, unit);
|
||||
}
|
||||
|
||||
size = CSS_VALUE_LENGTH;
|
||||
width = newW;
|
||||
height = newH;
|
||||
}
|
||||
|
||||
void CSSBackground::setRepeat(const std::string &value)
|
||||
{
|
||||
std::vector<std::string> parts;
|
||||
splitString(toLowerAscii(value), " ", parts);
|
||||
if (parts.size() == 0 || parts.size() > 2)
|
||||
return;
|
||||
|
||||
if (parts.size() == 1)
|
||||
{
|
||||
if (parts[0] == "repeat-x")
|
||||
parts.push_back("no-repeat");
|
||||
else if (parts[0] == "repeat-y")
|
||||
parts.insert(parts.begin(), "no-repeat");
|
||||
else //repeat, space, round, no-repeat
|
||||
parts.push_back(parts[0]);
|
||||
}
|
||||
|
||||
|
||||
if (parts[0] == "repeat") repeatX = CSS_VALUE_REPEAT;
|
||||
else if (parts[0] == "no-repeat") repeatX = CSS_VALUE_NOREPEAT;
|
||||
else if (parts[0] == "space") repeatX = CSS_VALUE_SPACE;
|
||||
else if (parts[0] == "round") repeatX = CSS_VALUE_ROUND;
|
||||
else repeatX = CSS_VALUE_REPEAT;
|
||||
|
||||
if (parts[1] == "repeat") repeatY = CSS_VALUE_REPEAT;
|
||||
else if (parts[1] == "no-repeat") repeatY = CSS_VALUE_NOREPEAT;
|
||||
else if (parts[1] == "space") repeatY = CSS_VALUE_SPACE;
|
||||
else if (parts[1] == "round") repeatY = CSS_VALUE_ROUND;
|
||||
else repeatY = CSS_VALUE_REPEAT;
|
||||
}
|
||||
|
||||
void CSSBackground::setOrigin(const std::string &value)
|
||||
{
|
||||
if (value == "border-box") origin = CSS_VALUE_BORDER_BOX;
|
||||
else if (value == "padding-box") origin = CSS_VALUE_PADDING_BOX;
|
||||
else if (value == "content-box") origin = CSS_VALUE_CONTENT_BOX;
|
||||
else origin = CSS_VALUE_PADDING_BOX;
|
||||
}
|
||||
|
||||
void CSSBackground::setClip(const std::string &value)
|
||||
{
|
||||
if (value == "border-box") clip = CSS_VALUE_BORDER_BOX;
|
||||
else if (value == "padding-box") clip = CSS_VALUE_PADDING_BOX;
|
||||
else if (value == "content-box") clip = CSS_VALUE_CONTENT_BOX;
|
||||
//else if (value == "text") clip = CSSValueType::Text;
|
||||
else clip = CSS_VALUE_PADDING_BOX;
|
||||
}
|
||||
|
||||
void CSSBackground::setAttachment(const std::string &value)
|
||||
{
|
||||
if (value == "fixed") attachment = CSS_VALUE_FIXED;
|
||||
else if (value == "local") attachment = CSS_VALUE_LOCAL;
|
||||
else if (value == "scroll") attachment = CSS_VALUE_SCROLL;
|
||||
else attachment = CSS_VALUE_SCROLL;
|
||||
}
|
||||
|
||||
void CSSBackground::setColor(const std::string &value)
|
||||
{
|
||||
NLMISC::CRGBA tmp;
|
||||
if (scanHTMLColor(value.c_str(), tmp))
|
||||
color = tmp;
|
||||
}
|
||||
|
||||
static bool isHorizontalKeyword(const std::string &val)
|
||||
{
|
||||
return val == "left" || val == "right";
|
||||
}
|
||||
|
||||
static bool isVerticalKeyword(const std::string &val)
|
||||
{
|
||||
return val == "top" || val == "bottom";
|
||||
}
|
||||
|
||||
void CSSBackground::positionFromOne(const std::vector<std::string> &parts)
|
||||
{
|
||||
CSSValueType newH = CSS_VALUE_LEFT;
|
||||
CSSValueType newV = CSS_VALUE_TOP;
|
||||
CSSLength newX, newY;
|
||||
newX.setFloatValue(0, "%");
|
||||
newY.setFloatValue(0, "%");
|
||||
|
||||
uint index = 0;
|
||||
float fval;
|
||||
std::string unit;
|
||||
if (isHorizontalKeyword(parts[index]))
|
||||
{
|
||||
newH = parts[index] == "left" ? CSS_VALUE_LEFT : CSS_VALUE_RIGHT;
|
||||
newV = CSS_VALUE_CENTER;
|
||||
}
|
||||
else if (isVerticalKeyword(parts[index]))
|
||||
{
|
||||
newH = CSS_VALUE_CENTER;
|
||||
newV = parts[index] == "top" ? CSS_VALUE_TOP : CSS_VALUE_BOTTOM;
|
||||
}
|
||||
else if (parts[index] == "center")
|
||||
{
|
||||
newH = CSS_VALUE_CENTER;
|
||||
newV = CSS_VALUE_CENTER;
|
||||
}
|
||||
else if (getCssLength(fval, unit, parts[index], true))
|
||||
{
|
||||
newX.setFloatValue(fval, unit);
|
||||
newV = CSS_VALUE_CENTER;
|
||||
}
|
||||
else
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
xAnchor = newH;
|
||||
yAnchor = newV;
|
||||
xPosition = newX;
|
||||
yPosition = newY;
|
||||
}
|
||||
|
||||
void CSSBackground::positionFromTwo(const std::vector<std::string> &parts)
|
||||
{
|
||||
CSSValueType newH = CSS_VALUE_LEFT;
|
||||
CSSValueType newV = CSS_VALUE_TOP;
|
||||
CSSLength newX, newY;
|
||||
newX.setFloatValue(0, "%");
|
||||
newY.setFloatValue(0, "%");
|
||||
|
||||
float fval;
|
||||
std::string unit;
|
||||
uint index = 0;
|
||||
bool hasCenter = false;
|
||||
bool hasX = false;
|
||||
bool hasY = false;
|
||||
for (uint index = 0; index < parts.size(); index++)
|
||||
{
|
||||
if (parts[index] == "center")
|
||||
{
|
||||
hasCenter = true;
|
||||
}
|
||||
else if (isHorizontalKeyword(parts[index]))
|
||||
{
|
||||
if (hasX) return;
|
||||
hasX = true;
|
||||
newH = parts[index] == "left" ? CSS_VALUE_LEFT : CSS_VALUE_RIGHT;
|
||||
}
|
||||
else if (isVerticalKeyword(parts[index]))
|
||||
{
|
||||
if (hasY) return;
|
||||
hasY = true;
|
||||
newV = parts[index] == "top" ? CSS_VALUE_TOP : CSS_VALUE_BOTTOM;
|
||||
}
|
||||
else if (getCssLength(fval, unit, parts[index], true))
|
||||
{
|
||||
// invalid: 'top 50%';
|
||||
if (hasY) return;
|
||||
if (!hasX)
|
||||
{
|
||||
hasX = true;
|
||||
newX.setFloatValue(fval, unit);
|
||||
}
|
||||
else
|
||||
{
|
||||
hasY = true;
|
||||
newY.setFloatValue(fval, unit);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (hasCenter)
|
||||
{
|
||||
if (!hasX)
|
||||
newH = CSS_VALUE_CENTER;
|
||||
if (!hasY)
|
||||
newV = CSS_VALUE_CENTER;
|
||||
}
|
||||
|
||||
xAnchor = newH;
|
||||
yAnchor = newV;
|
||||
xPosition = newX;
|
||||
yPosition = newY;
|
||||
}
|
||||
|
||||
void CSSBackground::positionFromThree(const std::vector<std::string> &parts)
|
||||
{
|
||||
CSSValueType newH = CSS_VALUE_LEFT;
|
||||
CSSValueType newV = CSS_VALUE_TOP;
|
||||
CSSLength newX, newY;
|
||||
newX.setFloatValue(0, "%");
|
||||
newY.setFloatValue(0, "%");
|
||||
|
||||
float fval;
|
||||
std::string unit;
|
||||
bool hasCenter = false;
|
||||
bool hasX = false;
|
||||
bool hasY = false;
|
||||
for(uint index = 0; index < 3; index++)
|
||||
{
|
||||
if (parts[index] == "center")
|
||||
{
|
||||
if (hasCenter) return;
|
||||
hasCenter = true;
|
||||
}
|
||||
else if (isHorizontalKeyword(parts[index]))
|
||||
{
|
||||
if (hasX) return;
|
||||
hasX = true;
|
||||
newH = parts[index] == "left" ? CSS_VALUE_LEFT : CSS_VALUE_RIGHT;
|
||||
if ((index+1) < parts.size() && getCssLength(fval, unit, parts[index+1], true))
|
||||
{
|
||||
newX.setFloatValue(fval, unit);
|
||||
index++;
|
||||
}
|
||||
}
|
||||
else if (isVerticalKeyword(parts[index]))
|
||||
{
|
||||
if (hasY) return;
|
||||
hasY = true;
|
||||
newV = parts[index] == "top" ? CSS_VALUE_TOP : CSS_VALUE_BOTTOM;
|
||||
if ((index+1) < parts.size() && getCssLength(fval, unit, parts[index+1], true))
|
||||
{
|
||||
newY.setFloatValue(fval, unit);
|
||||
index++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (hasCenter)
|
||||
{
|
||||
if (hasX && hasY)
|
||||
return;
|
||||
|
||||
if (!hasX)
|
||||
newH = CSS_VALUE_CENTER;
|
||||
else
|
||||
newV = CSS_VALUE_CENTER;
|
||||
}
|
||||
|
||||
xAnchor = newH;
|
||||
yAnchor = newV;
|
||||
xPosition = newX;
|
||||
yPosition = newY;
|
||||
}
|
||||
|
||||
void CSSBackground::positionFromFour(const std::vector<std::string> &parts)
|
||||
{
|
||||
CSSValueType newH = CSS_VALUE_LEFT;
|
||||
CSSValueType newV = CSS_VALUE_TOP;
|
||||
CSSLength newX, newY;
|
||||
newX.setFloatValue(0, "%");
|
||||
newY.setFloatValue(0, "%");
|
||||
|
||||
float fval;
|
||||
std::string unit;
|
||||
bool hasX = false;
|
||||
bool hasY = false;
|
||||
for(uint index = 0; index<4; index+=2)
|
||||
{
|
||||
if (parts[index] == "center")
|
||||
return;
|
||||
|
||||
if (isHorizontalKeyword(parts[index]))
|
||||
{
|
||||
if (hasX) return;
|
||||
hasX = true;
|
||||
if (!getCssLength(fval, unit, parts[index+1], true)) return;
|
||||
newH = parts[index] == "left" ? CSS_VALUE_LEFT : CSS_VALUE_RIGHT;
|
||||
newX.setFloatValue(fval, unit);
|
||||
}
|
||||
else if (isVerticalKeyword(parts[index]))
|
||||
{
|
||||
if (hasY) return;
|
||||
hasY = true;
|
||||
if (!getCssLength(fval, unit, parts[index+1], true)) return;
|
||||
newV = parts[index] == "top" ? CSS_VALUE_TOP : CSS_VALUE_BOTTOM;
|
||||
newY.setFloatValue(fval, unit);
|
||||
}
|
||||
else
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
xAnchor = newH;
|
||||
yAnchor = newV;
|
||||
xPosition = newX;
|
||||
yPosition = newY;
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
@ -0,0 +1,597 @@
|
||||
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
|
||||
// Copyright (C) 2010-2019 Winch Gate Property Limited
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU Affero General Public License as
|
||||
// published by the Free Software Foundation, either version 3 of the
|
||||
// License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU Affero General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Affero General Public License
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
#include "stdpch.h"
|
||||
#include "nel/gui/css_background_renderer.h"
|
||||
#include "nel/gui/css_border_renderer.h"
|
||||
#include "nel/gui/view_renderer.h"
|
||||
#include "nel/gui/widget_manager.h"
|
||||
#include "nel/gui/view_bitmap.h"
|
||||
|
||||
using namespace std;
|
||||
using namespace NLMISC;
|
||||
|
||||
#ifdef DEBUG_NEW
|
||||
#define new DEBUG_NEW
|
||||
#endif
|
||||
|
||||
namespace NLGUI
|
||||
{
|
||||
// ----------------------------------------------------------------------------
|
||||
CSSBackgroundRenderer::CSSBackgroundRenderer()
|
||||
: CurrentAlpha(255), TextureId(-1),
|
||||
m_BorderX(0), m_BorderY(0), m_BorderW(0), m_BorderH(0),
|
||||
m_PaddingX(0), m_PaddingY(0), m_PaddingW(0), m_PaddingH(0),
|
||||
m_ContentX(0), m_ContentY(0), m_ContentW(0), m_ContentH(0),
|
||||
m_RootFontSize(16.f), m_FontSize(16.f), m_Viewport(NULL),
|
||||
m_RenderLayer(0), m_ModulateGlobalColor(false), m_FillViewport(false),
|
||||
m_Dirty(false)
|
||||
{
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
CSSBackgroundRenderer::~CSSBackgroundRenderer()
|
||||
{
|
||||
if (TextureId != -1)
|
||||
CViewRenderer::getInstance()->deleteTexture(TextureId);
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
void CSSBackgroundRenderer::clear()
|
||||
{
|
||||
m_Dirty = true;
|
||||
|
||||
if (TextureId != -1)
|
||||
CViewRenderer::getInstance()->deleteTexture(TextureId);
|
||||
|
||||
TextureId = -1;
|
||||
m_Background.image.clear();
|
||||
m_Background.color.A = 0;
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
void CSSBackgroundRenderer::setBackground(const CSSBackground &bg)
|
||||
{
|
||||
m_Dirty = true;
|
||||
// TODO: CSSBackground should keep track of TextureId
|
||||
CViewRenderer &rVR = *CViewRenderer::getInstance();
|
||||
if (bg.image != m_Background.image && TextureId != -1)
|
||||
rVR.deleteTexture(TextureId);
|
||||
|
||||
m_Background = bg;
|
||||
// TODO: does not accept urls
|
||||
if (TextureId == -1 && !bg.image.empty())
|
||||
{
|
||||
// TODO: make CViewRenderer accept urls
|
||||
if (bg.image.find("://") != std::string::npos)
|
||||
TextureId = rVR.createTexture(bg.image, 0, 0, -1, -1, false);
|
||||
}
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
void CSSBackgroundRenderer::setImage(const std::string &bgtex)
|
||||
{
|
||||
m_Dirty = true;
|
||||
// TODO: CSSBackground should keep track of TextureId
|
||||
CViewRenderer &rVR = *CViewRenderer::getInstance();
|
||||
if (bgtex != m_Background.image && TextureId != -1)
|
||||
{
|
||||
rVR.deleteTexture(TextureId);
|
||||
TextureId = -1;
|
||||
}
|
||||
m_Background.image = bgtex;
|
||||
|
||||
if (TextureId == -1 && !bgtex.empty())
|
||||
{
|
||||
// TODO: make CViewRenderer accept urls
|
||||
if (bgtex.find("://") != std::string::npos)
|
||||
TextureId = rVR.createTexture(bgtex, 0, 0, -1, -1, false);
|
||||
}
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
void CSSBackgroundRenderer::setImageRepeat(bool b)
|
||||
{
|
||||
m_Background.repeatX = b ? CSS_VALUE_REPEAT : CSS_VALUE_NOREPEAT;
|
||||
m_Background.repeatY = b ? CSS_VALUE_REPEAT : CSS_VALUE_NOREPEAT;
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
void CSSBackgroundRenderer::setImageCover(bool b)
|
||||
{
|
||||
m_Background.size = b ? CSS_VALUE_COVER : CSS_VALUE_AUTO;
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
void CSSBackgroundRenderer::updateCoords()
|
||||
{
|
||||
m_Dirty = false;
|
||||
m_DrawQueue.clear();
|
||||
|
||||
// TODO: color from last background layer
|
||||
buildColorQuads(m_Background);
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
// background-image
|
||||
buildImageQuads(m_Background, TextureId);
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
void CSSBackgroundRenderer::draw() {
|
||||
if (m_Dirty) updateCoords();
|
||||
if (m_DrawQueue.empty()) return;
|
||||
|
||||
CViewRenderer &rVR = *CViewRenderer::getInstance();
|
||||
|
||||
// flush draw cache to ensure correct draw order
|
||||
rVR.flush();
|
||||
|
||||
// TODO: no need for widget manager, if global color is set from parent
|
||||
CRGBA globalColor;
|
||||
if (m_ModulateGlobalColor)
|
||||
globalColor = CWidgetManager::getInstance()->getGlobalColor();
|
||||
|
||||
// TODO: there might be issue on draw order IF using multiple textures
|
||||
// and second (top) texture is created before first one.
|
||||
for(uint i = 0; i < m_DrawQueue.size(); ++i)
|
||||
{
|
||||
CRGBA color = m_DrawQueue[i].Color;
|
||||
if (m_ModulateGlobalColor)
|
||||
color.modulateFromColor (color, globalColor);
|
||||
|
||||
color.A = (uint8) (((uint16) CurrentAlpha * (uint16) color.A) >> 8);
|
||||
rVR.drawQuad(m_RenderLayer, m_DrawQueue[i].Quad, m_DrawQueue[i].TextureId, color, false);
|
||||
}
|
||||
|
||||
// flush draw cache to ensure correct draw order
|
||||
rVR.flush();
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
void CSSBackgroundRenderer::getPositioningArea(const CSSBackground &bg, sint32 &areaX, sint32 &areaY, sint32 &areaW, sint32 &areaH) const
|
||||
{
|
||||
switch(bg.origin)
|
||||
{
|
||||
case CSS_VALUE_PADDING_BOX:
|
||||
areaX = m_PaddingX;
|
||||
areaY = m_PaddingY;
|
||||
areaW = m_PaddingW;
|
||||
areaH = m_PaddingH;
|
||||
break;
|
||||
case CSS_VALUE_CONTENT_BOX:
|
||||
areaX = m_ContentX;
|
||||
areaY = m_ContentY;
|
||||
areaW = m_ContentW;
|
||||
areaH = m_ContentH;
|
||||
break;
|
||||
case CSS_VALUE_BORDER_BOX:
|
||||
// fall thru
|
||||
default:
|
||||
areaX = m_BorderX;
|
||||
areaY = m_BorderY;
|
||||
areaW = m_BorderW;
|
||||
areaH = m_BorderH;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
void CSSBackgroundRenderer::getPaintingArea(const CSSBackground &bg, sint32 &areaX, sint32 &areaY, sint32 &areaW, sint32 &areaH) const
|
||||
{
|
||||
switch(bg.clip)
|
||||
{
|
||||
case CSS_VALUE_PADDING_BOX:
|
||||
areaX = m_PaddingX;
|
||||
areaY = m_PaddingY;
|
||||
areaW = m_PaddingW;
|
||||
areaH = m_PaddingH;
|
||||
break;
|
||||
case CSS_VALUE_CONTENT_BOX:
|
||||
areaX = m_ContentX;
|
||||
areaY = m_ContentY;
|
||||
areaW = m_ContentW;
|
||||
areaH = m_ContentH;
|
||||
break;
|
||||
case CSS_VALUE_BORDER_BOX:
|
||||
// fall thru
|
||||
default:
|
||||
areaX = m_BorderX;
|
||||
areaY = m_BorderY;
|
||||
areaW = m_BorderW;
|
||||
areaH = m_BorderH;
|
||||
break;
|
||||
}
|
||||
|
||||
if (m_FillViewport && m_Viewport)
|
||||
{
|
||||
sint32 newX = std::min(areaX, m_Viewport->getXReal());
|
||||
sint32 newY = std::min(areaY, m_Viewport->getYReal());
|
||||
areaW = std::max(areaX + areaW, m_Viewport->getXReal() + m_Viewport->getWReal()) - newX;
|
||||
areaH = std::max(areaY + areaH, m_Viewport->getYReal() + m_Viewport->getHReal()) - newY;
|
||||
areaX = newX;
|
||||
areaY = newY;
|
||||
}
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
void CSSBackgroundRenderer::calculateSize(const CSSBackground &bg, sint32 &texW, sint32 &texH) const
|
||||
{
|
||||
sint32 areaX, areaY, areaW, areaH;
|
||||
getPositioningArea(bg, areaX, areaY, areaW, areaH);
|
||||
|
||||
sint32 vpW=0;
|
||||
sint32 vpH=0;
|
||||
if (m_Viewport)
|
||||
{
|
||||
vpW = m_Viewport->getWReal();
|
||||
vpH = m_Viewport->getHReal();
|
||||
}
|
||||
|
||||
float whRatio = (float)texW / (float)texH;
|
||||
switch(bg.size)
|
||||
{
|
||||
case CSS_VALUE_LENGTH:
|
||||
{
|
||||
if (bg.width.isAuto() && bg.height.isAuto())
|
||||
{
|
||||
// no-op
|
||||
}
|
||||
else if (bg.width.isAuto())
|
||||
{
|
||||
texH = bg.height.calculate(areaH, m_FontSize, m_RootFontSize, vpW, vpH);
|
||||
texW = texH * whRatio;
|
||||
}
|
||||
else if (bg.height.isAuto())
|
||||
{
|
||||
// calculate Height
|
||||
texW = bg.width.calculate(areaW, m_FontSize, m_RootFontSize, vpW, vpH);
|
||||
texH = texW / whRatio;
|
||||
}
|
||||
else
|
||||
{
|
||||
texW = bg.width.calculate(areaW, m_FontSize, m_RootFontSize, vpW, vpH);
|
||||
texH = bg.height.calculate(areaH, m_FontSize, m_RootFontSize, vpW, vpH);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case CSS_VALUE_AUTO:
|
||||
{
|
||||
// no-op
|
||||
break;
|
||||
}
|
||||
case CSS_VALUE_COVER:
|
||||
{
|
||||
float canvasRatio = (float)areaW / (float)areaH;
|
||||
if (whRatio < canvasRatio)
|
||||
{
|
||||
texW = areaW;
|
||||
texH = areaW / whRatio;
|
||||
} else {
|
||||
texW = areaH * whRatio;
|
||||
texH = areaH;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case CSS_VALUE_CONTAIN:
|
||||
{
|
||||
// same as covert, but ratio check is reversed
|
||||
float canvasRatio = (float)areaW / (float)areaH;
|
||||
if (whRatio > canvasRatio)
|
||||
{
|
||||
texW = areaW;
|
||||
texH = areaW / whRatio;
|
||||
} else {
|
||||
texW = areaH * whRatio;
|
||||
texH = areaH;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
void CSSBackgroundRenderer::calculatePosition(const CSSBackground &bg, sint32 &texX, sint32 &texY, sint32 &texW, sint32 &texH) const
|
||||
{
|
||||
sint32 areaX, areaY, areaW, areaH;
|
||||
getPositioningArea(bg, areaX, areaY, areaW, areaH);
|
||||
|
||||
sint32 vpW=0;
|
||||
sint32 vpH=0;
|
||||
if (m_Viewport)
|
||||
{
|
||||
vpW = m_Viewport->getWReal();
|
||||
vpH = m_Viewport->getHReal();
|
||||
}
|
||||
|
||||
float ofsX = bg.xPosition.calculate(1, m_FontSize, m_RootFontSize, vpW, vpH);
|
||||
float ofsY = bg.yPosition.calculate(1, m_FontSize, m_RootFontSize, vpW, vpH);
|
||||
|
||||
if (bg.xPosition.isPercent() || bg.xAnchor == CSS_VALUE_CENTER)
|
||||
{
|
||||
if (bg.xAnchor == CSS_VALUE_RIGHT)
|
||||
ofsX = 1.f - ofsX;
|
||||
else if (bg.xAnchor == CSS_VALUE_CENTER)
|
||||
ofsX = 0.5f;
|
||||
|
||||
ofsX = (float)(areaW - texW) * ofsX;
|
||||
}
|
||||
else if (bg.xAnchor == CSS_VALUE_RIGHT)
|
||||
{
|
||||
ofsX = areaW - texW - ofsX;
|
||||
}
|
||||
|
||||
// areaY is bottom edge, areaY+areaH is top edge
|
||||
if (bg.yPosition.isPercent() || bg.yAnchor == CSS_VALUE_CENTER)
|
||||
{
|
||||
if (bg.yAnchor == CSS_VALUE_TOP)
|
||||
ofsY = 1.f - ofsY;
|
||||
else if (bg.yAnchor == CSS_VALUE_CENTER)
|
||||
ofsY = 0.5f;
|
||||
|
||||
ofsY = (float)(areaH - texH) * ofsY;
|
||||
}
|
||||
else if (bg.yAnchor == CSS_VALUE_TOP)
|
||||
{
|
||||
ofsY = areaH - texH - ofsY;
|
||||
}
|
||||
|
||||
texX = areaX + ofsX;
|
||||
texY = areaY + ofsY;
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
void CSSBackgroundRenderer::getImageTile(sint32 &tilePos, sint32 &tileSize, sint32 &spacing, sint32 &tiles, sint32 areaPos, sint32 areaSize, CSSValueType repeat) const
|
||||
{
|
||||
switch(repeat)
|
||||
{
|
||||
case CSS_VALUE_NOREPEAT:
|
||||
{
|
||||
tiles = 1;
|
||||
spacing = 0;
|
||||
break;
|
||||
}
|
||||
case CSS_VALUE_SPACE:
|
||||
{
|
||||
// if no space for 2+ tiles, then show single one on calculated tilePos
|
||||
if (tileSize * 2 > areaSize)
|
||||
{
|
||||
// set spacing large enough to only display single tile
|
||||
tiles = 1;
|
||||
spacing = areaSize;
|
||||
}
|
||||
else
|
||||
{
|
||||
// available for middle tiles
|
||||
sint32 midSize = (areaSize - tileSize*2);
|
||||
// number of middle tiles
|
||||
sint32 midTiles = midSize / tileSize;
|
||||
|
||||
tiles = 2 + midTiles;
|
||||
tilePos = areaPos;
|
||||
// int div for floor()
|
||||
spacing = ( midSize - tileSize * midTiles) / (midTiles + 1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case CSS_VALUE_ROUND:
|
||||
// fall-thru - size is already calculated
|
||||
case CSS_VALUE_REPEAT:
|
||||
// fall-thru
|
||||
default:
|
||||
{
|
||||
tilePos -= std::ceil(abs(tilePos - areaPos)/(float)tileSize)*tileSize;
|
||||
tiles = std::ceil((std::abs(areaPos - tilePos) + areaSize) / (float)tileSize);
|
||||
spacing = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
void CSSBackgroundRenderer::calculateTiles(const CSSBackground &bg, sint32 &texX, sint32 &texY, sint32 &texW, sint32 &texH, sint32 &tilesX, sint32 &tilesY, sint32 &spacingX, sint32 &spacingY) const
|
||||
{
|
||||
sint32 areaX, areaY, areaW, areaH;
|
||||
getPositioningArea(bg, areaX, areaY, areaW, areaH);
|
||||
|
||||
// texX,texY is for position area (ie content-box), but painting area can be bigger (ie border-box)
|
||||
sint32 paintX, paintY, paintW, paintH;
|
||||
getPaintingArea(bg, paintX, paintY, paintW, paintH);
|
||||
if (paintX < areaX)
|
||||
areaX -= std::ceil((areaX - paintX) / (float)texW) * texW;
|
||||
if ((paintX + paintW) > (areaX + areaW))
|
||||
areaW += std::ceil(((paintX + paintW) - (areaX + areaW)) / (float)texW) * texW;
|
||||
if (paintY < areaY)
|
||||
areaY -= std::ceil((areaY - paintY) / (float)texH) * texH;
|
||||
if ((paintY + paintH) > (areaY + areaH))
|
||||
areaH += std::ceil(((paintY + paintH) - (areaY + areaH)) / (float)texH) * texH;
|
||||
|
||||
if (texW <= 0 || texH <= 0 || areaW <= 0 || areaH <= 0)
|
||||
{
|
||||
tilesX = tilesY = 0;
|
||||
spacingX = spacingY = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
if (bg.repeatX == CSS_VALUE_ROUND)
|
||||
{
|
||||
sint numTiles = std::max(1, (sint)std::round((float)areaW / texW));
|
||||
texW = areaW / numTiles;
|
||||
if (bg.height.isAuto() && bg.repeatY != CSS_VALUE_ROUND)
|
||||
{
|
||||
float aspect = (float)areaW / (numTiles * texW);
|
||||
texH = texW * aspect;
|
||||
}
|
||||
}
|
||||
|
||||
if (bg.repeatY == CSS_VALUE_ROUND)
|
||||
{
|
||||
sint numTiles = std::max(1, (sint)std::round((float)areaH / texH));
|
||||
texH = areaH / numTiles;
|
||||
if (bg.width.isAuto() && bg.repeatX != CSS_VALUE_ROUND)
|
||||
{
|
||||
float aspect = (float)areaH / (numTiles * texH);
|
||||
texW = texH * aspect;
|
||||
}
|
||||
}
|
||||
|
||||
getImageTile(texX, texW, spacingX, tilesX, areaX, areaW, bg.repeatX);
|
||||
getImageTile(texY, texH, spacingY, tilesY, areaY, areaH, bg.repeatY);
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
void CSSBackgroundRenderer::buildColorQuads(const CSSBackground &bg)
|
||||
{
|
||||
if (bg.color.A == 0)
|
||||
return;
|
||||
|
||||
// painting area defined with background-clip
|
||||
sint32 x, y, w, h;
|
||||
getPaintingArea(bg, x, y, w, h);
|
||||
|
||||
if (w <= 0 || h <= 0)
|
||||
return;
|
||||
|
||||
CViewRenderer &rVR = *CViewRenderer::getInstance();
|
||||
|
||||
SDrawQueue shape;
|
||||
shape.Quad.Uv0.set(0.f, 1.f);
|
||||
shape.Quad.Uv1.set(1.f, 1.f);
|
||||
shape.Quad.Uv2.set(1.f, 0.f);
|
||||
shape.Quad.Uv3.set(0.f, 0.f);
|
||||
|
||||
shape.Quad.V0.set(x, y, 0);
|
||||
shape.Quad.V1.set(x+w, y, 0);
|
||||
shape.Quad.V2.set(x+w, y+h, 0);
|
||||
shape.Quad.V3.set(x, y+h, 0);
|
||||
|
||||
shape.Color = bg.color;
|
||||
shape.TextureId = rVR.getBlankTextureId();
|
||||
|
||||
m_DrawQueue.push_back(shape);
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
void CSSBackgroundRenderer::buildImageQuads(const CSSBackground &bg, sint32 textureId)
|
||||
{
|
||||
// TODO: m_Background should have textureId and that should be "reserved" in CViewRenderer
|
||||
// even before download is finished
|
||||
if (textureId < 0)
|
||||
return;
|
||||
|
||||
CViewRenderer &rVR = *CViewRenderer::getInstance();
|
||||
|
||||
sint32 texW = 0;
|
||||
sint32 texH = 0;
|
||||
rVR.getTextureSizeFromId(textureId, texW, texH);
|
||||
if (texW <= 0 || texH <= 0)
|
||||
return;
|
||||
|
||||
// get requested texture size
|
||||
calculateSize(m_Background, texW, texH);
|
||||
if(texW <= 0 || texH <= 0)
|
||||
return;
|
||||
|
||||
// get texture left/top corner
|
||||
sint32 texX, texY;
|
||||
calculatePosition(m_Background, texX, texY, texW, texH);
|
||||
|
||||
sint32 tilesX, tilesY;
|
||||
sint32 spacingX, spacingY;
|
||||
calculateTiles(m_Background, texX, texY, texW, texH, tilesX, tilesY, spacingX, spacingY);
|
||||
|
||||
sint32 clipL, clipB, clipR, clipT;
|
||||
getPaintingArea(m_Background, clipL, clipB, clipR, clipT);
|
||||
clipR += clipL;
|
||||
clipT += clipB;
|
||||
|
||||
m_DrawQueue.reserve(tilesX * tilesY + m_DrawQueue.size());
|
||||
for(sint32 tileX = 0; tileX < tilesX; tileX++)
|
||||
{
|
||||
for(sint32 tileY = 0; tileY < tilesY; tileY++)
|
||||
{
|
||||
sint32 tileL = texX + tileX * (texW + spacingX);
|
||||
sint32 tileB = texY + tileY * (texH + spacingY);
|
||||
sint32 tileR = tileL + texW;
|
||||
sint32 tileT = tileB + texH;
|
||||
|
||||
// tile is outside clip area
|
||||
if (tileT <= clipB || tileB >= clipT || tileR <= clipL || tileL >= clipR)
|
||||
continue;
|
||||
|
||||
CUV uv0(0,1);
|
||||
CUV uv1(1,1);
|
||||
CUV uv2(1,0);
|
||||
CUV uv3(0,0);
|
||||
|
||||
// clip if tile not totally inside clip area
|
||||
if (!(tileL >= clipL && tileR <= clipR && tileB >= clipB && tileT <= clipT))
|
||||
{
|
||||
float ratio;
|
||||
if (tileL < clipL)
|
||||
{
|
||||
ratio = ((float)(clipL - tileL))/((float)(tileR - tileL));
|
||||
tileL = clipL;
|
||||
uv0.U += ratio*(uv1.U-uv0.U);
|
||||
uv3.U += ratio*(uv2.U-uv3.U);
|
||||
}
|
||||
|
||||
if (tileB < clipB)
|
||||
{
|
||||
ratio = ((float)(clipB - tileB))/((float)(tileT - tileB));
|
||||
tileB = clipB;
|
||||
uv0.V += ratio*(uv3.V-uv0.V);
|
||||
uv1.V += ratio*(uv2.V-uv1.V);
|
||||
}
|
||||
|
||||
if (tileR > clipR)
|
||||
{
|
||||
ratio = ((float)(clipR - tileR))/((float)(tileL - tileR));
|
||||
tileR = clipR;
|
||||
uv2.U += ratio*(uv3.U-uv2.U);
|
||||
uv1.U += ratio*(uv0.U-uv1.U);
|
||||
}
|
||||
|
||||
if (tileT > clipT)
|
||||
{
|
||||
ratio = ((float)(clipT - tileT))/((float)(tileB - tileT));
|
||||
tileT = clipT;
|
||||
uv2.V += ratio*(uv1.V-uv2.V);
|
||||
uv3.V += ratio*(uv0.V-uv3.V);
|
||||
}
|
||||
}
|
||||
|
||||
SDrawQueue shape;
|
||||
shape.Quad.Uv0 = uv0;
|
||||
shape.Quad.Uv1 = uv1;
|
||||
shape.Quad.Uv2 = uv2;
|
||||
shape.Quad.Uv3 = uv3;
|
||||
|
||||
shape.Color = CRGBA::White;
|
||||
shape.TextureId = textureId;
|
||||
|
||||
shape.Quad.V0.set(tileL, tileB, 0);
|
||||
shape.Quad.V1.set(tileR, tileB, 0);
|
||||
shape.Quad.V2.set(tileR, tileT, 0);
|
||||
shape.Quad.V3.set(tileL, tileT, 0);
|
||||
|
||||
m_DrawQueue.push_back(shape);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}//namespace
|
||||
|
@ -0,0 +1,225 @@
|
||||
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
|
||||
// Copyright (C) 2010-2021 Winch Gate Property Limited
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU Affero General Public License as
|
||||
// published by the Free Software Foundation, either version 3 of the
|
||||
// License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU Affero General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Affero General Public License
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
#include "stdpch.h"
|
||||
|
||||
#include <string>
|
||||
#include "nel/gui/css_length.h"
|
||||
|
||||
using namespace NLMISC;
|
||||
|
||||
#ifdef DEBUG_NEW
|
||||
#define new DEBUG_NEW
|
||||
#endif
|
||||
|
||||
namespace NLGUI
|
||||
{
|
||||
|
||||
bool CSSLength::parseValue(const std::string &value, bool allowPercent, bool allowNegative)
|
||||
{
|
||||
static const std::set<std::string> knownUnits = {
|
||||
"%", "rem", "em", "px", "pt", "vw", "vh", "vi", "vb", "vmin", "vmax"
|
||||
};
|
||||
|
||||
std::string::size_type pos = 0;
|
||||
std::string::size_type len = value.size();
|
||||
if (len == 0)
|
||||
return false;
|
||||
|
||||
if (len == 1 && value[0] == '0')
|
||||
{
|
||||
m_Value = 0;
|
||||
m_Kind = Auto;
|
||||
return true;
|
||||
}
|
||||
|
||||
// +100px; -100px
|
||||
if (value[0] == '+')
|
||||
pos++;
|
||||
else if (allowNegative && value[0] == '-')
|
||||
pos++;
|
||||
|
||||
while(pos < len)
|
||||
{
|
||||
bool isNumeric = (value[pos] >= '0' && value[pos] <= '9')
|
||||
|| (pos == 0 && value[pos] == '.')
|
||||
|| (pos > 0 && value[pos] == '.' && value[pos-1] >= '0' && value[pos-1] <= '9');
|
||||
|
||||
if (!isNumeric)
|
||||
break;
|
||||
|
||||
pos++;
|
||||
}
|
||||
|
||||
std::string unit = toLowerAscii(value.substr(pos));
|
||||
if (knownUnits.count(unit))
|
||||
{
|
||||
std::string tmpstr = value.substr(0, pos);
|
||||
return fromString(tmpstr, m_Value);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
float CSSLength::getValue() const
|
||||
{
|
||||
if (m_Unit == CSS_UNIT_PERCENT)
|
||||
return m_Value / 100.f;
|
||||
|
||||
return m_Value;
|
||||
}
|
||||
void CSSLength::setFloatValue(float f, const std::string &unit)
|
||||
{
|
||||
m_Value = f;
|
||||
setUnit(unit);
|
||||
}
|
||||
|
||||
void CSSLength::setUnit(const std::string &unit)
|
||||
{
|
||||
if (unit.empty())
|
||||
{
|
||||
m_Unit = CSS_UNIT_NONE;
|
||||
m_Kind = Fixed;
|
||||
}
|
||||
else if (unit == "px")
|
||||
{
|
||||
m_Unit = CSS_UNIT_PX;
|
||||
m_Kind = Fixed;
|
||||
} else if (unit == "pt")
|
||||
{
|
||||
m_Unit = CSS_UNIT_PT;
|
||||
m_Kind = Fixed;
|
||||
} else if (unit == "%")
|
||||
{
|
||||
m_Unit = CSS_UNIT_PERCENT;
|
||||
m_Kind = Relative;
|
||||
} else if (unit == "em")
|
||||
{
|
||||
m_Unit = CSS_UNIT_EM;
|
||||
m_Kind = Relative;
|
||||
} else if (unit == "rem")
|
||||
{
|
||||
m_Unit = CSS_UNIT_REM;
|
||||
m_Kind = Relative;
|
||||
} else if (unit == "vw")
|
||||
{
|
||||
m_Unit = CSS_UNIT_VW;
|
||||
m_Kind = Relative;
|
||||
} else if (unit == "vh")
|
||||
{
|
||||
m_Unit = CSS_UNIT_VH;
|
||||
m_Kind = Relative;
|
||||
} else if (unit == "vi")
|
||||
{
|
||||
m_Unit = CSS_UNIT_VI;
|
||||
m_Kind = Relative;
|
||||
} else if (unit == "vb")
|
||||
{
|
||||
m_Unit = CSS_UNIT_VB;
|
||||
m_Kind = Relative;
|
||||
} else if (unit == "vmin")
|
||||
{
|
||||
m_Unit = CSS_UNIT_VMIN;
|
||||
m_Kind = Relative;
|
||||
} else if (unit == "vmax")
|
||||
{
|
||||
m_Unit = CSS_UNIT_VMAX;
|
||||
m_Kind = Relative;
|
||||
} else if (unit == "auto")
|
||||
{
|
||||
m_Unit = CSS_UNIT_NONE;
|
||||
m_Kind = Auto;
|
||||
} else
|
||||
{
|
||||
// fallback to auto
|
||||
m_Unit = CSS_UNIT_NONE;
|
||||
m_Kind = Auto;
|
||||
}
|
||||
}
|
||||
|
||||
float CSSLength::calculate(uint32 relValue, uint32 emSize, uint32 remSize, uint32 vwSize, uint32 vhSize = 0) const
|
||||
{
|
||||
if (m_Kind == Auto)
|
||||
return 0;
|
||||
|
||||
float value = getValue();
|
||||
switch(m_Unit)
|
||||
{
|
||||
case CSS_UNIT_EM:
|
||||
return emSize * value;
|
||||
case CSS_UNIT_REM:
|
||||
return remSize * value;
|
||||
case CSS_UNIT_PERCENT:
|
||||
return relValue * value;
|
||||
case CSS_UNIT_PX:
|
||||
case CSS_UNIT_PT:
|
||||
return value;
|
||||
case CSS_UNIT_VW:
|
||||
case CSS_UNIT_VI:
|
||||
// Vi for horizontal writing mode only
|
||||
return (float)vwSize*0.01f;
|
||||
case CSS_UNIT_VH:
|
||||
case CSS_UNIT_VB:
|
||||
// Vb for horizontal writing mode only
|
||||
return (float)vhSize*0.01f;
|
||||
case CSS_UNIT_VMIN:
|
||||
return (float)std::min(vwSize, vhSize)*0.01f;
|
||||
case CSS_UNIT_VMAX:
|
||||
return (float)std::max(vwSize, vhSize)*0.01f;
|
||||
}
|
||||
|
||||
nldebug("Unknown CSS unit '%s'", toString().c_str());
|
||||
return value;
|
||||
}
|
||||
|
||||
std::string CSSLength::toString() const
|
||||
{
|
||||
if (m_Kind == Auto)
|
||||
return "auto";
|
||||
|
||||
std::string ret;
|
||||
ret += NLMISC::toString("%f", m_Value);
|
||||
|
||||
size_t pos = ret.find(".");
|
||||
for( ; pos < ret.size(); ++pos)
|
||||
{
|
||||
if (ret[pos] != '0')
|
||||
break;
|
||||
}
|
||||
if (pos == ret.size())
|
||||
ret = ret.substr(0, ret.find("."));
|
||||
|
||||
switch(m_Unit)
|
||||
{
|
||||
case CSS_UNIT_NONE: break;
|
||||
case CSS_UNIT_EM: ret += "em"; break;
|
||||
case CSS_UNIT_REM: ret += "rem"; break;
|
||||
case CSS_UNIT_PERCENT: ret += "%"; break;
|
||||
case CSS_UNIT_PX: ret += "px"; break;
|
||||
case CSS_UNIT_PT: ret += "pt"; break;
|
||||
case CSS_UNIT_VW: ret += "vw"; break;
|
||||
case CSS_UNIT_VH: ret += "vh"; break;
|
||||
case CSS_UNIT_VI: ret += "vi"; break;
|
||||
case CSS_UNIT_VB: ret += "vb"; break;
|
||||
case CSS_UNIT_VMIN: ret += "vmin"; break;
|
||||
case CSS_UNIT_VMAX: ret += "vmax"; break;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,94 +1,94 @@
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# \file 1_export.py
|
||||
# \brief Run all export processes
|
||||
# \date 2009-02-18 09:22GMT
|
||||
# \author Jan Boon (Kaetemi)
|
||||
# Python port of game data build pipeline.
|
||||
# Run all export processes
|
||||
#
|
||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||
# Copyright (C) 2009-2014 by authors
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
import time, sys, os, shutil, subprocess, distutils.dir_util, argparse
|
||||
sys.path.append("configuration")
|
||||
|
||||
parser = argparse.ArgumentParser(description='Ryzom Core - Build Gamedata - Export')
|
||||
# parser.add_argument('--haltonerror', '-eh', action='store_true')
|
||||
parser.add_argument('--includeproject', '-ipj', nargs='+')
|
||||
parser.add_argument('--excludeproject', '-epj', nargs='+')
|
||||
parser.add_argument('--includeprocess', '-ipc', nargs='+')
|
||||
parser.add_argument('--excludeprocess', '-epc', nargs='+')
|
||||
args = parser.parse_args()
|
||||
|
||||
if not args.includeproject == None and not args.excludeproject == None:
|
||||
print "ERROR --includeproject cannot be combined with --excludeproject, exit."
|
||||
exit()
|
||||
|
||||
if not args.includeprocess == None and not args.excludeprocess == None:
|
||||
print "ERROR --includeprocess cannot be combined with --excludeprocess, exit."
|
||||
exit()
|
||||
|
||||
if os.path.isfile("log.log"):
|
||||
os.remove("log.log")
|
||||
log = open("log.log", "w")
|
||||
from scripts import *
|
||||
from buildsite import *
|
||||
from tools import *
|
||||
|
||||
sys.path.append(WorkspaceDirectory)
|
||||
from projects import *
|
||||
|
||||
# Log error
|
||||
printLog(log, "")
|
||||
printLog(log, "-------")
|
||||
printLog(log, "--- Run the export processes")
|
||||
printLog(log, "-------")
|
||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||
printLog(log, "")
|
||||
# For each project
|
||||
for projectName in ProjectsToProcess:
|
||||
if ((args.includeproject == None or projectName in args.includeproject) and (args.excludeproject == None or not projectName in args.excludeproject)):
|
||||
printLog(log, "PROJECT " + projectName)
|
||||
os.putenv("NELBUILDACTIVEPROJECT", os.path.abspath(WorkspaceDirectory + "/" + projectName))
|
||||
os.chdir("processes")
|
||||
try:
|
||||
if not args.includeprocess == None:
|
||||
subprocess.call([ "python", "1_export.py", "--includeprocess" ] + args.includeprocess)
|
||||
elif not args.excludeprocess == None:
|
||||
subprocess.call([ "python", "1_export.py", "--excludeprocess" ] + args.excludeprocess)
|
||||
else:
|
||||
subprocess.call([ "python", "1_export.py" ])
|
||||
except Exception, e:
|
||||
printLog(log, "<" + projectName + "> " + str(e))
|
||||
os.chdir("..")
|
||||
try:
|
||||
projectLog = open("processes/log.log", "r")
|
||||
projectLogData = projectLog.read()
|
||||
projectLog.close()
|
||||
log.write(projectLogData)
|
||||
except Exception, e:
|
||||
printLog(log, "<" + projectName + "> " + str(e))
|
||||
else:
|
||||
printLog(log, "IGNORE PROJECT " + projectName)
|
||||
printLog(log, "")
|
||||
|
||||
log.close()
|
||||
if os.path.isfile("1_export.log"):
|
||||
os.remove("1_export.log")
|
||||
shutil.copy("log.log", time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time())) + "_export.log")
|
||||
shutil.move("log.log", "1_export.log")
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# \file 1_export.py
|
||||
# \brief Run all export processes
|
||||
# \date 2009-02-18 09:22GMT
|
||||
# \author Jan Boon (Kaetemi)
|
||||
# Python port of game data build pipeline.
|
||||
# Run all export processes
|
||||
#
|
||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||
# Copyright (C) 2009-2014 by authors
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
import time, sys, os, shutil, subprocess, distutils.dir_util, argparse
|
||||
sys.path.append("configuration")
|
||||
|
||||
parser = argparse.ArgumentParser(description='Ryzom Core - Build Gamedata - Export')
|
||||
# parser.add_argument('--haltonerror', '-eh', action='store_true')
|
||||
parser.add_argument('--includeproject', '-ipj', nargs='+')
|
||||
parser.add_argument('--excludeproject', '-epj', nargs='+')
|
||||
parser.add_argument('--includeprocess', '-ipc', nargs='+')
|
||||
parser.add_argument('--excludeprocess', '-epc', nargs='+')
|
||||
args = parser.parse_args()
|
||||
|
||||
if not args.includeproject == None and not args.excludeproject == None:
|
||||
print "ERROR --includeproject cannot be combined with --excludeproject, exit."
|
||||
exit()
|
||||
|
||||
if not args.includeprocess == None and not args.excludeprocess == None:
|
||||
print "ERROR --includeprocess cannot be combined with --excludeprocess, exit."
|
||||
exit()
|
||||
|
||||
if os.path.isfile("log.log"):
|
||||
os.remove("log.log")
|
||||
log = open("log.log", "w")
|
||||
from scripts import *
|
||||
from buildsite_local import *
|
||||
from tools import *
|
||||
|
||||
sys.path.append(WorkspaceDirectory)
|
||||
from projects import *
|
||||
|
||||
# Log error
|
||||
printLog(log, "")
|
||||
printLog(log, "-------")
|
||||
printLog(log, "--- Run the export processes")
|
||||
printLog(log, "-------")
|
||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||
printLog(log, "")
|
||||
# For each project
|
||||
for projectName in ProjectsToProcess:
|
||||
if ((args.includeproject == None or projectName in args.includeproject) and (args.excludeproject == None or not projectName in args.excludeproject)):
|
||||
printLog(log, "PROJECT " + projectName)
|
||||
os.putenv("NELBUILDACTIVEPROJECT", os.path.abspath(WorkspaceDirectory + "/" + projectName))
|
||||
os.chdir("processes")
|
||||
try:
|
||||
if not args.includeprocess == None:
|
||||
subprocess.call([ "python", "1_export.py", "--includeprocess" ] + args.includeprocess)
|
||||
elif not args.excludeprocess == None:
|
||||
subprocess.call([ "python", "1_export.py", "--excludeprocess" ] + args.excludeprocess)
|
||||
else:
|
||||
subprocess.call([ "python", "1_export.py" ])
|
||||
except Exception, e:
|
||||
printLog(log, "<" + projectName + "> " + str(e))
|
||||
os.chdir("..")
|
||||
try:
|
||||
projectLog = open("processes/log.log", "r")
|
||||
projectLogData = projectLog.read()
|
||||
projectLog.close()
|
||||
log.write(projectLogData)
|
||||
except Exception, e:
|
||||
printLog(log, "<" + projectName + "> " + str(e))
|
||||
else:
|
||||
printLog(log, "IGNORE PROJECT " + projectName)
|
||||
printLog(log, "")
|
||||
|
||||
log.close()
|
||||
if os.path.isfile("1_export.log"):
|
||||
os.remove("1_export.log")
|
||||
shutil.copy("log.log", time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time())) + "_export.log")
|
||||
shutil.move("log.log", "1_export.log")
|
||||
|
@ -1,94 +1,94 @@
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# \file 2_build.py
|
||||
# \brief Run all build processes
|
||||
# \date 2009-02-18 09:22GMT
|
||||
# \author Jan Boon (Kaetemi)
|
||||
# Python port of game data build pipeline.
|
||||
# Run all build processes
|
||||
#
|
||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||
# Copyright (C) 2009-2014 by authors
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
import time, sys, os, shutil, subprocess, distutils.dir_util, argparse
|
||||
sys.path.append("configuration")
|
||||
|
||||
parser = argparse.ArgumentParser(description='Ryzom Core - Build Gamedata - Build')
|
||||
# parser.add_argument('--haltonerror', '-eh', action='store_true')
|
||||
parser.add_argument('--includeproject', '-ipj', nargs='+')
|
||||
parser.add_argument('--excludeproject', '-epj', nargs='+')
|
||||
parser.add_argument('--includeprocess', '-ipc', nargs='+')
|
||||
parser.add_argument('--excludeprocess', '-epc', nargs='+')
|
||||
args = parser.parse_args()
|
||||
|
||||
if not args.includeproject == None and not args.excludeproject == None:
|
||||
print "ERROR --includeproject cannot be combined with --excludeproject, exit."
|
||||
exit()
|
||||
|
||||
if not args.includeprocess == None and not args.excludeprocess == None:
|
||||
print "ERROR --includeprocess cannot be combined with --excludeprocess, exit."
|
||||
exit()
|
||||
|
||||
if os.path.isfile("log.log"):
|
||||
os.remove("log.log")
|
||||
log = open("log.log", "w")
|
||||
from scripts import *
|
||||
from buildsite import *
|
||||
from tools import *
|
||||
|
||||
sys.path.append(WorkspaceDirectory)
|
||||
from projects import *
|
||||
|
||||
# Log error
|
||||
printLog(log, "")
|
||||
printLog(log, "-------")
|
||||
printLog(log, "--- Run the build processes")
|
||||
printLog(log, "-------")
|
||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||
printLog(log, "")
|
||||
# For each project
|
||||
for projectName in ProjectsToProcess:
|
||||
if ((args.includeproject == None or projectName in args.includeproject) and (args.excludeproject == None or not projectName in args.excludeproject)):
|
||||
printLog(log, "PROJECT " + projectName)
|
||||
os.putenv("NELBUILDACTIVEPROJECT", os.path.abspath(WorkspaceDirectory + "/" + projectName))
|
||||
os.chdir("processes")
|
||||
try:
|
||||
if not args.includeprocess == None:
|
||||
subprocess.call([ "python", "2_build.py", "--includeprocess" ] + args.includeprocess)
|
||||
elif not args.excludeprocess == None:
|
||||
subprocess.call([ "python", "2_build.py", "--excludeprocess" ] + args.excludeprocess)
|
||||
else:
|
||||
subprocess.call([ "python", "2_build.py" ])
|
||||
except Exception, e:
|
||||
printLog(log, "<" + projectName + "> " + str(e))
|
||||
os.chdir("..")
|
||||
try:
|
||||
projectLog = open("processes/log.log", "r")
|
||||
projectLogData = projectLog.read()
|
||||
projectLog.close()
|
||||
log.write(projectLogData)
|
||||
except Exception, e:
|
||||
printLog(log, "<" + projectName + "> " + str(e))
|
||||
else:
|
||||
printLog(log, "IGNORE PROJECT " + projectName)
|
||||
printLog(log, "")
|
||||
|
||||
log.close()
|
||||
if os.path.isfile("2_build.log"):
|
||||
os.remove("2_build.log")
|
||||
shutil.copy("log.log", time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time())) + "_build.log")
|
||||
shutil.move("log.log", "2_build.log")
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# \file 2_build.py
|
||||
# \brief Run all build processes
|
||||
# \date 2009-02-18 09:22GMT
|
||||
# \author Jan Boon (Kaetemi)
|
||||
# Python port of game data build pipeline.
|
||||
# Run all build processes
|
||||
#
|
||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||
# Copyright (C) 2009-2014 by authors
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
import time, sys, os, shutil, subprocess, distutils.dir_util, argparse
|
||||
sys.path.append("configuration")
|
||||
|
||||
parser = argparse.ArgumentParser(description='Ryzom Core - Build Gamedata - Build')
|
||||
# parser.add_argument('--haltonerror', '-eh', action='store_true')
|
||||
parser.add_argument('--includeproject', '-ipj', nargs='+')
|
||||
parser.add_argument('--excludeproject', '-epj', nargs='+')
|
||||
parser.add_argument('--includeprocess', '-ipc', nargs='+')
|
||||
parser.add_argument('--excludeprocess', '-epc', nargs='+')
|
||||
args = parser.parse_args()
|
||||
|
||||
if not args.includeproject == None and not args.excludeproject == None:
|
||||
print "ERROR --includeproject cannot be combined with --excludeproject, exit."
|
||||
exit()
|
||||
|
||||
if not args.includeprocess == None and not args.excludeprocess == None:
|
||||
print "ERROR --includeprocess cannot be combined with --excludeprocess, exit."
|
||||
exit()
|
||||
|
||||
if os.path.isfile("log.log"):
|
||||
os.remove("log.log")
|
||||
log = open("log.log", "w")
|
||||
from scripts import *
|
||||
from buildsite_local import *
|
||||
from tools import *
|
||||
|
||||
sys.path.append(WorkspaceDirectory)
|
||||
from projects import *
|
||||
|
||||
# Log error
|
||||
printLog(log, "")
|
||||
printLog(log, "-------")
|
||||
printLog(log, "--- Run the build processes")
|
||||
printLog(log, "-------")
|
||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||
printLog(log, "")
|
||||
# For each project
|
||||
for projectName in ProjectsToProcess:
|
||||
if ((args.includeproject == None or projectName in args.includeproject) and (args.excludeproject == None or not projectName in args.excludeproject)):
|
||||
printLog(log, "PROJECT " + projectName)
|
||||
os.putenv("NELBUILDACTIVEPROJECT", os.path.abspath(WorkspaceDirectory + "/" + projectName))
|
||||
os.chdir("processes")
|
||||
try:
|
||||
if not args.includeprocess == None:
|
||||
subprocess.call([ "python", "2_build.py", "--includeprocess" ] + args.includeprocess)
|
||||
elif not args.excludeprocess == None:
|
||||
subprocess.call([ "python", "2_build.py", "--excludeprocess" ] + args.excludeprocess)
|
||||
else:
|
||||
subprocess.call([ "python", "2_build.py" ])
|
||||
except Exception, e:
|
||||
printLog(log, "<" + projectName + "> " + str(e))
|
||||
os.chdir("..")
|
||||
try:
|
||||
projectLog = open("processes/log.log", "r")
|
||||
projectLogData = projectLog.read()
|
||||
projectLog.close()
|
||||
log.write(projectLogData)
|
||||
except Exception, e:
|
||||
printLog(log, "<" + projectName + "> " + str(e))
|
||||
else:
|
||||
printLog(log, "IGNORE PROJECT " + projectName)
|
||||
printLog(log, "")
|
||||
|
||||
log.close()
|
||||
if os.path.isfile("2_build.log"):
|
||||
os.remove("2_build.log")
|
||||
shutil.copy("log.log", time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time())) + "_build.log")
|
||||
shutil.move("log.log", "2_build.log")
|
||||
|
@ -1,94 +1,94 @@
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# \file 3_install.py
|
||||
# \brief Run all install processes
|
||||
# \date 2009-02-18 16:19GMT
|
||||
# \author Jan Boon (Kaetemi)
|
||||
# Python port of game data build pipeline.
|
||||
# Run all install processes
|
||||
#
|
||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||
# Copyright (C) 2009-2014 by authors
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
import time, sys, os, shutil, subprocess, distutils.dir_util, argparse
|
||||
sys.path.append("configuration")
|
||||
|
||||
parser = argparse.ArgumentParser(description='Ryzom Core - Build Gamedata - Install')
|
||||
# parser.add_argument('--haltonerror', '-eh', action='store_true')
|
||||
parser.add_argument('--includeproject', '-ipj', nargs='+')
|
||||
parser.add_argument('--excludeproject', '-epj', nargs='+')
|
||||
parser.add_argument('--includeprocess', '-ipc', nargs='+')
|
||||
parser.add_argument('--excludeprocess', '-epc', nargs='+')
|
||||
args = parser.parse_args()
|
||||
|
||||
if not args.includeproject == None and not args.excludeproject == None:
|
||||
print "ERROR --includeproject cannot be combined with --excludeproject, exit."
|
||||
exit()
|
||||
|
||||
if not args.includeprocess == None and not args.excludeprocess == None:
|
||||
print "ERROR --includeprocess cannot be combined with --excludeprocess, exit."
|
||||
exit()
|
||||
|
||||
if os.path.isfile("log.log"):
|
||||
os.remove("log.log")
|
||||
log = open("log.log", "w")
|
||||
from scripts import *
|
||||
from buildsite import *
|
||||
from tools import *
|
||||
|
||||
sys.path.append(WorkspaceDirectory)
|
||||
from projects import *
|
||||
|
||||
# Log error
|
||||
printLog(log, "")
|
||||
printLog(log, "-------")
|
||||
printLog(log, "--- Run the install processes")
|
||||
printLog(log, "-------")
|
||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||
printLog(log, "")
|
||||
# For each project
|
||||
for projectName in ProjectsToProcess:
|
||||
if ((args.includeproject == None or projectName in args.includeproject) and (args.excludeproject == None or not projectName in args.excludeproject)):
|
||||
printLog(log, "PROJECT " + projectName)
|
||||
os.putenv("NELBUILDACTIVEPROJECT", os.path.abspath(WorkspaceDirectory + "/" + projectName))
|
||||
os.chdir("processes")
|
||||
try:
|
||||
if not args.includeprocess == None:
|
||||
subprocess.call([ "python", "3_install.py", "--includeprocess" ] + args.includeprocess)
|
||||
elif not args.excludeprocess == None:
|
||||
subprocess.call([ "python", "3_install.py", "--excludeprocess" ] + args.excludeprocess)
|
||||
else:
|
||||
subprocess.call([ "python", "3_install.py" ])
|
||||
except Exception, e:
|
||||
printLog(log, "<" + projectName + "> " + str(e))
|
||||
os.chdir("..")
|
||||
try:
|
||||
projectLog = open("processes/log.log", "r")
|
||||
projectLogData = projectLog.read()
|
||||
projectLog.close()
|
||||
log.write(projectLogData)
|
||||
except Exception, e:
|
||||
printLog(log, "<" + projectName + "> " + str(e))
|
||||
else:
|
||||
printLog(log, "IGNORE PROJECT " + projectName)
|
||||
printLog(log, "")
|
||||
|
||||
log.close()
|
||||
if os.path.isfile("3_install.log"):
|
||||
os.remove("3_install.log")
|
||||
shutil.copy("log.log", time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time())) + "_install.log")
|
||||
shutil.move("log.log", "3_install.log")
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# \file 3_install.py
|
||||
# \brief Run all install processes
|
||||
# \date 2009-02-18 16:19GMT
|
||||
# \author Jan Boon (Kaetemi)
|
||||
# Python port of game data build pipeline.
|
||||
# Run all install processes
|
||||
#
|
||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||
# Copyright (C) 2009-2014 by authors
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
import time, sys, os, shutil, subprocess, distutils.dir_util, argparse
|
||||
sys.path.append("configuration")
|
||||
|
||||
parser = argparse.ArgumentParser(description='Ryzom Core - Build Gamedata - Install')
|
||||
# parser.add_argument('--haltonerror', '-eh', action='store_true')
|
||||
parser.add_argument('--includeproject', '-ipj', nargs='+')
|
||||
parser.add_argument('--excludeproject', '-epj', nargs='+')
|
||||
parser.add_argument('--includeprocess', '-ipc', nargs='+')
|
||||
parser.add_argument('--excludeprocess', '-epc', nargs='+')
|
||||
args = parser.parse_args()
|
||||
|
||||
if not args.includeproject == None and not args.excludeproject == None:
|
||||
print "ERROR --includeproject cannot be combined with --excludeproject, exit."
|
||||
exit()
|
||||
|
||||
if not args.includeprocess == None and not args.excludeprocess == None:
|
||||
print "ERROR --includeprocess cannot be combined with --excludeprocess, exit."
|
||||
exit()
|
||||
|
||||
if os.path.isfile("log.log"):
|
||||
os.remove("log.log")
|
||||
log = open("log.log", "w")
|
||||
from scripts import *
|
||||
from buildsite_local import *
|
||||
from tools import *
|
||||
|
||||
sys.path.append(WorkspaceDirectory)
|
||||
from projects import *
|
||||
|
||||
# Log error
|
||||
printLog(log, "")
|
||||
printLog(log, "-------")
|
||||
printLog(log, "--- Run the install processes")
|
||||
printLog(log, "-------")
|
||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||
printLog(log, "")
|
||||
# For each project
|
||||
for projectName in ProjectsToProcess:
|
||||
if ((args.includeproject == None or projectName in args.includeproject) and (args.excludeproject == None or not projectName in args.excludeproject)):
|
||||
printLog(log, "PROJECT " + projectName)
|
||||
os.putenv("NELBUILDACTIVEPROJECT", os.path.abspath(WorkspaceDirectory + "/" + projectName))
|
||||
os.chdir("processes")
|
||||
try:
|
||||
if not args.includeprocess == None:
|
||||
subprocess.call([ "python", "3_install.py", "--includeprocess" ] + args.includeprocess)
|
||||
elif not args.excludeprocess == None:
|
||||
subprocess.call([ "python", "3_install.py", "--excludeprocess" ] + args.excludeprocess)
|
||||
else:
|
||||
subprocess.call([ "python", "3_install.py" ])
|
||||
except Exception, e:
|
||||
printLog(log, "<" + projectName + "> " + str(e))
|
||||
os.chdir("..")
|
||||
try:
|
||||
projectLog = open("processes/log.log", "r")
|
||||
projectLogData = projectLog.read()
|
||||
projectLog.close()
|
||||
log.write(projectLogData)
|
||||
except Exception, e:
|
||||
printLog(log, "<" + projectName + "> " + str(e))
|
||||
else:
|
||||
printLog(log, "IGNORE PROJECT " + projectName)
|
||||
printLog(log, "")
|
||||
|
||||
log.close()
|
||||
if os.path.isfile("3_install.log"):
|
||||
os.remove("3_install.log")
|
||||
shutil.copy("log.log", time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time())) + "_install.log")
|
||||
shutil.move("log.log", "3_install.log")
|
||||
|
@ -1,181 +1,181 @@
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# \file 9_upload.py
|
||||
# \brief Upload data to servers
|
||||
# \date 2009-02-18 16:19GMT
|
||||
# \author Jan Boon (Kaetemi)
|
||||
# Game data build pipeline.
|
||||
# Upload data to servers
|
||||
#
|
||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||
# Copyright (C) 2011 Kaetemi
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
import time, sys, os, shutil, subprocess, distutils.dir_util
|
||||
sys.path.append("configuration")
|
||||
|
||||
if os.path.isfile("log.log"):
|
||||
os.remove("log.log")
|
||||
log = open("log.log", "w")
|
||||
from scripts import *
|
||||
from buildsite import *
|
||||
from tools import *
|
||||
|
||||
try:
|
||||
from upload import *
|
||||
except ImportError:
|
||||
# Not documenting this. Because we can.
|
||||
printLog(log, "ERROR Upload not configured, bye.")
|
||||
exit()
|
||||
|
||||
sys.path.append(WorkspaceDirectory)
|
||||
from projects import *
|
||||
|
||||
# Log error
|
||||
printLog(log, "")
|
||||
printLog(log, "-------")
|
||||
printLog(log, "--- Upload data to servers")
|
||||
printLog(log, "-------")
|
||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||
printLog(log, "")
|
||||
|
||||
# Find tools
|
||||
# Not documenting this. Because we can.
|
||||
Psftp = findFileMultiDir(log, ToolDirectories + WindowsExeDllCfgDirectories, UploadPsftpTool)
|
||||
printLog(log, "PSFTP " + Psftp)
|
||||
|
||||
def downloadVersionTag(server, user, sshkey, dir):
|
||||
if os.path.isfile("upload.tag"):
|
||||
os.remove("upload.tag")
|
||||
if os.path.isfile("upload.batch"):
|
||||
os.remove("upload.batch")
|
||||
ub = open("upload.batch", "w")
|
||||
ub.write("cd " + dir + "\n")
|
||||
ub.write("get upload.tag upload.tag\n")
|
||||
ub.write("quit\n")
|
||||
ub.close()
|
||||
subprocess.call([ Psftp, "-b", "upload.batch", "-i", sshkey, user + "@" + server ])
|
||||
os.remove("upload.batch")
|
||||
if os.path.isfile("upload.tag"):
|
||||
ft = open("upload.tag")
|
||||
result = float(ft.read()) # float, really
|
||||
ft.close()
|
||||
os.remove("upload.tag")
|
||||
printLog(log, "INFO Upload tag is " + str(result))
|
||||
return result
|
||||
else:
|
||||
printLog(log, "WARNING Upload tag not found, uploading everything")
|
||||
return 0
|
||||
|
||||
def isDirectoryNeeded(ft, dir):
|
||||
files = os.listdir(dir)
|
||||
for fileName in files:
|
||||
if isLegalFileName(fileName):
|
||||
fileFull = dir + "/" + fileName
|
||||
if os.path.isfile(fileFull):
|
||||
nftf = os.stat(fileFull).st_mtime
|
||||
if nftf > ft:
|
||||
return True
|
||||
elif os.path.isdir(fileFull):
|
||||
if isDirectoryNeeded(ft, fileFull):
|
||||
return True
|
||||
elif not os.path.isdir(fileFull):
|
||||
printLog(log, "isDirectoryNeeded: file not dir or file?!" + fileFull)
|
||||
return False
|
||||
|
||||
def listDirectoryUpload(ft, ub, udb, dir):
|
||||
nft = 0
|
||||
files = os.listdir(dir)
|
||||
for fileName in files:
|
||||
if isLegalFileName(fileName):
|
||||
fileFull = dir + "/" + fileName
|
||||
if os.path.isfile(fileFull):
|
||||
nftf = os.stat(fileFull).st_mtime
|
||||
if nftf > ft:
|
||||
ub.write("put " + fileFull + " " + fileName + "\n")
|
||||
if nftf > nft:
|
||||
nft = nftf
|
||||
elif os.path.isdir(fileFull):
|
||||
if isDirectoryNeeded(ft, fileFull):
|
||||
udb.write("mkdir " + fileName + "\n")
|
||||
ub.write("cd " + fileName + "\n")
|
||||
udb.write("cd " + fileName + "\n")
|
||||
nft2 = listDirectoryUpload(ft, ub, udb, fileFull)
|
||||
if (nft2 > nft):
|
||||
nft = nft2
|
||||
ub.write("cd ..\n")
|
||||
udb.write("cd ..\n")
|
||||
elif not os.path.isdir(fileFull):
|
||||
printLog(log, "listDirectoryUpload: file not dir or file?!" + fileFull)
|
||||
return nft
|
||||
|
||||
def uploadSftp(server, user, sshkey, dir_to, dir_from, addcmd):
|
||||
ft = downloadVersionTag(server, user, sshkey, dir_to)
|
||||
if isDirectoryNeeded(ft, dir_from):
|
||||
if os.path.isfile("upload_dir.batch"):
|
||||
os.remove("upload_dir.batch")
|
||||
if os.path.isfile("upload.batch"):
|
||||
os.remove("upload.batch")
|
||||
udb = open("upload_dir.batch", "w")
|
||||
udb.write("cd " + dir_to + "\n")
|
||||
ub = open("upload.batch", "w")
|
||||
ub.write("cd " + dir_to + "\n")
|
||||
for ac in addcmd:
|
||||
ub.write(ac + "\n")
|
||||
ftn = listDirectoryUpload(ft, ub, udb, dir_from)
|
||||
if (ft > ftn):
|
||||
ftn = ft
|
||||
nft = open("upload.tag", "w")
|
||||
nft.write(str(ftn))
|
||||
nft.close()
|
||||
ub.write("put upload.tag upload.tag\n")
|
||||
ub.write("quit\n")
|
||||
ub.close()
|
||||
udb.write("quit\n")
|
||||
udb.close()
|
||||
subprocess.call([ Psftp, "-be", "-b", "upload_dir.batch", "-i", sshkey, user + "@" + server ])
|
||||
subprocess.call([ Psftp, "-b", "upload.batch", "-i", sshkey, user + "@" + server ])
|
||||
os.remove("upload_dir.batch")
|
||||
os.remove("upload.batch")
|
||||
os.remove("upload.tag")
|
||||
else:
|
||||
printLog(log, "SKIP " + dir_to)
|
||||
|
||||
printLog(log, ">>> Upload patch <<<")
|
||||
for target in UploadPatch:
|
||||
uploadSftp(target[0], target[1], target[2], target[3], ClientPatchDirectory + "/patch", [ ])
|
||||
|
||||
printLog(log, ">>> Upload data_shard <<<")
|
||||
for target in UploadShard:
|
||||
uploadSftp(target[0], target[1], target[2], target[3], DataShardDirectory, [ "rm *.packed_sheets", "rm primitive_cache/*.binprim" ])
|
||||
|
||||
printLog(log, ">>> Upload data_common <<<")
|
||||
for target in UploadCommon:
|
||||
uploadSftp(target[0], target[1], target[2], target[3], DataCommonDirectory, [ ])
|
||||
|
||||
printLog(log, ">>> Upload data_leveldesign/leveldesign <<<")
|
||||
for target in UploadLeveldesign:
|
||||
uploadSftp(target[0], target[1], target[2], target[3], LeveldesignDirectory, [ ])
|
||||
|
||||
printLog(log, ">>> Upload data_leveldesign/primitives <<<")
|
||||
for target in UploadPrimitives:
|
||||
uploadSftp(target[0], target[1], target[2], target[3], PrimitivesDirectory, [ ])
|
||||
|
||||
log.close()
|
||||
if os.path.isfile("9_upload.log"):
|
||||
os.remove("9_upload.log")
|
||||
shutil.copy("log.log", time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time())) + "_upload.log")
|
||||
shutil.move("log.log", "9_upload.log")
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# \file 9_upload.py
|
||||
# \brief Upload data to servers
|
||||
# \date 2009-02-18 16:19GMT
|
||||
# \author Jan Boon (Kaetemi)
|
||||
# Game data build pipeline.
|
||||
# Upload data to servers
|
||||
#
|
||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||
# Copyright (C) 2011 Kaetemi
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
import time, sys, os, shutil, subprocess, distutils.dir_util
|
||||
sys.path.append("configuration")
|
||||
|
||||
if os.path.isfile("log.log"):
|
||||
os.remove("log.log")
|
||||
log = open("log.log", "w")
|
||||
from scripts import *
|
||||
from buildsite_local import *
|
||||
from tools import *
|
||||
|
||||
try:
|
||||
from upload import *
|
||||
except ImportError:
|
||||
# Not documenting this. Because we can.
|
||||
printLog(log, "ERROR Upload not configured, bye.")
|
||||
exit()
|
||||
|
||||
sys.path.append(WorkspaceDirectory)
|
||||
from projects import *
|
||||
|
||||
# Log error
|
||||
printLog(log, "")
|
||||
printLog(log, "-------")
|
||||
printLog(log, "--- Upload data to servers")
|
||||
printLog(log, "-------")
|
||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||
printLog(log, "")
|
||||
|
||||
# Find tools
|
||||
# Not documenting this. Because we can.
|
||||
Psftp = findFileMultiDir(log, ToolDirectories + WindowsExeDllCfgDirectories, UploadPsftpTool)
|
||||
printLog(log, "PSFTP " + Psftp)
|
||||
|
||||
def downloadVersionTag(server, user, sshkey, dir):
|
||||
if os.path.isfile("upload.tag"):
|
||||
os.remove("upload.tag")
|
||||
if os.path.isfile("upload.batch"):
|
||||
os.remove("upload.batch")
|
||||
ub = open("upload.batch", "w")
|
||||
ub.write("cd " + dir + "\n")
|
||||
ub.write("get upload.tag upload.tag\n")
|
||||
ub.write("quit\n")
|
||||
ub.close()
|
||||
subprocess.call([ Psftp, "-b", "upload.batch", "-i", sshkey, user + "@" + server ])
|
||||
os.remove("upload.batch")
|
||||
if os.path.isfile("upload.tag"):
|
||||
ft = open("upload.tag")
|
||||
result = float(ft.read()) # float, really
|
||||
ft.close()
|
||||
os.remove("upload.tag")
|
||||
printLog(log, "INFO Upload tag is " + str(result))
|
||||
return result
|
||||
else:
|
||||
printLog(log, "WARNING Upload tag not found, uploading everything")
|
||||
return 0
|
||||
|
||||
def isDirectoryNeeded(ft, dir):
|
||||
files = os.listdir(dir)
|
||||
for fileName in files:
|
||||
if isLegalFileName(fileName):
|
||||
fileFull = dir + "/" + fileName
|
||||
if os.path.isfile(fileFull):
|
||||
nftf = os.stat(fileFull).st_mtime
|
||||
if nftf > ft:
|
||||
return True
|
||||
elif os.path.isdir(fileFull):
|
||||
if isDirectoryNeeded(ft, fileFull):
|
||||
return True
|
||||
elif not os.path.isdir(fileFull):
|
||||
printLog(log, "isDirectoryNeeded: file not dir or file?!" + fileFull)
|
||||
return False
|
||||
|
||||
def listDirectoryUpload(ft, ub, udb, dir):
|
||||
nft = 0
|
||||
files = os.listdir(dir)
|
||||
for fileName in files:
|
||||
if isLegalFileName(fileName):
|
||||
fileFull = dir + "/" + fileName
|
||||
if os.path.isfile(fileFull):
|
||||
nftf = os.stat(fileFull).st_mtime
|
||||
if nftf > ft:
|
||||
ub.write("put " + fileFull + " " + fileName + "\n")
|
||||
if nftf > nft:
|
||||
nft = nftf
|
||||
elif os.path.isdir(fileFull):
|
||||
if isDirectoryNeeded(ft, fileFull):
|
||||
udb.write("mkdir " + fileName + "\n")
|
||||
ub.write("cd " + fileName + "\n")
|
||||
udb.write("cd " + fileName + "\n")
|
||||
nft2 = listDirectoryUpload(ft, ub, udb, fileFull)
|
||||
if (nft2 > nft):
|
||||
nft = nft2
|
||||
ub.write("cd ..\n")
|
||||
udb.write("cd ..\n")
|
||||
elif not os.path.isdir(fileFull):
|
||||
printLog(log, "listDirectoryUpload: file not dir or file?!" + fileFull)
|
||||
return nft
|
||||
|
||||
def uploadSftp(server, user, sshkey, dir_to, dir_from, addcmd):
|
||||
ft = downloadVersionTag(server, user, sshkey, dir_to)
|
||||
if isDirectoryNeeded(ft, dir_from):
|
||||
if os.path.isfile("upload_dir.batch"):
|
||||
os.remove("upload_dir.batch")
|
||||
if os.path.isfile("upload.batch"):
|
||||
os.remove("upload.batch")
|
||||
udb = open("upload_dir.batch", "w")
|
||||
udb.write("cd " + dir_to + "\n")
|
||||
ub = open("upload.batch", "w")
|
||||
ub.write("cd " + dir_to + "\n")
|
||||
for ac in addcmd:
|
||||
ub.write(ac + "\n")
|
||||
ftn = listDirectoryUpload(ft, ub, udb, dir_from)
|
||||
if (ft > ftn):
|
||||
ftn = ft
|
||||
nft = open("upload.tag", "w")
|
||||
nft.write(str(ftn))
|
||||
nft.close()
|
||||
ub.write("put upload.tag upload.tag\n")
|
||||
ub.write("quit\n")
|
||||
ub.close()
|
||||
udb.write("quit\n")
|
||||
udb.close()
|
||||
subprocess.call([ Psftp, "-be", "-b", "upload_dir.batch", "-i", sshkey, user + "@" + server ])
|
||||
subprocess.call([ Psftp, "-b", "upload.batch", "-i", sshkey, user + "@" + server ])
|
||||
os.remove("upload_dir.batch")
|
||||
os.remove("upload.batch")
|
||||
os.remove("upload.tag")
|
||||
else:
|
||||
printLog(log, "SKIP " + dir_to)
|
||||
|
||||
printLog(log, ">>> Upload patch <<<")
|
||||
for target in UploadPatch:
|
||||
uploadSftp(target[0], target[1], target[2], target[3], ClientPatchDirectory + "/patch", [ ])
|
||||
|
||||
printLog(log, ">>> Upload data_shard <<<")
|
||||
for target in UploadShard:
|
||||
uploadSftp(target[0], target[1], target[2], target[3], DataShardDirectory, [ "rm *.packed_sheets", "rm primitive_cache/*.binprim" ])
|
||||
|
||||
printLog(log, ">>> Upload data_common <<<")
|
||||
for target in UploadCommon:
|
||||
uploadSftp(target[0], target[1], target[2], target[3], DataCommonDirectory, [ ])
|
||||
|
||||
printLog(log, ">>> Upload data_leveldesign/leveldesign <<<")
|
||||
for target in UploadLeveldesign:
|
||||
uploadSftp(target[0], target[1], target[2], target[3], LeveldesignDirectory, [ ])
|
||||
|
||||
printLog(log, ">>> Upload data_leveldesign/primitives <<<")
|
||||
for target in UploadPrimitives:
|
||||
uploadSftp(target[0], target[1], target[2], target[3], PrimitivesDirectory, [ ])
|
||||
|
||||
log.close()
|
||||
if os.path.isfile("9_upload.log"):
|
||||
os.remove("9_upload.log")
|
||||
shutil.copy("log.log", time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time())) + "_upload.log")
|
||||
shutil.move("log.log", "9_upload.log")
|
||||
|
@ -1,74 +1,74 @@
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# \file a1_worldedit_data.py
|
||||
# \brief Install worldedit data
|
||||
# \date 2014-09-10 14:01GMT
|
||||
# \author Jan Boon (Kaetemi)
|
||||
# Python port of game data build pipeline.
|
||||
# Install worldedit data
|
||||
#
|
||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||
# Copyright (C) 2014 by authors
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
import time, sys, os, shutil, subprocess, distutils.dir_util
|
||||
sys.path.append("configuration")
|
||||
|
||||
if os.path.isfile("log.log"):
|
||||
os.remove("log.log")
|
||||
log = open("log.log", "w")
|
||||
from scripts import *
|
||||
from buildsite import *
|
||||
from tools import *
|
||||
|
||||
sys.path.append(WorkspaceDirectory)
|
||||
from projects import *
|
||||
|
||||
# Log error
|
||||
printLog(log, "")
|
||||
printLog(log, "-------")
|
||||
printLog(log, "--- Install worldedit data")
|
||||
printLog(log, "-------")
|
||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||
printLog(log, "")
|
||||
|
||||
for ecosystem in WorldEditEcosystems:
|
||||
ecosystemName = ecosystem[0]
|
||||
srcZoneLigos = ExportBuildDirectory + "/ecosystems/" + ecosystemName + "/ligo_es/zoneligos/"
|
||||
dstZoneLigos = WorldEditInstallDirectory + "/" + ecosystemName + "/zoneligos/"
|
||||
mkPath(log, srcZoneLigos)
|
||||
mkPath(log, dstZoneLigos)
|
||||
copyFilesNoTreeIfNeeded(log, srcZoneLigos, dstZoneLigos)
|
||||
srcZoneBitmaps = DatabaseDirectory + "/landscape/ligo/" + ecosystemName + "/zonebitmaps/"
|
||||
dstZoneBitmaps = WorldEditInstallDirectory + "/" + ecosystemName + "/zonebitmaps/"
|
||||
mkPath(log, srcZoneBitmaps)
|
||||
mkPath(log, dstZoneBitmaps)
|
||||
copyFilesExtNoTreeIfNeeded(log, srcZoneBitmaps, dstZoneBitmaps, ".tga")
|
||||
copyFilesExtNoTreeIfNeeded(log, srcZoneBitmaps, dstZoneBitmaps, ".png")
|
||||
dstCollisionMap = WorldEditInstallDirectory + "/" + ecosystemName + "/collisionmap/"
|
||||
mkPath(log, dstCollisionMap)
|
||||
for continentName in ecosystem[1]:
|
||||
srcCollisionMap = ExportBuildDirectory + "/continents/" + continentName + "/ai_wmap/"
|
||||
mkPath(log, srcCollisionMap)
|
||||
copyFilesExtNoTreeIfNeeded(log, srcCollisionMap, dstCollisionMap, ".tga")
|
||||
copyFilesExtNoTreeIfNeeded(log, srcCollisionMap, dstCollisionMap, ".png")
|
||||
printLog(log, "")
|
||||
|
||||
log.close()
|
||||
if os.path.isfile("a1_worldedit_data.log"):
|
||||
os.remove("a1_worldedit_data.log")
|
||||
shutil.copy("log.log", time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time())) + "_worldedit_data.log")
|
||||
shutil.move("log.log", "a1_worldedit_data.log")
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# \file a1_worldedit_data.py
|
||||
# \brief Install worldedit data
|
||||
# \date 2014-09-10 14:01GMT
|
||||
# \author Jan Boon (Kaetemi)
|
||||
# Python port of game data build pipeline.
|
||||
# Install worldedit data
|
||||
#
|
||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||
# Copyright (C) 2014 by authors
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
import time, sys, os, shutil, subprocess, distutils.dir_util
|
||||
sys.path.append("configuration")
|
||||
|
||||
if os.path.isfile("log.log"):
|
||||
os.remove("log.log")
|
||||
log = open("log.log", "w")
|
||||
from scripts import *
|
||||
from buildsite_local import *
|
||||
from tools import *
|
||||
|
||||
sys.path.append(WorkspaceDirectory)
|
||||
from projects import *
|
||||
|
||||
# Log error
|
||||
printLog(log, "")
|
||||
printLog(log, "-------")
|
||||
printLog(log, "--- Install worldedit data")
|
||||
printLog(log, "-------")
|
||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||
printLog(log, "")
|
||||
|
||||
for ecosystem in WorldEditEcosystems:
|
||||
ecosystemName = ecosystem[0]
|
||||
srcZoneLigos = ExportBuildDirectory + "/ecosystems/" + ecosystemName + "/ligo_es/zoneligos/"
|
||||
dstZoneLigos = WorldEditInstallDirectory + "/" + ecosystemName + "/zoneligos/"
|
||||
mkPath(log, srcZoneLigos)
|
||||
mkPath(log, dstZoneLigos)
|
||||
copyFilesNoTreeIfNeeded(log, srcZoneLigos, dstZoneLigos)
|
||||
srcZoneBitmaps = DatabaseDirectory + "/landscape/ligo/" + ecosystemName + "/zonebitmaps/"
|
||||
dstZoneBitmaps = WorldEditInstallDirectory + "/" + ecosystemName + "/zonebitmaps/"
|
||||
mkPath(log, srcZoneBitmaps)
|
||||
mkPath(log, dstZoneBitmaps)
|
||||
copyFilesExtNoTreeIfNeeded(log, srcZoneBitmaps, dstZoneBitmaps, ".tga")
|
||||
copyFilesExtNoTreeIfNeeded(log, srcZoneBitmaps, dstZoneBitmaps, ".png")
|
||||
dstCollisionMap = WorldEditInstallDirectory + "/" + ecosystemName + "/collisionmap/"
|
||||
mkPath(log, dstCollisionMap)
|
||||
for continentName in ecosystem[1]:
|
||||
srcCollisionMap = ExportBuildDirectory + "/continents/" + continentName + "/ai_wmap/"
|
||||
mkPath(log, srcCollisionMap)
|
||||
copyFilesExtNoTreeIfNeeded(log, srcCollisionMap, dstCollisionMap, ".tga")
|
||||
copyFilesExtNoTreeIfNeeded(log, srcCollisionMap, dstCollisionMap, ".png")
|
||||
printLog(log, "")
|
||||
|
||||
log.close()
|
||||
if os.path.isfile("a1_worldedit_data.log"):
|
||||
os.remove("a1_worldedit_data.log")
|
||||
shutil.copy("log.log", time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time())) + "_worldedit_data.log")
|
||||
shutil.move("log.log", "a1_worldedit_data.log")
|
||||
|
@ -1,93 +1,93 @@
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# \file b2_shard_data.py
|
||||
# \brief Install shard data
|
||||
# \date 2009-02-18 16:19GMT
|
||||
# \author Jan Boon (Kaetemi)
|
||||
# Python port of game data build pipeline.
|
||||
# Install shard data
|
||||
#
|
||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||
# Copyright (C) 2009-2014 by authors
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
import time, sys, os, shutil, subprocess, distutils.dir_util
|
||||
sys.path.append("configuration")
|
||||
|
||||
if os.path.isfile("log.log"):
|
||||
os.remove("log.log")
|
||||
log = open("log.log", "w")
|
||||
from scripts import *
|
||||
from buildsite import *
|
||||
from tools import *
|
||||
|
||||
sys.path.append(WorkspaceDirectory)
|
||||
from projects import *
|
||||
|
||||
# Log error
|
||||
printLog(log, "")
|
||||
printLog(log, "-------")
|
||||
printLog(log, "--- Install shard data")
|
||||
printLog(log, "-------")
|
||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||
printLog(log, "")
|
||||
|
||||
for dir in InstallShardDataDirectories:
|
||||
printLog(log, "SHARD PACKAGE " + dir)
|
||||
mkPath(log, ShardInstallDirectory + "/" + dir)
|
||||
printLog(log, "FROM " + dir)
|
||||
mkPath(log, InstallDirectory + "/" + dir)
|
||||
copyFilesNoTreeIfNeeded(log, InstallDirectory + "/" + dir, ShardInstallDirectory + "/" + dir)
|
||||
for package in InstallShardDataFiles:
|
||||
dstDir = package[0]
|
||||
mkPath(log, ShardInstallDirectory + "/" + dstDir)
|
||||
printLog(log, "SHARD PACKAGE " + dstDir)
|
||||
copyFileListNoTreeIfNeeded(log, InstallDirectory, ShardInstallDirectory + "/" + dstDir, package[1])
|
||||
for multiDir in InstallShardDataMultiDirectories:
|
||||
dstDir = multiDir[0]
|
||||
mkPath(log, ShardInstallDirectory + "/" + dstDir)
|
||||
printLog(log, "SHARD PACKAGE " + dstDir)
|
||||
for srcDir in multiDir[1]:
|
||||
printLog(log, "FROM " + srcDir)
|
||||
mkPath(log, InstallDirectory + "/" + srcDir)
|
||||
mkPath(log, ShardInstallDirectory + "/" + dstDir + "/" + srcDir)
|
||||
copyFilesNoTreeIfNeeded(log, InstallDirectory + "/" + srcDir, ShardInstallDirectory + "/" + dstDir + "/" + srcDir)
|
||||
for multiDir in InstallShardDataPrimitivesDirectories:
|
||||
dstDir = multiDir[0]
|
||||
mkPath(log, ShardInstallDirectory + "/" + dstDir)
|
||||
printLog(log, "SHARD PACKAGE " + dstDir)
|
||||
for srcDir in multiDir[1]:
|
||||
printLog(log, "FROM PRIMITIVES " + srcDir)
|
||||
mkPath(log, PrimitivesDirectory + "/" + srcDir)
|
||||
mkPath(log, ShardInstallDirectory + "/" + dstDir + "/" + srcDir)
|
||||
copyFilesNoTreeIfNeeded(log, PrimitivesDirectory + "/" + srcDir, ShardInstallDirectory + "/" + dstDir + "/" + srcDir)
|
||||
for execDir in InstallShardDataExecutables:
|
||||
dstDir = execDir[0]
|
||||
mkPath(log, LinuxServiceExecutableDirectory)
|
||||
mkPath(log, PatchmanCfgDefaultDirectory)
|
||||
mkPath(log, InstallDirectory)
|
||||
mkPath(log, ShardInstallDirectory + "/" + dstDir)
|
||||
printLog(log, "SHARD PACKAGE " + dstDir)
|
||||
copyFileIfNeeded(log, LinuxServiceExecutableDirectory + "/" + execDir[1][1], ShardInstallDirectory + "/" + dstDir + "/" + execDir[1][0])
|
||||
copyFileListNoTreeIfNeeded(log, PatchmanCfgDefaultDirectory, ShardInstallDirectory + "/" + dstDir, execDir[2])
|
||||
copyFileListNoTreeIfNeeded(log, InstallDirectory, ShardInstallDirectory + "/" + dstDir, execDir[3])
|
||||
printLog(log, "")
|
||||
|
||||
log.close()
|
||||
if os.path.isfile("b2_shard_data.log"):
|
||||
os.remove("b2_shard_data.log")
|
||||
shutil.copy("log.log", time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time())) + "_shard_data.log")
|
||||
shutil.move("log.log", "b2_shard_data.log")
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# \file b2_shard_data.py
|
||||
# \brief Install shard data
|
||||
# \date 2009-02-18 16:19GMT
|
||||
# \author Jan Boon (Kaetemi)
|
||||
# Python port of game data build pipeline.
|
||||
# Install shard data
|
||||
#
|
||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||
# Copyright (C) 2009-2014 by authors
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
import time, sys, os, shutil, subprocess, distutils.dir_util
|
||||
sys.path.append("configuration")
|
||||
|
||||
if os.path.isfile("log.log"):
|
||||
os.remove("log.log")
|
||||
log = open("log.log", "w")
|
||||
from scripts import *
|
||||
from buildsite_local import *
|
||||
from tools import *
|
||||
|
||||
sys.path.append(WorkspaceDirectory)
|
||||
from projects import *
|
||||
|
||||
# Log error
|
||||
printLog(log, "")
|
||||
printLog(log, "-------")
|
||||
printLog(log, "--- Install shard data")
|
||||
printLog(log, "-------")
|
||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||
printLog(log, "")
|
||||
|
||||
for dir in InstallShardDataDirectories:
|
||||
printLog(log, "SHARD PACKAGE " + dir)
|
||||
mkPath(log, ShardInstallDirectory + "/" + dir)
|
||||
printLog(log, "FROM " + dir)
|
||||
mkPath(log, InstallDirectory + "/" + dir)
|
||||
copyFilesNoTreeIfNeeded(log, InstallDirectory + "/" + dir, ShardInstallDirectory + "/" + dir)
|
||||
for package in InstallShardDataFiles:
|
||||
dstDir = package[0]
|
||||
mkPath(log, ShardInstallDirectory + "/" + dstDir)
|
||||
printLog(log, "SHARD PACKAGE " + dstDir)
|
||||
copyFileListNoTreeIfNeeded(log, InstallDirectory, ShardInstallDirectory + "/" + dstDir, package[1])
|
||||
for multiDir in InstallShardDataMultiDirectories:
|
||||
dstDir = multiDir[0]
|
||||
mkPath(log, ShardInstallDirectory + "/" + dstDir)
|
||||
printLog(log, "SHARD PACKAGE " + dstDir)
|
||||
for srcDir in multiDir[1]:
|
||||
printLog(log, "FROM " + srcDir)
|
||||
mkPath(log, InstallDirectory + "/" + srcDir)
|
||||
mkPath(log, ShardInstallDirectory + "/" + dstDir + "/" + srcDir)
|
||||
copyFilesNoTreeIfNeeded(log, InstallDirectory + "/" + srcDir, ShardInstallDirectory + "/" + dstDir + "/" + srcDir)
|
||||
for multiDir in InstallShardDataPrimitivesDirectories:
|
||||
dstDir = multiDir[0]
|
||||
mkPath(log, ShardInstallDirectory + "/" + dstDir)
|
||||
printLog(log, "SHARD PACKAGE " + dstDir)
|
||||
for srcDir in multiDir[1]:
|
||||
printLog(log, "FROM PRIMITIVES " + srcDir)
|
||||
mkPath(log, PrimitivesDirectory + "/" + srcDir)
|
||||
mkPath(log, ShardInstallDirectory + "/" + dstDir + "/" + srcDir)
|
||||
copyFilesNoTreeIfNeeded(log, PrimitivesDirectory + "/" + srcDir, ShardInstallDirectory + "/" + dstDir + "/" + srcDir)
|
||||
for execDir in InstallShardDataExecutables:
|
||||
dstDir = execDir[0]
|
||||
mkPath(log, LinuxServiceExecutableDirectory)
|
||||
mkPath(log, PatchmanCfgDefaultDirectory)
|
||||
mkPath(log, InstallDirectory)
|
||||
mkPath(log, ShardInstallDirectory + "/" + dstDir)
|
||||
printLog(log, "SHARD PACKAGE " + dstDir)
|
||||
copyFileIfNeeded(log, LinuxServiceExecutableDirectory + "/" + execDir[1][1], ShardInstallDirectory + "/" + dstDir + "/" + execDir[1][0])
|
||||
copyFileListNoTreeIfNeeded(log, PatchmanCfgDefaultDirectory, ShardInstallDirectory + "/" + dstDir, execDir[2])
|
||||
copyFileListNoTreeIfNeeded(log, InstallDirectory, ShardInstallDirectory + "/" + dstDir, execDir[3])
|
||||
printLog(log, "")
|
||||
|
||||
log.close()
|
||||
if os.path.isfile("b2_shard_data.log"):
|
||||
os.remove("b2_shard_data.log")
|
||||
shutil.copy("log.log", time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time())) + "_shard_data.log")
|
||||
shutil.move("log.log", "b2_shard_data.log")
|
||||
|
@ -1,86 +1,86 @@
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# \file d2_client_install.py
|
||||
# \brief Install to client install
|
||||
# \date 2009-02-18 16:19GMT
|
||||
# \author Jan Boon (Kaetemi)
|
||||
# Python port of game data build pipeline.
|
||||
# Install to client install
|
||||
#
|
||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||
# Copyright (C) 2009-2014 by authors
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
import time, sys, os, shutil, subprocess, distutils.dir_util
|
||||
sys.path.append("configuration")
|
||||
|
||||
if os.path.isfile("log.log"):
|
||||
os.remove("log.log")
|
||||
log = open("log.log", "w")
|
||||
from scripts import *
|
||||
from buildsite import *
|
||||
from tools import *
|
||||
|
||||
sys.path.append(WorkspaceDirectory)
|
||||
from projects import *
|
||||
|
||||
# Log error
|
||||
printLog(log, "")
|
||||
printLog(log, "-------")
|
||||
printLog(log, "--- Install to client install")
|
||||
printLog(log, "-------")
|
||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||
printLog(log, "")
|
||||
|
||||
for category in InstallClientData:
|
||||
printLog(log, "CATEGORY " + category["Name"])
|
||||
packExt = ".bnp"
|
||||
if (category["StreamedPackages"]):
|
||||
packExt = ".snp"
|
||||
if (category["UnpackTo"] != None):
|
||||
targetPath = ClientInstallDirectory
|
||||
if (category["UnpackTo"] != ""):
|
||||
targetPath += "/" + category["UnpackTo"]
|
||||
mkPath(log, targetPath)
|
||||
for package in category["Packages"]:
|
||||
printLog(log, "PACKAGE " + package[0])
|
||||
mkPath(log, InstallDirectory + "/" + package[0])
|
||||
copyFilesNoTreeIfNeeded(log, InstallDirectory + "/" + package[0], targetPath)
|
||||
else:
|
||||
sourcePath = ClientPatchDirectory + "/bnp"
|
||||
targetPath = ClientInstallDirectory + "/data"
|
||||
mkPath(log, targetPath)
|
||||
for package in category["Packages"]:
|
||||
printLog(log, "PACKAGE " + package[0])
|
||||
sourceBnp = sourcePath + "/" + package[0] + packExt
|
||||
targetBnp = targetPath + "/" + package[0] + packExt
|
||||
if (len(package[1]) > 0):
|
||||
sourceBnp = sourcePath + "/" + package[1][0]
|
||||
targetBnp = targetPath + "/" + package[1][0]
|
||||
printLog(log, "TARGET " + package[1][0])
|
||||
copyFileIfNeeded(log, sourceBnp, targetBnp)
|
||||
for ref in category["Refs"]:
|
||||
printLog(log, "REFERENCE " + ref)
|
||||
sourceRef = sourcePath + "/" + ref + "_.ref"
|
||||
targetRef = targetPath + "/" + ref + "_.ref"
|
||||
copyFileIfNeeded(log, sourceRef, targetRef)
|
||||
printLog(log, "")
|
||||
|
||||
log.close()
|
||||
if os.path.isfile("d2_client_install.log"):
|
||||
os.remove("d2_client_install.log")
|
||||
shutil.copy("log.log", time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time())) + "_client_install.log")
|
||||
shutil.move("log.log", "d2_client_install.log")
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# \file d2_client_install.py
|
||||
# \brief Install to client install
|
||||
# \date 2009-02-18 16:19GMT
|
||||
# \author Jan Boon (Kaetemi)
|
||||
# Python port of game data build pipeline.
|
||||
# Install to client install
|
||||
#
|
||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||
# Copyright (C) 2009-2014 by authors
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
import time, sys, os, shutil, subprocess, distutils.dir_util
|
||||
sys.path.append("configuration")
|
||||
|
||||
if os.path.isfile("log.log"):
|
||||
os.remove("log.log")
|
||||
log = open("log.log", "w")
|
||||
from scripts import *
|
||||
from buildsite_local import *
|
||||
from tools import *
|
||||
|
||||
sys.path.append(WorkspaceDirectory)
|
||||
from projects import *
|
||||
|
||||
# Log error
|
||||
printLog(log, "")
|
||||
printLog(log, "-------")
|
||||
printLog(log, "--- Install to client install")
|
||||
printLog(log, "-------")
|
||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||
printLog(log, "")
|
||||
|
||||
for category in InstallClientData:
|
||||
printLog(log, "CATEGORY " + category["Name"])
|
||||
packExt = ".bnp"
|
||||
if (category["StreamedPackages"]):
|
||||
packExt = ".snp"
|
||||
if (category["UnpackTo"] != None):
|
||||
targetPath = ClientInstallDirectory
|
||||
if (category["UnpackTo"] != ""):
|
||||
targetPath += "/" + category["UnpackTo"]
|
||||
mkPath(log, targetPath)
|
||||
for package in category["Packages"]:
|
||||
printLog(log, "PACKAGE " + package[0])
|
||||
mkPath(log, InstallDirectory + "/" + package[0])
|
||||
copyFilesNoTreeIfNeeded(log, InstallDirectory + "/" + package[0], targetPath)
|
||||
else:
|
||||
sourcePath = ClientPatchDirectory + "/bnp"
|
||||
targetPath = ClientInstallDirectory + "/data"
|
||||
mkPath(log, targetPath)
|
||||
for package in category["Packages"]:
|
||||
printLog(log, "PACKAGE " + package[0])
|
||||
sourceBnp = sourcePath + "/" + package[0] + packExt
|
||||
targetBnp = targetPath + "/" + package[0] + packExt
|
||||
if (len(package[1]) > 0):
|
||||
sourceBnp = sourcePath + "/" + package[1][0]
|
||||
targetBnp = targetPath + "/" + package[1][0]
|
||||
printLog(log, "TARGET " + package[1][0])
|
||||
copyFileIfNeeded(log, sourceBnp, targetBnp)
|
||||
for ref in category["Refs"]:
|
||||
printLog(log, "REFERENCE " + ref)
|
||||
sourceRef = sourcePath + "/" + ref + "_.ref"
|
||||
targetRef = targetPath + "/" + ref + "_.ref"
|
||||
copyFileIfNeeded(log, sourceRef, targetRef)
|
||||
printLog(log, "")
|
||||
|
||||
log.close()
|
||||
if os.path.isfile("d2_client_install.log"):
|
||||
os.remove("d2_client_install.log")
|
||||
shutil.copy("log.log", time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time())) + "_client_install.log")
|
||||
shutil.move("log.log", "d2_client_install.log")
|
||||
|
@ -1,32 +1,32 @@
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# \file export_build_install.py
|
||||
# \brief Run all processes
|
||||
# \date 2009-02-18 15:28GMT
|
||||
# \author Jan Boon (Kaetemi)
|
||||
# Python port of game data build pipeline.
|
||||
# Run all processes
|
||||
#
|
||||
# NeL - MMORPG Framework <http:#dev.ryzom.com/projects/nel/>
|
||||
# Copyright (C) 2009-2014 by authors
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http:#www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
import shutil, subprocess
|
||||
|
||||
subprocess.call([ "python", "1_export.py" ])
|
||||
subprocess.call([ "python", "2_build.py" ])
|
||||
subprocess.call([ "python", "3_install.py" ])
|
||||
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# \file export_build_install.py
|
||||
# \brief Run all processes
|
||||
# \date 2009-02-18 15:28GMT
|
||||
# \author Jan Boon (Kaetemi)
|
||||
# Python port of game data build pipeline.
|
||||
# Run all processes
|
||||
#
|
||||
# NeL - MMORPG Framework <http:#dev.ryzom.com/projects/nel/>
|
||||
# Copyright (C) 2009-2014 by authors
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http:#www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
import shutil, subprocess
|
||||
|
||||
subprocess.call([ "python", "1_export.py" ])
|
||||
subprocess.call([ "python", "2_build.py" ])
|
||||
subprocess.call([ "python", "3_install.py" ])
|
||||
|
||||
|
@ -1,220 +1,220 @@
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# #################################################################
|
||||
# ## %PreGenWarning%
|
||||
# #################################################################
|
||||
#
|
||||
# \file directories.py
|
||||
# \brief Directories configuration
|
||||
# \date %PreGenDateTimeStamp%
|
||||
# \author Jan Boon (Kaetemi)
|
||||
# \date 2001-2005
|
||||
# \author Nevrax
|
||||
# Python port of game data build pipeline.
|
||||
# Directories configuration for '%PreGenEcosystemName%' ecosystem.
|
||||
#
|
||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||
# Copyright (C) 2009-2014 by authors
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
|
||||
# *** ECOSYSTEM AND CONTINENT NAMES ***
|
||||
|
||||
EcosystemName = "%PreGenEcosystemName%"
|
||||
EcosystemPath = "ecosystems/" + EcosystemName
|
||||
CommonName = EcosystemName
|
||||
CommonPath = EcosystemPath
|
||||
|
||||
DatabaseRootName = "%PreGenDatabaseRootName%"
|
||||
DatabaseRootPath = "stuff/" + DatabaseRootName
|
||||
|
||||
|
||||
# *** SOURCE DIRECTORIES IN THE DATABASE ***
|
||||
|
||||
# Shape directories
|
||||
ShapeSourceDirectories = [ ]
|
||||
ShapeSourceDirectories += [ DatabaseRootPath + "/decors/vegetations" ]
|
||||
ShapeSourceDirectories += [ "landscape/ligo/" + EcosystemName + "/max" ]
|
||||
|
||||
# Maps directories
|
||||
MapSourceDirectories = [ ]
|
||||
MapSourceDirectories += [ DatabaseRootPath + "/decors/_textures" ]
|
||||
%PreGenMapSubdirectories%MapSourceDirectories += [ "landscape/microveget/" + EcosystemName + "" ]
|
||||
MapSourceDirectories += [ "landscape/water/meshes/" + EcosystemName + "" ]
|
||||
|
||||
MapUncompressedSourceDirectories = [ ]
|
||||
|
||||
# Tiles directories
|
||||
TilesSourceDirectories = [ ]
|
||||
%PreGenTileSourceDirectories%
|
||||
# Tiles root directory
|
||||
TileRootSourceDirectory = "landscape/_texture_tiles/" + EcosystemName
|
||||
|
||||
# Displace directory
|
||||
DisplaceSourceDirectory = "landscape/_texture_tiles/" + EcosystemName + "/displace"
|
||||
|
||||
# Do not use, needs to be removed and fixed in processes
|
||||
DisplaceSourceDirectories = [ ]
|
||||
DisplaceSourceDirectories += [ DisplaceSourceDirectory ]
|
||||
|
||||
# Bank directory
|
||||
BankSourceDirectory = "landscape/_texture_tiles/" + EcosystemName
|
||||
|
||||
# Vegetable set directories
|
||||
VegetSetSourceDirectories = [ ]
|
||||
VegetSetSourceDirectories += [ "landscape/microveget/" + EcosystemName ]
|
||||
|
||||
# Veget directories
|
||||
VegetSourceDirectories = [ ]
|
||||
VegetSourceDirectories += [ "landscape/microveget/" + EcosystemName ]
|
||||
|
||||
# Ligo directories
|
||||
LigoBaseSourceDirectory = "landscape/ligo/" + EcosystemName
|
||||
LigoMaxSourceDirectory = LigoBaseSourceDirectory + "/max"
|
||||
|
||||
# Zone directories
|
||||
ZoneSourceDirectory = [ "landscape/zones/" + EcosystemName ] # For old snowballs style landscape when not using ligo
|
||||
|
||||
# Ig landscape directories
|
||||
IgLandSourceDirectory = "_invalid"
|
||||
|
||||
# Ig other directories
|
||||
IgOtherSourceDirectory = "_invalid"
|
||||
|
||||
# PACS primitives directories
|
||||
PacsPrimSourceDirectories = [ ]
|
||||
PacsPrimSourceDirectories += [ DatabaseRootPath + "/decors/vegetations" ]
|
||||
|
||||
|
||||
# *** LOOKUP DIRECTORIES WITHIN THE BUILD PIPELINE *** (TODO: use these instead of search_pathes in properties(_base).cfg)
|
||||
|
||||
# Ig lookup directories used by rbank
|
||||
IgLookupDirectories = [ ]
|
||||
|
||||
# Shape lookup directories used by rbank
|
||||
ShapeLookupDirectories = [ ]
|
||||
ShapeLookupDirectories += [ EcosystemPath + "/shape_clodtex_build" ]
|
||||
ShapeLookupDirectories += [ EcosystemPath + "/shape_with_coarse_mesh" ]
|
||||
|
||||
# Map lookup directories not yet used
|
||||
MapLookupDirectories = [ ]
|
||||
MapLookupDirectories += [ EcosystemPath + "/map_export" ]
|
||||
MapLookupDirectories += [ EcosystemPath + "/map_uncompressed" ]
|
||||
|
||||
|
||||
# *** EXPORT DIRECTORIES FOR THE BUILD PIPELINE ***
|
||||
|
||||
# Map directories
|
||||
MapExportDirectory = CommonPath + "/map_export"
|
||||
MapUncompressedExportDirectory = CommonPath + "/map_uncompressed"
|
||||
|
||||
# Shape directories
|
||||
ShapeTagExportDirectory = CommonPath + "/shape_tag"
|
||||
ShapeNotOptimizedExportDirectory = CommonPath + "/shape_not_optimized"
|
||||
ShapeWithCoarseMeshExportDirectory = CommonPath + "/shape_with_coarse_mesh"
|
||||
ShapeLightmapNotOptimizedExportDirectory = CommonPath + "/shape_lightmap_not_optimized"
|
||||
ShapeAnimExportDirectory = CommonPath + "/shape_anim"
|
||||
|
||||
# Smallbank directories
|
||||
SmallbankExportDirectory = CommonPath + "/smallbank"
|
||||
|
||||
# Tiles directories
|
||||
TilesExportDirectory = CommonPath + "/tiles"
|
||||
|
||||
# Tiles directories
|
||||
DisplaceExportDirectory = CommonPath + "/diplace"
|
||||
|
||||
# Veget directories
|
||||
VegetExportDirectory = CommonPath + "/veget"
|
||||
VegetTagExportDirectory = CommonPath + "/veget_tag"
|
||||
|
||||
# Veget Set directories
|
||||
VegetSetExportDirectory = CommonPath + "/veget_set"
|
||||
|
||||
# Ligo directories
|
||||
LigoEcosystemExportDirectory = CommonPath + "/ligo_es"
|
||||
LigoEcosystemIgExportDirectory = LigoEcosystemExportDirectory + "/igs"
|
||||
LigoEcosystemZoneExportDirectory = LigoEcosystemExportDirectory + "/zones"
|
||||
LigoEcosystemZoneLigoExportDirectory = LigoEcosystemExportDirectory + "/zoneligos"
|
||||
LigoEcosystemCmbExportDirectory = LigoEcosystemExportDirectory + "/cmb"
|
||||
LigoEcosystemTagExportDirectory = CommonPath + "/ligo_es_tag"
|
||||
|
||||
# Zone directories
|
||||
ZoneExportDirectory = CommonPath + "/zone"
|
||||
|
||||
# PACS primitives directories
|
||||
PacsPrimExportDirectory = CommonPath + "/pacs_prim"
|
||||
PacsPrimTagExportDirectory = CommonPath + "/pacs_prim_tag"
|
||||
|
||||
|
||||
# *** BUILD DIRECTORIES FOR THE BUILD PIPELINE ***
|
||||
|
||||
# Map directories
|
||||
MapBuildDirectory = CommonPath + "/map"
|
||||
MapPanoplyBuildDirectory = CommonPath + "/map_panoply"
|
||||
MapPanoplyHlsInfoBuildDirectory = CommonPath + "/map_panoply_hls_info"
|
||||
MapPanoplyHlsBankBuildDirectory = CommonPath + "/map_panoply_hls_bank"
|
||||
MapPanoplyCacheBuildDirectory = CommonPath + "/map_panoply_cache"
|
||||
MapTagBuildDirectory = CommonPath + "/map_tag"
|
||||
|
||||
# Shape directories
|
||||
ShapeClodtexBuildDirectory = CommonPath + "/shape_clodtex_build"
|
||||
ShapeWithCoarseMeshBuildDirectory = CommonPath + "/shape_with_coarse_mesh_builded"
|
||||
ShapeLightmapBuildDirectory = CommonPath + "/shape_lightmap"
|
||||
ShapeLightmap16BitsBuildDirectory = CommonPath + "/shape_lightmap_16_bits"
|
||||
|
||||
# Farbank directories
|
||||
FarbankBuildDirectory = CommonPath + "/farbank"
|
||||
|
||||
# Ig directories ************** TODO CONFIRM IN IG BUILD PROCESS ************ FIX RBANK IF NEEDED ***********
|
||||
IgLandBuildDirectory = "_invalid"
|
||||
IgOtherBuildDirectory = "_invalid"
|
||||
|
||||
# Rbank directories
|
||||
RbankOutputBuildDirectory = "_invalid"
|
||||
|
||||
# Ligo directories
|
||||
|
||||
|
||||
# *** INSTALL DIRECTORIES IN THE CLIENT DATA ***
|
||||
|
||||
# Map directory
|
||||
MapInstallDirectory = CommonName + "_maps"
|
||||
BitmapInstallDirectory = MapInstallDirectory
|
||||
|
||||
# Shape directory
|
||||
ShapeInstallDirectory = CommonName + "_shapes"
|
||||
|
||||
# Lightmap directory
|
||||
LightmapInstallDirectory = CommonName + "_lightmaps"
|
||||
|
||||
# Tile directory
|
||||
TilesInstallDirectory = CommonName + "_tiles"
|
||||
|
||||
# Displace directory
|
||||
DisplaceInstallDirectory = CommonName + "_displaces"
|
||||
|
||||
# Bank directory
|
||||
BankInstallDirectory = CommonName + "_bank"
|
||||
|
||||
# Vegetable set directory
|
||||
VegetSetInstallDirectory = CommonName + "_vegetable_sets"
|
||||
|
||||
# Vegetable shape directory
|
||||
VegetInstallDirectory = CommonName + "_vegetables"
|
||||
|
||||
# PACS primitives directories
|
||||
PacsPrimInstallDirectory = CommonName + "_pacs_prim"
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# #################################################################
|
||||
# ## %PreGenWarning%
|
||||
# #################################################################
|
||||
#
|
||||
# \file directories.py
|
||||
# \brief Directories configuration
|
||||
# \date %PreGenDateTimeStamp%
|
||||
# \author Jan Boon (Kaetemi)
|
||||
# \date 2001-2005
|
||||
# \author Nevrax
|
||||
# Python port of game data build pipeline.
|
||||
# Directories configuration for '%PreGenEcosystemName%' ecosystem.
|
||||
#
|
||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||
# Copyright (C) 2009-2014 by authors
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
|
||||
# *** ECOSYSTEM AND CONTINENT NAMES ***
|
||||
|
||||
EcosystemName = "%PreGenEcosystemName%"
|
||||
EcosystemPath = "ecosystems/" + EcosystemName
|
||||
CommonName = EcosystemName
|
||||
CommonPath = EcosystemPath
|
||||
|
||||
DatabaseRootName = "%PreGenDatabaseRootName%"
|
||||
DatabaseRootPath = "stuff/" + DatabaseRootName
|
||||
|
||||
|
||||
# *** SOURCE DIRECTORIES IN THE DATABASE ***
|
||||
|
||||
# Shape directories
|
||||
ShapeSourceDirectories = [ ]
|
||||
ShapeSourceDirectories += [ DatabaseRootPath + "/decors/vegetations" ]
|
||||
ShapeSourceDirectories += [ "landscape/ligo/" + EcosystemName + "/max" ]
|
||||
|
||||
# Maps directories
|
||||
MapSourceDirectories = [ ]
|
||||
MapSourceDirectories += [ DatabaseRootPath + "/decors/_textures" ]
|
||||
%PreGenMapSubdirectories%MapSourceDirectories += [ "landscape/microveget/" + EcosystemName + "" ]
|
||||
MapSourceDirectories += [ "landscape/water/meshes/" + EcosystemName + "" ]
|
||||
|
||||
MapUncompressedSourceDirectories = [ ]
|
||||
|
||||
# Tiles directories
|
||||
TilesSourceDirectories = [ ]
|
||||
%PreGenTileSourceDirectories%
|
||||
# Tiles root directory
|
||||
TileRootSourceDirectory = "landscape/_texture_tiles/" + EcosystemName
|
||||
|
||||
# Displace directory
|
||||
DisplaceSourceDirectory = "landscape/_texture_tiles/" + EcosystemName + "/displace"
|
||||
|
||||
# Do not use, needs to be removed and fixed in processes
|
||||
DisplaceSourceDirectories = [ ]
|
||||
DisplaceSourceDirectories += [ DisplaceSourceDirectory ]
|
||||
|
||||
# Bank directory
|
||||
BankSourceDirectory = "landscape/_texture_tiles/" + EcosystemName
|
||||
|
||||
# Vegetable set directories
|
||||
VegetSetSourceDirectories = [ ]
|
||||
VegetSetSourceDirectories += [ "landscape/microveget/" + EcosystemName ]
|
||||
|
||||
# Veget directories
|
||||
VegetSourceDirectories = [ ]
|
||||
VegetSourceDirectories += [ "landscape/microveget/" + EcosystemName ]
|
||||
|
||||
# Ligo directories
|
||||
LigoBaseSourceDirectory = "landscape/ligo/" + EcosystemName
|
||||
LigoMaxSourceDirectory = LigoBaseSourceDirectory + "/max"
|
||||
|
||||
# Zone directories
|
||||
ZoneSourceDirectory = [ "landscape/zones/" + EcosystemName ] # For old snowballs style landscape when not using ligo
|
||||
|
||||
# Ig landscape directories
|
||||
IgLandSourceDirectory = "_invalid"
|
||||
|
||||
# Ig other directories
|
||||
IgOtherSourceDirectory = "_invalid"
|
||||
|
||||
# PACS primitives directories
|
||||
PacsPrimSourceDirectories = [ ]
|
||||
PacsPrimSourceDirectories += [ DatabaseRootPath + "/decors/vegetations" ]
|
||||
|
||||
|
||||
# *** LOOKUP DIRECTORIES WITHIN THE BUILD PIPELINE *** (TODO: use these instead of search_pathes in properties(_base).cfg)
|
||||
|
||||
# Ig lookup directories used by rbank
|
||||
IgLookupDirectories = [ ]
|
||||
|
||||
# Shape lookup directories used by rbank
|
||||
ShapeLookupDirectories = [ ]
|
||||
ShapeLookupDirectories += [ EcosystemPath + "/shape_clodtex_build" ]
|
||||
ShapeLookupDirectories += [ EcosystemPath + "/shape_with_coarse_mesh" ]
|
||||
|
||||
# Map lookup directories not yet used
|
||||
MapLookupDirectories = [ ]
|
||||
MapLookupDirectories += [ EcosystemPath + "/map_export" ]
|
||||
MapLookupDirectories += [ EcosystemPath + "/map_uncompressed" ]
|
||||
|
||||
|
||||
# *** EXPORT DIRECTORIES FOR THE BUILD PIPELINE ***
|
||||
|
||||
# Map directories
|
||||
MapExportDirectory = CommonPath + "/map_export"
|
||||
MapUncompressedExportDirectory = CommonPath + "/map_uncompressed"
|
||||
|
||||
# Shape directories
|
||||
ShapeTagExportDirectory = CommonPath + "/shape_tag"
|
||||
ShapeNotOptimizedExportDirectory = CommonPath + "/shape_not_optimized"
|
||||
ShapeWithCoarseMeshExportDirectory = CommonPath + "/shape_with_coarse_mesh"
|
||||
ShapeLightmapNotOptimizedExportDirectory = CommonPath + "/shape_lightmap_not_optimized"
|
||||
ShapeAnimExportDirectory = CommonPath + "/shape_anim"
|
||||
|
||||
# Smallbank directories
|
||||
SmallbankExportDirectory = CommonPath + "/smallbank"
|
||||
|
||||
# Tiles directories
|
||||
TilesExportDirectory = CommonPath + "/tiles"
|
||||
|
||||
# Tiles directories
|
||||
DisplaceExportDirectory = CommonPath + "/diplace"
|
||||
|
||||
# Veget directories
|
||||
VegetExportDirectory = CommonPath + "/veget"
|
||||
VegetTagExportDirectory = CommonPath + "/veget_tag"
|
||||
|
||||
# Veget Set directories
|
||||
VegetSetExportDirectory = CommonPath + "/veget_set"
|
||||
|
||||
# Ligo directories
|
||||
LigoEcosystemExportDirectory = CommonPath + "/ligo_es"
|
||||
LigoEcosystemIgExportDirectory = LigoEcosystemExportDirectory + "/igs"
|
||||
LigoEcosystemZoneExportDirectory = LigoEcosystemExportDirectory + "/zones"
|
||||
LigoEcosystemZoneLigoExportDirectory = LigoEcosystemExportDirectory + "/zoneligos"
|
||||
LigoEcosystemCmbExportDirectory = LigoEcosystemExportDirectory + "/cmb"
|
||||
LigoEcosystemTagExportDirectory = CommonPath + "/ligo_es_tag"
|
||||
|
||||
# Zone directories
|
||||
ZoneExportDirectory = CommonPath + "/zone"
|
||||
|
||||
# PACS primitives directories
|
||||
PacsPrimExportDirectory = CommonPath + "/pacs_prim"
|
||||
PacsPrimTagExportDirectory = CommonPath + "/pacs_prim_tag"
|
||||
|
||||
|
||||
# *** BUILD DIRECTORIES FOR THE BUILD PIPELINE ***
|
||||
|
||||
# Map directories
|
||||
MapBuildDirectory = CommonPath + "/map"
|
||||
MapPanoplyBuildDirectory = CommonPath + "/map_panoply"
|
||||
MapPanoplyHlsInfoBuildDirectory = CommonPath + "/map_panoply_hls_info"
|
||||
MapPanoplyHlsBankBuildDirectory = CommonPath + "/map_panoply_hls_bank"
|
||||
MapPanoplyCacheBuildDirectory = CommonPath + "/map_panoply_cache"
|
||||
MapTagBuildDirectory = CommonPath + "/map_tag"
|
||||
|
||||
# Shape directories
|
||||
ShapeClodtexBuildDirectory = CommonPath + "/shape_clodtex_build"
|
||||
ShapeWithCoarseMeshBuildDirectory = CommonPath + "/shape_with_coarse_mesh_builded"
|
||||
ShapeLightmapBuildDirectory = CommonPath + "/shape_lightmap"
|
||||
ShapeLightmap16BitsBuildDirectory = CommonPath + "/shape_lightmap_16_bits"
|
||||
|
||||
# Farbank directories
|
||||
FarbankBuildDirectory = CommonPath + "/farbank"
|
||||
|
||||
# Ig directories ************** TODO CONFIRM IN IG BUILD PROCESS ************ FIX RBANK IF NEEDED ***********
|
||||
IgLandBuildDirectory = "_invalid"
|
||||
IgOtherBuildDirectory = "_invalid"
|
||||
|
||||
# Rbank directories
|
||||
RbankOutputBuildDirectory = "_invalid"
|
||||
|
||||
# Ligo directories
|
||||
|
||||
|
||||
# *** INSTALL DIRECTORIES IN THE CLIENT DATA ***
|
||||
|
||||
# Map directory
|
||||
MapInstallDirectory = CommonName + "_maps"
|
||||
BitmapInstallDirectory = MapInstallDirectory
|
||||
|
||||
# Shape directory
|
||||
ShapeInstallDirectory = CommonName + "_shapes"
|
||||
|
||||
# Lightmap directory
|
||||
LightmapInstallDirectory = CommonName + "_lightmaps"
|
||||
|
||||
# Tile directory
|
||||
TilesInstallDirectory = CommonName + "_tiles"
|
||||
|
||||
# Displace directory
|
||||
DisplaceInstallDirectory = CommonName + "_displaces"
|
||||
|
||||
# Bank directory
|
||||
BankInstallDirectory = CommonName + "_bank"
|
||||
|
||||
# Vegetable set directory
|
||||
VegetSetInstallDirectory = CommonName + "_vegetable_sets"
|
||||
|
||||
# Vegetable shape directory
|
||||
VegetInstallDirectory = CommonName + "_vegetables"
|
||||
|
||||
# PACS primitives directories
|
||||
PacsPrimInstallDirectory = CommonName + "_pacs_prim"
|
||||
|
@ -1,122 +1,122 @@
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# #################################################################
|
||||
# ## %PreGenWarning%
|
||||
# #################################################################
|
||||
#
|
||||
# \file config.py
|
||||
# \brief Process configuration
|
||||
# \date %PreGenDateTimeStamp%
|
||||
# \author Jan Boon (Kaetemi)
|
||||
# Python port of game data build pipeline.
|
||||
# Process configuration for '%PreGenEcosystemName%' ecosystem.
|
||||
#
|
||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||
# Copyright (C) 2009-2014 by authors
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
# *** PROCESS CONFIGURATION ***
|
||||
|
||||
# *** PROCESS CONFIG ***
|
||||
ProcessToComplete = [ ]
|
||||
ProcessToComplete += [ "shape" ]
|
||||
ProcessToComplete += [ "map" ]
|
||||
ProcessToComplete += [ "smallbank" ]
|
||||
ProcessToComplete += [ "farbank" ]
|
||||
ProcessToComplete += [ "tiles" ]
|
||||
ProcessToComplete += [ "displace" ]
|
||||
ProcessToComplete += [ "veget" ]
|
||||
ProcessToComplete += [ "vegetset" ]
|
||||
ProcessToComplete += [ "ligo" ]
|
||||
ProcessToComplete += [ "pacs_prim" ]
|
||||
|
||||
|
||||
# *** ECOSYSTEM AND CONTINENT NAMES ***
|
||||
|
||||
EcosystemName = "%PreGenEcosystemName%"
|
||||
EcosystemPath = "ecosystems/" + EcosystemName
|
||||
CommonName = EcosystemName
|
||||
CommonPath = EcosystemPath
|
||||
|
||||
|
||||
# *** MAP EXPORT OPTIONS ***
|
||||
PanoplyFileList = [ ]
|
||||
HlsBankFileName = ""
|
||||
|
||||
# *** SHAPE EXPORT OPTIONS ***
|
||||
|
||||
# Compute lightmaps ?
|
||||
ShapeExportOptExportLighting = "%PreGenShapeExportOptExportLighting%"
|
||||
|
||||
# Cast shadow in lightmap ?
|
||||
ShapeExportOptShadow = "%PreGenShapeExportOptShadow%"
|
||||
|
||||
# Lighting limits. 0 : normal, 1 : soft shadows
|
||||
ShapeExportOptLightingLimit = %PreGenShapeExportOptLightingLimit%
|
||||
|
||||
# Lightmap lumel size
|
||||
ShapeExportOptLumelSize = "%PreGenShapeExportOptLumelSize%"
|
||||
|
||||
# Oversampling value. Can be 1, 2, 4 or 8
|
||||
ShapeExportOptOversampling = %PreGenShapeExportOptOversampling%
|
||||
|
||||
# Does the lightmap must be generated in 8 bits format ?
|
||||
ShapeExportOpt8BitsLightmap = "%PreGenShapeExportOpt8BitsLightmap%"
|
||||
|
||||
# Does the lightmaps export must generate logs ?
|
||||
ShapeExportOptLightmapLog = "%PreGenShapeExportOptLightmapLog%"
|
||||
|
||||
# Coarse mesh texture mul size
|
||||
TextureMulSizeValue = "%PreGenTextureMulSizeValue%"
|
||||
|
||||
ClodConfigFile = ""
|
||||
|
||||
# *** COARSE MESH TEXTURE NAME ***
|
||||
CoarseMeshTextureNames = [ ]
|
||||
%PreGenCoarseMeshTextureNames%
|
||||
# *** POSTFIX USED BY THE MULTIPLE TILES SYSTEM ***
|
||||
MultipleTilesPostfix = [ ]
|
||||
%PreGenMultipleTilesPostfix%
|
||||
# *** BANK EXPORT OPTIONS ***
|
||||
|
||||
# Name of the tilebank to use
|
||||
BankTileBankName = EcosystemName
|
||||
|
||||
# *** RBANK EXPORT OPTIONS ***
|
||||
|
||||
# Output names
|
||||
RbankRbankName = "_invalid"
|
||||
|
||||
# *** LIGO OPTIONS ***
|
||||
|
||||
LigoExportLand = ""
|
||||
LigoExportOnePass = 0
|
||||
|
||||
# *** MAPS OPTIONS ***
|
||||
|
||||
ReduceBitmapFactor = 0
|
||||
# list all panoply files
|
||||
MapPanoplyFileList = None
|
||||
# name of the .hlsbank to build.
|
||||
MapHlsBankFileName = None
|
||||
|
||||
# *** SHAPE BUILD OPTIONS *
|
||||
|
||||
BuildShadowSkinEnabled = False
|
||||
ClodConfigFile = ""
|
||||
|
||||
# *** PACS_PRIM OPTIONS ***
|
||||
WantLandscapeColPrimPacsList = True
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# #################################################################
|
||||
# ## %PreGenWarning%
|
||||
# #################################################################
|
||||
#
|
||||
# \file config.py
|
||||
# \brief Process configuration
|
||||
# \date %PreGenDateTimeStamp%
|
||||
# \author Jan Boon (Kaetemi)
|
||||
# Python port of game data build pipeline.
|
||||
# Process configuration for '%PreGenEcosystemName%' ecosystem.
|
||||
#
|
||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||
# Copyright (C) 2009-2014 by authors
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
# *** PROCESS CONFIGURATION ***
|
||||
|
||||
# *** PROCESS CONFIG ***
|
||||
ProcessToComplete = [ ]
|
||||
ProcessToComplete += [ "shape" ]
|
||||
ProcessToComplete += [ "map" ]
|
||||
ProcessToComplete += [ "smallbank" ]
|
||||
ProcessToComplete += [ "farbank" ]
|
||||
ProcessToComplete += [ "tiles" ]
|
||||
ProcessToComplete += [ "displace" ]
|
||||
ProcessToComplete += [ "veget" ]
|
||||
ProcessToComplete += [ "vegetset" ]
|
||||
ProcessToComplete += [ "ligo" ]
|
||||
ProcessToComplete += [ "pacs_prim" ]
|
||||
|
||||
|
||||
# *** ECOSYSTEM AND CONTINENT NAMES ***
|
||||
|
||||
EcosystemName = "%PreGenEcosystemName%"
|
||||
EcosystemPath = "ecosystems/" + EcosystemName
|
||||
CommonName = EcosystemName
|
||||
CommonPath = EcosystemPath
|
||||
|
||||
|
||||
# *** MAP EXPORT OPTIONS ***
|
||||
PanoplyFileList = [ ]
|
||||
HlsBankFileName = ""
|
||||
|
||||
# *** SHAPE EXPORT OPTIONS ***
|
||||
|
||||
# Compute lightmaps ?
|
||||
ShapeExportOptExportLighting = "%PreGenShapeExportOptExportLighting%"
|
||||
|
||||
# Cast shadow in lightmap ?
|
||||
ShapeExportOptShadow = "%PreGenShapeExportOptShadow%"
|
||||
|
||||
# Lighting limits. 0 : normal, 1 : soft shadows
|
||||
ShapeExportOptLightingLimit = %PreGenShapeExportOptLightingLimit%
|
||||
|
||||
# Lightmap lumel size
|
||||
ShapeExportOptLumelSize = "%PreGenShapeExportOptLumelSize%"
|
||||
|
||||
# Oversampling value. Can be 1, 2, 4 or 8
|
||||
ShapeExportOptOversampling = %PreGenShapeExportOptOversampling%
|
||||
|
||||
# Does the lightmap must be generated in 8 bits format ?
|
||||
ShapeExportOpt8BitsLightmap = "%PreGenShapeExportOpt8BitsLightmap%"
|
||||
|
||||
# Does the lightmaps export must generate logs ?
|
||||
ShapeExportOptLightmapLog = "%PreGenShapeExportOptLightmapLog%"
|
||||
|
||||
# Coarse mesh texture mul size
|
||||
TextureMulSizeValue = "%PreGenTextureMulSizeValue%"
|
||||
|
||||
ClodConfigFile = ""
|
||||
|
||||
# *** COARSE MESH TEXTURE NAME ***
|
||||
CoarseMeshTextureNames = [ ]
|
||||
%PreGenCoarseMeshTextureNames%
|
||||
# *** POSTFIX USED BY THE MULTIPLE TILES SYSTEM ***
|
||||
MultipleTilesPostfix = [ ]
|
||||
%PreGenMultipleTilesPostfix%
|
||||
# *** BANK EXPORT OPTIONS ***
|
||||
|
||||
# Name of the tilebank to use
|
||||
BankTileBankName = EcosystemName
|
||||
|
||||
# *** RBANK EXPORT OPTIONS ***
|
||||
|
||||
# Output names
|
||||
RbankRbankName = "_invalid"
|
||||
|
||||
# *** LIGO OPTIONS ***
|
||||
|
||||
LigoExportLand = ""
|
||||
LigoExportOnePass = 0
|
||||
|
||||
# *** MAPS OPTIONS ***
|
||||
|
||||
ReduceBitmapFactor = 0
|
||||
# list all panoply files
|
||||
MapPanoplyFileList = None
|
||||
# name of the .hlsbank to build.
|
||||
MapHlsBankFileName = None
|
||||
|
||||
# *** SHAPE BUILD OPTIONS *
|
||||
|
||||
BuildShadowSkinEnabled = False
|
||||
ClodConfigFile = ""
|
||||
|
||||
# *** PACS_PRIM OPTIONS ***
|
||||
WantLandscapeColPrimPacsList = True
|
||||
|
@ -1,65 +1,65 @@
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# \file 0_setup.py
|
||||
# \brief Run all setup processes
|
||||
# \date 2009-02-18 15:28GMT
|
||||
# \author Jan Boon (Kaetemi)
|
||||
# Python port of game data build pipeline.
|
||||
# Run all setup processes
|
||||
#
|
||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||
# Copyright (C) 2009-2014 by authors
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
import time, sys, os, shutil, subprocess, distutils.dir_util
|
||||
sys.path.append("../configuration")
|
||||
if os.path.isfile("generate_all.log"):
|
||||
os.remove("generate_all.log")
|
||||
log = open("generate_all.log", "w")
|
||||
from scripts import *
|
||||
from buildsite import *
|
||||
from tools import *
|
||||
|
||||
printLog(log, "")
|
||||
printLog(log, "-------")
|
||||
printLog(log, "--- Generate all")
|
||||
printLog(log, "-------")
|
||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||
printLog(log, "")
|
||||
|
||||
|
||||
try:
|
||||
subprocess.call([ "python", "generate_simple_max_exporters.py" ])
|
||||
except Exception, e:
|
||||
printLog(log, "<" + processName + "> " + str(e))
|
||||
printLog(log, "")
|
||||
|
||||
|
||||
try:
|
||||
subprocess.call([ "python", "generate_tagged_max_exporters.py" ])
|
||||
except Exception, e:
|
||||
printLog(log, "<" + processName + "> " + str(e))
|
||||
printLog(log, "")
|
||||
|
||||
|
||||
try:
|
||||
subprocess.call([ "python", "generate_ecosystem_projects.py" ])
|
||||
except Exception, e:
|
||||
printLog(log, "<" + processName + "> " + str(e))
|
||||
printLog(log, "")
|
||||
|
||||
|
||||
log.close()
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# \file 0_setup.py
|
||||
# \brief Run all setup processes
|
||||
# \date 2009-02-18 15:28GMT
|
||||
# \author Jan Boon (Kaetemi)
|
||||
# Python port of game data build pipeline.
|
||||
# Run all setup processes
|
||||
#
|
||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||
# Copyright (C) 2009-2014 by authors
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
import time, sys, os, shutil, subprocess, distutils.dir_util
|
||||
sys.path.append("../configuration")
|
||||
if os.path.isfile("generate_all.log"):
|
||||
os.remove("generate_all.log")
|
||||
log = open("generate_all.log", "w")
|
||||
from scripts import *
|
||||
from buildsite import *
|
||||
from tools import *
|
||||
|
||||
printLog(log, "")
|
||||
printLog(log, "-------")
|
||||
printLog(log, "--- Generate all")
|
||||
printLog(log, "-------")
|
||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||
printLog(log, "")
|
||||
|
||||
|
||||
try:
|
||||
subprocess.call([ "python", "generate_simple_max_exporters.py" ])
|
||||
except Exception, e:
|
||||
printLog(log, "<" + processName + "> " + str(e))
|
||||
printLog(log, "")
|
||||
|
||||
|
||||
try:
|
||||
subprocess.call([ "python", "generate_tagged_max_exporters.py" ])
|
||||
except Exception, e:
|
||||
printLog(log, "<" + processName + "> " + str(e))
|
||||
printLog(log, "")
|
||||
|
||||
|
||||
try:
|
||||
subprocess.call([ "python", "generate_ecosystem_projects.py" ])
|
||||
except Exception, e:
|
||||
printLog(log, "<" + processName + "> " + str(e))
|
||||
printLog(log, "")
|
||||
|
||||
|
||||
log.close()
|
||||
|
@ -1,278 +1,278 @@
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# \file generate_ecosystem_projects.py
|
||||
# \brief Run all setup processes
|
||||
# \date 2010-09-02 10:36GMT
|
||||
# \author Jan Boon (Kaetemi)
|
||||
# Python port of game data build pipeline.
|
||||
# Generate ecosystem projects
|
||||
#
|
||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||
# Copyright (C) 2009-2014 by authors
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
import time, sys, os, shutil, subprocess, distutils.dir_util
|
||||
sys.path.append("../configuration")
|
||||
if os.path.isfile("generate_ecosystem_projects.log"):
|
||||
os.remove("generate_ecosystem_projects.log")
|
||||
log = open("generate_ecosystem_projects.log", "w")
|
||||
from scripts import *
|
||||
from buildsite import *
|
||||
from tools import *
|
||||
|
||||
printLog(log, "")
|
||||
printLog(log, "-------")
|
||||
printLog(log, "--- Generate ecosystem projects")
|
||||
printLog(log, "-------")
|
||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||
printLog(log, "")
|
||||
|
||||
templateDir = os.getcwd().replace("\\", "/") + "/ecosystem_project_template"
|
||||
mkPath(log, templateDir)
|
||||
|
||||
os.chdir("..")
|
||||
|
||||
|
||||
# Scroll down to add an ecosystem.
|
||||
|
||||
|
||||
|
||||
DefaultShapeExportOptExportLighting = "true"
|
||||
DefaultShapeExportOptShadow = "true"
|
||||
DefaultShapeExportOptLightingLimit = "1"
|
||||
DefaultShapeExportOptLumelSize = "0.25"
|
||||
DefaultShapeExportOptOversampling = "1"
|
||||
DefaultShapeExportOpt8BitsLightmap = "true"
|
||||
DefaultShapeExportOptLightmapLog = "true"
|
||||
DefaultTextureMulSizeValue = "1.5"
|
||||
DefaultSeasonSuffixes = [ "sp" ] + [ "su" ] + [ "au" ] + [ "wi" ]
|
||||
DefaultMapSubdirectories = [ ]
|
||||
DefaultTileDirectories = [ ]
|
||||
|
||||
|
||||
ShapeExportOptExportLighting = DefaultShapeExportOptExportLighting
|
||||
ShapeExportOptShadow = DefaultShapeExportOptShadow
|
||||
ShapeExportOptLightingLimit = DefaultShapeExportOptLightingLimit
|
||||
ShapeExportOptLumelSize = DefaultShapeExportOptLumelSize
|
||||
ShapeExportOptOversampling = DefaultShapeExportOptOversampling
|
||||
ShapeExportOpt8BitsLightmap = DefaultShapeExportOpt8BitsLightmap
|
||||
ShapeExportOptLightmapLog = DefaultShapeExportOptLightmapLog
|
||||
TextureMulSizeValue = DefaultTextureMulSizeValue
|
||||
SeasonSuffixes = DefaultSeasonSuffixes
|
||||
MapSubdirectories = DefaultMapSubdirectories
|
||||
TileDirectories = DefaultTileDirectories
|
||||
|
||||
|
||||
PreGenDateTimeStamp = None
|
||||
PreGenEcosystemName = None
|
||||
PreGenDatabaseRootName = None
|
||||
PreGenCoarseMeshTextureNames = None
|
||||
PreGenMultipleTilesPostfix = None
|
||||
PreGenMapSubdirectories = None
|
||||
PreGenTileSourceDirectories = None
|
||||
|
||||
|
||||
def transformLine(line):
|
||||
newline = line.replace("%PreGenWarning%", "WARNING : this is a generated file, don't change it !")
|
||||
newline = newline.replace("%PreGenDateTimeStamp%", PreGenDateTimeStamp)
|
||||
|
||||
newline = newline.replace("%PreGenEcosystemName%", PreGenEcosystemName)
|
||||
newline = newline.replace("%PreGenDatabaseRootName%", PreGenDatabaseRootName)
|
||||
|
||||
newline = newline.replace("%PreGenCoarseMeshTextureNames%", PreGenCoarseMeshTextureNames)
|
||||
newline = newline.replace("%PreGenMultipleTilesPostfix%", PreGenMultipleTilesPostfix)
|
||||
newline = newline.replace("%PreGenMapSubdirectories%", PreGenMapSubdirectories)
|
||||
newline = newline.replace("%PreGenTileSourceDirectories%", PreGenTileSourceDirectories)
|
||||
|
||||
newline = newline.replace("%PreGenShapeExportOptExportLighting%", ShapeExportOptExportLighting)
|
||||
newline = newline.replace("%PreGenShapeExportOptShadow%", ShapeExportOptShadow)
|
||||
newline = newline.replace("%PreGenShapeExportOptLightingLimit%", ShapeExportOptLightingLimit)
|
||||
newline = newline.replace("%PreGenShapeExportOptLumelSize%", ShapeExportOptLumelSize)
|
||||
newline = newline.replace("%PreGenShapeExportOptOversampling%", ShapeExportOptOversampling)
|
||||
newline = newline.replace("%PreGenShapeExportOpt8BitsLightmap%", ShapeExportOpt8BitsLightmap)
|
||||
newline = newline.replace("%PreGenShapeExportOptLightmapLog%", ShapeExportOptLightmapLog)
|
||||
newline = newline.replace("%PreGenTextureMulSizeValue%", TextureMulSizeValue)
|
||||
newline = newline.replace("%PreGenTileSourceDirectories%", PreGenTileSourceDirectories)
|
||||
|
||||
return newline
|
||||
|
||||
def generateFile(sourceFile, destFile):
|
||||
srcf = open(sourceFile, "r")
|
||||
dstf = open(destFile, "w")
|
||||
printLog(log, "WRITE " + destFile)
|
||||
for line in srcf:
|
||||
dstf.write(transformLine(line))
|
||||
dstf.close()
|
||||
srcf.close()
|
||||
|
||||
def generateEcosystem(ecosystemName, databaseRootName):
|
||||
global PreGenEcosystemName
|
||||
PreGenEcosystemName = ecosystemName
|
||||
global PreGenDatabaseRootName
|
||||
PreGenDatabaseRootName = databaseRootName
|
||||
global PreGenDateTimeStamp
|
||||
PreGenDateTimeStamp = time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time()))
|
||||
|
||||
global PreGenMultipleTilesPostfix
|
||||
PreGenMultipleTilesPostfix = ""
|
||||
global PreGenCoarseMeshTextureNames
|
||||
PreGenCoarseMeshTextureNames = ""
|
||||
global PreGenTileSourceDirectories
|
||||
PreGenTileSourceDirectories = ""
|
||||
for suffix in SeasonSuffixes:
|
||||
PreGenMultipleTilesPostfix += "MultipleTilesPostfix += [ \"_" + suffix + "\" ]\n"
|
||||
PreGenCoarseMeshTextureNames += "CoarseMeshTextureNames += [ \"nel_coarse_mesh_\" + EcosystemName + \"_" + suffix + "\" ]\n"
|
||||
for tiledir in TileDirectories:
|
||||
PreGenTileSourceDirectories += "TilesSourceDirectories += [ \"landscape/_texture_tiles/\" + EcosystemName + \"_" + suffix + "/" + tiledir + "\" ]\n"
|
||||
global PreGenMapSubdirectories
|
||||
PreGenMapSubdirectories = ""
|
||||
for subdir in MapSubdirectories:
|
||||
PreGenMapSubdirectories += "MapSourceDirectories += [ DatabaseRootPath + \"/decors/_textures/" + subdir + "\" ]\n"
|
||||
|
||||
destDir = WorkspaceDirectory + "/ecosystems/" + ecosystemName
|
||||
mkPath(log, destDir)
|
||||
|
||||
generateFile(templateDir + "/process.py", destDir + "/process.py")
|
||||
generateFile(templateDir + "/directories.py", destDir + "/directories.py")
|
||||
|
||||
return
|
||||
|
||||
|
||||
|
||||
# Add new ecosystems below this line.
|
||||
|
||||
|
||||
|
||||
# DESERT
|
||||
ShapeExportOptExportLighting = DefaultShapeExportOptExportLighting
|
||||
ShapeExportOptShadow = DefaultShapeExportOptShadow
|
||||
ShapeExportOptLightingLimit = DefaultShapeExportOptLightingLimit
|
||||
ShapeExportOptLumelSize = DefaultShapeExportOptLumelSize
|
||||
ShapeExportOptOversampling = DefaultShapeExportOptOversampling
|
||||
ShapeExportOpt8BitsLightmap = DefaultShapeExportOpt8BitsLightmap
|
||||
ShapeExportOptLightmapLog = DefaultShapeExportOptLightmapLog
|
||||
TextureMulSizeValue = DefaultTextureMulSizeValue
|
||||
SeasonSuffixes = DefaultSeasonSuffixes
|
||||
MapSubdirectories = [ ]
|
||||
MapSubdirectories += [ "vegetations" ]
|
||||
TileDirectories = [ ]
|
||||
TileDirectories += [ "1.5-marecage_profond" ]
|
||||
TileDirectories += [ "1-marecages" ]
|
||||
TileDirectories += [ "2-citees" ]
|
||||
TileDirectories += [ "3-fond_canyon" ]
|
||||
TileDirectories += [ "4.2-boisbandeclair" ]
|
||||
TileDirectories += [ "4.5-desert2boisbande" ]
|
||||
TileDirectories += [ "4-falaise_bois_bande" ]
|
||||
TileDirectories += [ "5-falaise_normales" ]
|
||||
TileDirectories += [ "6.5-desertalternatif" ]
|
||||
TileDirectories += [ "6-desert" ]
|
||||
TileDirectories += [ "7-routes" ]
|
||||
TileDirectories += [ "8-foretbrule" ]
|
||||
generateEcosystem("desert", "fyros")
|
||||
|
||||
|
||||
# JUNGLE
|
||||
ShapeExportOptExportLighting = DefaultShapeExportOptExportLighting
|
||||
ShapeExportOptShadow = DefaultShapeExportOptShadow
|
||||
ShapeExportOptLightingLimit = DefaultShapeExportOptLightingLimit
|
||||
ShapeExportOptLumelSize = DefaultShapeExportOptLumelSize
|
||||
ShapeExportOptOversampling = DefaultShapeExportOptOversampling
|
||||
ShapeExportOpt8BitsLightmap = "false"
|
||||
ShapeExportOptLightmapLog = DefaultShapeExportOptLightmapLog
|
||||
TextureMulSizeValue = DefaultTextureMulSizeValue
|
||||
SeasonSuffixes = DefaultSeasonSuffixes
|
||||
MapSubdirectories = [ ]
|
||||
MapSubdirectories += [ "vegetations" ]
|
||||
TileDirectories = [ ]
|
||||
TileDirectories += [ "10-crevassejungle" ]
|
||||
TileDirectories += [ "11-paroisjungle" ]
|
||||
TileDirectories += [ "12-vasejungle" ]
|
||||
TileDirectories += [ "1-junglemousse" ]
|
||||
TileDirectories += [ "2-junglefeuilles" ]
|
||||
TileDirectories += [ "3-jungleherbesseche" ]
|
||||
TileDirectories += [ "4-jungleherbevieille" ]
|
||||
TileDirectories += [ "5-jungleterreaux" ]
|
||||
TileDirectories += [ "6-junglegoo" ]
|
||||
TileDirectories += [ "7-sciurejungle" ]
|
||||
TileDirectories += [ "8-terrejungle" ]
|
||||
TileDirectories += [ "9-falaisejungle" ]
|
||||
TileDirectories += [ "Transitions" ]
|
||||
generateEcosystem("jungle", "jungle")
|
||||
|
||||
|
||||
# PRIMES RACINES
|
||||
ShapeExportOptExportLighting = DefaultShapeExportOptExportLighting
|
||||
ShapeExportOptShadow = DefaultShapeExportOptShadow
|
||||
ShapeExportOptLightingLimit = DefaultShapeExportOptLightingLimit
|
||||
ShapeExportOptLumelSize = DefaultShapeExportOptLumelSize
|
||||
ShapeExportOptOversampling = DefaultShapeExportOptOversampling
|
||||
ShapeExportOpt8BitsLightmap = "false"
|
||||
ShapeExportOptLightmapLog = DefaultShapeExportOptLightmapLog
|
||||
TextureMulSizeValue = DefaultTextureMulSizeValue
|
||||
SeasonSuffixes = DefaultSeasonSuffixes
|
||||
MapSubdirectories = [ ]
|
||||
MapSubdirectories += [ "vegetations" ]
|
||||
MapSubdirectories += [ "batiments" ]
|
||||
TileDirectories = [ ]
|
||||
TileDirectories += [ "PR-creux" ]
|
||||
TileDirectories += [ "PR-dome-moussu" ]
|
||||
TileDirectories += [ "PR-kitiniere" ]
|
||||
TileDirectories += [ "PR-mousse-licken" ]
|
||||
TileDirectories += [ "PR-mousse-spongieus" ]
|
||||
TileDirectories += [ "PR-parois" ]
|
||||
TileDirectories += [ "PR-sol-mousse" ]
|
||||
TileDirectories += [ "PR-souche" ]
|
||||
TileDirectories += [ "PR-stalagmite" ]
|
||||
TileDirectories += [ "PR-terre" ]
|
||||
TileDirectories += [ "aditif" ]
|
||||
generateEcosystem("primes_racines", "primes_racines")
|
||||
|
||||
|
||||
# LACUSTRE
|
||||
ShapeExportOptExportLighting = DefaultShapeExportOptExportLighting
|
||||
ShapeExportOptShadow = DefaultShapeExportOptShadow
|
||||
ShapeExportOptLightingLimit = "0"
|
||||
ShapeExportOptLumelSize = DefaultShapeExportOptLumelSize
|
||||
ShapeExportOptOversampling = "8"
|
||||
ShapeExportOpt8BitsLightmap = "false"
|
||||
ShapeExportOptLightmapLog = DefaultShapeExportOptLightmapLog
|
||||
TextureMulSizeValue = DefaultTextureMulSizeValue
|
||||
SeasonSuffixes = DefaultSeasonSuffixes
|
||||
MapSubdirectories = [ ]
|
||||
MapSubdirectories += [ "vegetations" ]
|
||||
TileDirectories = [ ]
|
||||
TileDirectories += [ "1a-sable-marin" ]
|
||||
TileDirectories += [ "1-plages" ]
|
||||
TileDirectories += [ "2-iles" ]
|
||||
TileDirectories += [ "2-ilesa" ]
|
||||
TileDirectories += [ "2-iles-marines" ]
|
||||
TileDirectories += [ "3-fondmarin2plage" ]
|
||||
TileDirectories += [ "4-marecages" ]
|
||||
TileDirectories += [ "5-marecages" ]
|
||||
TileDirectories += [ "5-parois-marine" ]
|
||||
TileDirectories += [ "6-fond_marin" ]
|
||||
TileDirectories += [ "7-bassesiles" ]
|
||||
TileDirectories += [ "7-mousseter" ]
|
||||
TileDirectories += [ "7-racines" ]
|
||||
TileDirectories += [ "8-mousse_marine" ]
|
||||
TileDirectories += [ "constructible" ]
|
||||
generateEcosystem("lacustre", "tryker")
|
||||
|
||||
|
||||
|
||||
|
||||
printLog(log, "")
|
||||
log.close()
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# \file generate_ecosystem_projects.py
|
||||
# \brief Run all setup processes
|
||||
# \date 2010-09-02 10:36GMT
|
||||
# \author Jan Boon (Kaetemi)
|
||||
# Python port of game data build pipeline.
|
||||
# Generate ecosystem projects
|
||||
#
|
||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||
# Copyright (C) 2009-2014 by authors
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
import time, sys, os, shutil, subprocess, distutils.dir_util
|
||||
sys.path.append("../configuration")
|
||||
if os.path.isfile("generate_ecosystem_projects.log"):
|
||||
os.remove("generate_ecosystem_projects.log")
|
||||
log = open("generate_ecosystem_projects.log", "w")
|
||||
from scripts import *
|
||||
from buildsite import *
|
||||
from tools import *
|
||||
|
||||
printLog(log, "")
|
||||
printLog(log, "-------")
|
||||
printLog(log, "--- Generate ecosystem projects")
|
||||
printLog(log, "-------")
|
||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||
printLog(log, "")
|
||||
|
||||
templateDir = os.getcwd().replace("\\", "/") + "/ecosystem_project_template"
|
||||
mkPath(log, templateDir)
|
||||
|
||||
os.chdir("..")
|
||||
|
||||
|
||||
# Scroll down to add an ecosystem.
|
||||
|
||||
|
||||
|
||||
DefaultShapeExportOptExportLighting = "true"
|
||||
DefaultShapeExportOptShadow = "true"
|
||||
DefaultShapeExportOptLightingLimit = "1"
|
||||
DefaultShapeExportOptLumelSize = "0.25"
|
||||
DefaultShapeExportOptOversampling = "1"
|
||||
DefaultShapeExportOpt8BitsLightmap = "true"
|
||||
DefaultShapeExportOptLightmapLog = "true"
|
||||
DefaultTextureMulSizeValue = "1.5"
|
||||
DefaultSeasonSuffixes = [ "sp" ] + [ "su" ] + [ "au" ] + [ "wi" ]
|
||||
DefaultMapSubdirectories = [ ]
|
||||
DefaultTileDirectories = [ ]
|
||||
|
||||
|
||||
ShapeExportOptExportLighting = DefaultShapeExportOptExportLighting
|
||||
ShapeExportOptShadow = DefaultShapeExportOptShadow
|
||||
ShapeExportOptLightingLimit = DefaultShapeExportOptLightingLimit
|
||||
ShapeExportOptLumelSize = DefaultShapeExportOptLumelSize
|
||||
ShapeExportOptOversampling = DefaultShapeExportOptOversampling
|
||||
ShapeExportOpt8BitsLightmap = DefaultShapeExportOpt8BitsLightmap
|
||||
ShapeExportOptLightmapLog = DefaultShapeExportOptLightmapLog
|
||||
TextureMulSizeValue = DefaultTextureMulSizeValue
|
||||
SeasonSuffixes = DefaultSeasonSuffixes
|
||||
MapSubdirectories = DefaultMapSubdirectories
|
||||
TileDirectories = DefaultTileDirectories
|
||||
|
||||
|
||||
PreGenDateTimeStamp = None
|
||||
PreGenEcosystemName = None
|
||||
PreGenDatabaseRootName = None
|
||||
PreGenCoarseMeshTextureNames = None
|
||||
PreGenMultipleTilesPostfix = None
|
||||
PreGenMapSubdirectories = None
|
||||
PreGenTileSourceDirectories = None
|
||||
|
||||
|
||||
def transformLine(line):
|
||||
newline = line.replace("%PreGenWarning%", "WARNING : this is a generated file, don't change it !")
|
||||
newline = newline.replace("%PreGenDateTimeStamp%", PreGenDateTimeStamp)
|
||||
|
||||
newline = newline.replace("%PreGenEcosystemName%", PreGenEcosystemName)
|
||||
newline = newline.replace("%PreGenDatabaseRootName%", PreGenDatabaseRootName)
|
||||
|
||||
newline = newline.replace("%PreGenCoarseMeshTextureNames%", PreGenCoarseMeshTextureNames)
|
||||
newline = newline.replace("%PreGenMultipleTilesPostfix%", PreGenMultipleTilesPostfix)
|
||||
newline = newline.replace("%PreGenMapSubdirectories%", PreGenMapSubdirectories)
|
||||
newline = newline.replace("%PreGenTileSourceDirectories%", PreGenTileSourceDirectories)
|
||||
|
||||
newline = newline.replace("%PreGenShapeExportOptExportLighting%", ShapeExportOptExportLighting)
|
||||
newline = newline.replace("%PreGenShapeExportOptShadow%", ShapeExportOptShadow)
|
||||
newline = newline.replace("%PreGenShapeExportOptLightingLimit%", ShapeExportOptLightingLimit)
|
||||
newline = newline.replace("%PreGenShapeExportOptLumelSize%", ShapeExportOptLumelSize)
|
||||
newline = newline.replace("%PreGenShapeExportOptOversampling%", ShapeExportOptOversampling)
|
||||
newline = newline.replace("%PreGenShapeExportOpt8BitsLightmap%", ShapeExportOpt8BitsLightmap)
|
||||
newline = newline.replace("%PreGenShapeExportOptLightmapLog%", ShapeExportOptLightmapLog)
|
||||
newline = newline.replace("%PreGenTextureMulSizeValue%", TextureMulSizeValue)
|
||||
newline = newline.replace("%PreGenTileSourceDirectories%", PreGenTileSourceDirectories)
|
||||
|
||||
return newline
|
||||
|
||||
def generateFile(sourceFile, destFile):
|
||||
srcf = open(sourceFile, "r")
|
||||
dstf = open(destFile, "w")
|
||||
printLog(log, "WRITE " + destFile)
|
||||
for line in srcf:
|
||||
dstf.write(transformLine(line))
|
||||
dstf.close()
|
||||
srcf.close()
|
||||
|
||||
def generateEcosystem(ecosystemName, databaseRootName):
|
||||
global PreGenEcosystemName
|
||||
PreGenEcosystemName = ecosystemName
|
||||
global PreGenDatabaseRootName
|
||||
PreGenDatabaseRootName = databaseRootName
|
||||
global PreGenDateTimeStamp
|
||||
PreGenDateTimeStamp = time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time()))
|
||||
|
||||
global PreGenMultipleTilesPostfix
|
||||
PreGenMultipleTilesPostfix = ""
|
||||
global PreGenCoarseMeshTextureNames
|
||||
PreGenCoarseMeshTextureNames = ""
|
||||
global PreGenTileSourceDirectories
|
||||
PreGenTileSourceDirectories = ""
|
||||
for suffix in SeasonSuffixes:
|
||||
PreGenMultipleTilesPostfix += "MultipleTilesPostfix += [ \"_" + suffix + "\" ]\n"
|
||||
PreGenCoarseMeshTextureNames += "CoarseMeshTextureNames += [ \"nel_coarse_mesh_\" + EcosystemName + \"_" + suffix + "\" ]\n"
|
||||
for tiledir in TileDirectories:
|
||||
PreGenTileSourceDirectories += "TilesSourceDirectories += [ \"landscape/_texture_tiles/\" + EcosystemName + \"_" + suffix + "/" + tiledir + "\" ]\n"
|
||||
global PreGenMapSubdirectories
|
||||
PreGenMapSubdirectories = ""
|
||||
for subdir in MapSubdirectories:
|
||||
PreGenMapSubdirectories += "MapSourceDirectories += [ DatabaseRootPath + \"/decors/_textures/" + subdir + "\" ]\n"
|
||||
|
||||
destDir = WorkspaceDirectory + "/ecosystems/" + ecosystemName
|
||||
mkPath(log, destDir)
|
||||
|
||||
generateFile(templateDir + "/process.py", destDir + "/process.py")
|
||||
generateFile(templateDir + "/directories.py", destDir + "/directories.py")
|
||||
|
||||
return
|
||||
|
||||
|
||||
|
||||
# Add new ecosystems below this line.
|
||||
|
||||
|
||||
|
||||
# DESERT
|
||||
ShapeExportOptExportLighting = DefaultShapeExportOptExportLighting
|
||||
ShapeExportOptShadow = DefaultShapeExportOptShadow
|
||||
ShapeExportOptLightingLimit = DefaultShapeExportOptLightingLimit
|
||||
ShapeExportOptLumelSize = DefaultShapeExportOptLumelSize
|
||||
ShapeExportOptOversampling = DefaultShapeExportOptOversampling
|
||||
ShapeExportOpt8BitsLightmap = DefaultShapeExportOpt8BitsLightmap
|
||||
ShapeExportOptLightmapLog = DefaultShapeExportOptLightmapLog
|
||||
TextureMulSizeValue = DefaultTextureMulSizeValue
|
||||
SeasonSuffixes = DefaultSeasonSuffixes
|
||||
MapSubdirectories = [ ]
|
||||
MapSubdirectories += [ "vegetations" ]
|
||||
TileDirectories = [ ]
|
||||
TileDirectories += [ "1.5-marecage_profond" ]
|
||||
TileDirectories += [ "1-marecages" ]
|
||||
TileDirectories += [ "2-citees" ]
|
||||
TileDirectories += [ "3-fond_canyon" ]
|
||||
TileDirectories += [ "4.2-boisbandeclair" ]
|
||||
TileDirectories += [ "4.5-desert2boisbande" ]
|
||||
TileDirectories += [ "4-falaise_bois_bande" ]
|
||||
TileDirectories += [ "5-falaise_normales" ]
|
||||
TileDirectories += [ "6.5-desertalternatif" ]
|
||||
TileDirectories += [ "6-desert" ]
|
||||
TileDirectories += [ "7-routes" ]
|
||||
TileDirectories += [ "8-foretbrule" ]
|
||||
generateEcosystem("desert", "fyros")
|
||||
|
||||
|
||||
# JUNGLE
|
||||
ShapeExportOptExportLighting = DefaultShapeExportOptExportLighting
|
||||
ShapeExportOptShadow = DefaultShapeExportOptShadow
|
||||
ShapeExportOptLightingLimit = DefaultShapeExportOptLightingLimit
|
||||
ShapeExportOptLumelSize = DefaultShapeExportOptLumelSize
|
||||
ShapeExportOptOversampling = DefaultShapeExportOptOversampling
|
||||
ShapeExportOpt8BitsLightmap = "false"
|
||||
ShapeExportOptLightmapLog = DefaultShapeExportOptLightmapLog
|
||||
TextureMulSizeValue = DefaultTextureMulSizeValue
|
||||
SeasonSuffixes = DefaultSeasonSuffixes
|
||||
MapSubdirectories = [ ]
|
||||
MapSubdirectories += [ "vegetations" ]
|
||||
TileDirectories = [ ]
|
||||
TileDirectories += [ "10-crevassejungle" ]
|
||||
TileDirectories += [ "11-paroisjungle" ]
|
||||
TileDirectories += [ "12-vasejungle" ]
|
||||
TileDirectories += [ "1-junglemousse" ]
|
||||
TileDirectories += [ "2-junglefeuilles" ]
|
||||
TileDirectories += [ "3-jungleherbesseche" ]
|
||||
TileDirectories += [ "4-jungleherbevieille" ]
|
||||
TileDirectories += [ "5-jungleterreaux" ]
|
||||
TileDirectories += [ "6-junglegoo" ]
|
||||
TileDirectories += [ "7-sciurejungle" ]
|
||||
TileDirectories += [ "8-terrejungle" ]
|
||||
TileDirectories += [ "9-falaisejungle" ]
|
||||
TileDirectories += [ "Transitions" ]
|
||||
generateEcosystem("jungle", "jungle")
|
||||
|
||||
|
||||
# PRIMES RACINES
|
||||
ShapeExportOptExportLighting = DefaultShapeExportOptExportLighting
|
||||
ShapeExportOptShadow = DefaultShapeExportOptShadow
|
||||
ShapeExportOptLightingLimit = DefaultShapeExportOptLightingLimit
|
||||
ShapeExportOptLumelSize = DefaultShapeExportOptLumelSize
|
||||
ShapeExportOptOversampling = DefaultShapeExportOptOversampling
|
||||
ShapeExportOpt8BitsLightmap = "false"
|
||||
ShapeExportOptLightmapLog = DefaultShapeExportOptLightmapLog
|
||||
TextureMulSizeValue = DefaultTextureMulSizeValue
|
||||
SeasonSuffixes = DefaultSeasonSuffixes
|
||||
MapSubdirectories = [ ]
|
||||
MapSubdirectories += [ "vegetations" ]
|
||||
MapSubdirectories += [ "batiments" ]
|
||||
TileDirectories = [ ]
|
||||
TileDirectories += [ "PR-creux" ]
|
||||
TileDirectories += [ "PR-dome-moussu" ]
|
||||
TileDirectories += [ "PR-kitiniere" ]
|
||||
TileDirectories += [ "PR-mousse-licken" ]
|
||||
TileDirectories += [ "PR-mousse-spongieus" ]
|
||||
TileDirectories += [ "PR-parois" ]
|
||||
TileDirectories += [ "PR-sol-mousse" ]
|
||||
TileDirectories += [ "PR-souche" ]
|
||||
TileDirectories += [ "PR-stalagmite" ]
|
||||
TileDirectories += [ "PR-terre" ]
|
||||
TileDirectories += [ "aditif" ]
|
||||
generateEcosystem("primes_racines", "primes_racines")
|
||||
|
||||
|
||||
# LACUSTRE
|
||||
ShapeExportOptExportLighting = DefaultShapeExportOptExportLighting
|
||||
ShapeExportOptShadow = DefaultShapeExportOptShadow
|
||||
ShapeExportOptLightingLimit = "0"
|
||||
ShapeExportOptLumelSize = DefaultShapeExportOptLumelSize
|
||||
ShapeExportOptOversampling = "8"
|
||||
ShapeExportOpt8BitsLightmap = "false"
|
||||
ShapeExportOptLightmapLog = DefaultShapeExportOptLightmapLog
|
||||
TextureMulSizeValue = DefaultTextureMulSizeValue
|
||||
SeasonSuffixes = DefaultSeasonSuffixes
|
||||
MapSubdirectories = [ ]
|
||||
MapSubdirectories += [ "vegetations" ]
|
||||
TileDirectories = [ ]
|
||||
TileDirectories += [ "1a-sable-marin" ]
|
||||
TileDirectories += [ "1-plages" ]
|
||||
TileDirectories += [ "2-iles" ]
|
||||
TileDirectories += [ "2-ilesa" ]
|
||||
TileDirectories += [ "2-iles-marines" ]
|
||||
TileDirectories += [ "3-fondmarin2plage" ]
|
||||
TileDirectories += [ "4-marecages" ]
|
||||
TileDirectories += [ "5-marecages" ]
|
||||
TileDirectories += [ "5-parois-marine" ]
|
||||
TileDirectories += [ "6-fond_marin" ]
|
||||
TileDirectories += [ "7-bassesiles" ]
|
||||
TileDirectories += [ "7-mousseter" ]
|
||||
TileDirectories += [ "7-racines" ]
|
||||
TileDirectories += [ "8-mousse_marine" ]
|
||||
TileDirectories += [ "constructible" ]
|
||||
generateEcosystem("lacustre", "tryker")
|
||||
|
||||
|
||||
|
||||
|
||||
printLog(log, "")
|
||||
log.close()
|
||||
|
@ -1,100 +1,100 @@
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# \file 0_setup.py
|
||||
# \brief Run all setup processes
|
||||
# \date 2009-02-18 15:28GMT
|
||||
# \author Jan Boon (Kaetemi)
|
||||
# Python port of game data build pipeline.
|
||||
# Run all setup processes
|
||||
#
|
||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||
# Copyright (C) 2009-2014 by authors
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
import time, sys, os, shutil, subprocess, distutils.dir_util
|
||||
sys.path.append("../configuration")
|
||||
if os.path.isfile("generate_simple_max_exporters.log"):
|
||||
os.remove("generate_simple_max_exporters.log")
|
||||
log = open("generate_simple_max_exporters.log", "w")
|
||||
from scripts import *
|
||||
from buildsite import *
|
||||
from tools import *
|
||||
|
||||
printLog(log, "")
|
||||
printLog(log, "-------")
|
||||
printLog(log, "--- Generate simple max exporters")
|
||||
printLog(log, "-------")
|
||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||
printLog(log, "")
|
||||
|
||||
def processLine(line, processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp):
|
||||
newline = line.replace("%PreGenWarning%", "WARNING : this is a generated file, don't change it !")
|
||||
newline = newline.replace("%PreGenDateTimeStamp%", dateTimeStamp)
|
||||
newline = newline.replace("%PreGenProcessName%", processName)
|
||||
newline = newline.replace("%PreGenFileExtension%", fileExtension)
|
||||
newline = newline.replace("%PreGenSourceDirectoriesVariable%", sourceDirectoriesVariable)
|
||||
newline = newline.replace("%PreGenExportDirectoryVariable%", exportDirectoryVariable)
|
||||
newline = newline.replace("%PreGenInstallDirectoryVariable%", clientDirectoryVariable)
|
||||
return newline
|
||||
|
||||
def generateSimpleMaxExporterFile(sourceFile, destFile, writeMode, processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp):
|
||||
srcf = open(sourceFile, "r")
|
||||
dstf = open(destFile, writeMode)
|
||||
printLog(log, "WRITE " + destFile + " " + writeMode)
|
||||
for line in srcf:
|
||||
dstf.write(processLine(line, processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp))
|
||||
dstf.close()
|
||||
srcf.close()
|
||||
|
||||
def generateSimpleMaxExporter(processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable):
|
||||
dateTimeStamp = time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time()))
|
||||
processDir = ScriptDirectory + "/processes/" + processName
|
||||
mkPath(log, processDir)
|
||||
maxscriptDir = processDir + "/maxscript"
|
||||
mkPath(log, maxscriptDir)
|
||||
templateDir = os.getcwd().replace("\\", "/") + "/simple_max_exporter_template"
|
||||
mkPath(log, templateDir)
|
||||
scriptDir = os.getcwd().replace("\\", "/") + "/max_exporter_scripts"
|
||||
mkPath(log, scriptDir)
|
||||
|
||||
if not os.path.isfile(processDir + "/0_setup.py"):
|
||||
generateSimpleMaxExporterFile(templateDir + "/0_setup.py", processDir + "/0_setup.py", "w", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
|
||||
|
||||
generateSimpleMaxExporterFile(templateDir + "/1_export_header.py", processDir + "/1_export.py", "w", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
|
||||
generateSimpleMaxExporterFile(scriptDir + "/" + fileExtension + ".py", processDir + "/1_export.py", "a", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
|
||||
generateSimpleMaxExporterFile(templateDir + "/1_export_footer.py", processDir + "/1_export.py", "a", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
|
||||
|
||||
if not os.path.isfile(processDir + "/2_build.py"):
|
||||
generateSimpleMaxExporterFile(templateDir + "/2_build.py", processDir + "/2_build.py", "w", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
|
||||
if not os.path.isfile(processDir + "/3_install.py"):
|
||||
generateSimpleMaxExporterFile(templateDir + "/3_install.py", processDir + "/3_install.py", "w", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
|
||||
|
||||
generateSimpleMaxExporterFile(templateDir + "/export_header.ms", maxscriptDir + "/" + fileExtension + "_export.ms", "w", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
|
||||
generateSimpleMaxExporterFile(scriptDir + "/" + fileExtension + ".ms", maxscriptDir + "/" + fileExtension + "_export.ms", "a", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
|
||||
generateSimpleMaxExporterFile(templateDir + "/export_footer.ms", maxscriptDir + "/" + fileExtension + "_export.ms", "a", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
|
||||
|
||||
|
||||
|
||||
generateSimpleMaxExporter("skel", "skel", "SkelSourceDirectories", "SkelExportDirectory", "SkelInstallDirectory")
|
||||
|
||||
generateSimpleMaxExporter("swt", "swt", "SwtSourceDirectories", "SwtExportDirectory", "SwtInstallDirectory")
|
||||
|
||||
generateSimpleMaxExporter("zone", "zone", "ZoneSourceDirectory", "ZoneExportDirectory", "ZoneInstallDirectory")
|
||||
|
||||
|
||||
|
||||
printLog(log, "")
|
||||
log.close()
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# \file 0_setup.py
|
||||
# \brief Run all setup processes
|
||||
# \date 2009-02-18 15:28GMT
|
||||
# \author Jan Boon (Kaetemi)
|
||||
# Python port of game data build pipeline.
|
||||
# Run all setup processes
|
||||
#
|
||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||
# Copyright (C) 2009-2014 by authors
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
import time, sys, os, shutil, subprocess, distutils.dir_util
|
||||
sys.path.append("../configuration")
|
||||
if os.path.isfile("generate_simple_max_exporters.log"):
|
||||
os.remove("generate_simple_max_exporters.log")
|
||||
log = open("generate_simple_max_exporters.log", "w")
|
||||
from scripts import *
|
||||
from buildsite import *
|
||||
from tools import *
|
||||
|
||||
printLog(log, "")
|
||||
printLog(log, "-------")
|
||||
printLog(log, "--- Generate simple max exporters")
|
||||
printLog(log, "-------")
|
||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||
printLog(log, "")
|
||||
|
||||
def processLine(line, processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp):
|
||||
newline = line.replace("%PreGenWarning%", "WARNING : this is a generated file, don't change it !")
|
||||
newline = newline.replace("%PreGenDateTimeStamp%", dateTimeStamp)
|
||||
newline = newline.replace("%PreGenProcessName%", processName)
|
||||
newline = newline.replace("%PreGenFileExtension%", fileExtension)
|
||||
newline = newline.replace("%PreGenSourceDirectoriesVariable%", sourceDirectoriesVariable)
|
||||
newline = newline.replace("%PreGenExportDirectoryVariable%", exportDirectoryVariable)
|
||||
newline = newline.replace("%PreGenInstallDirectoryVariable%", clientDirectoryVariable)
|
||||
return newline
|
||||
|
||||
def generateSimpleMaxExporterFile(sourceFile, destFile, writeMode, processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp):
|
||||
srcf = open(sourceFile, "r")
|
||||
dstf = open(destFile, writeMode)
|
||||
printLog(log, "WRITE " + destFile + " " + writeMode)
|
||||
for line in srcf:
|
||||
dstf.write(processLine(line, processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp))
|
||||
dstf.close()
|
||||
srcf.close()
|
||||
|
||||
def generateSimpleMaxExporter(processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable):
|
||||
dateTimeStamp = time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time()))
|
||||
processDir = ScriptDirectory + "/processes/" + processName
|
||||
mkPath(log, processDir)
|
||||
maxscriptDir = processDir + "/maxscript"
|
||||
mkPath(log, maxscriptDir)
|
||||
templateDir = os.getcwd().replace("\\", "/") + "/simple_max_exporter_template"
|
||||
mkPath(log, templateDir)
|
||||
scriptDir = os.getcwd().replace("\\", "/") + "/max_exporter_scripts"
|
||||
mkPath(log, scriptDir)
|
||||
|
||||
if not os.path.isfile(processDir + "/0_setup.py"):
|
||||
generateSimpleMaxExporterFile(templateDir + "/0_setup.py", processDir + "/0_setup.py", "w", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
|
||||
|
||||
generateSimpleMaxExporterFile(templateDir + "/1_export_header.py", processDir + "/1_export.py", "w", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
|
||||
generateSimpleMaxExporterFile(scriptDir + "/" + fileExtension + ".py", processDir + "/1_export.py", "a", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
|
||||
generateSimpleMaxExporterFile(templateDir + "/1_export_footer.py", processDir + "/1_export.py", "a", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
|
||||
|
||||
if not os.path.isfile(processDir + "/2_build.py"):
|
||||
generateSimpleMaxExporterFile(templateDir + "/2_build.py", processDir + "/2_build.py", "w", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
|
||||
if not os.path.isfile(processDir + "/3_install.py"):
|
||||
generateSimpleMaxExporterFile(templateDir + "/3_install.py", processDir + "/3_install.py", "w", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
|
||||
|
||||
generateSimpleMaxExporterFile(templateDir + "/export_header.ms", maxscriptDir + "/" + fileExtension + "_export.ms", "w", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
|
||||
generateSimpleMaxExporterFile(scriptDir + "/" + fileExtension + ".ms", maxscriptDir + "/" + fileExtension + "_export.ms", "a", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
|
||||
generateSimpleMaxExporterFile(templateDir + "/export_footer.ms", maxscriptDir + "/" + fileExtension + "_export.ms", "a", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
|
||||
|
||||
|
||||
|
||||
generateSimpleMaxExporter("skel", "skel", "SkelSourceDirectories", "SkelExportDirectory", "SkelInstallDirectory")
|
||||
|
||||
generateSimpleMaxExporter("swt", "swt", "SwtSourceDirectories", "SwtExportDirectory", "SwtInstallDirectory")
|
||||
|
||||
generateSimpleMaxExporter("zone", "zone", "ZoneSourceDirectory", "ZoneExportDirectory", "ZoneInstallDirectory")
|
||||
|
||||
|
||||
|
||||
printLog(log, "")
|
||||
log.close()
|
||||
|
@ -1,120 +1,120 @@
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# \file 0_setup.py
|
||||
# \brief Run all setup processes
|
||||
# \date 2009-02-18 15:28GMT
|
||||
# \author Jan Boon (Kaetemi)
|
||||
# Python port of game data build pipeline.
|
||||
# Run all setup processes
|
||||
#
|
||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||
# Copyright (C) 2009-2014 by authors
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
import time, sys, os, shutil, subprocess, distutils.dir_util
|
||||
sys.path.append("../configuration")
|
||||
if os.path.isfile("generate_tagged_max_exporters.log"):
|
||||
os.remove("generate_tagged_max_exporters.log")
|
||||
log = open("generate_tagged_max_exporters.log", "w")
|
||||
from scripts import *
|
||||
from buildsite import *
|
||||
from tools import *
|
||||
|
||||
printLog(log, "")
|
||||
printLog(log, "-------")
|
||||
printLog(log, "--- Generate tagged max exporters")
|
||||
printLog(log, "-------")
|
||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||
printLog(log, "")
|
||||
|
||||
templateDir = os.getcwd().replace("\\", "/") + "/tagged_max_exporter_template"
|
||||
mkPath(log, templateDir)
|
||||
scriptDir = os.getcwd().replace("\\", "/") + "/max_exporter_scripts"
|
||||
mkPath(log, scriptDir)
|
||||
|
||||
def processLine(line, processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp):
|
||||
newline = line.replace("%PreGenWarning%", "WARNING : this is a generated file, don't change it !")
|
||||
newline = newline.replace("%PreGenDateTimeStamp%", dateTimeStamp)
|
||||
newline = newline.replace("%PreGenProcessName%", processName)
|
||||
newline = newline.replace("%PreGenFileExtension%", fileExtension)
|
||||
newline = newline.replace("%PreGenSourceDirectoriesVariable%", sourceDirectoriesVariable)
|
||||
newline = newline.replace("%PreGenExportDirectoryVariable%", exportDirectoryVariable)
|
||||
newline = newline.replace("%PreGenTagExportDirectoryVariable%", tagExportDirectoryVariable)
|
||||
newline = newline.replace("%PreGenInstallDirectoryVariable%", clientDirectoryVariable)
|
||||
return newline
|
||||
|
||||
def generateTaggedMaxExporterFile(sourceFile, destFile, writeMode, processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp):
|
||||
srcf = open(sourceFile, "r")
|
||||
dstf = open(destFile, writeMode)
|
||||
printLog(log, "WRITE " + destFile + " " + writeMode)
|
||||
for line in srcf:
|
||||
dstf.write(processLine(line, processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp))
|
||||
dstf.close()
|
||||
srcf.close()
|
||||
|
||||
def generateTaggedMaxScriptFile(processDir, processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp):
|
||||
maxscriptDir = processDir + "/maxscript"
|
||||
mkPath(log, maxscriptDir)
|
||||
generateTaggedMaxExporterFile(templateDir + "/export_header.ms", maxscriptDir + "/" + fileExtension + "_export.ms", "w", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
|
||||
generateTaggedMaxExporterFile(scriptDir + "/" + fileExtension + ".ms", maxscriptDir + "/" + fileExtension + "_export.ms", "a", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
|
||||
generateTaggedMaxExporterFile(templateDir + "/export_footer.ms", maxscriptDir + "/" + fileExtension + "_export.ms", "a", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
|
||||
|
||||
def generateTaggedMaxScript(processName, fileExtension):
|
||||
dateTimeStamp = time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time()))
|
||||
processDir = ScriptDirectory + "/processes/" + processName
|
||||
mkPath(log, processDir)
|
||||
|
||||
generateTaggedMaxScriptFile(processDir, processName, fileExtension, "_invalid", "_invalid", "_invalid", "_invalid", dateTimeStamp)
|
||||
|
||||
def generateTaggedMaxExporter(processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable):
|
||||
dateTimeStamp = time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time()))
|
||||
processDir = ScriptDirectory + "/processes/" + processName
|
||||
mkPath(log, processDir)
|
||||
|
||||
if not os.path.isfile(processDir + "/0_setup.py"):
|
||||
generateTaggedMaxExporterFile(templateDir + "/0_setup.py", processDir + "/0_setup.py", "w", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
|
||||
|
||||
generateTaggedMaxExporterFile(templateDir + "/1_export_header.py", processDir + "/1_export.py", "w", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
|
||||
generateTaggedMaxExporterFile(scriptDir + "/" + fileExtension + ".py", processDir + "/1_export.py", "a", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
|
||||
generateTaggedMaxExporterFile(templateDir + "/1_export_footer.py", processDir + "/1_export.py", "a", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
|
||||
|
||||
if not os.path.isfile(processDir + "/2_build.py"):
|
||||
generateTaggedMaxExporterFile(templateDir + "/2_build.py", processDir + "/2_build.py", "w", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
|
||||
if not os.path.isfile(processDir + "/3_install.py"):
|
||||
generateTaggedMaxExporterFile(templateDir + "/3_install.py", processDir + "/3_install.py", "w", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
|
||||
|
||||
generateTaggedMaxScriptFile(processDir, processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
|
||||
|
||||
|
||||
|
||||
generateTaggedMaxExporter("pacs_prim", "pacs_prim", "PacsPrimSourceDirectories", "PacsPrimExportDirectory", "PacsPrimTagExportDirectory", "PacsPrimInstallDirectory")
|
||||
|
||||
generateTaggedMaxExporter("clodbank", "clod", "ClodSourceDirectories", "ClodExportDirectory", "ClodTagExportDirectory", "ClodInstallDirectory")
|
||||
|
||||
generateTaggedMaxScript("ig", "ig")
|
||||
|
||||
generateTaggedMaxExporter("rbank", "cmb", "RBankCmbSourceDirectories", "RBankCmbExportDirectory", "RBankCmbTagExportDirectory", "PacsInstallDirectory")
|
||||
|
||||
generateTaggedMaxExporter("veget", "veget", "VegetSourceDirectories", "VegetExportDirectory", "VegetTagExportDirectory", "VegetInstallDirectory")
|
||||
|
||||
generateTaggedMaxScript("shape", "shape")
|
||||
|
||||
generateTaggedMaxExporter("anim", "anim", "AnimSourceDirectories", "AnimExportDirectory", "AnimTagExportDirectory", "AnimInstallDirectory")
|
||||
|
||||
|
||||
|
||||
printLog(log, "")
|
||||
log.close()
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# \file 0_setup.py
|
||||
# \brief Run all setup processes
|
||||
# \date 2009-02-18 15:28GMT
|
||||
# \author Jan Boon (Kaetemi)
|
||||
# Python port of game data build pipeline.
|
||||
# Run all setup processes
|
||||
#
|
||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||
# Copyright (C) 2009-2014 by authors
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
import time, sys, os, shutil, subprocess, distutils.dir_util
|
||||
sys.path.append("../configuration")
|
||||
if os.path.isfile("generate_tagged_max_exporters.log"):
|
||||
os.remove("generate_tagged_max_exporters.log")
|
||||
log = open("generate_tagged_max_exporters.log", "w")
|
||||
from scripts import *
|
||||
from buildsite import *
|
||||
from tools import *
|
||||
|
||||
printLog(log, "")
|
||||
printLog(log, "-------")
|
||||
printLog(log, "--- Generate tagged max exporters")
|
||||
printLog(log, "-------")
|
||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||
printLog(log, "")
|
||||
|
||||
templateDir = os.getcwd().replace("\\", "/") + "/tagged_max_exporter_template"
|
||||
mkPath(log, templateDir)
|
||||
scriptDir = os.getcwd().replace("\\", "/") + "/max_exporter_scripts"
|
||||
mkPath(log, scriptDir)
|
||||
|
||||
def processLine(line, processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp):
|
||||
newline = line.replace("%PreGenWarning%", "WARNING : this is a generated file, don't change it !")
|
||||
newline = newline.replace("%PreGenDateTimeStamp%", dateTimeStamp)
|
||||
newline = newline.replace("%PreGenProcessName%", processName)
|
||||
newline = newline.replace("%PreGenFileExtension%", fileExtension)
|
||||
newline = newline.replace("%PreGenSourceDirectoriesVariable%", sourceDirectoriesVariable)
|
||||
newline = newline.replace("%PreGenExportDirectoryVariable%", exportDirectoryVariable)
|
||||
newline = newline.replace("%PreGenTagExportDirectoryVariable%", tagExportDirectoryVariable)
|
||||
newline = newline.replace("%PreGenInstallDirectoryVariable%", clientDirectoryVariable)
|
||||
return newline
|
||||
|
||||
def generateTaggedMaxExporterFile(sourceFile, destFile, writeMode, processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp):
|
||||
srcf = open(sourceFile, "r")
|
||||
dstf = open(destFile, writeMode)
|
||||
printLog(log, "WRITE " + destFile + " " + writeMode)
|
||||
for line in srcf:
|
||||
dstf.write(processLine(line, processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp))
|
||||
dstf.close()
|
||||
srcf.close()
|
||||
|
||||
def generateTaggedMaxScriptFile(processDir, processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp):
|
||||
maxscriptDir = processDir + "/maxscript"
|
||||
mkPath(log, maxscriptDir)
|
||||
generateTaggedMaxExporterFile(templateDir + "/export_header.ms", maxscriptDir + "/" + fileExtension + "_export.ms", "w", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
|
||||
generateTaggedMaxExporterFile(scriptDir + "/" + fileExtension + ".ms", maxscriptDir + "/" + fileExtension + "_export.ms", "a", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
|
||||
generateTaggedMaxExporterFile(templateDir + "/export_footer.ms", maxscriptDir + "/" + fileExtension + "_export.ms", "a", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
|
||||
|
||||
def generateTaggedMaxScript(processName, fileExtension):
|
||||
dateTimeStamp = time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time()))
|
||||
processDir = ScriptDirectory + "/processes/" + processName
|
||||
mkPath(log, processDir)
|
||||
|
||||
generateTaggedMaxScriptFile(processDir, processName, fileExtension, "_invalid", "_invalid", "_invalid", "_invalid", dateTimeStamp)
|
||||
|
||||
def generateTaggedMaxExporter(processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable):
|
||||
dateTimeStamp = time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time()))
|
||||
processDir = ScriptDirectory + "/processes/" + processName
|
||||
mkPath(log, processDir)
|
||||
|
||||
if not os.path.isfile(processDir + "/0_setup.py"):
|
||||
generateTaggedMaxExporterFile(templateDir + "/0_setup.py", processDir + "/0_setup.py", "w", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
|
||||
|
||||
generateTaggedMaxExporterFile(templateDir + "/1_export_header.py", processDir + "/1_export.py", "w", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
|
||||
generateTaggedMaxExporterFile(scriptDir + "/" + fileExtension + ".py", processDir + "/1_export.py", "a", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
|
||||
generateTaggedMaxExporterFile(templateDir + "/1_export_footer.py", processDir + "/1_export.py", "a", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
|
||||
|
||||
if not os.path.isfile(processDir + "/2_build.py"):
|
||||
generateTaggedMaxExporterFile(templateDir + "/2_build.py", processDir + "/2_build.py", "w", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
|
||||
if not os.path.isfile(processDir + "/3_install.py"):
|
||||
generateTaggedMaxExporterFile(templateDir + "/3_install.py", processDir + "/3_install.py", "w", processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
|
||||
|
||||
generateTaggedMaxScriptFile(processDir, processName, fileExtension, sourceDirectoriesVariable, exportDirectoryVariable, tagExportDirectoryVariable, clientDirectoryVariable, dateTimeStamp)
|
||||
|
||||
|
||||
|
||||
generateTaggedMaxExporter("pacs_prim", "pacs_prim", "PacsPrimSourceDirectories", "PacsPrimExportDirectory", "PacsPrimTagExportDirectory", "PacsPrimInstallDirectory")
|
||||
|
||||
generateTaggedMaxExporter("clodbank", "clod", "ClodSourceDirectories", "ClodExportDirectory", "ClodTagExportDirectory", "ClodInstallDirectory")
|
||||
|
||||
generateTaggedMaxScript("ig", "ig")
|
||||
|
||||
generateTaggedMaxExporter("rbank", "cmb", "RBankCmbSourceDirectories", "RBankCmbExportDirectory", "RBankCmbTagExportDirectory", "PacsInstallDirectory")
|
||||
|
||||
generateTaggedMaxExporter("veget", "veget", "VegetSourceDirectories", "VegetExportDirectory", "VegetTagExportDirectory", "VegetInstallDirectory")
|
||||
|
||||
generateTaggedMaxScript("shape", "shape")
|
||||
|
||||
generateTaggedMaxExporter("anim", "anim", "AnimSourceDirectories", "AnimExportDirectory", "AnimTagExportDirectory", "AnimInstallDirectory")
|
||||
|
||||
|
||||
|
||||
printLog(log, "")
|
||||
log.close()
|
||||
|
@ -1,7 +1,7 @@
|
||||
|
||||
|
||||
# Remove bad file from previous script version
|
||||
listPath = ExportBuildDirectory + "/" + %PreGenExportDirectoryVariable% + "/landscape_col_prim_pacs_list.txt"
|
||||
if os.path.isfile(listPath):
|
||||
os.remove(listPath)
|
||||
|
||||
|
||||
|
||||
# Remove bad file from previous script version
|
||||
listPath = ExportBuildDirectory + "/" + %PreGenExportDirectoryVariable% + "/landscape_col_prim_pacs_list.txt"
|
||||
if os.path.isfile(listPath):
|
||||
os.remove(listPath)
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
|
||||
|
||||
printLog(log, ">>> Export skel directly <<<")
|
||||
mkPath(log, ExportBuildDirectory + "/" + SkelExportDirectory)
|
||||
for dir in SkelSourceDirectories:
|
||||
mkPath(log, DatabaseDirectory + "/" + dir)
|
||||
copyFilesExtNoSubdirIfNeeded(log, DatabaseDirectory + "/" + dir, ExportBuildDirectory + "/" + SkelExportDirectory, ".skel")
|
||||
|
||||
|
||||
|
||||
printLog(log, ">>> Export skel directly <<<")
|
||||
mkPath(log, ExportBuildDirectory + "/" + SkelExportDirectory)
|
||||
for dir in SkelSourceDirectories:
|
||||
mkPath(log, DatabaseDirectory + "/" + dir)
|
||||
copyFilesExtNoSubdirIfNeeded(log, DatabaseDirectory + "/" + dir, ExportBuildDirectory + "/" + SkelExportDirectory, ".skel")
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
|
||||
|
||||
printLog(log, ">>> Try to copy ligo zone if any <<<")
|
||||
printLog(log, "********************************")
|
||||
printLog(log, "******** TODO ********")
|
||||
printLog(log, "********************************")
|
||||
printLog(log, "")
|
||||
|
||||
|
||||
|
||||
printLog(log, ">>> Try to copy ligo zone if any <<<")
|
||||
printLog(log, "********************************")
|
||||
printLog(log, "******** TODO ********")
|
||||
printLog(log, "********************************")
|
||||
printLog(log, "")
|
||||
|
||||
|
@ -1,65 +1,65 @@
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# \file 0_setup.py
|
||||
# \brief setup %PreGenProcessName%
|
||||
# \date %PreGenDateTimeStamp%
|
||||
# \author Jan Boon (Kaetemi)
|
||||
# Python port of game data build pipeline.
|
||||
# Setup %PreGenProcessName%
|
||||
#
|
||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||
# Copyright (C) 2009-2014 by authors
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
import time, sys, os, shutil, subprocess, distutils.dir_util
|
||||
sys.path.append("../../configuration")
|
||||
|
||||
if os.path.isfile("log.log"):
|
||||
os.remove("log.log")
|
||||
log = open("log.log", "w")
|
||||
from scripts import *
|
||||
from buildsite import *
|
||||
from process import *
|
||||
from tools import *
|
||||
from directories import *
|
||||
|
||||
printLog(log, "")
|
||||
printLog(log, "-------")
|
||||
printLog(log, "--- Setup %PreGenProcessName%")
|
||||
printLog(log, "-------")
|
||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||
printLog(log, "")
|
||||
|
||||
# Setup source directories
|
||||
printLog(log, ">>> Setup source directories <<<")
|
||||
for dir in %PreGenSourceDirectoriesVariable%:
|
||||
mkPath(log, DatabaseDirectory + "/" + dir)
|
||||
|
||||
# Setup export directories
|
||||
printLog(log, ">>> Setup export directories <<<")
|
||||
mkPath(log, ExportBuildDirectory + "/" + %PreGenExportDirectoryVariable%)
|
||||
|
||||
# Setup build directories
|
||||
printLog(log, ">>> Setup build directories <<<")
|
||||
|
||||
# Setup client directories
|
||||
printLog(log, ">>> Setup client directories <<<")
|
||||
mkPath(log, InstallDirectory + "/" + %PreGenInstallDirectoryVariable%)
|
||||
|
||||
log.close()
|
||||
|
||||
|
||||
# end of file
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# \file 0_setup.py
|
||||
# \brief setup %PreGenProcessName%
|
||||
# \date %PreGenDateTimeStamp%
|
||||
# \author Jan Boon (Kaetemi)
|
||||
# Python port of game data build pipeline.
|
||||
# Setup %PreGenProcessName%
|
||||
#
|
||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||
# Copyright (C) 2009-2014 by authors
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
import time, sys, os, shutil, subprocess, distutils.dir_util
|
||||
sys.path.append("../../configuration")
|
||||
|
||||
if os.path.isfile("log.log"):
|
||||
os.remove("log.log")
|
||||
log = open("log.log", "w")
|
||||
from scripts import *
|
||||
from buildsite import *
|
||||
from process import *
|
||||
from tools import *
|
||||
from directories import *
|
||||
|
||||
printLog(log, "")
|
||||
printLog(log, "-------")
|
||||
printLog(log, "--- Setup %PreGenProcessName%")
|
||||
printLog(log, "-------")
|
||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||
printLog(log, "")
|
||||
|
||||
# Setup source directories
|
||||
printLog(log, ">>> Setup source directories <<<")
|
||||
for dir in %PreGenSourceDirectoriesVariable%:
|
||||
mkPath(log, DatabaseDirectory + "/" + dir)
|
||||
|
||||
# Setup export directories
|
||||
printLog(log, ">>> Setup export directories <<<")
|
||||
mkPath(log, ExportBuildDirectory + "/" + %PreGenExportDirectoryVariable%)
|
||||
|
||||
# Setup build directories
|
||||
printLog(log, ">>> Setup build directories <<<")
|
||||
|
||||
# Setup client directories
|
||||
printLog(log, ">>> Setup client directories <<<")
|
||||
mkPath(log, InstallDirectory + "/" + %PreGenInstallDirectoryVariable%)
|
||||
|
||||
log.close()
|
||||
|
||||
|
||||
# end of file
|
||||
|
@ -1,7 +1,7 @@
|
||||
|
||||
|
||||
printLog(log, "")
|
||||
log.close()
|
||||
|
||||
|
||||
# end of file
|
||||
|
||||
|
||||
printLog(log, "")
|
||||
log.close()
|
||||
|
||||
|
||||
# end of file
|
||||
|
@ -1,92 +1,92 @@
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# #################################################################
|
||||
# ## %PreGenWarning%
|
||||
# #################################################################
|
||||
#
|
||||
# \file 1_export.py
|
||||
# \brief Export %PreGenProcessName%
|
||||
# \date %PreGenDateTimeStamp%
|
||||
# \author Jan Boon (Kaetemi)
|
||||
# Python port of game data build pipeline.
|
||||
# Export %PreGenProcessName%
|
||||
#
|
||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||
# Copyright (C) 2009-2014 by authors
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
import time, sys, os, shutil, subprocess, distutils.dir_util
|
||||
sys.path.append("../../configuration")
|
||||
|
||||
if os.path.isfile("log.log"):
|
||||
os.remove("log.log")
|
||||
log = open("log.log", "w")
|
||||
from scripts import *
|
||||
from buildsite import *
|
||||
from process import *
|
||||
from tools import *
|
||||
from directories import *
|
||||
|
||||
printLog(log, "")
|
||||
printLog(log, "-------")
|
||||
printLog(log, "--- Export %PreGenProcessName%")
|
||||
printLog(log, "-------")
|
||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||
printLog(log, "")
|
||||
|
||||
# Find tools
|
||||
# ...
|
||||
|
||||
# Export %PreGenProcessName% 3dsmax
|
||||
if MaxAvailable:
|
||||
# Find tools
|
||||
Max = findMax(log, MaxDirectory, MaxExecutable)
|
||||
printLog(log, "")
|
||||
|
||||
printLog(log, ">>> Export %PreGenProcessName% 3dsmax <<<")
|
||||
mkPath(log, ExportBuildDirectory + "/" + %PreGenExportDirectoryVariable%)
|
||||
for dir in %PreGenSourceDirectoriesVariable%:
|
||||
mkPath(log, DatabaseDirectory + "/" + dir)
|
||||
if (needUpdateDirByTagLog(log, DatabaseDirectory + "/" + dir, ".max", ExportBuildDirectory + "/" + %PreGenExportDirectoryVariable%, ".%PreGenFileExtension%")):
|
||||
scriptSrc = "maxscript/%PreGenFileExtension%_export.ms"
|
||||
scriptDst = MaxUserDirectory + "/scripts/%PreGenFileExtension%_export.ms"
|
||||
outputLogfile = ScriptDirectory + "/processes/%PreGenProcessName%/log.log"
|
||||
outputDirectory = ExportBuildDirectory + "/" + %PreGenExportDirectoryVariable%
|
||||
maxSourceDir = DatabaseDirectory + "/" + dir
|
||||
tagList = findFiles(log, outputDirectory, "", ".%PreGenFileExtension%")
|
||||
tagLen = len(tagList)
|
||||
if os.path.isfile(scriptDst):
|
||||
os.remove(scriptDst)
|
||||
tagDiff = 1
|
||||
sSrc = open(scriptSrc, "r")
|
||||
sDst = open(scriptDst, "w")
|
||||
for line in sSrc:
|
||||
newline = line.replace("%OutputLogfile%", outputLogfile)
|
||||
newline = newline.replace("%MaxSourceDirectory%", maxSourceDir)
|
||||
newline = newline.replace("%OutputDirectory%", outputDirectory)
|
||||
sDst.write(newline)
|
||||
sSrc.close()
|
||||
sDst.close()
|
||||
while tagDiff > 0:
|
||||
printLog(log, "MAXSCRIPT " + scriptDst)
|
||||
subprocess.call([ Max, "-U", "MAXScript", "%PreGenFileExtension%_export.ms", "-q", "-mi", "-mip" ])
|
||||
tagList = findFiles(log, outputDirectory, "", ".%PreGenFileExtension%")
|
||||
newTagLen = len(tagList)
|
||||
tagDiff = newTagLen - tagLen
|
||||
tagLen = newTagLen
|
||||
printLog(log, "Exported " + str(tagDiff) + " .%PreGenFileExtension% files!")
|
||||
os.remove(scriptDst)
|
||||
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# #################################################################
|
||||
# ## %PreGenWarning%
|
||||
# #################################################################
|
||||
#
|
||||
# \file 1_export.py
|
||||
# \brief Export %PreGenProcessName%
|
||||
# \date %PreGenDateTimeStamp%
|
||||
# \author Jan Boon (Kaetemi)
|
||||
# Python port of game data build pipeline.
|
||||
# Export %PreGenProcessName%
|
||||
#
|
||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||
# Copyright (C) 2009-2014 by authors
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
import time, sys, os, shutil, subprocess, distutils.dir_util
|
||||
sys.path.append("../../configuration")
|
||||
|
||||
if os.path.isfile("log.log"):
|
||||
os.remove("log.log")
|
||||
log = open("log.log", "w")
|
||||
from scripts import *
|
||||
from buildsite import *
|
||||
from process import *
|
||||
from tools import *
|
||||
from directories import *
|
||||
|
||||
printLog(log, "")
|
||||
printLog(log, "-------")
|
||||
printLog(log, "--- Export %PreGenProcessName%")
|
||||
printLog(log, "-------")
|
||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||
printLog(log, "")
|
||||
|
||||
# Find tools
|
||||
# ...
|
||||
|
||||
# Export %PreGenProcessName% 3dsmax
|
||||
if MaxAvailable:
|
||||
# Find tools
|
||||
Max = findMax(log, MaxDirectory, MaxExecutable)
|
||||
printLog(log, "")
|
||||
|
||||
printLog(log, ">>> Export %PreGenProcessName% 3dsmax <<<")
|
||||
mkPath(log, ExportBuildDirectory + "/" + %PreGenExportDirectoryVariable%)
|
||||
for dir in %PreGenSourceDirectoriesVariable%:
|
||||
mkPath(log, DatabaseDirectory + "/" + dir)
|
||||
if (needUpdateDirByTagLog(log, DatabaseDirectory + "/" + dir, ".max", ExportBuildDirectory + "/" + %PreGenExportDirectoryVariable%, ".%PreGenFileExtension%")):
|
||||
scriptSrc = "maxscript/%PreGenFileExtension%_export.ms"
|
||||
scriptDst = MaxUserDirectory + "/scripts/%PreGenFileExtension%_export.ms"
|
||||
outputLogfile = ScriptDirectory + "/processes/%PreGenProcessName%/log.log"
|
||||
outputDirectory = ExportBuildDirectory + "/" + %PreGenExportDirectoryVariable%
|
||||
maxSourceDir = DatabaseDirectory + "/" + dir
|
||||
tagList = findFiles(log, outputDirectory, "", ".%PreGenFileExtension%")
|
||||
tagLen = len(tagList)
|
||||
if os.path.isfile(scriptDst):
|
||||
os.remove(scriptDst)
|
||||
tagDiff = 1
|
||||
sSrc = open(scriptSrc, "r")
|
||||
sDst = open(scriptDst, "w")
|
||||
for line in sSrc:
|
||||
newline = line.replace("%OutputLogfile%", outputLogfile)
|
||||
newline = newline.replace("%MaxSourceDirectory%", maxSourceDir)
|
||||
newline = newline.replace("%OutputDirectory%", outputDirectory)
|
||||
sDst.write(newline)
|
||||
sSrc.close()
|
||||
sDst.close()
|
||||
while tagDiff > 0:
|
||||
printLog(log, "MAXSCRIPT " + scriptDst)
|
||||
subprocess.call([ Max, "-U", "MAXScript", "%PreGenFileExtension%_export.ms", "-q", "-mi", "-mip" ])
|
||||
tagList = findFiles(log, outputDirectory, "", ".%PreGenFileExtension%")
|
||||
newTagLen = len(tagList)
|
||||
tagDiff = newTagLen - tagLen
|
||||
tagLen = newTagLen
|
||||
printLog(log, "Exported " + str(tagDiff) + " .%PreGenFileExtension% files!")
|
||||
os.remove(scriptDst)
|
||||
|
||||
|
@ -1,49 +1,49 @@
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# \file 2_build.py
|
||||
# \brief Build %PreGenProcessName%
|
||||
# \date %PreGenDateTimeStamp%
|
||||
# \author Jan Boon (Kaetemi)
|
||||
# Python port of game data build pipeline.
|
||||
# Build %PreGenProcessName%
|
||||
#
|
||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||
# Copyright (C) 2009-2014 by authors
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
import time, sys, os, shutil, subprocess, distutils.dir_util
|
||||
sys.path.append("../../configuration")
|
||||
|
||||
if os.path.isfile("log.log"):
|
||||
os.remove("log.log")
|
||||
log = open("log.log", "w")
|
||||
from scripts import *
|
||||
from buildsite import *
|
||||
from process import *
|
||||
from tools import *
|
||||
from directories import *
|
||||
|
||||
printLog(log, "")
|
||||
printLog(log, "-------")
|
||||
printLog(log, "--- Build %PreGenProcessName%")
|
||||
printLog(log, "-------")
|
||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||
printLog(log, "")
|
||||
|
||||
log.close()
|
||||
|
||||
|
||||
# end of file
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# \file 2_build.py
|
||||
# \brief Build %PreGenProcessName%
|
||||
# \date %PreGenDateTimeStamp%
|
||||
# \author Jan Boon (Kaetemi)
|
||||
# Python port of game data build pipeline.
|
||||
# Build %PreGenProcessName%
|
||||
#
|
||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||
# Copyright (C) 2009-2014 by authors
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
import time, sys, os, shutil, subprocess, distutils.dir_util
|
||||
sys.path.append("../../configuration")
|
||||
|
||||
if os.path.isfile("log.log"):
|
||||
os.remove("log.log")
|
||||
log = open("log.log", "w")
|
||||
from scripts import *
|
||||
from buildsite import *
|
||||
from process import *
|
||||
from tools import *
|
||||
from directories import *
|
||||
|
||||
printLog(log, "")
|
||||
printLog(log, "-------")
|
||||
printLog(log, "--- Build %PreGenProcessName%")
|
||||
printLog(log, "-------")
|
||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||
printLog(log, "")
|
||||
|
||||
log.close()
|
||||
|
||||
|
||||
# end of file
|
||||
|
@ -1,57 +1,57 @@
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# \file 3_install.py
|
||||
# \brief Install %PreGenProcessName%
|
||||
# \date %PreGenDateTimeStamp%
|
||||
# \author Jan Boon (Kaetemi)
|
||||
# Python port of game data build pipeline.
|
||||
# Install %PreGenProcessName%
|
||||
#
|
||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||
# Copyright (C) 2009-2014 by authors
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
import time, sys, os, shutil, subprocess, distutils.dir_util
|
||||
sys.path.append("../../configuration")
|
||||
|
||||
if os.path.isfile("log.log"):
|
||||
os.remove("log.log")
|
||||
log = open("log.log", "w")
|
||||
from scripts import *
|
||||
from buildsite import *
|
||||
from process import *
|
||||
from tools import *
|
||||
from directories import *
|
||||
|
||||
printLog(log, "")
|
||||
printLog(log, "-------")
|
||||
printLog(log, "--- Install %PreGenProcessName%")
|
||||
printLog(log, "-------")
|
||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||
printLog(log, "")
|
||||
|
||||
printLog(log, ">>> Install %PreGenProcessName% <<<")
|
||||
exportPath = ExportBuildDirectory + "/" + %PreGenExportDirectoryVariable%
|
||||
mkPath(log, exportPath)
|
||||
installPath = InstallDirectory + "/" + %PreGenInstallDirectoryVariable%
|
||||
mkPath(log, installPath)
|
||||
copyFilesExtNoSubdirIfNeeded(log, exportPath, installPath, ".%PreGenFileExtension%")
|
||||
|
||||
printLog(log, "")
|
||||
log.close()
|
||||
|
||||
|
||||
# end of file
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# \file 3_install.py
|
||||
# \brief Install %PreGenProcessName%
|
||||
# \date %PreGenDateTimeStamp%
|
||||
# \author Jan Boon (Kaetemi)
|
||||
# Python port of game data build pipeline.
|
||||
# Install %PreGenProcessName%
|
||||
#
|
||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||
# Copyright (C) 2009-2014 by authors
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
import time, sys, os, shutil, subprocess, distutils.dir_util
|
||||
sys.path.append("../../configuration")
|
||||
|
||||
if os.path.isfile("log.log"):
|
||||
os.remove("log.log")
|
||||
log = open("log.log", "w")
|
||||
from scripts import *
|
||||
from buildsite import *
|
||||
from process import *
|
||||
from tools import *
|
||||
from directories import *
|
||||
|
||||
printLog(log, "")
|
||||
printLog(log, "-------")
|
||||
printLog(log, "--- Install %PreGenProcessName%")
|
||||
printLog(log, "-------")
|
||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||
printLog(log, "")
|
||||
|
||||
printLog(log, ">>> Install %PreGenProcessName% <<<")
|
||||
exportPath = ExportBuildDirectory + "/" + %PreGenExportDirectoryVariable%
|
||||
mkPath(log, exportPath)
|
||||
installPath = InstallDirectory + "/" + %PreGenInstallDirectoryVariable%
|
||||
mkPath(log, installPath)
|
||||
copyFilesExtNoSubdirIfNeeded(log, exportPath, installPath, ".%PreGenFileExtension%")
|
||||
|
||||
printLog(log, "")
|
||||
log.close()
|
||||
|
||||
|
||||
# end of file
|
||||
|
@ -1,66 +1,66 @@
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# \file 0_setup.py
|
||||
# \brief setup %PreGenProcessName%
|
||||
# \date %PreGenDateTimeStamp%
|
||||
# \author Jan Boon (Kaetemi)
|
||||
# Python port of game data build pipeline.
|
||||
# Setup %PreGenProcessName%
|
||||
#
|
||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||
# Copyright (C) 2009-2014 by authors
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
import time, sys, os, shutil, subprocess, distutils.dir_util
|
||||
sys.path.append("../../configuration")
|
||||
|
||||
if os.path.isfile("log.log"):
|
||||
os.remove("log.log")
|
||||
log = open("log.log", "w")
|
||||
from scripts import *
|
||||
from buildsite import *
|
||||
from process import *
|
||||
from tools import *
|
||||
from directories import *
|
||||
|
||||
printLog(log, "")
|
||||
printLog(log, "-------")
|
||||
printLog(log, "--- Setup %PreGenProcessName%")
|
||||
printLog(log, "-------")
|
||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||
printLog(log, "")
|
||||
|
||||
# Setup source directories
|
||||
printLog(log, ">>> Setup source directories <<<")
|
||||
for dir in %PreGenSourceDirectoriesVariable%:
|
||||
mkPath(log, DatabaseDirectory + "/" + dir)
|
||||
|
||||
# Setup export directories
|
||||
printLog(log, ">>> Setup export directories <<<")
|
||||
mkPath(log, ExportBuildDirectory + "/" + %PreGenExportDirectoryVariable%)
|
||||
mkPath(log, ExportBuildDirectory + "/" + %PreGenTagExportDirectoryVariable%)
|
||||
|
||||
# Setup build directories
|
||||
printLog(log, ">>> Setup build directories <<<")
|
||||
|
||||
# Setup client directories
|
||||
printLog(log, ">>> Setup client directories <<<")
|
||||
mkPath(log, InstallDirectory + "/" + %PreGenInstallDirectoryVariable%)
|
||||
|
||||
log.close()
|
||||
|
||||
|
||||
# end of file
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# \file 0_setup.py
|
||||
# \brief setup %PreGenProcessName%
|
||||
# \date %PreGenDateTimeStamp%
|
||||
# \author Jan Boon (Kaetemi)
|
||||
# Python port of game data build pipeline.
|
||||
# Setup %PreGenProcessName%
|
||||
#
|
||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||
# Copyright (C) 2009-2014 by authors
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
import time, sys, os, shutil, subprocess, distutils.dir_util
|
||||
sys.path.append("../../configuration")
|
||||
|
||||
if os.path.isfile("log.log"):
|
||||
os.remove("log.log")
|
||||
log = open("log.log", "w")
|
||||
from scripts import *
|
||||
from buildsite import *
|
||||
from process import *
|
||||
from tools import *
|
||||
from directories import *
|
||||
|
||||
printLog(log, "")
|
||||
printLog(log, "-------")
|
||||
printLog(log, "--- Setup %PreGenProcessName%")
|
||||
printLog(log, "-------")
|
||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||
printLog(log, "")
|
||||
|
||||
# Setup source directories
|
||||
printLog(log, ">>> Setup source directories <<<")
|
||||
for dir in %PreGenSourceDirectoriesVariable%:
|
||||
mkPath(log, DatabaseDirectory + "/" + dir)
|
||||
|
||||
# Setup export directories
|
||||
printLog(log, ">>> Setup export directories <<<")
|
||||
mkPath(log, ExportBuildDirectory + "/" + %PreGenExportDirectoryVariable%)
|
||||
mkPath(log, ExportBuildDirectory + "/" + %PreGenTagExportDirectoryVariable%)
|
||||
|
||||
# Setup build directories
|
||||
printLog(log, ">>> Setup build directories <<<")
|
||||
|
||||
# Setup client directories
|
||||
printLog(log, ">>> Setup client directories <<<")
|
||||
mkPath(log, InstallDirectory + "/" + %PreGenInstallDirectoryVariable%)
|
||||
|
||||
log.close()
|
||||
|
||||
|
||||
# end of file
|
||||
|
@ -1,9 +1,9 @@
|
||||
|
||||
|
||||
log.close()
|
||||
if os.path.isfile("log.log"):
|
||||
os.remove("log.log")
|
||||
shutil.move("temp_log.log", "log.log")
|
||||
|
||||
|
||||
# end of file
|
||||
|
||||
|
||||
log.close()
|
||||
if os.path.isfile("log.log"):
|
||||
os.remove("log.log")
|
||||
shutil.move("temp_log.log", "log.log")
|
||||
|
||||
|
||||
# end of file
|
||||
|
@ -1,130 +1,130 @@
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# #################################################################
|
||||
# ## %PreGenWarning%
|
||||
# #################################################################
|
||||
#
|
||||
# \file 1_export.py
|
||||
# \brief Export %PreGenProcessName%
|
||||
# \date %PreGenDateTimeStamp%
|
||||
# \author Jan Boon (Kaetemi)
|
||||
# Python port of game data build pipeline.
|
||||
# Export %PreGenProcessName%
|
||||
#
|
||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||
# Copyright (C) 2009-2014 by authors
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
import time, sys, os, shutil, subprocess, distutils.dir_util
|
||||
sys.path.append("../../configuration")
|
||||
|
||||
if os.path.isfile("log.log"):
|
||||
os.remove("log.log")
|
||||
if os.path.isfile("temp_log.log"):
|
||||
os.remove("temp_log.log")
|
||||
log = open("temp_log.log", "w")
|
||||
from scripts import *
|
||||
from buildsite import *
|
||||
from process import *
|
||||
from tools import *
|
||||
from directories import *
|
||||
|
||||
printLog(log, "")
|
||||
printLog(log, "-------")
|
||||
printLog(log, "--- Export %PreGenProcessName%")
|
||||
printLog(log, "-------")
|
||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||
printLog(log, "")
|
||||
|
||||
|
||||
# Find tools
|
||||
# ...
|
||||
|
||||
# Export %PreGenProcessName% 3dsmax
|
||||
if MaxAvailable:
|
||||
# Find tools
|
||||
Max = findMax(log, MaxDirectory, MaxExecutable)
|
||||
printLog(log, "")
|
||||
|
||||
printLog(log, ">>> Export %PreGenProcessName% 3dsmax <<<")
|
||||
mkPath(log, ExportBuildDirectory + "/" + %PreGenExportDirectoryVariable%)
|
||||
mkPath(log, ExportBuildDirectory + "/" + %PreGenTagExportDirectoryVariable%)
|
||||
for dir in %PreGenSourceDirectoriesVariable%:
|
||||
mkPath(log, DatabaseDirectory + "/" + dir)
|
||||
if (needUpdateDirByTagLog(log, DatabaseDirectory + "/" + dir, ".max", ExportBuildDirectory + "/" + %PreGenTagExportDirectoryVariable%, ".max.tag")):
|
||||
scriptSrc = "maxscript/%PreGenFileExtension%_export.ms"
|
||||
scriptDst = MaxUserDirectory + "/scripts/%PreGenFileExtension%_export.ms"
|
||||
outputLogfile = ScriptDirectory + "/processes/%PreGenProcessName%/log.log"
|
||||
outputDirectory = ExportBuildDirectory + "/" + %PreGenExportDirectoryVariable%
|
||||
tagDirectory = ExportBuildDirectory + "/" + %PreGenTagExportDirectoryVariable%
|
||||
maxSourceDir = DatabaseDirectory + "/" + dir
|
||||
maxRunningTagFile = tagDirectory + "/max_running.tag"
|
||||
tagList = findFiles(log, tagDirectory, "", ".max.tag")
|
||||
tagLen = len(tagList)
|
||||
if os.path.isfile(scriptDst):
|
||||
os.remove(scriptDst)
|
||||
tagDiff = 1
|
||||
sSrc = open(scriptSrc, "r")
|
||||
sDst = open(scriptDst, "w")
|
||||
for line in sSrc:
|
||||
newline = line.replace("%OutputLogfile%", outputLogfile)
|
||||
newline = newline.replace("%MaxSourceDirectory%", maxSourceDir)
|
||||
newline = newline.replace("%OutputDirectory%", outputDirectory)
|
||||
newline = newline.replace("%TagDirectory%", tagDirectory)
|
||||
sDst.write(newline)
|
||||
sSrc.close()
|
||||
sDst.close()
|
||||
zeroRetryLimit = 3
|
||||
while tagDiff > 0:
|
||||
mrt = open(maxRunningTagFile, "w")
|
||||
mrt.write("moe-moe-kyun")
|
||||
mrt.close()
|
||||
printLog(log, "MAXSCRIPT " + scriptDst)
|
||||
subprocess.call([ Max, "-U", "MAXScript", "%PreGenFileExtension%_export.ms", "-q", "-mi", "-mip" ])
|
||||
if os.path.exists(outputLogfile):
|
||||
try:
|
||||
lSrc = open(outputLogfile, "r")
|
||||
for line in lSrc:
|
||||
lineStrip = line.strip()
|
||||
if (len(lineStrip) > 0):
|
||||
printLog(log, lineStrip)
|
||||
lSrc.close()
|
||||
os.remove(outputLogfile)
|
||||
except Exception:
|
||||
printLog(log, "ERROR Failed to read 3dsmax log")
|
||||
else:
|
||||
printLog(log, "WARNING No 3dsmax log")
|
||||
tagList = findFiles(log, tagDirectory, "", ".max.tag")
|
||||
newTagLen = len(tagList)
|
||||
tagDiff = newTagLen - tagLen
|
||||
tagLen = newTagLen
|
||||
addTagDiff = 0
|
||||
if os.path.exists(maxRunningTagFile):
|
||||
printLog(log, "FAIL 3ds Max crashed and/or file export failed!")
|
||||
if tagDiff == 0:
|
||||
if zeroRetryLimit > 0:
|
||||
zeroRetryLimit = zeroRetryLimit - 1
|
||||
addTagDiff = 1
|
||||
else:
|
||||
printLog(log, "FAIL Retry limit reached!")
|
||||
else:
|
||||
addTagDiff = 1
|
||||
os.remove(maxRunningTagFile)
|
||||
printLog(log, "Exported " + str(tagDiff) + " .max files!")
|
||||
tagDiff += addTagDiff
|
||||
os.remove(scriptDst)
|
||||
printLog(log, "")
|
||||
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# #################################################################
|
||||
# ## %PreGenWarning%
|
||||
# #################################################################
|
||||
#
|
||||
# \file 1_export.py
|
||||
# \brief Export %PreGenProcessName%
|
||||
# \date %PreGenDateTimeStamp%
|
||||
# \author Jan Boon (Kaetemi)
|
||||
# Python port of game data build pipeline.
|
||||
# Export %PreGenProcessName%
|
||||
#
|
||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||
# Copyright (C) 2009-2014 by authors
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
import time, sys, os, shutil, subprocess, distutils.dir_util
|
||||
sys.path.append("../../configuration")
|
||||
|
||||
if os.path.isfile("log.log"):
|
||||
os.remove("log.log")
|
||||
if os.path.isfile("temp_log.log"):
|
||||
os.remove("temp_log.log")
|
||||
log = open("temp_log.log", "w")
|
||||
from scripts import *
|
||||
from buildsite import *
|
||||
from process import *
|
||||
from tools import *
|
||||
from directories import *
|
||||
|
||||
printLog(log, "")
|
||||
printLog(log, "-------")
|
||||
printLog(log, "--- Export %PreGenProcessName%")
|
||||
printLog(log, "-------")
|
||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||
printLog(log, "")
|
||||
|
||||
|
||||
# Find tools
|
||||
# ...
|
||||
|
||||
# Export %PreGenProcessName% 3dsmax
|
||||
if MaxAvailable:
|
||||
# Find tools
|
||||
Max = findMax(log, MaxDirectory, MaxExecutable)
|
||||
printLog(log, "")
|
||||
|
||||
printLog(log, ">>> Export %PreGenProcessName% 3dsmax <<<")
|
||||
mkPath(log, ExportBuildDirectory + "/" + %PreGenExportDirectoryVariable%)
|
||||
mkPath(log, ExportBuildDirectory + "/" + %PreGenTagExportDirectoryVariable%)
|
||||
for dir in %PreGenSourceDirectoriesVariable%:
|
||||
mkPath(log, DatabaseDirectory + "/" + dir)
|
||||
if (needUpdateDirByTagLog(log, DatabaseDirectory + "/" + dir, ".max", ExportBuildDirectory + "/" + %PreGenTagExportDirectoryVariable%, ".max.tag")):
|
||||
scriptSrc = "maxscript/%PreGenFileExtension%_export.ms"
|
||||
scriptDst = MaxUserDirectory + "/scripts/%PreGenFileExtension%_export.ms"
|
||||
outputLogfile = ScriptDirectory + "/processes/%PreGenProcessName%/log.log"
|
||||
outputDirectory = ExportBuildDirectory + "/" + %PreGenExportDirectoryVariable%
|
||||
tagDirectory = ExportBuildDirectory + "/" + %PreGenTagExportDirectoryVariable%
|
||||
maxSourceDir = DatabaseDirectory + "/" + dir
|
||||
maxRunningTagFile = tagDirectory + "/max_running.tag"
|
||||
tagList = findFiles(log, tagDirectory, "", ".max.tag")
|
||||
tagLen = len(tagList)
|
||||
if os.path.isfile(scriptDst):
|
||||
os.remove(scriptDst)
|
||||
tagDiff = 1
|
||||
sSrc = open(scriptSrc, "r")
|
||||
sDst = open(scriptDst, "w")
|
||||
for line in sSrc:
|
||||
newline = line.replace("%OutputLogfile%", outputLogfile)
|
||||
newline = newline.replace("%MaxSourceDirectory%", maxSourceDir)
|
||||
newline = newline.replace("%OutputDirectory%", outputDirectory)
|
||||
newline = newline.replace("%TagDirectory%", tagDirectory)
|
||||
sDst.write(newline)
|
||||
sSrc.close()
|
||||
sDst.close()
|
||||
zeroRetryLimit = 3
|
||||
while tagDiff > 0:
|
||||
mrt = open(maxRunningTagFile, "w")
|
||||
mrt.write("moe-moe-kyun")
|
||||
mrt.close()
|
||||
printLog(log, "MAXSCRIPT " + scriptDst)
|
||||
subprocess.call([ Max, "-U", "MAXScript", "%PreGenFileExtension%_export.ms", "-q", "-mi", "-mip" ])
|
||||
if os.path.exists(outputLogfile):
|
||||
try:
|
||||
lSrc = open(outputLogfile, "r")
|
||||
for line in lSrc:
|
||||
lineStrip = line.strip()
|
||||
if (len(lineStrip) > 0):
|
||||
printLog(log, lineStrip)
|
||||
lSrc.close()
|
||||
os.remove(outputLogfile)
|
||||
except Exception:
|
||||
printLog(log, "ERROR Failed to read 3dsmax log")
|
||||
else:
|
||||
printLog(log, "WARNING No 3dsmax log")
|
||||
tagList = findFiles(log, tagDirectory, "", ".max.tag")
|
||||
newTagLen = len(tagList)
|
||||
tagDiff = newTagLen - tagLen
|
||||
tagLen = newTagLen
|
||||
addTagDiff = 0
|
||||
if os.path.exists(maxRunningTagFile):
|
||||
printLog(log, "FAIL 3ds Max crashed and/or file export failed!")
|
||||
if tagDiff == 0:
|
||||
if zeroRetryLimit > 0:
|
||||
zeroRetryLimit = zeroRetryLimit - 1
|
||||
addTagDiff = 1
|
||||
else:
|
||||
printLog(log, "FAIL Retry limit reached!")
|
||||
else:
|
||||
addTagDiff = 1
|
||||
os.remove(maxRunningTagFile)
|
||||
printLog(log, "Exported " + str(tagDiff) + " .max files!")
|
||||
tagDiff += addTagDiff
|
||||
os.remove(scriptDst)
|
||||
printLog(log, "")
|
||||
|
||||
|
@ -1,49 +1,49 @@
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# \file 2_build.py
|
||||
# \brief Build %PreGenProcessName%
|
||||
# \date %PreGenDateTimeStamp%
|
||||
# \author Jan Boon (Kaetemi)
|
||||
# Python port of game data build pipeline.
|
||||
# Build %PreGenProcessName%
|
||||
#
|
||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||
# Copyright (C) 2009-2014 by authors
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
import time, sys, os, shutil, subprocess, distutils.dir_util
|
||||
sys.path.append("../../configuration")
|
||||
|
||||
if os.path.isfile("log.log"):
|
||||
os.remove("log.log")
|
||||
log = open("log.log", "w")
|
||||
from scripts import *
|
||||
from buildsite import *
|
||||
from process import *
|
||||
from tools import *
|
||||
from directories import *
|
||||
|
||||
printLog(log, "")
|
||||
printLog(log, "-------")
|
||||
printLog(log, "--- Build %PreGenProcessName%")
|
||||
printLog(log, "-------")
|
||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||
printLog(log, "")
|
||||
|
||||
log.close()
|
||||
|
||||
|
||||
# end of file
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# \file 2_build.py
|
||||
# \brief Build %PreGenProcessName%
|
||||
# \date %PreGenDateTimeStamp%
|
||||
# \author Jan Boon (Kaetemi)
|
||||
# Python port of game data build pipeline.
|
||||
# Build %PreGenProcessName%
|
||||
#
|
||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||
# Copyright (C) 2009-2014 by authors
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
import time, sys, os, shutil, subprocess, distutils.dir_util
|
||||
sys.path.append("../../configuration")
|
||||
|
||||
if os.path.isfile("log.log"):
|
||||
os.remove("log.log")
|
||||
log = open("log.log", "w")
|
||||
from scripts import *
|
||||
from buildsite import *
|
||||
from process import *
|
||||
from tools import *
|
||||
from directories import *
|
||||
|
||||
printLog(log, "")
|
||||
printLog(log, "-------")
|
||||
printLog(log, "--- Build %PreGenProcessName%")
|
||||
printLog(log, "-------")
|
||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||
printLog(log, "")
|
||||
|
||||
log.close()
|
||||
|
||||
|
||||
# end of file
|
||||
|
@ -1,57 +1,57 @@
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# \file 3_install.py
|
||||
# \brief Install %PreGenProcessName%
|
||||
# \date %PreGenDateTimeStamp%
|
||||
# \author Jan Boon (Kaetemi)
|
||||
# Python port of game data build pipeline.
|
||||
# Install %PreGenProcessName%
|
||||
#
|
||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||
# Copyright (C) 2009-2014 by authors
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
import time, sys, os, shutil, subprocess, distutils.dir_util
|
||||
sys.path.append("../../configuration")
|
||||
|
||||
if os.path.isfile("log.log"):
|
||||
os.remove("log.log")
|
||||
log = open("log.log", "w")
|
||||
from scripts import *
|
||||
from buildsite import *
|
||||
from process import *
|
||||
from tools import *
|
||||
from directories import *
|
||||
|
||||
printLog(log, "")
|
||||
printLog(log, "-------")
|
||||
printLog(log, "--- Install %PreGenProcessName%")
|
||||
printLog(log, "-------")
|
||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||
printLog(log, "")
|
||||
|
||||
printLog(log, ">>> Install %PreGenProcessName% <<<")
|
||||
exportPath = ExportBuildDirectory + "/" + %PreGenExportDirectoryVariable%
|
||||
mkPath(log, exportPath)
|
||||
installPath = InstallDirectory + "/" + %PreGenInstallDirectoryVariable%
|
||||
mkPath(log, installPath)
|
||||
copyFilesNoTreeIfNeeded(log, exportPath, installPath)
|
||||
|
||||
printLog(log, "")
|
||||
log.close()
|
||||
|
||||
|
||||
# end of file
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# \file 3_install.py
|
||||
# \brief Install %PreGenProcessName%
|
||||
# \date %PreGenDateTimeStamp%
|
||||
# \author Jan Boon (Kaetemi)
|
||||
# Python port of game data build pipeline.
|
||||
# Install %PreGenProcessName%
|
||||
#
|
||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||
# Copyright (C) 2009-2014 by authors
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
import time, sys, os, shutil, subprocess, distutils.dir_util
|
||||
sys.path.append("../../configuration")
|
||||
|
||||
if os.path.isfile("log.log"):
|
||||
os.remove("log.log")
|
||||
log = open("log.log", "w")
|
||||
from scripts import *
|
||||
from buildsite import *
|
||||
from process import *
|
||||
from tools import *
|
||||
from directories import *
|
||||
|
||||
printLog(log, "")
|
||||
printLog(log, "-------")
|
||||
printLog(log, "--- Install %PreGenProcessName%")
|
||||
printLog(log, "-------")
|
||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||
printLog(log, "")
|
||||
|
||||
printLog(log, ">>> Install %PreGenProcessName% <<<")
|
||||
exportPath = ExportBuildDirectory + "/" + %PreGenExportDirectoryVariable%
|
||||
mkPath(log, exportPath)
|
||||
installPath = InstallDirectory + "/" + %PreGenInstallDirectoryVariable%
|
||||
mkPath(log, installPath)
|
||||
copyFilesNoTreeIfNeeded(log, exportPath, installPath)
|
||||
|
||||
printLog(log, "")
|
||||
log.close()
|
||||
|
||||
|
||||
# end of file
|
||||
|
@ -1,89 +1,89 @@
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# \file 0_setup.py
|
||||
# \brief Run all setup processes
|
||||
# \date 2009-02-18 15:28GMT
|
||||
# \author Jan Boon (Kaetemi)
|
||||
# Python port of game data build pipeline.
|
||||
# Run all setup processes
|
||||
#
|
||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||
# Copyright (C) 2009-2014 by authors
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
import time, sys, os, shutil, subprocess, distutils.dir_util, argparse
|
||||
sys.path.append("../configuration")
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('--includeprocess', '-ipc', nargs='+')
|
||||
parser.add_argument('--excludeprocess', '-epc', nargs='+')
|
||||
args = parser.parse_args()
|
||||
|
||||
if os.path.isfile("log.log"):
|
||||
os.remove("log.log")
|
||||
log = open("log.log", "w")
|
||||
from scripts import *
|
||||
from buildsite import *
|
||||
from process import *
|
||||
from tools import *
|
||||
from directories import *
|
||||
|
||||
#printLog(log, "")
|
||||
#printLog(log, "-------")
|
||||
#printLog(log, "--- Setup project")
|
||||
#printLog(log, "-------")
|
||||
#printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||
#printLog(log, "")
|
||||
|
||||
#printLog(log, "")
|
||||
#printLog(log, "-------")
|
||||
#printLog(log, "--- Setup client directories")
|
||||
#printLog(log, "-------")
|
||||
#printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||
#printLog(log, "")
|
||||
#for dir in ClientSetupDirectories:
|
||||
# mkPath(log, InstallDirectory + "/" + dir)
|
||||
#printLog(log, "")
|
||||
|
||||
printLog(log, "")
|
||||
printLog(log, "-------")
|
||||
printLog(log, "--- Run the setup processes")
|
||||
printLog(log, "-------")
|
||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||
printLog(log, "")
|
||||
# For each process
|
||||
for processName in ProcessToComplete:
|
||||
if ((args.includeprocess == None or processName in args.includeprocess) and (args.excludeprocess == None or not processName in args.excludeprocess)):
|
||||
printLog(log, "PROCESS " + processName)
|
||||
os.chdir(processName)
|
||||
try:
|
||||
subprocess.call([ "python", "0_setup.py" ])
|
||||
except Exception, e:
|
||||
printLog(log, "<" + processName + "> " + str(e))
|
||||
os.chdir("..")
|
||||
try:
|
||||
processLog = open(processName + "/log.log", "r")
|
||||
processLogData = processLog.read()
|
||||
processLog.close()
|
||||
log.write(processLogData)
|
||||
except Exception, e:
|
||||
printLog(log, "<" + processName + "> " + str(e))
|
||||
# subprocess.call("idle.bat")
|
||||
else:
|
||||
printLog(log, "IGNORE PROCESS " + processName)
|
||||
printLog(log, "")
|
||||
|
||||
log.close()
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# \file 0_setup.py
|
||||
# \brief Run all setup processes
|
||||
# \date 2009-02-18 15:28GMT
|
||||
# \author Jan Boon (Kaetemi)
|
||||
# Python port of game data build pipeline.
|
||||
# Run all setup processes
|
||||
#
|
||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||
# Copyright (C) 2009-2014 by authors
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
import time, sys, os, shutil, subprocess, distutils.dir_util, argparse
|
||||
sys.path.append("../configuration")
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('--includeprocess', '-ipc', nargs='+')
|
||||
parser.add_argument('--excludeprocess', '-epc', nargs='+')
|
||||
args = parser.parse_args()
|
||||
|
||||
if os.path.isfile("log.log"):
|
||||
os.remove("log.log")
|
||||
log = open("log.log", "w")
|
||||
from scripts import *
|
||||
from buildsite import *
|
||||
from process import *
|
||||
from tools import *
|
||||
from directories import *
|
||||
|
||||
#printLog(log, "")
|
||||
#printLog(log, "-------")
|
||||
#printLog(log, "--- Setup project")
|
||||
#printLog(log, "-------")
|
||||
#printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||
#printLog(log, "")
|
||||
|
||||
#printLog(log, "")
|
||||
#printLog(log, "-------")
|
||||
#printLog(log, "--- Setup client directories")
|
||||
#printLog(log, "-------")
|
||||
#printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||
#printLog(log, "")
|
||||
#for dir in ClientSetupDirectories:
|
||||
# mkPath(log, InstallDirectory + "/" + dir)
|
||||
#printLog(log, "")
|
||||
|
||||
printLog(log, "")
|
||||
printLog(log, "-------")
|
||||
printLog(log, "--- Run the setup processes")
|
||||
printLog(log, "-------")
|
||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||
printLog(log, "")
|
||||
# For each process
|
||||
for processName in ProcessToComplete:
|
||||
if ((args.includeprocess == None or processName in args.includeprocess) and (args.excludeprocess == None or not processName in args.excludeprocess)):
|
||||
printLog(log, "PROCESS " + processName)
|
||||
os.chdir(processName)
|
||||
try:
|
||||
subprocess.call([ "python", "0_setup.py" ])
|
||||
except Exception, e:
|
||||
printLog(log, "<" + processName + "> " + str(e))
|
||||
os.chdir("..")
|
||||
try:
|
||||
processLog = open(processName + "/log.log", "r")
|
||||
processLogData = processLog.read()
|
||||
processLog.close()
|
||||
log.write(processLogData)
|
||||
except Exception, e:
|
||||
printLog(log, "<" + processName + "> " + str(e))
|
||||
# subprocess.call("idle.bat")
|
||||
else:
|
||||
printLog(log, "IGNORE PROCESS " + processName)
|
||||
printLog(log, "")
|
||||
|
||||
log.close()
|
||||
|
@ -1,73 +1,73 @@
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# \file 1_export.py
|
||||
# \brief Run all export processes
|
||||
# \date 2009-02-18 09:22GMT
|
||||
# \author Jan Boon (Kaetemi)
|
||||
# Python port of game data build pipeline.
|
||||
# Run all export processes
|
||||
#
|
||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||
# Copyright (C) 2009-2014 by authors
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
import time, sys, os, shutil, subprocess, distutils.dir_util, argparse
|
||||
sys.path.append("../configuration")
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('--includeprocess', '-ipc', nargs='+')
|
||||
parser.add_argument('--excludeprocess', '-epc', nargs='+')
|
||||
args = parser.parse_args()
|
||||
|
||||
if os.path.isfile("log.log"):
|
||||
os.remove("log.log")
|
||||
log = open("log.log", "w")
|
||||
from scripts import *
|
||||
from buildsite import *
|
||||
from process import *
|
||||
from tools import *
|
||||
from directories import *
|
||||
|
||||
# Log error
|
||||
printLog(log, "")
|
||||
printLog(log, "-------")
|
||||
printLog(log, "--- Run the export processes")
|
||||
printLog(log, "-------")
|
||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||
printLog(log, "")
|
||||
# For each process
|
||||
for processName in ProcessToComplete:
|
||||
if ((args.includeprocess == None or processName in args.includeprocess) and (args.excludeprocess == None or not processName in args.excludeprocess)):
|
||||
printLog(log, "PROCESS " + processName)
|
||||
os.chdir(processName)
|
||||
try:
|
||||
subprocess.call([ "python", "1_export.py" ])
|
||||
except Exception, e:
|
||||
printLog(log, "<" + processName + "> " + str(e))
|
||||
os.chdir("..")
|
||||
try:
|
||||
processLog = open(processName + "/log.log", "r")
|
||||
processLogData = processLog.read()
|
||||
processLog.close()
|
||||
log.write(processLogData)
|
||||
except Exception, e:
|
||||
printLog(log, "<" + processName + "> " + str(e))
|
||||
# subprocess.call("idle.bat")
|
||||
else:
|
||||
printLog(log, "IGNORE PROCESS " + processName)
|
||||
printLog(log, "")
|
||||
|
||||
log.close()
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# \file 1_export.py
|
||||
# \brief Run all export processes
|
||||
# \date 2009-02-18 09:22GMT
|
||||
# \author Jan Boon (Kaetemi)
|
||||
# Python port of game data build pipeline.
|
||||
# Run all export processes
|
||||
#
|
||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||
# Copyright (C) 2009-2014 by authors
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
import time, sys, os, shutil, subprocess, distutils.dir_util, argparse
|
||||
sys.path.append("../configuration")
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('--includeprocess', '-ipc', nargs='+')
|
||||
parser.add_argument('--excludeprocess', '-epc', nargs='+')
|
||||
args = parser.parse_args()
|
||||
|
||||
if os.path.isfile("log.log"):
|
||||
os.remove("log.log")
|
||||
log = open("log.log", "w")
|
||||
from scripts import *
|
||||
from buildsite import *
|
||||
from process import *
|
||||
from tools import *
|
||||
from directories import *
|
||||
|
||||
# Log error
|
||||
printLog(log, "")
|
||||
printLog(log, "-------")
|
||||
printLog(log, "--- Run the export processes")
|
||||
printLog(log, "-------")
|
||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||
printLog(log, "")
|
||||
# For each process
|
||||
for processName in ProcessToComplete:
|
||||
if ((args.includeprocess == None or processName in args.includeprocess) and (args.excludeprocess == None or not processName in args.excludeprocess)):
|
||||
printLog(log, "PROCESS " + processName)
|
||||
os.chdir(processName)
|
||||
try:
|
||||
subprocess.call([ "python", "1_export.py" ])
|
||||
except Exception, e:
|
||||
printLog(log, "<" + processName + "> " + str(e))
|
||||
os.chdir("..")
|
||||
try:
|
||||
processLog = open(processName + "/log.log", "r")
|
||||
processLogData = processLog.read()
|
||||
processLog.close()
|
||||
log.write(processLogData)
|
||||
except Exception, e:
|
||||
printLog(log, "<" + processName + "> " + str(e))
|
||||
# subprocess.call("idle.bat")
|
||||
else:
|
||||
printLog(log, "IGNORE PROCESS " + processName)
|
||||
printLog(log, "")
|
||||
|
||||
log.close()
|
||||
|
@ -1,73 +1,73 @@
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# \file 2_build.py
|
||||
# \brief Run all build processes
|
||||
# \date 2009-02-18 09:22GMT
|
||||
# \author Jan Boon (Kaetemi)
|
||||
# Python port of game data build pipeline.
|
||||
# Run all build processes
|
||||
#
|
||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||
# Copyright (C) 2009-2014 by authors
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
import time, sys, os, shutil, subprocess, distutils.dir_util, argparse
|
||||
sys.path.append("../configuration")
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('--includeprocess', '-ipc', nargs='+')
|
||||
parser.add_argument('--excludeprocess', '-epc', nargs='+')
|
||||
args = parser.parse_args()
|
||||
|
||||
if os.path.isfile("log.log"):
|
||||
os.remove("log.log")
|
||||
log = open("log.log", "w")
|
||||
from scripts import *
|
||||
from buildsite import *
|
||||
from process import *
|
||||
from tools import *
|
||||
from directories import *
|
||||
|
||||
# Log error
|
||||
printLog(log, "")
|
||||
printLog(log, "-------")
|
||||
printLog(log, "--- Run the build processes")
|
||||
printLog(log, "-------")
|
||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||
printLog(log, "")
|
||||
# For each process
|
||||
for processName in ProcessToComplete:
|
||||
if ((args.includeprocess == None or processName in args.includeprocess) and (args.excludeprocess == None or not processName in args.excludeprocess)):
|
||||
printLog(log, "PROCESS " + processName)
|
||||
os.chdir(processName)
|
||||
try:
|
||||
subprocess.call([ "python", "2_build.py" ])
|
||||
except Exception, e:
|
||||
printLog(log, "<" + processName + "> " + str(e))
|
||||
os.chdir("..")
|
||||
try:
|
||||
processLog = open(processName + "/log.log", "r")
|
||||
processLogData = processLog.read()
|
||||
processLog.close()
|
||||
log.write(processLogData)
|
||||
except Exception, e:
|
||||
printLog(log, "<" + processName + "> " + str(e))
|
||||
# subprocess.call("idle.bat")
|
||||
else:
|
||||
printLog(log, "IGNORE PROCESS " + processName)
|
||||
printLog(log, "")
|
||||
|
||||
log.close()
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# \file 2_build.py
|
||||
# \brief Run all build processes
|
||||
# \date 2009-02-18 09:22GMT
|
||||
# \author Jan Boon (Kaetemi)
|
||||
# Python port of game data build pipeline.
|
||||
# Run all build processes
|
||||
#
|
||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||
# Copyright (C) 2009-2014 by authors
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
import time, sys, os, shutil, subprocess, distutils.dir_util, argparse
|
||||
sys.path.append("../configuration")
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('--includeprocess', '-ipc', nargs='+')
|
||||
parser.add_argument('--excludeprocess', '-epc', nargs='+')
|
||||
args = parser.parse_args()
|
||||
|
||||
if os.path.isfile("log.log"):
|
||||
os.remove("log.log")
|
||||
log = open("log.log", "w")
|
||||
from scripts import *
|
||||
from buildsite import *
|
||||
from process import *
|
||||
from tools import *
|
||||
from directories import *
|
||||
|
||||
# Log error
|
||||
printLog(log, "")
|
||||
printLog(log, "-------")
|
||||
printLog(log, "--- Run the build processes")
|
||||
printLog(log, "-------")
|
||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||
printLog(log, "")
|
||||
# For each process
|
||||
for processName in ProcessToComplete:
|
||||
if ((args.includeprocess == None or processName in args.includeprocess) and (args.excludeprocess == None or not processName in args.excludeprocess)):
|
||||
printLog(log, "PROCESS " + processName)
|
||||
os.chdir(processName)
|
||||
try:
|
||||
subprocess.call([ "python", "2_build.py" ])
|
||||
except Exception, e:
|
||||
printLog(log, "<" + processName + "> " + str(e))
|
||||
os.chdir("..")
|
||||
try:
|
||||
processLog = open(processName + "/log.log", "r")
|
||||
processLogData = processLog.read()
|
||||
processLog.close()
|
||||
log.write(processLogData)
|
||||
except Exception, e:
|
||||
printLog(log, "<" + processName + "> " + str(e))
|
||||
# subprocess.call("idle.bat")
|
||||
else:
|
||||
printLog(log, "IGNORE PROCESS " + processName)
|
||||
printLog(log, "")
|
||||
|
||||
log.close()
|
||||
|
@ -1,72 +1,72 @@
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# \file 3_install.py
|
||||
# \brief Run all install processes
|
||||
# \date 2009-02-18 16:19GMT
|
||||
# \author Jan Boon (Kaetemi)
|
||||
# Python port of game data build pipeline.
|
||||
# Run all install processes
|
||||
#
|
||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||
# Copyright (C) 2009-2014 by authors
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
import time, sys, os, shutil, subprocess, distutils.dir_util, argparse
|
||||
sys.path.append("../configuration")
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('--includeprocess', '-ipc', nargs='+')
|
||||
parser.add_argument('--excludeprocess', '-epc', nargs='+')
|
||||
args = parser.parse_args()
|
||||
|
||||
if os.path.isfile("log.log"):
|
||||
os.remove("log.log")
|
||||
log = open("log.log", "w")
|
||||
from scripts import *
|
||||
from buildsite import *
|
||||
from process import *
|
||||
from tools import *
|
||||
from directories import *
|
||||
|
||||
printLog(log, "")
|
||||
printLog(log, "-------")
|
||||
printLog(log, "--- Run the install processes")
|
||||
printLog(log, "-------")
|
||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||
printLog(log, "")
|
||||
# For each process
|
||||
for processName in ProcessToComplete:
|
||||
if ((args.includeprocess == None or processName in args.includeprocess) and (args.excludeprocess == None or not processName in args.excludeprocess)):
|
||||
printLog(log, "PROCESS " + processName)
|
||||
os.chdir(processName)
|
||||
try:
|
||||
subprocess.call([ "python", "3_install.py" ])
|
||||
except Exception, e:
|
||||
printLog(log, "<" + processName + "> " + str(e))
|
||||
os.chdir("..")
|
||||
try:
|
||||
processLog = open(processName + "/log.log", "r")
|
||||
processLogData = processLog.read()
|
||||
processLog.close()
|
||||
log.write(processLogData)
|
||||
except Exception, e:
|
||||
printLog(log, "<" + processName + "> " + str(e))
|
||||
# subprocess.call("idle.bat")
|
||||
else:
|
||||
printLog(log, "IGNORE PROCESS " + processName)
|
||||
printLog(log, "")
|
||||
|
||||
log.close()
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# \file 3_install.py
|
||||
# \brief Run all install processes
|
||||
# \date 2009-02-18 16:19GMT
|
||||
# \author Jan Boon (Kaetemi)
|
||||
# Python port of game data build pipeline.
|
||||
# Run all install processes
|
||||
#
|
||||
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||
# Copyright (C) 2009-2014 by authors
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
import time, sys, os, shutil, subprocess, distutils.dir_util, argparse
|
||||
sys.path.append("../configuration")
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('--includeprocess', '-ipc', nargs='+')
|
||||
parser.add_argument('--excludeprocess', '-epc', nargs='+')
|
||||
args = parser.parse_args()
|
||||
|
||||
if os.path.isfile("log.log"):
|
||||
os.remove("log.log")
|
||||
log = open("log.log", "w")
|
||||
from scripts import *
|
||||
from buildsite import *
|
||||
from process import *
|
||||
from tools import *
|
||||
from directories import *
|
||||
|
||||
printLog(log, "")
|
||||
printLog(log, "-------")
|
||||
printLog(log, "--- Run the install processes")
|
||||
printLog(log, "-------")
|
||||
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
|
||||
printLog(log, "")
|
||||
# For each process
|
||||
for processName in ProcessToComplete:
|
||||
if ((args.includeprocess == None or processName in args.includeprocess) and (args.excludeprocess == None or not processName in args.excludeprocess)):
|
||||
printLog(log, "PROCESS " + processName)
|
||||
os.chdir(processName)
|
||||
try:
|
||||
subprocess.call([ "python", "3_install.py" ])
|
||||
except Exception, e:
|
||||
printLog(log, "<" + processName + "> " + str(e))
|
||||
os.chdir("..")
|
||||
try:
|
||||
processLog = open(processName + "/log.log", "r")
|
||||
processLogData = processLog.read()
|
||||
processLog.close()
|
||||
log.write(processLogData)
|
||||
except Exception, e:
|
||||
printLog(log, "<" + processName + "> " + str(e))
|
||||
# subprocess.call("idle.bat")
|
||||
else:
|
||||
printLog(log, "IGNORE PROCESS " + processName)
|
||||
printLog(log, "")
|
||||
|
||||
log.close()
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue