summaryrefslogtreecommitdiff
path: root/app-admin/salt
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2017-10-09 18:53:29 +0100
committerV3n3RiX <venerix@redcorelinux.org>2017-10-09 18:53:29 +0100
commit4f2d7949f03e1c198bc888f2d05f421d35c57e21 (patch)
treeba5f07bf3f9d22d82e54a462313f5d244036c768 /app-admin/salt
reinit the tree, so we can have metadata
Diffstat (limited to 'app-admin/salt')
-rw-r--r--app-admin/salt/Manifest46
-rw-r--r--app-admin/salt/files/api-confd-15
-rw-r--r--app-admin/salt/files/api-initd-414
-rw-r--r--app-admin/salt/files/master-confd-15
-rw-r--r--app-admin/salt/files/master-initd-414
-rw-r--r--app-admin/salt/files/minion-confd-15
-rw-r--r--app-admin/salt/files/minion-initd-415
-rw-r--r--app-admin/salt/files/salt-2014.7.1-remove-pydsl-includes-test.patch104
-rw-r--r--app-admin/salt/files/salt-2015.5.10-buggy-tests.patch38
-rw-r--r--app-admin/salt/files/salt-2015.5.5-auth-tests.patch34
-rw-r--r--app-admin/salt/files/salt-2015.5.5-cron-tests.patch17
-rw-r--r--app-admin/salt/files/salt-2015.5.5-remove-buggy-tests.patch46
-rw-r--r--app-admin/salt/files/salt-2015.5.7-tmpdir.patch37
-rw-r--r--app-admin/salt/files/salt-2015.8.0-remove-buggy-tests.patch56
-rw-r--r--app-admin/salt/files/salt-2015.8.10-remove-failing-boto-test.patch35
-rw-r--r--app-admin/salt/files/salt-2015.8.13-failing-gateway-tests.patch69
-rw-r--r--app-admin/salt/files/salt-2015.8.13-sanitize-minion-name.patch36
-rw-r--r--app-admin/salt/files/salt-2015.8.2-tmpdir.patch56
-rw-r--r--app-admin/salt/files/salt-2016.11.0-broken-tests.patch23
-rw-r--r--app-admin/salt/files/salt-2016.11.0-remove-file-tree-test.patch34
-rw-r--r--app-admin/salt/files/salt-2016.11.0-tmpdir.patch34
-rw-r--r--app-admin/salt/files/salt-2016.3.1-dont-realpath-tmpdir.patch18
-rw-r--r--app-admin/salt/files/salt-2016.3.4-dont-test-ordering.patch33
-rw-r--r--app-admin/salt/files/salt-2016.3.4-test-nonexist-dirs.patch32
-rw-r--r--app-admin/salt/files/salt-2016.3.5-tmpdir.patch47
-rw-r--r--app-admin/salt/files/salt-2017.7.0-dont-realpath-tmpdir.patch19
-rw-r--r--app-admin/salt/files/salt-api.service10
-rw-r--r--app-admin/salt/files/salt-master.service10
-rw-r--r--app-admin/salt/files/salt-minion.service10
-rw-r--r--app-admin/salt/files/salt-syndic.service10
-rw-r--r--app-admin/salt/files/syndic-confd-15
-rw-r--r--app-admin/salt/files/syndic-initd-414
-rw-r--r--app-admin/salt/metadata.xml44
-rw-r--r--app-admin/salt/salt-2015.5.10.ebuild133
-rw-r--r--app-admin/salt/salt-2015.8.13-r1.ebuild141
-rw-r--r--app-admin/salt/salt-2015.8.13.ebuild140
-rw-r--r--app-admin/salt/salt-2016.11.7.ebuild146
-rw-r--r--app-admin/salt/salt-2016.3.7.ebuild142
-rw-r--r--app-admin/salt/salt-2017.7.1.ebuild140
-rw-r--r--app-admin/salt/salt-9999.ebuild136
40 files changed, 1953 insertions, 0 deletions
diff --git a/app-admin/salt/Manifest b/app-admin/salt/Manifest
new file mode 100644
index 000000000000..6d8f0b4c5ae8
--- /dev/null
+++ b/app-admin/salt/Manifest
@@ -0,0 +1,46 @@
+AUX api-confd-1 188 SHA256 9f3f47a7af4d349a7c525455616139b5019d3b7d0290398ba8c50ab91a62d089 SHA512 c58fc025a3654b59f79c6e23fe135d75ebad8b166bc5214f4842c3dd92192e3598480f9fd6960ad2dc36d3ee45ff971650c5e0156353c1c045650f86c9a68db9 WHIRLPOOL 54070ebb3fe0e2338dac12541b198ba0dd07c5a80ef0eb1c92a3d65d30276a2446cf644a37274d51ab633074e9edb0044d022b9eeab549721b181c253abd5b30
+AUX api-initd-4 302 SHA256 e673f359ff7fbb012d9eb5d6c3db841668e3692b15b07faeb6352feb5cfbb2b1 SHA512 098fb6e1ba83270abd31f9cc3afdc159149276962fcf73ce0ae943df87ec26d0883990652614cdeef48912778780731f91efc972a22a75c4b10f3bd79a251a90 WHIRLPOOL 26001aabdc7ee27c6d791b1284fb82b229cb7895733dafd14fcc6b13219f4c4ff86054bcb8b83aed901ce8c5691ff3e27cd260e52e3b728332e9349ecd0b3024
+AUX master-confd-1 188 SHA256 9f3f47a7af4d349a7c525455616139b5019d3b7d0290398ba8c50ab91a62d089 SHA512 c58fc025a3654b59f79c6e23fe135d75ebad8b166bc5214f4842c3dd92192e3598480f9fd6960ad2dc36d3ee45ff971650c5e0156353c1c045650f86c9a68db9 WHIRLPOOL 54070ebb3fe0e2338dac12541b198ba0dd07c5a80ef0eb1c92a3d65d30276a2446cf644a37274d51ab633074e9edb0044d022b9eeab549721b181c253abd5b30
+AUX master-initd-4 311 SHA256 7064f21c734313e9d9d32b77eaecf3eeb6de714eff6dcafeb79c25303e675bf9 SHA512 d44ea9fdf962ded6d0c6ac5a1f89ec8729a9a70517ba0f132c54696d32bc96030c64af09f48037867006bd3acdf4b6db759ca873717cd5a88701e42d06885bcc WHIRLPOOL 81cbb47c9f323697da43234e74db4e7fa0faac1ffeab365c48f95f955dbe409c2bf68297ce4009f14e08b54dec119f53b6dff3b7cae1fc84662405770c94c0dd
+AUX minion-confd-1 188 SHA256 286148f5391d42c04a62a13cc125fa2130b5821e50da913c5a20d3a913e5f2d1 SHA512 0051e13351cef8db81dc075a194bb384723f07d5591b5b4d3f3adf4180afaf7beced470ab79ceca9d1ec0dae62dbd72084eb76af009fc78411a011050a94a2ed WHIRLPOOL fed0dffe202d776cd5f1b74a28c5dac69b082603c9ddf695616a0a6bca5084b9589f1f4d03313f7271754166a9aa136c06aa61e6fd2e3b02d829798aa741c432
+AUX minion-initd-4 317 SHA256 ebe8d0fecde60b427d01022eb38a437be1ead33cd24d4afdb266ff922ab87850 SHA512 80790ed1b5f86b713ca6384d60253676b16b10c122810ed07b7119c3860bedfe40102f6b7de86d832f084d84f87bf9405ec282629f981767a534d2a53144845f WHIRLPOOL 21a808e2586bda4cabf22181ac37ead13fdf604f45baff1b66b10b0634742eef93a887b0e993453621f64700aeed3b068ee7058d3517d076e8157f8e8c7b1286
+AUX salt-2014.7.1-remove-pydsl-includes-test.patch 3605 SHA256 0f0433f63a1b4a1a203331177c0ea46e43f74e69465f157e53f68f0d317cfdc0 SHA512 fe56cb6b5f91586e9acba136601c9380f158a4dc3a0316a00b23703a5e5de7b8ae3cec7b3bd606e0b7a927f8a7fc28c57e5dd5f10755f34e9dbd6052c9dc9b50 WHIRLPOOL e3386852207693d5f3415ef7b35297bd0fb12ba25e41adfb2b5958c51e9e4337c46871eac9823876a316c9a2357877690c741d074cdfb00314b699346eba6e2d
+AUX salt-2015.5.10-buggy-tests.patch 2034 SHA256 7e38453ab19722a68c37df5f87bd489dd303c3a8d5e57ee18115e60f5a91f63d SHA512 f848262c8ce2338cc847b5c8038eb40f6ec15f4ce07d58e9a70503fcbe2b8651edb411621697a1c5aaf663e4dd821b396ca16088846e3ec6f2a64c78ecf9ac64 WHIRLPOOL 803a743adc55ae9fe4320f8cbfbf1d86f0ef1154753f936dc35ab0e49f001591f0b3e321f2b22e3f2b3c17015f0a510748f15eb5b99a4d75c789199b3c191798
+AUX salt-2015.5.5-auth-tests.patch 1572 SHA256 38865ca68ecd24376dd9b4d8a263c0146c6a547805039d6eca9436caca4ec164 SHA512 6cab8a7c2a405420f6b2df7cd21773852ef1582f8a2f54bcbd120fa4966ac390447e907555b4b82764d8ae406cee095b5dd1dd0070d5a67a4ab10329bed39c3a WHIRLPOOL d841fbd18b32000f624330671a9c559463ede9a8cd9672b2912c79da7404e5c35a1cef2007f1b8015d9a1be65e78315e51e57e26c7034a8016633f2691701298
+AUX salt-2015.5.5-cron-tests.patch 961 SHA256 93368275ba4a1de814725ba26ed72136ce0208826b462cb25a71db55b44398c5 SHA512 d6ddb67d91ac0ec8c9256dba6e7d9efd15c892b6a8396b571b6aa849393d19e3a74e48906e1e03ddc9301b8fe7e1811eb1c88048daedcd8737e5edf0c4e62d74 WHIRLPOOL ca0df6b7a10d0f9c2649dc49d45625947b8cbe331c6342a2e899601b2c6c288c14c4d09d203fdaadd05394c17b5380390d2e131e52da1533e9cfd0a2af4ba129
+AUX salt-2015.5.5-remove-buggy-tests.patch 2114 SHA256 b65ffa86c81b02697129515a5a32c9d41ed35999bc589583ec6986318c73f526 SHA512 8669e2ffa926578e238cc8f18fbbc6e691cf9a4029e4a90c92214bfbd99c878efe749041912c7ad6ba90afee2baa8a4047318105b579babbf349186c8b9302a9 WHIRLPOOL 305927fe655cab4050a0f3e881bbd6f1dbed08af5fdf1380794d5d98a074e81dee2cd2826735535f8d48b31d1e43a232f30b9553a62200ffd5531538dbe1334c
+AUX salt-2015.5.7-tmpdir.patch 1489 SHA256 71da37574dbdc4d6ce577d71a138f7bd5b627e9a47069a0b4fdddfa17c508eec SHA512 37d2af5375384dfe1e0b5d45eb6a51576767420e0bacd13f7ea5da801c359743ac420c0d6b258aa237d4dab82290a832b3ea6c96aa7547ecc8eb8f0c0f047b4a WHIRLPOOL 39e0d49f415daf1d3537e37b9b41ca6f95d84417af1e9b83cff9b102e780ee34aa51405d2008906586e379c7cf7ede359ab5ea9897e66ce36a3a375c715eb058
+AUX salt-2015.8.0-remove-buggy-tests.patch 2552 SHA256 d38ce845b21d08bacd981b4e69986ad6e7eb3802dc634e2d80cc3e4bf57474bf SHA512 31b8509feb6262e3211263571d9a006879a136c8c0ea5202ebf314ea6aeb3279b0ac63bb3800244ddb6ba9eb9159ee3ad8e389fa3e68f4d414d89cddb792a056 WHIRLPOOL 0d836f86bf16722b021c1547efe65d3facad87118dac5493a3f1289c6518ac3fdb564e125c709b0cedf915cda7bb6399b33762c07a45a65a42de6451340b36e0
+AUX salt-2015.8.10-remove-failing-boto-test.patch 2058 SHA256 9ec6bd07ce6baab395db00a198bd7fa0d32fbc31814e5c481ebee87aff649dca SHA512 98aed5c1ba1fc2647ed4771a57b7d2fe0f66e4da7936bf013c305f014e5c9f7158e9d966b961b9d6ba4fba57a1c8101d3c053598f0ebcac023016e9dbb1e765f WHIRLPOOL a2ebec3940453f18cd02434e0748b1f2c13121dfbd64d4d077871c37fcdab5d5b306d3f68b34939260dd44e78ce940610289cdba7d115582e2fb270952b2514c
+AUX salt-2015.8.13-failing-gateway-tests.patch 3539 SHA256 f8a3e1e85525c30655ffe31b69c94222f24c1fd765423c43383eeafa0421297a SHA512 577825438e0193edc7df0234fba66dc61e56c74ae6e50b998072374a93052151d987def04d3a618c5a68b9ef2c8e84559adfcc25428b701418521d5f01a57466 WHIRLPOOL 74eee173b96e4bb88b2a84fe0736815947535c835ffbf6d45dd2993bad0a42a5578c743a27fb719046d582dc47d917221db3214731289969e56e7596f4bf8a9d
+AUX salt-2015.8.13-sanitize-minion-name.patch 1003 SHA256 0f8208d8af6997374f33cb529b3b30713923cbe8d97dc644b1d7adc7d67794e6 SHA512 04f50936896b83804cc25ca329cb32a7f388be9ec5fd6f9d0cf452e3af3f6c8c3f025c119ed29a2399e11669b9eec373d77fce17d1ea64107f9268f9741cb73c WHIRLPOOL 85e0eb087a3352891243bfe464d37db04e5b5b970818d8a6c5582fccf7bea78e797b2e9df379fcc5c2d3c3de76ee51c3f902d60ab192736e4a0466ebf6d1750a
+AUX salt-2015.8.2-tmpdir.patch 2502 SHA256 229436fe85d12bbb97e2ae6086df5bb57ee8ef9ddbe62946c111437c3eae52e4 SHA512 ed8eed9e2fa36718d7320e1ae650a990ae2d95d7c6a544ffd96f358750158231c334ab1eee6fe3e5e6a25d3b62c1fc0a149508eb3bd23f7ad152a82ec7efa1ac WHIRLPOOL 9e189171fafbb43a0ca548820efdedc582fa849521208c5a062cbd16fbbd0d26e53a69e3f40595c851ddd465c047bb92a025ca893181a60258c80ae644f3eba9
+AUX salt-2016.11.0-broken-tests.patch 1092 SHA256 651d51d6c26955d865a58fc4e28eb4c8ef8565e26ca077e91f0567be1a060791 SHA512 d23c16a5ed8c0fbd4287d73e45b700d465224c5f3b32c47bb2994703a4b4c261053b9c79444973cfaf86afa2850b8499a6b7923317fde3de43840a575ada74b4 WHIRLPOOL 7662dcdb2395588db9b83bcb9153ec58b77c79f532ad7ba5a0ae9cd5cca81e92fd33f842f76aaf26ec71c34ca61d557d2721ace18dd9be4c5ff83140f07d7a02
+AUX salt-2016.11.0-remove-file-tree-test.patch 1480 SHA256 22dc4bbfccab1e81bcd6e64b0f5101177f8cdb660b8843915cf725dacb51b4c5 SHA512 0503b4ecd16c2f67b53f1ce52b5f77cacf8de420024c5c7751d3caa06de2d1e685eef8d4021dfe86a5850ac23f58705a375e87922b3c5fbeb8c11290690624bc WHIRLPOOL 80c2ff3299c5e5536ed624db7515029819f532bf458e2d7c3aa653064aad101020f7b6681e17d25ddae661b534c9d7aca4a762e16a0969a610c36a7f3203337f
+AUX salt-2016.11.0-tmpdir.patch 1480 SHA256 d8ff166477ec5bac6e7b47a29c43d7d762457f0e99519b1302efb778e894f041 SHA512 ef654d871178618dab68ad9b4062560cfa57fa421834b142639a11d12679ebc97afc27fa572dd77b74d86ba722bb8575b64045bbf3cab9f2d0e2cefeca38c4bd WHIRLPOOL 5d8c0711cf5ee8831a0b02d227938f01fb77ceec88517c55285934ad2417cdc7cf6f06b107575ea79fe1b39405ac7a7a5e1144fdd88cea1670a5ff6949ef2bfc
+AUX salt-2016.3.1-dont-realpath-tmpdir.patch 853 SHA256 9d36162e56deebae8eec7b2a0bf350090afc8d8eb513d3419d227042de43b017 SHA512 a6bc22959975ac25df84c54437a1638e95d78c057920ced38b0accddca11eb33ad39f2a43dd05648584cd10b140f7ee509a8c6739c4d89d30500452c91795b79 WHIRLPOOL 56a9ed0d5264aecf981019e40b00718fbbf9f8ea3461a8572c7d833e1fa0720f9a9bbbdfd4cec0a37ed4ce58a289ace7e400c07f1297da4f22c95d0000b81457
+AUX salt-2016.3.4-dont-test-ordering.patch 1485 SHA256 eb6a3cb65c9584d2d3bb3be9886c184ce8e8cf38bd951078aa8d4420ebb0cc2f SHA512 4cc5a4d4380e6ae795aed7650667f1ea89315b429c495128f3e6eb311977bfb713d3d4536785ff1f087188ed14e81792daf73225cdce0fcb4ff0ffa170f1cbe3 WHIRLPOOL 7ece5cf872a57d33de26bbf9330b64175cc3a92162598326bd343b6c38ef84c088d4f31cc4ad7b14713950fa0643ae98f977dba8920c319d8ed3808b6bca4278
+AUX salt-2016.3.4-test-nonexist-dirs.patch 1655 SHA256 c6a5ed9ce850b099e1e4295b0489e86989b67f882506dbdeeb3c948f7c4a98f3 SHA512 ee81b8104f066e1d161207fe82d8349eb8c40701544784a2b6e66842fe9e07d7edffa24cad8c5d2037e2e7fa0368c614ed177fdf7359c89255d068767968e8fd WHIRLPOOL 3cc2dfe51196808bedbec152d928ac158cf89ed6f342463c83d55d5ad160c9c5750ecda7febdcee1f0175b23e224b5963f0f06f805d9b0975d8cc5ef0bd75c02
+AUX salt-2016.3.5-tmpdir.patch 1982 SHA256 4a65a02161909a934261c95347fd34849f944db9ca9e7b3374bef440d94e21b3 SHA512 755ac34298c6cbc57cf7404b209bd45ad216c07bb55b303e97375e1912aead765dddddbe3331314e4f245c6848e62447a5bb16b04367f20bb8387e89d0254859 WHIRLPOOL 0f5926c5d18f4307f2f77ce150e134a8bd3b876f1856029fc825a5c52a120151f07783bba03de4dc97448dbaebc0ff509bf3323d352bb8c5e921f439663d9291
+AUX salt-2017.7.0-dont-realpath-tmpdir.patch 834 SHA256 ec118f186c062a22eef24c3578b1173138d77205708ce2fc49098e3e8a59b26c SHA512 33b69954e8112c0f76654d507df74a4cdd37e8227848f2ce0652b3ecee8b847253ccad33cada0e3dd1471c54c780dcc12d5e546c4ec43868511b95b0c7f71e17 WHIRLPOOL 4a22cf9206f4bf195cb36c0ab85e974af368c34fadadba16998280ac3ee98c8625a22a0211cbf6eb0b67d20e9c3acd21f6efa3675d03b86e532f31dcf5d13782
+AUX salt-api.service 166 SHA256 b4706ebbc243e44579327b07609499a587e4023a11d3928735b3b226ff504cb7 SHA512 bab6b8380c965bf16e23078ebe6f38d942300829d4c89ddf23b630bd57b4d371f80687d85dd9e0cc1b669f2ca882aecde1bc8d7d82382a02ed20e493d3f04702 WHIRLPOOL cfba8559ffd486c5e49f3a7d54e0d03a4ae72065029cbbdd9b96403acafb304b1e687dc205960526a51f096eee58680329422e6b4a26022eed7469387a4dd763
+AUX salt-master.service 169 SHA256 5a8c43e469c47ce8cc5b4175105ca6233daa47b411ebf4002aad84003cb9f4a6 SHA512 87fe27fc0748f4191bd1c6883bb362c95cce8fe1f409e2679b229ddfd9de6c99438859dfa0a47b042977d659029ef56e406f1e8aa01761bff21af4784f9dd5f8 WHIRLPOOL ebb632028483e8849eb8ab61677967477bd4f420277b1360b3c28424a5192615aecf2d62372df76d6dee8855e6cd5557075ce17bcf85a999d92a0734cf849628
+AUX salt-minion.service 162 SHA256 829f0f25e5ae73befaa107bd5d2317ec608e8be95d5f60f9650c01e5d19d07a6 SHA512 99f0a5c696e38b42b283416736a23e535ccc53095928b205914cf4b69c0df931a6752205985726527f7889b01dfece78466be28448458b15064edd04aca3e5ed WHIRLPOOL 50255e88a81c64d461b70b6d990545561f4e9cdbc1f4b0caf0048b8ca46eef3233f5d174b88b1e07bf52aaab5ba16355b72fdea675a0099578acab2d5cb27e1b
+AUX salt-syndic.service 169 SHA256 2199cd525392b3f6615acd2ef8b9c1b31be96c69f7e26c6acd28a3c5fc0d3079 SHA512 b45509a22a18f573726a868fda1591eaf42ef44220960dda698274ba8ff1db8cdc302605133ab61b188e15017ba15c5f409f3ee64e026b635ac359eea7aad7d0 WHIRLPOOL 1162d09a6b454f710823d60c559eb92320fcec7ba2216e7c3e2e670bb61371877c897a12acf014f6c97732b2aa991574569125fa91157791c25d46c4dc6a41fc
+AUX syndic-confd-1 188 SHA256 286148f5391d42c04a62a13cc125fa2130b5821e50da913c5a20d3a913e5f2d1 SHA512 0051e13351cef8db81dc075a194bb384723f07d5591b5b4d3f3adf4180afaf7beced470ab79ceca9d1ec0dae62dbd72084eb76af009fc78411a011050a94a2ed WHIRLPOOL fed0dffe202d776cd5f1b74a28c5dac69b082603c9ddf695616a0a6bca5084b9589f1f4d03313f7271754166a9aa136c06aa61e6fd2e3b02d829798aa741c432
+AUX syndic-initd-4 311 SHA256 86c1af171c7b13018f089fab6d045feabd72455f9453720ef36ae2011b9cb976 SHA512 69cc10fa7d9f0f4a68d223272c08ee33af242a50eb9bbea919d61f6cb5baf1ce986b07d69fc0e47e2f6dffc0a11100c3bc0d836d2938c46aa364beecb47f07ef WHIRLPOOL 0bc115ba99507a673c387ecacce4906d42ab93bd3c29016a1fac9621f61473c1b75f6236f69d449f3e393d2c05436b3a9185840ff20ad2d006e4397280c6843c
+DIST salt-2015.5.10.tar.gz 5693422 SHA256 863a96e70f8521af35fe11b10d25b3205a0bfbba9a8aee02e2842aa7106496fd SHA512 78a4cbe5c771208e957360689a25ae4e44566987e07e7fda54e6db9028485eacc6ad016c65c981090f9b5d95331e46048a094aecc27703b3956c06ab6ebad95d WHIRLPOOL 805b48df07707d85d8338251f26c72164a5421731fc11f5c933b72af97348a2f11ee35889f72ec032acbea275e98575d35786b56fd84a7917f8fdbc30567ae86
+DIST salt-2015.8.13.tar.gz 7036243 SHA256 cca82c9a4f267692660b098c1f76e54ab6a24131391893719bde0eb3a1ed2959 SHA512 ec8626f7360542bfeea90fc3d6fd9d9d015da4c2a6adf9957c22501ed9531b0a44d2cbc4853c41856b4cd46c142d2441884ec99700f3c0a5310cc428f9f1ec2a WHIRLPOOL c21f3bdc5fd674ea664c7e8fd58ef6685328a6ee3679850f3e9a085b1e604e1224a3323b906b47075fb8dd39f373583fb549e7b0f3f725d44928bcf716955a10
+DIST salt-2016.11.7.tar.gz 9409315 SHA256 279fa5bd73b5616620f628234575140f91df28b0d40d931569f179efabf27a2d SHA512 5bb52d75fafd57cd8efebe9b94dc3b53e39b476f6289e3509f1324fc86bb57a85d0ac832270c80629c04f301a749e018789c842e90cc3f2167445854e0f0ed99 WHIRLPOOL 984f297a23d59a129feaac40debc4aecaf64b2540cf62cae503c01cbe7413fdbeb58d18ed86b33b4da6f84a167bb7fed0fd502fca737720242dad91f7afad581
+DIST salt-2016.3.7.tar.gz 8516192 SHA256 3dd65ec44ca372c91b8254b625414cd7e795fdba274a07de902c3f33e199007b SHA512 78f3e23f7f05c8940bdb0359bc323cdb94c027d8abe554cffff8504d7e978f64f25d7b1f48450aed506e58ed8cbf9c272d95741dd330617809c663451f70b8d1 WHIRLPOOL 69e72d8a15310b5c1578de8c43d4a2f71cf1bdf3ae827a6283720f17a74972fd3d3fe84a95f045df77fdde82614ac6a30f549176fc44062569f40e8969e7f6fe
+DIST salt-2017.7.1.tar.gz 11408839 SHA256 fe868415d0e1162157186f4c5263e9af902b0571870ad2da210e7edf5ff5331d SHA512 c12db2361e04ce7bf4d663fafdeebdb318f210e0669d1ae26db6daf3dd19a7549b4151cb4e53acacda24d11eec7bbd06190b01cf4962d9027783ffd4617a2e52 WHIRLPOOL 6073ec85a4797ac6cc58f475f7f3bd5fa0d61b4d1228c514326d32644e2f6d1656e46196d1ad32d5c87d2bfa18eff5e786b9a1325d5e73387c33a591d8dd61d2
+EBUILD salt-2015.5.10.ebuild 4120 SHA256 e43d362181f9daf161832757539fcfe556fdbfa62c6cb08e72ea04fe1d434409 SHA512 083d1fefcb43b825d0e52e9cde37802c146261b98dc45d5ad780753b35f80444931529ca2334671515f69d5f8de6af6eb38512ea6806d9d06af24464b13c1270 WHIRLPOOL ee70ede1d04d74884b33b5b6d7df91a46ec239060e1e449db7960df9daf5b787a4a6a0039434667cccbc6eb211a36477402ad8fa29743aded268bf05f9237e10
+EBUILD salt-2015.8.13-r1.ebuild 4539 SHA256 6b0a3e37090adc0987d9b2dd4017d3d6ca65f3f0542566902b6adc1f7f99781e SHA512 9f581b8892282b96044511bbf444c9e95b1d548d9f39fe972e97aa9e801d961071301eeb1df41734a0c33a100d70d43a6c0bc3b04e7cf7c469dcc19aef577330 WHIRLPOOL 050e08bfb759f4d11fd3a8323d7f150435f56e82e92e6bbff6a1aa17f5ecdd5130ae945f616569984071a27fcd8ccb4a21ae13174cc266c659ed12827f680b3c
+EBUILD salt-2015.8.13.ebuild 4481 SHA256 e2c5c61ccf9978ef29c9f77e71155ae90a50b87303a55c18ac1b49153b05d0e5 SHA512 e3a39c1c44ce16b6bb63a05d135cf46f1a0676a419d70441f0d051b5f6f8f8f3a6b961961d03d7cfcab71b50866fcb1234f76f800c29050dd900743eb29e4586 WHIRLPOOL 1025b6ced7cbfbf4564915970a0f0d4c074b120e78b609eab2567659f647cdae5d12026ad14982d9824a1e886543b71857b45a0653943cfc6d0a6f0b2d780e1a
+EBUILD salt-2016.11.7.ebuild 4623 SHA256 b99a61c53dfa6fd905d4570e41a81cdc3c9d724418d851c263b152c452508e4a SHA512 946eccb7bbe7175d81fa3746e6c87d7880ede9ed9c1f27106c2d6d782cbc001b05976fa113e2c5dc8b03c8b5d9a6ebfb0dd739250f82bf623ae4ab0f799f6738 WHIRLPOOL fd87ca9221dcf3772569bcbbd1e9b3de3f2ec5c4610582ca3ec8595400f0fdb5c98c0026d2b285380f22e3aeaf5ada48ba35aef9fd9bb2f25f9352f8b48c4ee7
+EBUILD salt-2016.3.7.ebuild 4480 SHA256 01c260d891ac85b05fe8ea46c504d60c4470d5fcb911f5bada765ed5f30b5bf5 SHA512 4633d977af7d07a4483af40f0722d42766c4ee2c801dfd506f9b9fbcfaaabe507af63ae7298374838a27486127b47464593e6b678c40ebf575fa2a4d40fe50bf WHIRLPOOL 235a160faeb64cd95f4cab92b8665c0692ed832db3df123490a6bce50abe311d17df53b071dc9c4a87b33fbd9eeacc2bdba626518a2a68f93e6b89292d25d3f7
+EBUILD salt-2017.7.1.ebuild 4331 SHA256 315b6d84b5a9f7cb124129332cd57e5a4f12eb8a8475cf099ba655b0034f0458 SHA512 91f78244df90369ca0f1251618c463ef0c5ae34c2a7569c8cc23dd2cd5d4fc9000c0da521846a82d938fd1a49506d567307898c1368ffeb98babc93eabe6821b WHIRLPOOL 653bdb2440f423ec3545c7c30146ab79749c60ca78939044de76b7d031b1b73dd7c33a0c6633d5ec8d92e5d5a80cf29ce996aaedecbccfdd9e5416ed9982bfca
+EBUILD salt-9999.ebuild 4247 SHA256 f07619d0622068fca3c858d382532d0febcc37e397cf86af8ef44f5797995d61 SHA512 c9a3230f8a99b13cb5604dcc76be3ccbb7a5d1698e8cf3bb70b14a25dc73317eee0b30055e6c53e7fff51fe9a8a4fda6317060582e64b156d6fdbfeca0bb4943 WHIRLPOOL cbc2894ccf5d5f4bade826cbf0b17066247620e43e6cf17fabb857ea12edb58daab15dd60f050fdd7dbe2da56783aae712dfbd63dac92c9ebc0f734af6ef81e9
+MISC ChangeLog 12403 SHA256 298bea725d2152b7f69553d11f297509ed77ca25766db0bd2ef701cabf4af9cb SHA512 4d09eec2c3b202dce66d1930ac797047b5a8a62e23d9544f4b9e87b9c04f8154c2e22bb15a81d8c12d2c655b69e6caf14a3fb894091d5fcc0a0dc19ae4605a27 WHIRLPOOL 32f7fb99620f148d306f4ab71de645013ffacba2634da765c4857fbc27470a4266774bb4568d43d4c454d428c2bbf212d23d560003545463148715240343a322
+MISC ChangeLog-2015 12557 SHA256 b377310761177c31ab41e955e1a83e638d4c48ca3ab3f785a09fc7dfbcde4e6c SHA512 d364f9c749647bc9a3daa67e08ea79d09a598b35620b1971f797739fdc066a5700e5b5c8d0b412aab6766db67cc90a5ef871e1aeba61caae0496413b24d7177a WHIRLPOOL ac4da49c7b67666ba3b9b184b688a25d68ea7234d2556f9f25f34e3014b118ba743574519e93fca6447ba5450c52dd6079c91d873ccf1344cc9309c23bddacf2
+MISC metadata.xml 2288 SHA256 84db13520194dd4ed73cbf3eb01226be10f0800be4be988bac56960507bdb543 SHA512 fdcea2f80fc87ab2a0db1643d71dd6d54e91d898594570af6a7505343c5d9a5a0ce4803d11460d7d3f6f533509b072819f958cbe31ca9183fabf811982526969 WHIRLPOOL 50fbf4e2c309ddf255c5b867554f8c56600a81b71cf4b7ccbe43b7d2fb15430767b11573b834f9eaed9dfd45bcd802e50865f1e42662bfeb12dd1b16387645c4
diff --git a/app-admin/salt/files/api-confd-1 b/app-admin/salt/files/api-confd-1
new file mode 100644
index 000000000000..c70e8e766da0
--- /dev/null
+++ b/app-admin/salt/files/api-confd-1
@@ -0,0 +1,5 @@
+# /etc/conf.d/salt-master: config file for /etc/init.d/salt-master
+
+# see man pages for salt-minion or run `salt-master --help`
+# for valid cmdline options
+SALT_OPTS="--log-level=warning"
diff --git a/app-admin/salt/files/api-initd-4 b/app-admin/salt/files/api-initd-4
new file mode 100644
index 000000000000..a0cb8265047d
--- /dev/null
+++ b/app-admin/salt/files/api-initd-4
@@ -0,0 +1,14 @@
+#!/sbin/openrc-run
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+command="/usr/bin/salt-api"
+command_args="${SALT_OPTS}"
+command_background="1"
+pidfile="/var/run/salt-api.pid"
+name="SALT API daemon"
+retry="20"
+
+depend() {
+ use net logger
+}
diff --git a/app-admin/salt/files/master-confd-1 b/app-admin/salt/files/master-confd-1
new file mode 100644
index 000000000000..c70e8e766da0
--- /dev/null
+++ b/app-admin/salt/files/master-confd-1
@@ -0,0 +1,5 @@
+# /etc/conf.d/salt-master: config file for /etc/init.d/salt-master
+
+# see man pages for salt-minion or run `salt-master --help`
+# for valid cmdline options
+SALT_OPTS="--log-level=warning"
diff --git a/app-admin/salt/files/master-initd-4 b/app-admin/salt/files/master-initd-4
new file mode 100644
index 000000000000..e07e72b0dae7
--- /dev/null
+++ b/app-admin/salt/files/master-initd-4
@@ -0,0 +1,14 @@
+#!/sbin/openrc-run
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+command="/usr/bin/salt-master"
+command_args="${SALT_OPTS}"
+command_background="1"
+pidfile="/var/run/salt-master.pid"
+name="SALT master daemon"
+retry="20"
+
+depend() {
+ use net logger
+}
diff --git a/app-admin/salt/files/minion-confd-1 b/app-admin/salt/files/minion-confd-1
new file mode 100644
index 000000000000..d69d83fcd60d
--- /dev/null
+++ b/app-admin/salt/files/minion-confd-1
@@ -0,0 +1,5 @@
+# /etc/conf.d/salt-minion: config file for /etc/init.d/salt-minion
+
+# see man pages for salt-minion or run `salt-minion --help`
+# for valid cmdline options
+SALT_OPTS="--log-level=warning"
diff --git a/app-admin/salt/files/minion-initd-4 b/app-admin/salt/files/minion-initd-4
new file mode 100644
index 000000000000..c658ccf5c1df
--- /dev/null
+++ b/app-admin/salt/files/minion-initd-4
@@ -0,0 +1,15 @@
+#!/sbin/openrc-run
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+command="/usr/bin/salt-minion"
+command_args="${SALT_OPTS}"
+command_background="1"
+pidfile="/var/run/salt-minion.pid"
+name="SALT minion daemon"
+retry="20"
+
+depend() {
+ need net
+ use logger
+}
diff --git a/app-admin/salt/files/salt-2014.7.1-remove-pydsl-includes-test.patch b/app-admin/salt/files/salt-2014.7.1-remove-pydsl-includes-test.patch
new file mode 100644
index 000000000000..7c33c12f5c71
--- /dev/null
+++ b/app-admin/salt/files/salt-2014.7.1-remove-pydsl-includes-test.patch
@@ -0,0 +1,104 @@
+diff --git a/tests/unit/pydsl_test.py b/tests/unit/pydsl_test.py
+index 57ba81e..b26154e 100644
+--- a/tests/unit/pydsl_test.py
++++ b/tests/unit/pydsl_test.py
+@@ -298,99 +298,6 @@ class PyDSLRendererTestCase(TestCase):
+ finally:
+ shutil.rmtree(dirpath, ignore_errors=True)
+
+- def test_rendering_includes(self):
+- dirpath = tempfile.mkdtemp(dir=integration.SYS_TMP_DIR)
+- if not os.path.isdir(dirpath):
+- self.skipTest(
+- 'The temporary directory {0!r} was not created'.format(
+- dirpath
+- )
+- )
+- output = os.path.join(dirpath, 'output')
+- try:
+- write_to(os.path.join(dirpath, 'aaa.sls'), textwrap.dedent('''\
+- #!pydsl|stateconf -ps
+-
+- include('xxx')
+- yyy = include('yyy')
+-
+- # ensure states in xxx are run first, then those in yyy and then those in aaa last.
+- extend(state('yyy::start').stateconf.require(stateconf='xxx::goal'))
+- extend(state('.start').stateconf.require(stateconf='yyy::goal'))
+-
+- extend(state('yyy::Y2').cmd.run('echo Y2 extended >> {0}'))
+-
+- __pydsl__.set(ordered=True)
+-
+- yyy.hello('red', 1)
+- yyy.hello('green', 2)
+- yyy.hello('blue', 3)
+- '''.format(output)))
+-
+- write_to(os.path.join(dirpath, 'xxx.sls'), textwrap.dedent('''\
+- #!stateconf -os yaml . jinja
+-
+- include:
+- - yyy
+-
+- extend:
+- yyy::start:
+- stateconf.set:
+- - require:
+- - stateconf: .goal
+-
+- yyy::Y1:
+- cmd.run:
+- - name: 'echo Y1 extended >> {0}'
+-
+- .X1:
+- cmd.run:
+- - name: echo X1 >> {1}
+- - cwd: /
+- .X2:
+- cmd.run:
+- - name: echo X2 >> {2}
+- - cwd: /
+- .X3:
+- cmd.run:
+- - name: echo X3 >> {3}
+- - cwd: /
+-
+- '''.format(output, output, output, output)))
+-
+- write_to(os.path.join(dirpath, 'yyy.sls'), textwrap.dedent('''\
+- #!pydsl|stateconf -ps
+-
+- include('xxx')
+- __pydsl__.set(ordered=True)
+-
+- state('.Y1').cmd.run('echo Y1 >> {0}', cwd='/')
+- state('.Y2').cmd.run('echo Y2 >> {1}', cwd='/')
+- state('.Y3').cmd.run('echo Y3 >> {2}', cwd='/')
+-
+- def hello(color, number):
+- state(color).cmd.run('echo hello '+color+' '+str(number)+' >> {3}', cwd='/')
+- '''.format(output, output, output, output)))
+-
+- state_highstate({'base': ['aaa']}, dirpath)
+- expected = textwrap.dedent('''\
+- X1
+- X2
+- X3
+- Y1 extended
+- Y2 extended
+- Y3
+- hello red 1
+- hello green 2
+- hello blue 3
+- ''')
+-
+- with salt.utils.fopen(output, 'r') as f:
+- self.assertEqual(sorted(f.read()), sorted(expected))
+-
+- finally:
+- shutil.rmtree(dirpath, ignore_errors=True)
+-
+ def test_compile_time_state_execution(self):
+ if not sys.stdin.isatty():
+ self.skipTest('Not attached to a TTY')
diff --git a/app-admin/salt/files/salt-2015.5.10-buggy-tests.patch b/app-admin/salt/files/salt-2015.5.10-buggy-tests.patch
new file mode 100644
index 000000000000..e9330bd255b5
--- /dev/null
+++ b/app-admin/salt/files/salt-2015.5.10-buggy-tests.patch
@@ -0,0 +1,38 @@
+diff --git a/tests/unit/modules/boto_vpc_test.py b/tests/unit/modules/boto_vpc_test.py
+index 82dfe28..ced9ee5 100644
+--- a/tests/unit/modules/boto_vpc_test.py
++++ b/tests/unit/modules/boto_vpc_test.py
+@@ -441,9 +441,9 @@ class BotoVpcTestCase(BotoVpcTestCaseBase):
+ describe_vpc = boto_vpc.describe(vpc_id=vpc.id, **conn_parameters)
+
+ vpc_properties = dict(cidr_block=unicode(cidr_block),
+- is_default=None,
++ is_default=False,
+ state=u'available',
+- tags={'Name': 'test', 'test': 'testvalue'},
++ tags={u'Name': u'test', u'test': u'testvalue'},
+ dhcp_options_id=u'dopt-7a8b9c2d',
+ instance_tenancy=u'default')
+
+diff --git a/tests/unit/states/pip_test.py b/tests/unit/states/pip_test.py
+index 6e7d083..9a83951 100644
+--- a/tests/unit/states/pip_test.py
++++ b/tests/unit/states/pip_test.py
+@@ -37,17 +37,6 @@ class PipStateTest(TestCase, integration.SaltReturnAssertsMixIn):
+ def test_install_requirements_parsing(self):
+ mock = MagicMock(return_value={'retcode': 0, 'stdout': ''})
+ pip_list = MagicMock(return_value={'pep8': '1.3.3'})
+- with patch.dict(pip_state.__salt__, {'cmd.run_all': mock,
+- 'pip.list': pip_list}):
+- with patch.dict(pip_state.__opts__, {'test': True}):
+- ret = pip_state.installed('pep8=1.3.2')
+- self.assertSaltFalseReturn({'test': ret})
+- self.assertInSaltComment(
+- 'Invalid version specification in package pep8=1.3.2. '
+- '\'=\' is not supported, use \'==\' instead.',
+- {'test': ret}
+- )
+-
+ mock = MagicMock(return_value={'retcode': 0, 'stdout': ''})
+ pip_list = MagicMock(return_value={'pep8': '1.3.3'})
+ pip_install = MagicMock(return_value={'retcode': 0})
diff --git a/app-admin/salt/files/salt-2015.5.5-auth-tests.patch b/app-admin/salt/files/salt-2015.5.5-auth-tests.patch
new file mode 100644
index 000000000000..fa092d1f3eaf
--- /dev/null
+++ b/app-admin/salt/files/salt-2015.5.5-auth-tests.patch
@@ -0,0 +1,34 @@
+diff --git a/tests/unit/auth_test.py b/tests/unit/auth_test.py
+index 10b77e9..c40f439 100644
+--- a/tests/unit/auth_test.py
++++ b/tests/unit/auth_test.py
+@@ -38,12 +38,12 @@ class LoadAuthTestCase(TestCase):
+
+ # Test a case with valid params
+ with patch('salt.utils.format_call') as format_call_mock:
+- expected_ret = call('fake_func_str', {
++ expected_ret = [call('fake_func_str', {
+ 'username': 'test_user',
+ 'test_password': '',
+ 'show_timeout': False,
+ 'eauth': 'pam'
+- }, expected_extra_kws=auth.AUTH_INTERNAL_KEYWORDS)
++ }, expected_extra_kws=auth.AUTH_INTERNAL_KEYWORDS)]
+ ret = self.lauth.load_name(valid_eauth_load)
+ format_call_mock.assert_has_calls(expected_ret)
+
+@@ -53,12 +53,12 @@ class LoadAuthTestCase(TestCase):
+ 'test_password': '',
+ 'eauth': 'pam'}
+ with patch('salt.utils.format_call') as format_call_mock:
+- expected_ret = call('fake_groups_function_str', {
++ expected_ret = [call('fake_groups_function_str', {
+ 'username': 'test_user',
+ 'test_password': '',
+ 'show_timeout': False,
+ 'eauth': 'pam'
+- }, expected_extra_kws=auth.AUTH_INTERNAL_KEYWORDS)
++ }, expected_extra_kws=auth.AUTH_INTERNAL_KEYWORDS)]
+ self.lauth.get_groups(valid_eauth_load)
+ format_call_mock.assert_has_calls(expected_ret)
+
diff --git a/app-admin/salt/files/salt-2015.5.5-cron-tests.patch b/app-admin/salt/files/salt-2015.5.5-cron-tests.patch
new file mode 100644
index 000000000000..d0c4ffc92df1
--- /dev/null
+++ b/app-admin/salt/files/salt-2015.5.5-cron-tests.patch
@@ -0,0 +1,17 @@
+diff --git a/tests/unit/modules/cron_test.py b/tests/unit/modules/cron_test.py
+index 017eabd..dac0122 100644
+--- a/tests/unit/modules/cron_test.py
++++ b/tests/unit/modules/cron_test.py
+@@ -573,10 +573,10 @@ class PsTestCase(TestCase):
+ @patch('salt.modules.cron._write_cron_lines')
+ @patch('salt.modules.cron.list_tab', new=MagicMock(return_value=STUB_SIMPLE_CRON_DICT))
+ def test_set_special(self, write_cron_lines_mock):
+- expected_write_call = call('DUMMY_USER',
++ expected_write_call = [call('DUMMY_USER',
+ ['5 0 * * * /tmp/no_script.sh\n',
+ '# Lines below here are managed by Salt, do not edit\n',
+- '@hourly echo Hi!\n'])
++ '@hourly echo Hi!\n'])]
+ ret = cron.set_special('DUMMY_USER', '@hourly', 'echo Hi!')
+ write_cron_lines_mock.assert_has_calls(expected_write_call)
+
diff --git a/app-admin/salt/files/salt-2015.5.5-remove-buggy-tests.patch b/app-admin/salt/files/salt-2015.5.5-remove-buggy-tests.patch
new file mode 100644
index 000000000000..b36e35fb9a58
--- /dev/null
+++ b/app-admin/salt/files/salt-2015.5.5-remove-buggy-tests.patch
@@ -0,0 +1,46 @@
+diff --git a/tests/unit/modules/darwin_sysctl_test.py b/tests/unit/modules/darwin_sysctl_test.py
+index 51e8f23..36d005f 100644
+--- a/tests/unit/modules/darwin_sysctl_test.py
++++ b/tests/unit/modules/darwin_sysctl_test.py
+@@ -64,18 +64,6 @@ class DarwinSysctlTestCase(TestCase):
+ 'net.inet.icmp.icmplim', 50), ret)
+
+ @patch('os.path.isfile', MagicMock(return_value=False))
+- def test_persist_no_conf_failure(self):
+- '''
+- Tests adding of config file failure
+- '''
+- with patch('salt.utils.fopen', mock_open()) as m_open:
+- helper_open = m_open()
+- helper_open.write.assertRaises(CommandExecutionError,
+- darwin_sysctl.persist,
+- 'net.inet.icmp.icmplim',
+- 50, config=None)
+-
+- @patch('os.path.isfile', MagicMock(return_value=False))
+ def test_persist_no_conf_success(self):
+ '''
+ Tests successful add of config file when previously not one
+diff --git a/tests/unit/modules/linux_sysctl_test.py b/tests/unit/modules/linux_sysctl_test.py
+index 08fc80f..c6e40b8 100644
+--- a/tests/unit/modules/linux_sysctl_test.py
++++ b/tests/unit/modules/linux_sysctl_test.py
+@@ -82,18 +82,6 @@ class LinuxSysctlTestCase(TestCase):
+ 'net.ipv4.ip_forward', 1), ret)
+
+ @patch('os.path.isfile', MagicMock(return_value=False))
+- def test_persist_no_conf_failure(self):
+- '''
+- Tests adding of config file failure
+- '''
+- with patch('salt.utils.fopen', mock_open()) as m_open:
+- helper_open = m_open()
+- helper_open.write.assertRaises(CommandExecutionError,
+- linux_sysctl.persist,
+- 'net.ipv4.ip_forward',
+- 1, config=None)
+-
+- @patch('os.path.isfile', MagicMock(return_value=False))
+ def test_persist_no_conf_success(self):
+ '''
+ Tests successful add of config file when previously not one
diff --git a/app-admin/salt/files/salt-2015.5.7-tmpdir.patch b/app-admin/salt/files/salt-2015.5.7-tmpdir.patch
new file mode 100644
index 000000000000..8a19c32e0f71
--- /dev/null
+++ b/app-admin/salt/files/salt-2015.5.7-tmpdir.patch
@@ -0,0 +1,37 @@
+diff --git a/tests/unit/modules/grains_test.py b/tests/unit/modules/grains_test.py
+index 3473c03..ea37d66 100644
+--- a/tests/unit/modules/grains_test.py
++++ b/tests/unit/modules/grains_test.py
+@@ -1,6 +1,8 @@
+ # -*- coding: utf-8 -*-
+
+ import copy
++import os.path
++import tempfile
+
+ # Import Salt Testing libs
+ from salttesting import TestCase, skipIf
+@@ -20,8 +22,8 @@ from salt.modules import grains as grainsmod
+ from salt.utils import dictupdate
+
+ grainsmod.__opts__ = {
+- 'conf_file': '/tmp/__salt_test_grains',
+- 'cachedir': '/tmp/__salt_test_grains_cache_dir'
++ 'conf_file': os.path.join(tempfile.gettempdir(), '__salt_test_grains'),
++ 'cachedir': os.path.join(tempfile.gettempdir(), '__salt_test_grains_cache_dir')
+ }
+
+ grainsmod.__salt__ = {}
+diff --git a/tests/unit/states/archive_test.py b/tests/unit/states/archive_test.py
+index 3cfb2f0..b3f3bee 100644
+--- a/tests/unit/states/archive_test.py
++++ b/tests/unit/states/archive_test.py
+@@ -69,7 +69,7 @@ class ArchiveTest(TestCase):
+ 'cmd.run_all': mock_run}):
+ filename = os.path.join(
+ tmp_dir,
+- 'files/test/_tmp_test_archive_.tar'
++ 'files/test/' + tempfile.gettempdir().replace('/', '_') + '_test_archive_.tar'
+ )
+ for test_opts, ret_opts in zip(test_tar_opts, ret_tar_opts):
+ ret = archive.extracted(tmp_dir,
diff --git a/app-admin/salt/files/salt-2015.8.0-remove-buggy-tests.patch b/app-admin/salt/files/salt-2015.8.0-remove-buggy-tests.patch
new file mode 100644
index 000000000000..92ab0624e595
--- /dev/null
+++ b/app-admin/salt/files/salt-2015.8.0-remove-buggy-tests.patch
@@ -0,0 +1,56 @@
+diff --git a/tests/unit/modules/mount_test.py b/tests/unit/modules/mount_test.py
+index 282539d..c88a7a8 100644
+--- a/tests/unit/modules/mount_test.py
++++ b/tests/unit/modules/mount_test.py
+@@ -103,12 +103,6 @@ class MountTestCase(TestCase):
+ self.assertTrue(mount.rm_fstab('name', 'device'))
+
+ mock = MagicMock(return_value={'name': 'name'})
+- with patch.object(mount, 'fstab', mock):
+- with patch('salt.utils.fopen', mock_open()) as m_open:
+- helper_open = m_open()
+- helper_open.write.assertRaises(CommandExecutionError,
+- mount.rm_fstab,
+- config=None)
+
+ def test_set_fstab(self):
+ '''
+@@ -143,12 +137,6 @@ class MountTestCase(TestCase):
+ self.assertTrue(mount.rm_automaster('name', 'device'))
+
+ mock = MagicMock(return_value={'name': 'name'})
+- with patch.object(mount, 'fstab', mock):
+- with patch('salt.utils.fopen', mock_open()) as m_open:
+- helper_open = m_open()
+- helper_open.write.assertRaises(CommandExecutionError,
+- mount.rm_automaster,
+- 'name', 'device')
+
+ def test_set_automaster(self):
+ '''
+diff --git a/tests/unit/modules/puppet_test.py b/tests/unit/modules/puppet_test.py
+index 6a43fd4..3be039c 100644
+--- a/tests/unit/modules/puppet_test.py
++++ b/tests/unit/modules/puppet_test.py
+@@ -91,10 +91,6 @@ class PuppetTestCase(TestCase):
+ with patch('salt.utils.fopen', mock_open()):
+ self.assertTrue(puppet.disable())
+
+- with patch('salt.utils.fopen', mock_open()) as m_open:
+- helper_open = m_open()
+- helper_open.write.assertRaises(CommandExecutionError,
+- puppet.disable)
+
+ def test_status(self):
+ '''
+@@ -154,10 +150,6 @@ class PuppetTestCase(TestCase):
+ mock_open(read_data="resources: 1")):
+ self.assertDictEqual(puppet.summary(), {'resources': 1})
+
+- with patch('salt.utils.fopen', mock_open()) as m_open:
+- helper_open = m_open()
+- helper_open.write.assertRaises(CommandExecutionError,
+- puppet.summary)
+
+ def test_plugin_sync(self):
+ '''
diff --git a/app-admin/salt/files/salt-2015.8.10-remove-failing-boto-test.patch b/app-admin/salt/files/salt-2015.8.10-remove-failing-boto-test.patch
new file mode 100644
index 000000000000..5a4d273d7848
--- /dev/null
+++ b/app-admin/salt/files/salt-2015.8.10-remove-failing-boto-test.patch
@@ -0,0 +1,35 @@
+diff --git a/tests/unit/modules/boto_secgroup_test.py b/tests/unit/modules/boto_secgroup_test.py
+index f1c6bb1..07fd8ec 100644
+--- a/tests/unit/modules/boto_secgroup_test.py
++++ b/tests/unit/modules/boto_secgroup_test.py
+@@ -192,30 +192,6 @@ class BotoSecgroupTestCase(TestCase):
+ **conn_parameters)
+ self.assertEqual(group_vpc.id, retrieved_group_id)
+
+- @mock_ec2
+- def test_get_config_single_rule_group_name(self):
+- '''
+- tests return of 'config' when given group name. get_config returns an OrderedDict.
+- '''
+- group_name = _random_group_name()
+- ip_protocol = u'tcp'
+- from_port = 22
+- to_port = 22
+- cidr_ip = u'0.0.0.0/0'
+- rules_egress = [{'to_port': -1, 'from_port': -1, 'ip_protocol': u'-1', 'cidr_ip': u'0.0.0.0/0'}]
+-
+- conn = boto.ec2.connect_to_region(region, **boto_conn_parameters)
+- group = conn.create_security_group(name=group_name, description=group_name)
+- group.authorize(ip_protocol=ip_protocol, from_port=from_port, to_port=to_port, cidr_ip=cidr_ip)
+- # setup the expected get_config result
+- expected_get_config_result = OrderedDict([('name', group.name), ('group_id', group.id), ('owner_id', u'111122223333'),
+- ('description', group.description),
+- ('rules', [{'to_port': to_port, 'from_port': from_port,
+- 'ip_protocol': ip_protocol, 'cidr_ip': cidr_ip}]),
+- ('rules_egress', rules_egress)])
+- secgroup_get_config_result = boto_secgroup.get_config(group_id=group.id, **conn_parameters)
+- self.assertEqual(expected_get_config_result, secgroup_get_config_result)
+-
+ @skipIf(True, 'test skipped due to error in moto return - fixed in '
+ 'https://github.com/spulec/moto/commit/cc0166964371f7b5247a49d45637a8f936ccbe6f')
+ @mock_ec2
diff --git a/app-admin/salt/files/salt-2015.8.13-failing-gateway-tests.patch b/app-admin/salt/files/salt-2015.8.13-failing-gateway-tests.patch
new file mode 100644
index 000000000000..7d8512b14ef4
--- /dev/null
+++ b/app-admin/salt/files/salt-2015.8.13-failing-gateway-tests.patch
@@ -0,0 +1,69 @@
+diff --git a/tests/unit/states/boto_vpc_test.py b/tests/unit/states/boto_vpc_test.py
+index 53b6a24e4d..96b5630627 100644
+--- a/tests/unit/states/boto_vpc_test.py
++++ b/tests/unit/states/boto_vpc_test.py
+@@ -179,16 +179,6 @@ class BotoVpcResourceTestCaseMixin(BotoVpcTestCaseMixin):
+ self.assertTrue(exists)
+
+ @mock_ec2
+- def test_present_when_resource_exists(self):
+- vpc = self._create_vpc(name='test')
+- resource = self._create_resource(vpc_id=vpc.id, name='test')
+- with patch.dict('salt.utils.boto.__salt__', funcs):
+- resource_present_result = salt_states['boto_vpc.{0}_present'.format(self.resource_type)](
+- name='test', vpc_name='test', **self.extra_kwargs)
+- self.assertTrue(resource_present_result['result'])
+- self.assertEqual(resource_present_result['changes'], {})
+-
+- @mock_ec2
+ @skipIf(True, 'Disabled pending https://github.com/spulec/moto/issues/493')
+ def test_present_with_failure(self):
+ vpc = self._create_vpc(name='test')
+@@ -210,18 +200,6 @@ class BotoVpcResourceTestCaseMixin(BotoVpcTestCaseMixin):
+ self.assertEqual(resource_absent_result['changes'], {})
+
+ @mock_ec2
+- def test_absent_when_resource_exists(self):
+- vpc = self._create_vpc(name='test')
+- self._create_resource(vpc_id=vpc.id, name='test')
+-
+- with patch.dict('salt.utils.boto.__salt__', funcs):
+- resource_absent_result = salt_states['boto_vpc.{0}_absent'.format(self.resource_type)]('test')
+- self.assertTrue(resource_absent_result['result'])
+- self.assertEqual(resource_absent_result['changes']['new'][self.resource_type], None)
+- exists = funcs['boto_vpc.resource_exists'](self.resource_type, 'test').get('exists')
+- self.assertFalse(exists)
+-
+- @mock_ec2
+ @skipIf(True, 'Disabled pending https://github.com/spulec/moto/issues/493')
+ def test_absent_with_failure(self):
+ vpc = self._create_vpc(name='test')
+@@ -293,28 +271,3 @@ class BotoVpcRouteTableTestCase(BotoVpcStateTestCaseBase, BotoVpcResourceTestCas
+
+ new_subnets = changes['new']['subnets_associations']
+ self.assertEqual(new_subnets[0]['subnet_id'], subnet2.id)
+-
+- @mock_ec2
+- def test_present_with_routes(self):
+- vpc = self._create_vpc(name='test')
+- igw = self._create_internet_gateway(name='test', vpc_id=vpc.id)
+-
+- route_table_present_result = salt_states['boto_vpc.route_table_present'](
+- name='test', vpc_name='test', routes=[{'destination_cidr_block': '0.0.0.0/0',
+- 'gateway_id': igw.id},
+- {'destination_cidr_block': '10.0.0.0/24',
+- 'gateway_id': 'local'}])
+- routes = [x['gateway_id'] for x in route_table_present_result['changes']['new']['routes']]
+-
+- self.assertEqual(set(routes), set(['local', igw.id]))
+-
+- route_table_present_result = salt_states['boto_vpc.route_table_present'](
+- name='test', vpc_name='test', routes=[{'destination_cidr_block': '10.0.0.0/24',
+- 'gateway_id': 'local'}])
+-
+- changes = route_table_present_result['changes']
+-
+- old_routes = [x['gateway_id'] for x in changes['old']['routes']]
+- self.assertEqual(set(routes), set(old_routes))
+-
+- self.assertEqual(changes['new']['routes'][0]['gateway_id'], 'local')
diff --git a/app-admin/salt/files/salt-2015.8.13-sanitize-minion-name.patch b/app-admin/salt/files/salt-2015.8.13-sanitize-minion-name.patch
new file mode 100644
index 000000000000..df9e0f66d005
--- /dev/null
+++ b/app-admin/salt/files/salt-2015.8.13-sanitize-minion-name.patch
@@ -0,0 +1,36 @@
+From aa87d67258a5b6742fc53d06c7bdac0f643bc9f1 Mon Sep 17 00:00:00 2001
+From: Ch3LL <megan.wilhite@gmail.com>
+Date: Tue, 1 Aug 2017 13:44:32 -0400
+Subject: [PATCH] Add clean_id function to salt.utils.verify.py
+
+---
+ salt/utils/verify.py | 11 ++++++++++-
+ 1 file changed, 10 insertions(+), 1 deletion(-)
+
+diff --git a/salt/utils/verify.py b/salt/utils/verify.py
+index 5cac0fa651b..a3dc67db336 100644
+--- a/salt/utils/verify.py
++++ b/salt/utils/verify.py
+@@ -484,12 +484,21 @@ def clean_path(root, path, subdir=False):
+ return ''
+
+
++def clean_id(id_):
++ '''
++ Returns if the passed id is clean.
++ '''
++ if re.search(r'\.\.{sep}'.format(sep=os.sep), id_):
++ return False
++ return True
++
++
+ def valid_id(opts, id_):
+ '''
+ Returns if the passed id is valid
+ '''
+ try:
+- return bool(clean_path(opts['pki_dir'], id_))
++ return bool(clean_path(opts['pki_dir'], id_)) and clean_id(id_)
+ except (AttributeError, KeyError) as e:
+ return False
+
diff --git a/app-admin/salt/files/salt-2015.8.2-tmpdir.patch b/app-admin/salt/files/salt-2015.8.2-tmpdir.patch
new file mode 100644
index 000000000000..871551e0e508
--- /dev/null
+++ b/app-admin/salt/files/salt-2015.8.2-tmpdir.patch
@@ -0,0 +1,56 @@
+diff --git a/tests/unit/modules/qemu_nbd_test.py b/tests/unit/modules/qemu_nbd_test.py
+index 615e6b5..fbd24aa 100644
+--- a/tests/unit/modules/qemu_nbd_test.py
++++ b/tests/unit/modules/qemu_nbd_test.py
+@@ -77,6 +77,7 @@ class QemuNbdTestCase(TestCase):
+ Test if it mount the named image via qemu-nbd
+ and return the mounted roots
+ '''
++ tmpdir = os.environ.get('TMPDIR', '/tmp')
+ mock = MagicMock(return_value=True)
+ with patch.dict(qemu_nbd.__salt__, {'cmd.run': mock}):
+ self.assertEqual(qemu_nbd.init('/srv/image.qcow2'), '')
+@@ -89,7 +90,7 @@ class QemuNbdTestCase(TestCase):
+ 'mount.mount': mock,
+ 'cmd.retcode': MagicMock(side_effect=[1, 0])}):
+ self.assertDictEqual(qemu_nbd.init('/srv/image.qcow2'),
+- {'/tmp/nbd/nbd0/nbd0': '/dev/nbd0'})
++ {os.path.join(tmpdir, 'nbd/nbd0/nbd0'): '/dev/nbd0'})
+
+ # 'clear' function tests: 1
+
+diff --git a/tests/unit/states/archive_test.py b/tests/unit/states/archive_test.py
+index 63e4a53..20b196f 100644
+--- a/tests/unit/states/archive_test.py
++++ b/tests/unit/states/archive_test.py
+@@ -26,7 +26,7 @@ from salt.ext.six.moves import zip # pylint: disable=import-error,redefined-bui
+
+ # Globals
+ archive.__salt__ = {}
+-archive.__opts__ = {"cachedir": "/tmp", "test": False}
++archive.__opts__ = {"cachedir": os.environ.get('TMPDIR', "/tmp"), "test": False}
+ archive.__env__ = 'test'
+
+
+@@ -75,7 +75,7 @@ class ArchiveTestCase(TestCase):
+ 'cmd.run_all': mock_run}):
+ filename = os.path.join(
+ tmp_dir,
+- 'files/test/_tmp_test_archive_.tar'
++ 'files/test/' + tempfile.gettempdir().replace('/', '_') + '_test_archive_.tar'
+ )
+ for test_opts, ret_opts in zip(test_tar_opts, ret_tar_opts):
+ ret = archive.extracted(tmp_dir,
+diff --git a/tests/unit/utils/context_test.py b/tests/unit/utils/context_test.py
+index 71e4330..d6f3f30 100644
+--- a/tests/unit/utils/context_test.py
++++ b/tests/unit/utils/context_test.py
+@@ -18,7 +18,7 @@ import salt.payload
+ import salt.utils
+
+ __context__ = {'a': 'b'}
+-__opts__ = {'cachedir': '/tmp'}
++__opts__ = {'cachedir': os.environ.get('TMPDIR', '/tmp')}
+
+
+ @skipIf(NO_MOCK, NO_MOCK_REASON)
diff --git a/app-admin/salt/files/salt-2016.11.0-broken-tests.patch b/app-admin/salt/files/salt-2016.11.0-broken-tests.patch
new file mode 100644
index 000000000000..5bb7a8e4c46b
--- /dev/null
+++ b/app-admin/salt/files/salt-2016.11.0-broken-tests.patch
@@ -0,0 +1,23 @@
+diff --git a/tests/unit/utils/extend_test.py b/tests/unit/utils/extend_test.py
+index f63a4896f7..54bf443d9a 100644
+--- a/tests/unit/utils/extend_test.py
++++ b/tests/unit/utils/extend_test.py
+@@ -38,18 +38,6 @@ class ExtendTestCase(TestCase):
+ shutil.rmtree(self.out, True)
+ os.chdir(self.starting_dir)
+
+- @patch('sys.exit', MagicMock)
+- def test_run(self):
+- out = salt.utils.extend.run('test', 'test', 'this description', integration.CODE_DIR, False)
+- self.out = out
+- year = date.today().strftime('%Y')
+- self.assertTrue(os.path.exists(out))
+- self.assertFalse(os.path.exists(os.path.join(out, 'template.yml')))
+- self.assertTrue(os.path.exists(os.path.join(out, 'directory')))
+- self.assertTrue(os.path.exists(os.path.join(out, 'directory', 'test.py')))
+- with salt.utils.fopen(os.path.join(out, 'directory', 'test.py'), 'r') as test_f:
+- self.assertEqual(test_f.read(), year)
+-
+ if __name__ == '__main__':
+ from unit import run_tests
+ run_tests(ExtendTestCase, needs_daemon=False)
diff --git a/app-admin/salt/files/salt-2016.11.0-remove-file-tree-test.patch b/app-admin/salt/files/salt-2016.11.0-remove-file-tree-test.patch
new file mode 100644
index 000000000000..47d3257df671
--- /dev/null
+++ b/app-admin/salt/files/salt-2016.11.0-remove-file-tree-test.patch
@@ -0,0 +1,34 @@
+diff --git a/tests/unit/modules/inspect_collector_test.py b/tests/unit/modules/inspect_collector_test.py
+index 9105670526..e077bc3f44 100644
+--- a/tests/unit/modules/inspect_collector_test.py
++++ b/tests/unit/modules/inspect_collector_test.py
+@@ -52,29 +52,6 @@ class InspectorCollectorTestCase(TestCase):
+ self.assertEqual(inspector.pidfile, '/foo/pid/bar.pid')
+
+ @patch("os.mkdir", MagicMock())
+- def test_file_tree(self):
+- '''
+- Test file tree.
+-
+- :return:
+- '''
+-
+- inspector = Inspector(cachedir='/test', piddir='/test', pidfilename='bar.pid')
+- tree_root = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'inspectlib', 'tree_test')
+- expected_tree = (['/a/a/dummy.a', '/a/b/dummy.b', '/b/b.1', '/b/b.2', '/b/b.3'],
+- ['/a', '/a/a', '/a/b', '/a/c', '/b', '/c'],
+- ['/a/a/dummy.ln.a', '/a/b/dummy.ln.b', '/a/c/b.1', '/b/b.4',
+- '/b/b.5', '/c/b.1', '/c/b.2', '/c/b.3'])
+- tree_result = []
+- for chunk in inspector._get_all_files(tree_root):
+- buff = []
+- for pth in chunk:
+- buff.append(pth.replace(tree_root, ''))
+- tree_result.append(buff)
+- tree_result = tuple(tree_result)
+- self.assertEqual(expected_tree, tree_result)
+-
+- @patch("os.mkdir", MagicMock())
+ def test_get_unmanaged_files(self):
+ '''
+ Test get_unmanaged_files.
diff --git a/app-admin/salt/files/salt-2016.11.0-tmpdir.patch b/app-admin/salt/files/salt-2016.11.0-tmpdir.patch
new file mode 100644
index 000000000000..1cccb158aff0
--- /dev/null
+++ b/app-admin/salt/files/salt-2016.11.0-tmpdir.patch
@@ -0,0 +1,34 @@
+diff --git a/tests/unit/modules/qemu_nbd_test.py b/tests/unit/modules/qemu_nbd_test.py
+index 615e6b5670..fbd24aab86 100644
+--- a/tests/unit/modules/qemu_nbd_test.py
++++ b/tests/unit/modules/qemu_nbd_test.py
+@@ -77,6 +77,7 @@ class QemuNbdTestCase(TestCase):
+ Test if it mount the named image via qemu-nbd
+ and return the mounted roots
+ '''
++ tmpdir = os.environ.get('TMPDIR', '/tmp')
+ mock = MagicMock(return_value=True)
+ with patch.dict(qemu_nbd.__salt__, {'cmd.run': mock}):
+ self.assertEqual(qemu_nbd.init('/srv/image.qcow2'), '')
+@@ -89,7 +90,7 @@ class QemuNbdTestCase(TestCase):
+ 'mount.mount': mock,
+ 'cmd.retcode': MagicMock(side_effect=[1, 0])}):
+ self.assertDictEqual(qemu_nbd.init('/srv/image.qcow2'),
+- {'/tmp/nbd/nbd0/nbd0': '/dev/nbd0'})
++ {os.path.join(tmpdir, 'nbd/nbd0/nbd0'): '/dev/nbd0'})
+
+ # 'clear' function tests: 1
+
+diff --git a/tests/unit/utils/context_test.py b/tests/unit/utils/context_test.py
+index 5249d56747..a27ee9ab61 100644
+--- a/tests/unit/utils/context_test.py
++++ b/tests/unit/utils/context_test.py
+@@ -18,7 +18,7 @@ import salt.payload
+ import salt.utils
+
+ __context__ = {'a': 'b'}
+-__opts__ = {'cachedir': '/tmp'}
++__opts__ = {'cachedir': os.environ.get('TMPDIR', '/tmp')}
+
+
+ @skipIf(NO_MOCK, NO_MOCK_REASON)
diff --git a/app-admin/salt/files/salt-2016.3.1-dont-realpath-tmpdir.patch b/app-admin/salt/files/salt-2016.3.1-dont-realpath-tmpdir.patch
new file mode 100644
index 000000000000..3e4fa31c9042
--- /dev/null
+++ b/app-admin/salt/files/salt-2016.3.1-dont-realpath-tmpdir.patch
@@ -0,0 +1,18 @@
+diff --git a/tests/integration/__init__.py b/tests/integration/__init__.py
+index fc13bb6..6316fb5 100644
+--- a/tests/integration/__init__.py
++++ b/tests/integration/__init__.py
+@@ -77,12 +77,7 @@ if salt.utils.is_windows():
+ import win32api
+
+
+-SYS_TMP_DIR = os.path.realpath(
+- # Avoid ${TMPDIR} and gettempdir() on MacOS as they yield a base path too long
+- # for unix sockets: ``error: AF_UNIX path too long``
+- # Gentoo Portage prefers ebuild tests are rooted in ${TMPDIR}
+- os.environ.get('TMPDIR', tempfile.gettempdir()) if not salt.utils.is_darwin() else '/tmp'
+-)
++SYS_TMP_DIR = os.environ.get('TMPDIR', tempfile.gettempdir()) if not salt.utils.is_darwin() else '/tmp'
+ TMP = os.path.join(SYS_TMP_DIR, 'salt-tests-tmpdir')
+ FILES = os.path.join(INTEGRATION_TEST_DIR, 'files')
+ PYEXEC = 'python{0}.{1}'.format(*sys.version_info)
diff --git a/app-admin/salt/files/salt-2016.3.4-dont-test-ordering.patch b/app-admin/salt/files/salt-2016.3.4-dont-test-ordering.patch
new file mode 100644
index 000000000000..c27227571ad2
--- /dev/null
+++ b/app-admin/salt/files/salt-2016.3.4-dont-test-ordering.patch
@@ -0,0 +1,33 @@
+diff --git a/tests/unit/modules/inspect_collector_test.py b/tests/unit/modules/inspect_collector_test.py
+index 9d2fa3ada7..710bbd75a5 100644
+--- a/tests/unit/modules/inspect_collector_test.py
++++ b/tests/unit/modules/inspect_collector_test.py
+@@ -36,28 +36,6 @@ class InspectorCollectorTestCase(TestCase):
+ self.assertEqual(inspector.dbfile, '/foo/cache/_minion_collector.db')
+ self.assertEqual(inspector.pidfile, '/foo/pid/bar.pid')
+
+- def test_file_tree(self):
+- '''
+- Test file tree.
+-
+- :return:
+- '''
+-
+- inspector = Inspector(cachedir='/test', piddir='/test', pidfilename='bar.pid')
+- tree_root = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'inspectlib', 'tree_test')
+- expected_tree = (['/a/a/dummy.a', '/a/b/dummy.b', '/b/b.1', '/b/b.2', '/b/b.3'],
+- ['/a', '/a/a', '/a/b', '/a/c', '/b', '/c'],
+- ['/a/a/dummy.ln.a', '/a/b/dummy.ln.b', '/a/c/b.1', '/b/b.4',
+- '/b/b.5', '/c/b.1', '/c/b.2', '/c/b.3'])
+- tree_result = []
+- for chunk in inspector._get_all_files(tree_root):
+- buff = []
+- for pth in chunk:
+- buff.append(pth.replace(tree_root, ''))
+- tree_result.append(buff)
+- tree_result = tuple(tree_result)
+- self.assertEqual(expected_tree, tree_result)
+-
+ def test_get_unmanaged_files(self):
+ '''
+ Test get_unmanaged_files.
diff --git a/app-admin/salt/files/salt-2016.3.4-test-nonexist-dirs.patch b/app-admin/salt/files/salt-2016.3.4-test-nonexist-dirs.patch
new file mode 100644
index 000000000000..dd542d630adf
--- /dev/null
+++ b/app-admin/salt/files/salt-2016.3.4-test-nonexist-dirs.patch
@@ -0,0 +1,32 @@
+diff --git a/tests/unit/conf_test.py b/tests/unit/conf_test.py
+index cce0023423..c1324f4a61 100644
+--- a/tests/unit/conf_test.py
++++ b/tests/unit/conf_test.py
+@@ -140,6 +140,8 @@ class ConfTest(TestCase):
+ commented out. This test loops through all of the files in that directory to check
+ for any lines that are not commented or blank.
+ '''
++ if not os.path.exists(SAMPLE_CONF_DIR + 'cloud.profiles.d/'):
++ return
+ cloud_sample_files = os.listdir(SAMPLE_CONF_DIR + 'cloud.profiles.d/')
+ for conf_file in cloud_sample_files:
+ profile_conf = SAMPLE_CONF_DIR + 'cloud.profiles.d/' + conf_file
+@@ -158,6 +160,8 @@ class ConfTest(TestCase):
+ commented out. This test loops through all of the files in that directory to check
+ for any lines that are not commented or blank.
+ '''
++ if not os.path.exists(SAMPLE_CONF_DIR + 'cloud.providers.d/'):
++ return
+ cloud_sample_files = os.listdir(SAMPLE_CONF_DIR + 'cloud.providers.d/')
+ for conf_file in cloud_sample_files:
+ provider_conf = SAMPLE_CONF_DIR + 'cloud.providers.d/' + conf_file
+@@ -176,6 +180,9 @@ class ConfTest(TestCase):
+ commented out. This test loops through all of the files in that directory to check
+ for any lines that are not commented or blank.
+ '''
++ if not os.path.exists(SAMPLE_CONF_DIR + 'cloud.maps.d/'):
++ return
++
+ cloud_sample_files = os.listdir(SAMPLE_CONF_DIR + 'cloud.maps.d/')
+ for conf_file in cloud_sample_files:
+ map_conf = SAMPLE_CONF_DIR + 'cloud.maps.d/' + conf_file
diff --git a/app-admin/salt/files/salt-2016.3.5-tmpdir.patch b/app-admin/salt/files/salt-2016.3.5-tmpdir.patch
new file mode 100644
index 000000000000..dce4f09f2a0f
--- /dev/null
+++ b/app-admin/salt/files/salt-2016.3.5-tmpdir.patch
@@ -0,0 +1,47 @@
+diff --git a/tests/unit/modules/qemu_nbd_test.py b/tests/unit/modules/qemu_nbd_test.py
+index 615e6b5670..fbd24aab86 100644
+--- a/tests/unit/modules/qemu_nbd_test.py
++++ b/tests/unit/modules/qemu_nbd_test.py
+@@ -77,6 +77,7 @@ class QemuNbdTestCase(TestCase):
+ Test if it mount the named image via qemu-nbd
+ and return the mounted roots
+ '''
++ tmpdir = os.environ.get('TMPDIR', '/tmp')
+ mock = MagicMock(return_value=True)
+ with patch.dict(qemu_nbd.__salt__, {'cmd.run': mock}):
+ self.assertEqual(qemu_nbd.init('/srv/image.qcow2'), '')
+@@ -89,7 +90,7 @@ class QemuNbdTestCase(TestCase):
+ 'mount.mount': mock,
+ 'cmd.retcode': MagicMock(side_effect=[1, 0])}):
+ self.assertDictEqual(qemu_nbd.init('/srv/image.qcow2'),
+- {'/tmp/nbd/nbd0/nbd0': '/dev/nbd0'})
++ {os.path.join(tmpdir, 'nbd/nbd0/nbd0'): '/dev/nbd0'})
+
+ # 'clear' function tests: 1
+
+diff --git a/tests/unit/states/archive_test.py b/tests/unit/states/archive_test.py
+index e699362d8a..c7c7e8a965 100644
+--- a/tests/unit/states/archive_test.py
++++ b/tests/unit/states/archive_test.py
+@@ -25,7 +25,7 @@ from salt.ext.six.moves import zip # pylint: disable=import-error,redefined-bui
+
+ # Globals
+ archive.__salt__ = {}
+-archive.__opts__ = {"cachedir": "/tmp", "test": False}
++archive.__opts__ = {"cachedir": os.environ.get('TMPDIR', "/tmp"), "test": False}
+ archive.__env__ = 'test'
+
+
+diff --git a/tests/unit/utils/context_test.py b/tests/unit/utils/context_test.py
+index 5249d56747..a27ee9ab61 100644
+--- a/tests/unit/utils/context_test.py
++++ b/tests/unit/utils/context_test.py
+@@ -18,7 +18,7 @@ import salt.payload
+ import salt.utils
+
+ __context__ = {'a': 'b'}
+-__opts__ = {'cachedir': '/tmp'}
++__opts__ = {'cachedir': os.environ.get('TMPDIR', '/tmp')}
+
+
+ @skipIf(NO_MOCK, NO_MOCK_REASON)
diff --git a/app-admin/salt/files/salt-2017.7.0-dont-realpath-tmpdir.patch b/app-admin/salt/files/salt-2017.7.0-dont-realpath-tmpdir.patch
new file mode 100644
index 000000000000..90a48a662998
--- /dev/null
+++ b/app-admin/salt/files/salt-2017.7.0-dont-realpath-tmpdir.patch
@@ -0,0 +1,19 @@
+diff --git a/tests/support/paths.py b/tests/support/paths.py
+index da93c8e1e3..895c636fef 100644
+--- a/tests/support/paths.py
++++ b/tests/support/paths.py
+@@ -40,12 +40,12 @@ if CODE_DIR not in sys.path:
+ if TESTS_DIR not in sys.path:
+ sys.path.insert(1, TESTS_DIR)
+
+-SYS_TMP_DIR = os.path.abspath(os.path.realpath(
++SYS_TMP_DIR = os.path.abspath(
+ # Avoid ${TMPDIR} and gettempdir() on MacOS as they yield a base path too long
+ # for unix sockets: ``error: AF_UNIX path too long``
+ # Gentoo Portage prefers ebuild tests are rooted in ${TMPDIR}
+ os.environ.get('TMPDIR', tempfile.gettempdir()) if not sys.platform.startswith('darwin') else '/tmp'
+-))
++)
+ TMP = os.path.join(SYS_TMP_DIR, 'salt-tests-tmpdir')
+ FILES = os.path.join(INTEGRATION_TEST_DIR, 'files')
+ PYEXEC = 'python{0}.{1}'.format(*sys.version_info)
diff --git a/app-admin/salt/files/salt-api.service b/app-admin/salt/files/salt-api.service
new file mode 100644
index 000000000000..fd9f665fff09
--- /dev/null
+++ b/app-admin/salt/files/salt-api.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=The Salt Master Server
+After=syslog.target network.target
+
+[Service]
+Type=simple
+ExecStart=/usr/bin/salt-api
+
+[Install]
+WantedBy=multi-user.target
diff --git a/app-admin/salt/files/salt-master.service b/app-admin/salt/files/salt-master.service
new file mode 100644
index 000000000000..4f3827ede6df
--- /dev/null
+++ b/app-admin/salt/files/salt-master.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=The Salt Master Server
+After=syslog.target network.target
+
+[Service]
+Type=simple
+ExecStart=/usr/bin/salt-master
+
+[Install]
+WantedBy=multi-user.target
diff --git a/app-admin/salt/files/salt-minion.service b/app-admin/salt/files/salt-minion.service
new file mode 100644
index 000000000000..2f199f998eca
--- /dev/null
+++ b/app-admin/salt/files/salt-minion.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=The Salt Minion
+After=syslog.target network.target
+
+[Service]
+Type=simple
+ExecStart=/usr/bin/salt-minion
+
+[Install]
+WantedBy=multi-user.target
diff --git a/app-admin/salt/files/salt-syndic.service b/app-admin/salt/files/salt-syndic.service
new file mode 100644
index 000000000000..922eef35af8b
--- /dev/null
+++ b/app-admin/salt/files/salt-syndic.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=The Salt Master Server
+After=syslog.target network.target
+
+[Service]
+Type=simple
+ExecStart=/usr/bin/salt-syndic
+
+[Install]
+WantedBy=multi-user.target
diff --git a/app-admin/salt/files/syndic-confd-1 b/app-admin/salt/files/syndic-confd-1
new file mode 100644
index 000000000000..d69d83fcd60d
--- /dev/null
+++ b/app-admin/salt/files/syndic-confd-1
@@ -0,0 +1,5 @@
+# /etc/conf.d/salt-minion: config file for /etc/init.d/salt-minion
+
+# see man pages for salt-minion or run `salt-minion --help`
+# for valid cmdline options
+SALT_OPTS="--log-level=warning"
diff --git a/app-admin/salt/files/syndic-initd-4 b/app-admin/salt/files/syndic-initd-4
new file mode 100644
index 000000000000..8908f2cfa850
--- /dev/null
+++ b/app-admin/salt/files/syndic-initd-4
@@ -0,0 +1,14 @@
+#!/sbin/openrc-run
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+command="/usr/bin/salt-syndic"
+command_args="${SALT_OPTS}"
+command_background="1"
+pidfile="/var/run/salt-syndic.pid"
+name="SALT syndic daemon"
+retry="20"
+
+depend() {
+ use net logger
+}
diff --git a/app-admin/salt/metadata.xml b/app-admin/salt/metadata.xml
new file mode 100644
index 000000000000..00b55f2c20e0
--- /dev/null
+++ b/app-admin/salt/metadata.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>chutzpah@gentoo.org</email>
+ <name>Patrick McLean</name>
+ </maintainer>
+ <longdescription lang="en">
+Salt is a powerful remote execution manager that can be used to administer
+servers in a fast and efficient way.
+
+Salt allows commands to be executed across large groups of servers. This means
+systems can be easily managed, but data can also be easily gathered. Quick
+introspection into running systems becomes a reality.
+
+Remote execution is usually used to set up a certain state on a remote system.
+Salt addresses this problem as well, the salt state system uses salt state
+files to define the state a server needs to be in.
+
+Between the remote execution system, and state management Salt addresses the
+backbone of cloud and data center management.
+ </longdescription>
+ <use>
+ <flag name="cherrypy">Enable support for using cherrypy.</flag>
+ <flag name="libcloud">Enable salt-cloud support via libcloud.</flag>
+ <flag name="libvirt">Support managing virtual machines with app-emulation/libvirt.</flag>
+ <flag name="gnupg">Enable support for gnupg via python-gnupg.</flag>
+ <flag name="keyring">Enable support for keyrings via python-keyring.</flag>
+ <flag name="mako">Add support for using the mako template engine for parsing salt states.</flag>
+ <flag name="mongodb">Support returning data to a mongodb server.</flag>
+ <flag name="neutron">Support the OpenStack neutron network service.</flag>
+ <flag name="nova">Enable support for the OpenStack Nova API</flag>
+ <flag name="openssl">Add support for using TLS via OpenSSL.</flag>
+ <flag name="portage">Add support for package state enforcement using sys-apps/portage</flag>
+ <flag name="raet">Add support for the new RAET transport.</flag>
+ <flag name="redis">Support returning data to a redis database.</flag>
+ <flag name="timelib">Use timelib to parse english textual date descriptions.</flag>
+ <flag name="zeromq">Add support for the zeromq transport.</flag>
+ </use>
+ <upstream>
+ <remote-id type="pypi">salt</remote-id>
+ <remote-id type="github">saltstack/salt-vim</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/app-admin/salt/salt-2015.5.10.ebuild b/app-admin/salt/salt-2015.5.10.ebuild
new file mode 100644
index 000000000000..24630f9f662b
--- /dev/null
+++ b/app-admin/salt/salt-2015.5.10.ebuild
@@ -0,0 +1,133 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+PYTHON_COMPAT=(python2_7)
+
+inherit eutils systemd distutils-r1
+
+DESCRIPTION="Salt is a remote execution and configuration manager"
+HOMEPAGE="https://saltstack.com/community/"
+
+if [[ ${PV} == 9999* ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/${PN}stack/${PN}.git"
+ EGIT_BRANCH="develop"
+ SRC_URI=""
+ KEYWORDS=""
+else
+ SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+ KEYWORDS="~x86 ~amd64"
+fi
+
+LICENSE="Apache-2.0"
+SLOT="0"
+IUSE="cherrypy ldap libcloud libvirt gnupg keyring mako mongodb mysql neutron nova"
+IUSE+=" openssl portage redis selinux test timelib raet +zeromq vim-syntax"
+
+RDEPEND="sys-apps/pciutils
+ dev-python/jinja[${PYTHON_USEDEP}]
+ >=dev-python/msgpack-0.3[${PYTHON_USEDEP}]
+ dev-python/pyyaml[${PYTHON_USEDEP}]
+ dev-python/markupsafe[${PYTHON_USEDEP}]
+ >=dev-python/requests-1.0.0[${PYTHON_USEDEP}]
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ >=www-servers/tornado-4.0[${PYTHON_USEDEP}]
+ libcloud? ( >=dev-python/libcloud-0.14.0[${PYTHON_USEDEP}] )
+ mako? ( dev-python/mako[${PYTHON_USEDEP}] )
+ ldap? ( dev-python/python-ldap[${PYTHON_USEDEP}] )
+ libvirt? ( dev-python/libvirt-python[${PYTHON_USEDEP}] )
+ openssl? (
+ dev-libs/openssl:*[-bindist]
+ dev-python/pyopenssl[${PYTHON_USEDEP}]
+ )
+ raet? (
+ >=dev-python/libnacl-1.0.0[${PYTHON_USEDEP}]
+ >=dev-python/ioflo-1.1.7[${PYTHON_USEDEP}]
+ >=dev-python/raet-0.6.0[${PYTHON_USEDEP}]
+ )
+ zeromq? (
+ >=dev-python/pyzmq-2.2.0[${PYTHON_USEDEP}]
+ >=dev-python/m2crypto-0.22.3[${PYTHON_USEDEP}]
+ dev-python/pycrypto[${PYTHON_USEDEP}]
+ )
+ cherrypy? ( >=dev-python/cherrypy-3.2.2[${PYTHON_USEDEP}] )
+ mongodb? ( dev-python/pymongo[${PYTHON_USEDEP}] )
+ portage? ( sys-apps/portage[${PYTHON_USEDEP}] )
+ keyring? ( dev-python/keyring[${PYTHON_USEDEP}] )
+ mysql? ( dev-python/mysql-python[${PYTHON_USEDEP}] )
+ redis? ( dev-python/redis-py[${PYTHON_USEDEP}] )
+ selinux? ( sec-policy/selinux-salt )
+ timelib? ( dev-python/timelib[${PYTHON_USEDEP}] )
+ nova? ( >=dev-python/python-novaclient-2.17.0[${PYTHON_USEDEP}] )
+ neutron? ( >=dev-python/python-neutronclient-2.3.6[${PYTHON_USEDEP}] )
+ gnupg? ( dev-python/python-gnupg[${PYTHON_USEDEP}] )
+ vim-syntax? ( app-vim/salt-vim )"
+DEPEND="dev-python/setuptools[${PYTHON_USEDEP}]
+ test? (
+ dev-python/pip[${PYTHON_USEDEP}]
+ dev-python/virtualenv[${PYTHON_USEDEP}]
+ dev-python/mock[${PYTHON_USEDEP}]
+ dev-python/timelib[${PYTHON_USEDEP}]
+ >=dev-python/boto-2.32.1[${PYTHON_USEDEP}]
+ >=dev-python/moto-0.3.6[${PYTHON_USEDEP}]
+ >=dev-python/SaltTesting-2015.2.16[${PYTHON_USEDEP}]
+ ${RDEPEND}
+ )"
+
+DOCS=(README.rst AUTHORS)
+
+REQUIRED_USE="|| ( raet zeromq )"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-2014.7.1-remove-pydsl-includes-test.patch"
+ "${FILESDIR}/${PN}-2015.5.5-auth-tests.patch"
+ "${FILESDIR}/${PN}-2015.5.5-cron-tests.patch"
+ "${FILESDIR}/${PN}-2015.5.5-remove-buggy-tests.patch"
+ "${FILESDIR}/${PN}-2015.5.7-tmpdir.patch"
+ "${FILESDIR}/${PN}-2015.5.10-buggy-tests.patch"
+)
+
+python_prepare() {
+ # this test fails because it trys to "pip install distribute"
+ rm tests/unit/{modules,states}/zcbuildout_test.py \
+ tests/unit/modules/{rh_ip,win_network}_test.py \
+ || die "Failed to remove broken tests"
+}
+
+python_install_all() {
+ local svc
+ USE_SETUPTOOLS=1 distutils-r1_python_install_all
+
+ for svc in minion master syndic api; do
+ newinitd "${FILESDIR}"/${svc}-initd-4 salt-${svc}
+ newconfd "${FILESDIR}"/${svc}-confd-1 salt-${svc}
+ systemd_dounit "${FILESDIR}"/salt-${svc}.service
+ done
+
+ insinto /etc/${PN}
+ doins -r conf/*
+}
+
+python_test() {
+ local tempdir
+ # testsuite likes lots of files
+ ulimit -n 3072
+
+ # ${T} is too long a path for the tests to work
+ tempdir="$(mktemp -dup /tmp salt-XXX)"
+ mkdir "${T}/$(basename "${tempdir}")"
+
+ (
+ cleanup() { rm -f "${tempdir}"; }
+ trap cleanup EXIT
+
+ addwrite "${tempdir}"
+ ln -s "$(realpath --relative-to=/tmp "${T}/$(basename "${tempdir}")")" "${tempdir}"
+
+ USE_SETUPTOOLS=1 SHELL="/bin/bash" TMPDIR="${tempdir}" \
+ ${EPYTHON} tests/runtests.py \
+ --unit-tests --no-report --verbose
+
+ ) || die "testing failed"
+}
diff --git a/app-admin/salt/salt-2015.8.13-r1.ebuild b/app-admin/salt/salt-2015.8.13-r1.ebuild
new file mode 100644
index 000000000000..ed02341af26a
--- /dev/null
+++ b/app-admin/salt/salt-2015.8.13-r1.ebuild
@@ -0,0 +1,141 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+PYTHON_COMPAT=(python2_7)
+
+inherit eutils systemd distutils-r1
+
+DESCRIPTION="Salt is a remote execution and configuration manager"
+HOMEPAGE="https://saltstack.com/community/"
+
+if [[ ${PV} == 9999* ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/${PN}stack/${PN}.git"
+ EGIT_BRANCH="develop"
+ SRC_URI=""
+ KEYWORDS=""
+else
+ SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+ KEYWORDS="~x86 ~amd64"
+fi
+
+LICENSE="Apache-2.0"
+SLOT="0"
+IUSE="cherrypy ldap libcloud libvirt gnupg keyring mako mongodb mysql neutron nova"
+IUSE+=" openssl portage profile redis selinux test timelib raet +zeromq vim-syntax"
+
+RDEPEND="sys-apps/pciutils
+ dev-python/jinja[${PYTHON_USEDEP}]
+ >=dev-python/msgpack-0.3[${PYTHON_USEDEP}]
+ dev-python/pyyaml[${PYTHON_USEDEP}]
+ dev-python/markupsafe[${PYTHON_USEDEP}]
+ >=dev-python/requests-1.0.0[${PYTHON_USEDEP}]
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ >=www-servers/tornado-4.2.1[${PYTHON_USEDEP}]
+ virtual/python-futures[${PYTHON_USEDEP}]
+ libcloud? ( >=dev-python/libcloud-0.14.0[${PYTHON_USEDEP}] )
+ mako? ( dev-python/mako[${PYTHON_USEDEP}] )
+ ldap? ( dev-python/python-ldap[${PYTHON_USEDEP}] )
+ libvirt? ( dev-python/libvirt-python[${PYTHON_USEDEP}] )
+ openssl? (
+ dev-libs/openssl:*[-bindist]
+ dev-python/pyopenssl[${PYTHON_USEDEP}]
+ )
+ raet? (
+ >=dev-python/libnacl-1.0.0[${PYTHON_USEDEP}]
+ >=dev-python/ioflo-1.1.7[${PYTHON_USEDEP}]
+ >=dev-python/raet-0.6.0[${PYTHON_USEDEP}]
+ )
+ zeromq? (
+ >=dev-python/pyzmq-2.2.0[${PYTHON_USEDEP}]
+ >=dev-python/pycrypto-2.6.1[${PYTHON_USEDEP}]
+ )
+ cherrypy? ( >=dev-python/cherrypy-3.2.2[${PYTHON_USEDEP}] )
+ mongodb? ( dev-python/pymongo[${PYTHON_USEDEP}] )
+ portage? ( sys-apps/portage[${PYTHON_USEDEP}] )
+ keyring? ( dev-python/keyring[${PYTHON_USEDEP}] )
+ mysql? ( dev-python/mysql-python[${PYTHON_USEDEP}] )
+ redis? ( dev-python/redis-py[${PYTHON_USEDEP}] )
+ selinux? ( sec-policy/selinux-salt )
+ timelib? ( dev-python/timelib[${PYTHON_USEDEP}] )
+ nova? ( >=dev-python/python-novaclient-2.17.0[${PYTHON_USEDEP}] )
+ neutron? ( >=dev-python/python-neutronclient-2.3.6[${PYTHON_USEDEP}] )
+ gnupg? ( dev-python/python-gnupg[${PYTHON_USEDEP}] )
+ profile? ( dev-python/yappi[${PYTHON_USEDEP}] )
+ vim-syntax? ( app-vim/salt-vim )"
+DEPEND="dev-python/setuptools[${PYTHON_USEDEP}]
+ test? (
+ dev-python/psutil[${PYTHON_USEDEP}]
+ dev-python/pip[${PYTHON_USEDEP}]
+ dev-python/virtualenv[${PYTHON_USEDEP}]
+ dev-python/mock[${PYTHON_USEDEP}]
+ dev-python/timelib[${PYTHON_USEDEP}]
+ >=dev-python/boto-2.32.1[${PYTHON_USEDEP}]
+ >=dev-python/moto-0.3.6[${PYTHON_USEDEP}]
+ >=dev-python/SaltTesting-2015.2.16[${PYTHON_USEDEP}]
+ ${RDEPEND}
+ )"
+
+DOCS=(README.rst AUTHORS)
+
+REQUIRED_USE="|| ( raet zeromq )"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-2015.8.0-remove-buggy-tests.patch"
+ "${FILESDIR}/${PN}-2015.5.5-auth-tests.patch"
+ "${FILESDIR}/${PN}-2015.5.5-cron-tests.patch"
+ "${FILESDIR}/${PN}-2015.5.5-remove-buggy-tests.patch"
+ "${FILESDIR}/${PN}-2015.8.2-tmpdir.patch"
+ "${FILESDIR}/${PN}-2015.8.10-remove-failing-boto-test.patch"
+ "${FILESDIR}/${PN}-2015.8.13-failing-gateway-tests.patch"
+ "${FILESDIR}/${PN}-2015.8.13-sanitize-minion-name.patch"
+)
+
+python_prepare() {
+ # this test fails because it trys to "pip install distribute"
+ rm tests/unit/{modules,states}/zcbuildout_test.py \
+ tests/unit/modules/{rh_ip,win_network,random_org}_test.py
+}
+
+python_install_all() {
+ local svc
+ USE_SETUPTOOLS=1 distutils-r1_python_install_all
+
+ for svc in minion master syndic api; do
+ newinitd "${FILESDIR}"/${svc}-initd-4 salt-${svc}
+ newconfd "${FILESDIR}"/${svc}-confd-1 salt-${svc}
+ if [[ -e pkg/salt-${svc}.service ]]; then
+ sed -i -r 's/After=(.*)/After=syslog.target \1/' pkg/salt-${svc}.service || die
+ systemd_dounit pkg/salt-${svc}.service
+ elif [[ -e "${FILESDIR}"/salt-${svc}.service ]]; then
+ systemd_dounit "${FILESDIR}"/salt-${svc}.service
+ fi
+ done
+
+ insinto /etc/${PN}
+ doins -r conf/*
+}
+
+python_test() {
+ local tempdir
+ # testsuite likes lots of files
+ ulimit -n 3072
+
+ # ${T} is too long a path for the tests to work
+ tempdir="$(mktemp -dup /tmp salt-XXX)"
+ mkdir "${T}/$(basename "${tempdir}")"
+
+ (
+ cleanup() { rm -f "${tempdir}"; }
+ trap cleanup EXIT
+
+ addwrite "${tempdir}"
+ ln -s "$(realpath --relative-to=/tmp "${T}/$(basename "${tempdir}")")" "${tempdir}"
+
+ USE_SETUPTOOLS=1 SHELL="/bin/bash" TMPDIR="${tempdir}" \
+ ${EPYTHON} tests/runtests.py \
+ --unit-tests --no-report --verbose
+
+ ) || die "testing failed"
+}
diff --git a/app-admin/salt/salt-2015.8.13.ebuild b/app-admin/salt/salt-2015.8.13.ebuild
new file mode 100644
index 000000000000..88256a21d767
--- /dev/null
+++ b/app-admin/salt/salt-2015.8.13.ebuild
@@ -0,0 +1,140 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+PYTHON_COMPAT=(python2_7)
+
+inherit eutils systemd distutils-r1
+
+DESCRIPTION="Salt is a remote execution and configuration manager"
+HOMEPAGE="https://saltstack.com/community/"
+
+if [[ ${PV} == 9999* ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/${PN}stack/${PN}.git"
+ EGIT_BRANCH="develop"
+ SRC_URI=""
+ KEYWORDS=""
+else
+ SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+ KEYWORDS="~x86 ~amd64"
+fi
+
+LICENSE="Apache-2.0"
+SLOT="0"
+IUSE="cherrypy ldap libcloud libvirt gnupg keyring mako mongodb mysql neutron nova"
+IUSE+=" openssl portage profile redis selinux test timelib raet +zeromq vim-syntax"
+
+RDEPEND="sys-apps/pciutils
+ dev-python/jinja[${PYTHON_USEDEP}]
+ >=dev-python/msgpack-0.3[${PYTHON_USEDEP}]
+ dev-python/pyyaml[${PYTHON_USEDEP}]
+ dev-python/markupsafe[${PYTHON_USEDEP}]
+ >=dev-python/requests-1.0.0[${PYTHON_USEDEP}]
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ >=www-servers/tornado-4.2.1[${PYTHON_USEDEP}]
+ virtual/python-futures[${PYTHON_USEDEP}]
+ libcloud? ( >=dev-python/libcloud-0.14.0[${PYTHON_USEDEP}] )
+ mako? ( dev-python/mako[${PYTHON_USEDEP}] )
+ ldap? ( dev-python/python-ldap[${PYTHON_USEDEP}] )
+ libvirt? ( dev-python/libvirt-python[${PYTHON_USEDEP}] )
+ openssl? (
+ dev-libs/openssl:*[-bindist]
+ dev-python/pyopenssl[${PYTHON_USEDEP}]
+ )
+ raet? (
+ >=dev-python/libnacl-1.0.0[${PYTHON_USEDEP}]
+ >=dev-python/ioflo-1.1.7[${PYTHON_USEDEP}]
+ >=dev-python/raet-0.6.0[${PYTHON_USEDEP}]
+ )
+ zeromq? (
+ >=dev-python/pyzmq-2.2.0[${PYTHON_USEDEP}]
+ >=dev-python/pycrypto-2.6.1[${PYTHON_USEDEP}]
+ )
+ cherrypy? ( >=dev-python/cherrypy-3.2.2[${PYTHON_USEDEP}] )
+ mongodb? ( dev-python/pymongo[${PYTHON_USEDEP}] )
+ portage? ( sys-apps/portage[${PYTHON_USEDEP}] )
+ keyring? ( dev-python/keyring[${PYTHON_USEDEP}] )
+ mysql? ( dev-python/mysql-python[${PYTHON_USEDEP}] )
+ redis? ( dev-python/redis-py[${PYTHON_USEDEP}] )
+ selinux? ( sec-policy/selinux-salt )
+ timelib? ( dev-python/timelib[${PYTHON_USEDEP}] )
+ nova? ( >=dev-python/python-novaclient-2.17.0[${PYTHON_USEDEP}] )
+ neutron? ( >=dev-python/python-neutronclient-2.3.6[${PYTHON_USEDEP}] )
+ gnupg? ( dev-python/python-gnupg[${PYTHON_USEDEP}] )
+ profile? ( dev-python/yappi[${PYTHON_USEDEP}] )
+ vim-syntax? ( app-vim/salt-vim )"
+DEPEND="dev-python/setuptools[${PYTHON_USEDEP}]
+ test? (
+ dev-python/psutil[${PYTHON_USEDEP}]
+ dev-python/pip[${PYTHON_USEDEP}]
+ dev-python/virtualenv[${PYTHON_USEDEP}]
+ dev-python/mock[${PYTHON_USEDEP}]
+ dev-python/timelib[${PYTHON_USEDEP}]
+ >=dev-python/boto-2.32.1[${PYTHON_USEDEP}]
+ >=dev-python/moto-0.3.6[${PYTHON_USEDEP}]
+ >=dev-python/SaltTesting-2015.2.16[${PYTHON_USEDEP}]
+ ${RDEPEND}
+ )"
+
+DOCS=(README.rst AUTHORS)
+
+REQUIRED_USE="|| ( raet zeromq )"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-2015.8.0-remove-buggy-tests.patch"
+ "${FILESDIR}/${PN}-2015.5.5-auth-tests.patch"
+ "${FILESDIR}/${PN}-2015.5.5-cron-tests.patch"
+ "${FILESDIR}/${PN}-2015.5.5-remove-buggy-tests.patch"
+ "${FILESDIR}/${PN}-2015.8.2-tmpdir.patch"
+ "${FILESDIR}/${PN}-2015.8.10-remove-failing-boto-test.patch"
+ "${FILESDIR}/${PN}-2015.8.13-failing-gateway-tests.patch"
+)
+
+python_prepare() {
+ # this test fails because it trys to "pip install distribute"
+ rm tests/unit/{modules,states}/zcbuildout_test.py \
+ tests/unit/modules/{rh_ip,win_network,random_org}_test.py
+}
+
+python_install_all() {
+ local svc
+ USE_SETUPTOOLS=1 distutils-r1_python_install_all
+
+ for svc in minion master syndic api; do
+ newinitd "${FILESDIR}"/${svc}-initd-4 salt-${svc}
+ newconfd "${FILESDIR}"/${svc}-confd-1 salt-${svc}
+ if [[ -e pkg/salt-${svc}.service ]]; then
+ sed -i -r 's/After=(.*)/After=syslog.target \1/' pkg/salt-${svc}.service || die
+ systemd_dounit pkg/salt-${svc}.service
+ elif [[ -e "${FILESDIR}"/salt-${svc}.service ]]; then
+ systemd_dounit "${FILESDIR}"/salt-${svc}.service
+ fi
+ done
+
+ insinto /etc/${PN}
+ doins -r conf/*
+}
+
+python_test() {
+ local tempdir
+ # testsuite likes lots of files
+ ulimit -n 3072
+
+ # ${T} is too long a path for the tests to work
+ tempdir="$(mktemp -dup /tmp salt-XXX)"
+ mkdir "${T}/$(basename "${tempdir}")"
+
+ (
+ cleanup() { rm -f "${tempdir}"; }
+ trap cleanup EXIT
+
+ addwrite "${tempdir}"
+ ln -s "$(realpath --relative-to=/tmp "${T}/$(basename "${tempdir}")")" "${tempdir}"
+
+ USE_SETUPTOOLS=1 SHELL="/bin/bash" TMPDIR="${tempdir}" \
+ ${EPYTHON} tests/runtests.py \
+ --unit-tests --no-report --verbose
+
+ ) || die "testing failed"
+}
diff --git a/app-admin/salt/salt-2016.11.7.ebuild b/app-admin/salt/salt-2016.11.7.ebuild
new file mode 100644
index 000000000000..e68adad560f9
--- /dev/null
+++ b/app-admin/salt/salt-2016.11.7.ebuild
@@ -0,0 +1,146 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+PYTHON_COMPAT=( python2_7 )
+
+inherit eutils systemd distutils-r1
+
+DESCRIPTION="Salt is a remote execution and configuration manager"
+HOMEPAGE="https://saltstack.com/community/"
+
+if [[ ${PV} == 9999* ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/${PN}stack/${PN}.git"
+ EGIT_BRANCH="develop"
+ SRC_URI=""
+ KEYWORDS=""
+else
+ SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+ KEYWORDS="~x86 ~amd64"
+fi
+
+LICENSE="Apache-2.0"
+SLOT="0"
+IUSE="cherrypy ldap libcloud libvirt gnupg keyring mako mongodb mysql neutron nova"
+IUSE+=" openssl portage profile redis selinux test timelib raet +zeromq vim-syntax"
+
+RDEPEND="sys-apps/pciutils
+ dev-python/jinja[${PYTHON_USEDEP}]
+ >=dev-python/msgpack-0.3[${PYTHON_USEDEP}]
+ dev-python/pyyaml[${PYTHON_USEDEP}]
+ dev-python/markupsafe[${PYTHON_USEDEP}]
+ >=dev-python/requests-1.0.0[${PYTHON_USEDEP}]
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ >=www-servers/tornado-4.2.1[${PYTHON_USEDEP}]
+ virtual/python-futures[${PYTHON_USEDEP}]
+ libcloud? ( >=dev-python/libcloud-0.14.0[${PYTHON_USEDEP}] )
+ mako? ( dev-python/mako[${PYTHON_USEDEP}] )
+ ldap? ( dev-python/python-ldap[${PYTHON_USEDEP}] )
+ libvirt? ( dev-python/libvirt-python[${PYTHON_USEDEP}] )
+ openssl? (
+ dev-libs/openssl:*[-bindist]
+ dev-python/pyopenssl[${PYTHON_USEDEP}]
+ )
+ raet? (
+ >=dev-python/libnacl-1.0.0[${PYTHON_USEDEP}]
+ >=dev-python/ioflo-1.1.7[${PYTHON_USEDEP}]
+ >=dev-python/raet-0.6.0[${PYTHON_USEDEP}]
+ )
+ zeromq? (
+ >=dev-python/pyzmq-2.2.0[${PYTHON_USEDEP}]
+ >=dev-python/pycrypto-2.6.1[${PYTHON_USEDEP}]
+ )
+ cherrypy? ( >=dev-python/cherrypy-3.2.2[${PYTHON_USEDEP}] )
+ mongodb? ( dev-python/pymongo[${PYTHON_USEDEP}] )
+ portage? ( sys-apps/portage[${PYTHON_USEDEP}] )
+ keyring? ( dev-python/keyring[${PYTHON_USEDEP}] )
+ mysql? ( dev-python/mysql-python[${PYTHON_USEDEP}] )
+ redis? ( dev-python/redis-py[${PYTHON_USEDEP}] )
+ selinux? ( sec-policy/selinux-salt )
+ timelib? ( dev-python/timelib[${PYTHON_USEDEP}] )
+ nova? ( >=dev-python/python-novaclient-2.17.0[${PYTHON_USEDEP}] )
+ neutron? ( >=dev-python/python-neutronclient-2.3.6[${PYTHON_USEDEP}] )
+ gnupg? ( dev-python/python-gnupg[${PYTHON_USEDEP}] )
+ profile? ( dev-python/yappi[${PYTHON_USEDEP}] )
+ vim-syntax? ( app-vim/salt-vim )"
+DEPEND="dev-python/setuptools[${PYTHON_USEDEP}]
+ test? (
+ dev-python/psutil[${PYTHON_USEDEP}]
+ dev-python/pip[${PYTHON_USEDEP}]
+ dev-python/virtualenv[${PYTHON_USEDEP}]
+ dev-python/mock[${PYTHON_USEDEP}]
+ dev-python/timelib[${PYTHON_USEDEP}]
+ >=dev-python/boto-2.32.1[${PYTHON_USEDEP}]
+ !x86? ( dev-python/boto3[${PYTHON_USEDEP}] )
+ >=dev-python/moto-0.3.6[${PYTHON_USEDEP}]
+ >=dev-python/SaltTesting-2016.5.11[${PYTHON_USEDEP}]
+ >=dev-python/libcloud-0.14.0[${PYTHON_USEDEP}]
+ ${RDEPEND}
+ )"
+
+DOCS=( README.rst AUTHORS )
+
+REQUIRED_USE="|| ( raet zeromq )"
+RESTRICT="x86? ( test )"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-2016.11.0-tmpdir.patch"
+ "${FILESDIR}/${PN}-2016.3.1-dont-realpath-tmpdir.patch"
+ "${FILESDIR}/${PN}-2016.3.4-test-nonexist-dirs.patch"
+ "${FILESDIR}/${PN}-2016.11.0-remove-file-tree-test.patch"
+ "${FILESDIR}/${PN}-2016.11.0-broken-tests.patch"
+)
+
+python_prepare() {
+ # this test fails because it trys to "pip install distribute"
+ rm tests/unit/{modules,states}/zcbuildout_test.py \
+ tests/unit/modules/{rh_ip,win_network,random_org}_test.py || die
+
+ # https://github.com/saltstack/salt/issues/39095
+ rm tests/unit/utils/parsers_test.py
+
+ # apparently libcloud does not know about this?
+ rm tests/unit/cloud/clouds/dimensiondata_test.py || die
+
+ # seriously? "ValueError: Missing (or not readable) key file: '/home/dany/PRIVKEY.pem'"
+ rm tests/unit/cloud/clouds/gce_test.py || die
+}
+
+python_install_all() {
+ local svc
+ USE_SETUPTOOLS=1 distutils-r1_python_install_all
+
+ for svc in minion master syndic api; do
+ newinitd "${FILESDIR}"/${svc}-initd-4 salt-${svc}
+ newconfd "${FILESDIR}"/${svc}-confd-1 salt-${svc}
+ systemd_dounit "${FILESDIR}"/salt-${svc}.service
+ done
+
+ insinto /etc/${PN}
+ doins -r conf/*
+}
+
+python_test() {
+ local tempdir
+ # testsuite likes lots of files
+ ulimit -n 3072 || die
+
+ # ${T} is too long a path for the tests to work
+ tempdir="$(mktemp -dup /tmp salt-XXX)"
+ mkdir "${T}/$(basename "${tempdir}")"
+
+ (
+ cleanup() { rm -f "${tempdir}"; }
+ trap cleanup EXIT
+
+ addwrite "${tempdir}"
+ ln -s "$(realpath --relative-to=/tmp "${T}/$(basename "${tempdir}")")" "${tempdir}"
+
+ USE_SETUPTOOLS=1 SHELL="/bin/bash" \
+ TMPDIR="${tempdir}" \
+ ${EPYTHON} tests/runtests.py \
+ --unit-tests --no-report --verbose
+
+ ) || die "testing failed"
+}
diff --git a/app-admin/salt/salt-2016.3.7.ebuild b/app-admin/salt/salt-2016.3.7.ebuild
new file mode 100644
index 000000000000..4a419b1d258f
--- /dev/null
+++ b/app-admin/salt/salt-2016.3.7.ebuild
@@ -0,0 +1,142 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+PYTHON_COMPAT=( python2_7 )
+
+inherit eutils systemd distutils-r1
+
+DESCRIPTION="Salt is a remote execution and configuration manager"
+HOMEPAGE="https://saltstack.com/community/"
+
+if [[ ${PV} == 9999* ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/${PN}stack/${PN}.git"
+ EGIT_BRANCH="develop"
+ SRC_URI=""
+ KEYWORDS=""
+else
+ SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+ KEYWORDS="~x86 ~amd64"
+fi
+
+LICENSE="Apache-2.0"
+SLOT="0"
+IUSE="cherrypy ldap libcloud libvirt gnupg keyring mako mongodb mysql neutron nova"
+IUSE+=" openssl portage profile redis selinux test timelib raet +zeromq vim-syntax"
+
+RDEPEND="sys-apps/pciutils
+ dev-python/jinja[${PYTHON_USEDEP}]
+ >=dev-python/msgpack-0.3[${PYTHON_USEDEP}]
+ dev-python/pyyaml[${PYTHON_USEDEP}]
+ dev-python/markupsafe[${PYTHON_USEDEP}]
+ >=dev-python/requests-1.0.0[${PYTHON_USEDEP}]
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ >=www-servers/tornado-4.2.1[${PYTHON_USEDEP}]
+ virtual/python-futures[${PYTHON_USEDEP}]
+ libcloud? ( >=dev-python/libcloud-0.14.0[${PYTHON_USEDEP}] )
+ mako? ( dev-python/mako[${PYTHON_USEDEP}] )
+ ldap? ( dev-python/python-ldap[${PYTHON_USEDEP}] )
+ libvirt? ( dev-python/libvirt-python[${PYTHON_USEDEP}] )
+ openssl? (
+ dev-libs/openssl:*[-bindist]
+ dev-python/pyopenssl[${PYTHON_USEDEP}]
+ )
+ raet? (
+ >=dev-python/libnacl-1.0.0[${PYTHON_USEDEP}]
+ >=dev-python/ioflo-1.1.7[${PYTHON_USEDEP}]
+ >=dev-python/raet-0.6.0[${PYTHON_USEDEP}]
+ )
+ zeromq? (
+ >=dev-python/pyzmq-2.2.0[${PYTHON_USEDEP}]
+ >=dev-python/pycrypto-2.6.1[${PYTHON_USEDEP}]
+ )
+ cherrypy? ( >=dev-python/cherrypy-3.2.2[${PYTHON_USEDEP}] )
+ mongodb? ( dev-python/pymongo[${PYTHON_USEDEP}] )
+ portage? ( sys-apps/portage[${PYTHON_USEDEP}] )
+ keyring? ( dev-python/keyring[${PYTHON_USEDEP}] )
+ mysql? ( dev-python/mysql-python[${PYTHON_USEDEP}] )
+ redis? ( dev-python/redis-py[${PYTHON_USEDEP}] )
+ selinux? ( sec-policy/selinux-salt )
+ timelib? ( dev-python/timelib[${PYTHON_USEDEP}] )
+ nova? ( >=dev-python/python-novaclient-2.17.0[${PYTHON_USEDEP}] )
+ neutron? ( >=dev-python/python-neutronclient-2.3.6[${PYTHON_USEDEP}] )
+ gnupg? ( dev-python/python-gnupg[${PYTHON_USEDEP}] )
+ profile? ( dev-python/yappi[${PYTHON_USEDEP}] )
+ vim-syntax? ( app-vim/salt-vim )"
+DEPEND="dev-python/setuptools[${PYTHON_USEDEP}]
+ test? (
+ dev-python/psutil[${PYTHON_USEDEP}]
+ dev-python/pip[${PYTHON_USEDEP}]
+ dev-python/virtualenv[${PYTHON_USEDEP}]
+ dev-python/mock[${PYTHON_USEDEP}]
+ dev-python/timelib[${PYTHON_USEDEP}]
+ >=dev-python/boto-2.32.1[${PYTHON_USEDEP}]
+ !x86? ( dev-python/boto3[${PYTHON_USEDEP}] )
+ >=dev-python/moto-0.3.6[${PYTHON_USEDEP}]
+ >=dev-python/SaltTesting-2016.5.11[${PYTHON_USEDEP}]
+ >=dev-python/libcloud-0.14.0[${PYTHON_USEDEP}]
+ ${RDEPEND}
+ )"
+
+DOCS=( README.rst AUTHORS )
+
+REQUIRED_USE="|| ( raet zeromq )"
+RESTRICT="x86? ( test )"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-2016.3.5-tmpdir.patch"
+ "${FILESDIR}/${PN}-2016.3.1-dont-realpath-tmpdir.patch"
+ "${FILESDIR}/${PN}-2016.3.4-test-nonexist-dirs.patch"
+ "${FILESDIR}/${PN}-2016.3.4-dont-test-ordering.patch"
+)
+
+python_prepare() {
+ # this test fails because it trys to "pip install distribute"
+ rm tests/unit/{modules,states}/zcbuildout_test.py \
+ tests/unit/modules/{rh_ip,win_network,random_org}_test.py || die
+
+ # apparently libcloud does not know about this?
+ rm tests/unit/cloud/clouds/dimensiondata_test.py || die
+
+ # seriously? "ValueError: Missing (or not readable) key file: '/home/dany/PRIVKEY.pem'"
+ rm tests/unit/cloud/clouds/gce_test.py || die
+}
+
+python_install_all() {
+ local svc
+ USE_SETUPTOOLS=1 distutils-r1_python_install_all
+
+ for svc in minion master syndic api; do
+ newinitd "${FILESDIR}"/${svc}-initd-4 salt-${svc}
+ newconfd "${FILESDIR}"/${svc}-confd-1 salt-${svc}
+ systemd_dounit "${FILESDIR}"/salt-${svc}.service
+ done
+
+ insinto /etc/${PN}
+ doins -r conf/*
+}
+
+python_test() {
+ local tempdir
+ # testsuite likes lots of files
+ ulimit -n 3072 || die
+
+ # ${T} is too long a path for the tests to work
+ tempdir="$(mktemp -dup /tmp salt-XXX)"
+ mkdir "${T}/$(basename "${tempdir}")"
+
+ (
+ cleanup() { rm -f "${tempdir}"; }
+ trap cleanup EXIT
+
+ addwrite "${tempdir}"
+ ln -s "$(realpath --relative-to=/tmp "${T}/$(basename "${tempdir}")")" "${tempdir}"
+
+ USE_SETUPTOOLS=1 SHELL="/bin/bash" \
+ TMPDIR="${tempdir}" \
+ ${EPYTHON} tests/runtests.py \
+ --unit-tests --no-report --verbose
+
+ ) || die "testing failed"
+}
diff --git a/app-admin/salt/salt-2017.7.1.ebuild b/app-admin/salt/salt-2017.7.1.ebuild
new file mode 100644
index 000000000000..48c9f23243af
--- /dev/null
+++ b/app-admin/salt/salt-2017.7.1.ebuild
@@ -0,0 +1,140 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+PYTHON_COMPAT=( python2_7 )
+
+inherit eutils systemd distutils-r1
+
+DESCRIPTION="Salt is a remote execution and configuration manager"
+HOMEPAGE="http://saltstack.org/"
+
+if [[ ${PV} == 9999* ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="git://github.com/${PN}stack/${PN}.git"
+ EGIT_BRANCH="develop"
+ SRC_URI=""
+ KEYWORDS=""
+else
+ SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+ KEYWORDS="~x86 ~amd64"
+fi
+
+LICENSE="Apache-2.0"
+SLOT="0"
+IUSE="cherrypy ldap libcloud libvirt gnupg keyring mako mongodb mysql neutron nova"
+IUSE+=" openssl portage profile redis selinux test timelib raet +zeromq vim-syntax"
+
+RDEPEND="sys-apps/pciutils
+ dev-python/jinja[${PYTHON_USEDEP}]
+ >=dev-python/msgpack-0.3[${PYTHON_USEDEP}]
+ dev-python/pyyaml[${PYTHON_USEDEP}]
+ dev-python/markupsafe[${PYTHON_USEDEP}]
+ >=dev-python/requests-1.0.0[${PYTHON_USEDEP}]
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ >=www-servers/tornado-4.2.1[${PYTHON_USEDEP}]
+ virtual/python-futures[${PYTHON_USEDEP}]
+ libcloud? ( >=dev-python/libcloud-0.14.0[${PYTHON_USEDEP}] )
+ mako? ( dev-python/mako[${PYTHON_USEDEP}] )
+ ldap? ( dev-python/python-ldap[${PYTHON_USEDEP}] )
+ libvirt? ( dev-python/libvirt-python[${PYTHON_USEDEP}] )
+ openssl? (
+ dev-libs/openssl:*[-bindist]
+ dev-python/pyopenssl[${PYTHON_USEDEP}]
+ )
+ raet? (
+ >=dev-python/libnacl-1.0.0[${PYTHON_USEDEP}]
+ >=dev-python/ioflo-1.1.7[${PYTHON_USEDEP}]
+ >=dev-python/raet-0.6.0[${PYTHON_USEDEP}]
+ )
+ zeromq? (
+ >=dev-python/pyzmq-2.2.0[${PYTHON_USEDEP}]
+ >=dev-python/pycrypto-2.6.1[${PYTHON_USEDEP}]
+ )
+ cherrypy? ( >=dev-python/cherrypy-3.2.2[${PYTHON_USEDEP}] )
+ mongodb? ( dev-python/pymongo[${PYTHON_USEDEP}] )
+ portage? ( sys-apps/portage[${PYTHON_USEDEP}] )
+ keyring? ( dev-python/keyring[${PYTHON_USEDEP}] )
+ mysql? ( dev-python/mysql-python[${PYTHON_USEDEP}] )
+ redis? ( dev-python/redis-py[${PYTHON_USEDEP}] )
+ selinux? ( sec-policy/selinux-salt )
+ timelib? ( dev-python/timelib[${PYTHON_USEDEP}] )
+ nova? ( >=dev-python/python-novaclient-2.17.0[${PYTHON_USEDEP}] )
+ neutron? ( >=dev-python/python-neutronclient-2.3.6[${PYTHON_USEDEP}] )
+ gnupg? ( dev-python/python-gnupg[${PYTHON_USEDEP}] )
+ profile? ( dev-python/yappi[${PYTHON_USEDEP}] )
+ vim-syntax? ( app-vim/salt-vim )"
+DEPEND="dev-python/setuptools[${PYTHON_USEDEP}]
+ test? (
+ dev-python/pytest-salt[${PYTHON_USEDEP}]
+ dev-python/psutil[${PYTHON_USEDEP}]
+ dev-python/pytest[${PYTHON_USEDEP}]
+ dev-python/pip[${PYTHON_USEDEP}]
+ dev-python/virtualenv[${PYTHON_USEDEP}]
+ dev-python/mock[${PYTHON_USEDEP}]
+ dev-python/timelib[${PYTHON_USEDEP}]
+ >=dev-python/boto-2.32.1[${PYTHON_USEDEP}]
+ !x86? ( >=dev-python/boto3-1.2.1[${PYTHON_USEDEP}] )
+ >=dev-python/moto-0.3.6[${PYTHON_USEDEP}]
+ >=dev-python/SaltTesting-2016.5.11[${PYTHON_USEDEP}]
+ >=dev-python/libcloud-0.14.0[${PYTHON_USEDEP}]
+ ${RDEPEND}
+ )"
+
+DOCS=( README.rst AUTHORS )
+
+REQUIRED_USE="|| ( raet zeromq )"
+RESTRICT="x86? ( test )"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-2017.7.0-dont-realpath-tmpdir.patch"
+)
+
+python_prepare() {
+ rm tests/unit/{test_zypp_plugins.py,utils/test_extend.py} || die
+ rm tests/unit/modules/test_boto_{vpc,secgroup,elb}.py || die
+ rm tests/unit/states/test_boto_vpc.py || die
+}
+
+python_install_all() {
+ local svc
+ USE_SETUPTOOLS=1 distutils-r1_python_install_all
+
+ for svc in minion master syndic api; do
+ newinitd "${FILESDIR}"/${svc}-initd-4 salt-${svc}
+ newconfd "${FILESDIR}"/${svc}-confd-1 salt-${svc}
+ systemd_dounit "${FILESDIR}"/salt-${svc}.service
+ done
+
+ insinto /etc/${PN}
+ doins -r conf/*
+}
+
+python_test() {
+ local tempdir
+ # testsuite likes lots of files
+ ulimit -n 3072 || die
+
+ # ${T} is too long a path for the tests to work
+ tempdir="$(mktemp -du --tmpdir=/tmp salt-XXX)"
+ mkdir "${T}/$(basename "${tempdir}")"
+ mkdir "${BUILD_DIR}"/../{templates,conf/cloud.{providers,profiles,maps}.d} || die
+
+ (
+ cleanup() {
+ rm -f "${tempdir}"
+ rmdir "${BUILD_DIR}"/../{templates,conf/cloud.{providers,profiles,maps}.d} || die
+ }
+
+ trap cleanup EXIT
+
+ addwrite "${tempdir}"
+ ln -s "$(realpath --relative-to=/tmp "${T}/$(basename "${tempdir}")")" "${tempdir}"
+
+ USE_SETUPTOOLS=1 SHELL="/bin/bash" \
+ TMPDIR="${tempdir}" \
+ ${EPYTHON} tests/runtests.py \
+ --unit-tests --no-report --verbose
+
+ ) || die "testing failed"
+}
diff --git a/app-admin/salt/salt-9999.ebuild b/app-admin/salt/salt-9999.ebuild
new file mode 100644
index 000000000000..00fe762b9b6d
--- /dev/null
+++ b/app-admin/salt/salt-9999.ebuild
@@ -0,0 +1,136 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+PYTHON_COMPAT=( python2_7 )
+
+inherit eutils systemd distutils-r1
+
+DESCRIPTION="Salt is a remote execution and configuration manager"
+HOMEPAGE="https://saltstack.com/community/"
+
+if [[ ${PV} == 9999* ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/${PN}stack/${PN}.git"
+ EGIT_BRANCH="develop"
+ SRC_URI=""
+ KEYWORDS=""
+else
+ SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+ KEYWORDS="~x86 ~amd64"
+fi
+
+LICENSE="Apache-2.0"
+SLOT="0"
+IUSE="cherrypy ldap libcloud libvirt gnupg keyring mako mongodb mysql neutron nova"
+IUSE+=" openssl portage profile redis selinux test timelib raet +zeromq vim-syntax"
+
+RDEPEND="sys-apps/pciutils
+ dev-python/jinja[${PYTHON_USEDEP}]
+ >=dev-python/msgpack-0.3[${PYTHON_USEDEP}]
+ dev-python/pyyaml[${PYTHON_USEDEP}]
+ dev-python/markupsafe[${PYTHON_USEDEP}]
+ >=dev-python/requests-1.0.0[${PYTHON_USEDEP}]
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ >=www-servers/tornado-4.2.1[${PYTHON_USEDEP}]
+ virtual/python-futures[${PYTHON_USEDEP}]
+ libcloud? ( >=dev-python/libcloud-0.14.0[${PYTHON_USEDEP}] )
+ mako? ( dev-python/mako[${PYTHON_USEDEP}] )
+ ldap? ( dev-python/python-ldap[${PYTHON_USEDEP}] )
+
+ libvirt? ( dev-python/libvirt-python[${PYTHON_USEDEP}] )
+ openssl? (
+ dev-libs/openssl:*[-bindist]
+ dev-python/pyopenssl[${PYTHON_USEDEP}]
+ )
+ raet? (
+ >=dev-python/libnacl-1.0.0[${PYTHON_USEDEP}]
+ >=dev-python/ioflo-1.1.7[${PYTHON_USEDEP}]
+ >=dev-python/raet-0.6.0[${PYTHON_USEDEP}]
+ )
+ zeromq? (
+ >=dev-python/pyzmq-2.2.0[${PYTHON_USEDEP}]
+ >=dev-python/pycrypto-2.6.1[${PYTHON_USEDEP}]
+ )
+ cherrypy? ( >=dev-python/cherrypy-3.2.2[${PYTHON_USEDEP}] )
+ mongodb? ( dev-python/pymongo[${PYTHON_USEDEP}] )
+ portage? ( sys-apps/portage[${PYTHON_USEDEP}] )
+ keyring? ( dev-python/keyring[${PYTHON_USEDEP}] )
+ mysql? ( dev-python/mysql-python[${PYTHON_USEDEP}] )
+ redis? ( dev-python/redis-py[${PYTHON_USEDEP}] )
+ selinux? ( sec-policy/selinux-salt )
+ timelib? ( dev-python/timelib[${PYTHON_USEDEP}] )
+ nova? ( >=dev-python/python-novaclient-2.17.0[${PYTHON_USEDEP}] )
+ neutron? ( >=dev-python/python-neutronclient-2.3.6[${PYTHON_USEDEP}] )
+ gnupg? ( dev-python/python-gnupg[${PYTHON_USEDEP}] )
+ profile? ( dev-python/yappi[${PYTHON_USEDEP}] )
+ vim-syntax? ( app-vim/salt-vim )"
+DEPEND="dev-python/setuptools[${PYTHON_USEDEP}]
+ test? (
+ dev-python/psutil[${PYTHON_USEDEP}]
+ dev-python/pip[${PYTHON_USEDEP}]
+ dev-python/virtualenv[${PYTHON_USEDEP}]
+ dev-python/mock[${PYTHON_USEDEP}]
+ dev-python/timelib[${PYTHON_USEDEP}]
+ >=dev-python/boto-2.32.1[${PYTHON_USEDEP}]
+ !x86? ( dev-python/boto3[${PYTHON_USEDEP}] )
+ >=dev-python/moto-0.3.6[${PYTHON_USEDEP}]
+ >=dev-python/SaltTesting-2016.5.11[${PYTHON_USEDEP}]
+ >=dev-python/libcloud-0.14.0[${PYTHON_USEDEP}]
+ ${RDEPEND}
+ )"
+
+DOCS=( README.rst AUTHORS )
+
+REQUIRED_USE="|| ( raet zeromq )"
+RESTRICT="x86? ( test )"
+
+python_prepare() {
+ # this test fails because it trys to "pip install distribute"
+ rm tests/unit/{modules,states}/zcbuildout_test.py \
+ tests/unit/modules/{rh_ip,win_network}_test.py || die
+
+ # apparently libcloud does not know about this?
+ rm tests/unit/cloud/clouds/dimensiondata_test.py || die
+
+ # seriously? "ValueError: Missing (or not readable) key file: '/home/dany/PRIVKEY.pem'"
+ rm tests/unit/cloud/clouds/gce_test.py || die
+}
+
+python_install_all() {
+ local svc
+ USE_SETUPTOOLS=1 distutils-r1_python_install_all
+
+ for svc in minion master syndic api; do
+ newinitd "${FILESDIR}"/${svc}-initd-4 salt-${svc}
+ newconfd "${FILESDIR}"/${svc}-confd-1 salt-${svc}
+ systemd_dounit "${FILESDIR}"/salt-${svc}.service
+ done
+
+ insinto /etc/${PN}
+ doins -r conf/*
+}
+
+python_test() {
+ local tempdir
+ # testsuite likes lots of files
+ ulimit -n 3072 || die
+
+ # ${T} is too long a path for the tests to work
+ tempdir="$(mktemp -dup /tmp salt-XXX)"
+ mkdir "${T}/$(basename "${tempdir}")"
+
+ (
+ cleanup() { rm -f "${tempdir}"; }
+ trap cleanup EXIT
+
+ addwrite "${tempdir}"
+ ln -s "$(realpath --relative-to=/tmp "${T}/$(basename "${tempdir}")")" "${tempdir}"
+
+ USE_SETUPTOOLS=1 SHELL="/bin/bash" \
+ TMPDIR="${tempdir}" \
+ ${EPYTHON} tests/runtests.py \
+ --unit-tests --no-report --verbose
+
+ ) || die "testing failed"
+}