gdm: forked without systemd. It requires pambase-20120417 unstable

This commit is contained in:
Anton Bolshakov 2012-12-31 01:03:56 +00:00
parent 0cfae47a34
commit 9357d88567
38 changed files with 2185 additions and 1 deletions

38
gnome-base/gdm/Manifest Normal file
View file

@ -0,0 +1,38 @@
AUX 3.4.1/gdm 319 SHA256 57021a48618c55cd480427d5ada4354c220a1e0ad0804ebda80c564eefd38b1d SHA512 4bbf59e4b574e18377c4117432148b94bdd64a528bf0d458d4760ca59bce1c578c34ce84273d7d932cd586df442af0c21751b4cdafab5edddc7e9bcf56bbe070 WHIRLPOOL 5c66dc7cf423cf43965c7a27251cb05a502d28bae213b2d96d04f53273a00b61e855db207a2bd7d79a728d863676e3eb507a2582892a7efd914c8f3a1ef4c687
AUX 3.4.1/gdm-autologin 414 SHA256 5117c25a1061762b4fce93152e3a78ed1c4591ec5f94470e083d613ef3b32150 SHA512 d06c11052f6f91635b6844e79855eca18159626a6bd9a946d3d0808db4c00eb65474673135e8ace69ad362276b836b4bb977ad3c8d8c618f85e07dc431810255 WHIRLPOOL 9ad673664fdc057f7baf33333fee72e925e1de68d9c51d992cea78b03c950833e48b8cb104f0357c1fb17abce7ed0134a8fc24d4fc23ab11cb567f5b630a9def
AUX 3.4.1/gdm-fingerprint 511 SHA256 3bff94f262fa009a6c21788424385abcfe3c8ecba985d00d8ca3ba4f30d86db7 SHA512 cbdd4449a408b6c076c5c3ecb2617e4cbc182b8ea8738dbecdb9161965efccfcccfdcdae30d895c192db066f96bf305555eacbd95b1d4bb4b974d82bf95cb92f WHIRLPOOL 7d2ef0808ffed889a7bb69ad577f57c0ff18ea4a8f1ae1dc5a6d0999062ad3237a7c77af0e054939c1ff1e513a260a961daf4e907702d677c2bf8d73deb13d80
AUX 3.4.1/gdm-password 319 SHA256 57021a48618c55cd480427d5ada4354c220a1e0ad0804ebda80c564eefd38b1d SHA512 4bbf59e4b574e18377c4117432148b94bdd64a528bf0d458d4760ca59bce1c578c34ce84273d7d932cd586df442af0c21751b4cdafab5edddc7e9bcf56bbe070 WHIRLPOOL 5c66dc7cf423cf43965c7a27251cb05a502d28bae213b2d96d04f53273a00b61e855db207a2bd7d79a728d863676e3eb507a2582892a7efd914c8f3a1ef4c687
AUX 3.4.1/gdm-smartcard 618 SHA256 6965339bb299862b99413f780f282feeb88856a4d0a3232aabbc1b7728a8d18f SHA512 7f9eb071822fa9c5706eb28b91561dda19f5e5d2a3ea8c3f27a88d3585703b09ca6f4f6cb91089685bc50ebb12ec4f47288b92c98d42cc02bc66ab6e2acd3e30 WHIRLPOOL f3ddd173d2a9d5221ce86de5c2f5b9b7ebff5534ca9c16703e22c7da74d0871ef423995e16a58c6da571445a10939ea87f6d2d518c0465cc1db1d65e88710b52
AUX 3.4.1/gdm-welcome 455 SHA256 8638df6a4e80b1c1797208f964cbd1aa33cf799181c2a9b65b79d7809102f771 SHA512 243796ea51c07884a9311a4f29919de688fc8ecd21b2246ce90b2dd5fcf347e9ebad87cf17f323b2e53fb907bbb78db13a47437e3a843bd1fe4d8b1617128a53 WHIRLPOOL 24827c3d068206a1b9b4d5ca64a9d67e71a9a9fbda0f84a23c63f8fd19e155a020150f9e94e7578406ae368d4d1f0230608c98f5a66e9540335c01b37ef3ec65
AUX 3.4.1/gdm.service 202 SHA256 21b105f56bc90178e05806583e3be5e74857c02ec6443318669f9ab6f947bb79 SHA512 9e9ecca31504da1115519d590c25d474333a483dab9343043f0906b45cadbf7f947354227841be7a33577815653dd6a4d7e24a4e2f36e58ff760a82fc433aec6 WHIRLPOOL 54dd6ceba3d46129b0201fb35983f4ab846cff77ae4cb49bde9c11d78587c2389bae34676136921fdcb2280af3b1e30d7f58899a394341930dea681194cbb1a4
AUX 49-keychain 181 SHA256 d73e07847bfa6ac69938aa309f5c137d4c36248cedf9834db1315ba1b2b87140 SHA512 72b9a7d0a9dc17c4f51795b665a1a8db035a3423b35769fa68c8c471e76d9ab698d1841c3e354efdafe6167e8358b018028268d7a17d0750bdcc55cbfe481290 WHIRLPOOL 4ab8099ea4f66e2935a930ea9d8ab9202732689206ee2b57eb3946692622bb4cd56f5429d40a28b7d2beaf1c2261610462f96a7362fcae2e5548da23396a2a61
AUX 49-keychain-r1 193 SHA256 32e0b028eb6d1189fc82d72ef62661de78c491bcfa099e7ac652d6b4daa1598d SHA512 32a6d72de9b6b7bfbac0a563fc8710576419e6d989fe48da294b92b197722059ee0e46672d5df2833cd1a7dacf5ae4ebc31b12b605416fd25a0924c35e505d21 WHIRLPOOL dd8f9249e2f1c1c60131e1c030bfa4a8c251cfba083d55847273ac906bbfb27576ac29e4039c70269592667024b8a4871060139717796eed0edd3a341edbc4e0
AUX 50-ssh-agent 243 SHA256 f0790148b975ef1e7a37ffe8f5d90f943746f0a3bcf9d7fad8500219e2114042 SHA512 b955253fcb58ccd2cb7d0c30eba01f240821a1ee12751975407dbd3331d54460c75654c5d1931b6245b03ce7966d660cdd627c2b6f0f41aceeed97173d9e3195 WHIRLPOOL 7c93297c37ca66ebf34dc1515e2033c75af80a43f1ac69ebb842256927b2719c42117f661a79a673f079e0974cefd73affd9e376189488905238506eccee1753
AUX 50-ssh-agent-r1 255 SHA256 bd91721bdccb7b1eb403c368caa6e9b84dcd75ddf89946db329ec42f9a8e7a8b SHA512 85c8eca948646508ecc52a30a15b94c626196037ab65b4d797df472df34c714aacf800261902febda5b7bc051bff29efc9fff474a0c029838881b7f8704b13ba WHIRLPOOL d4dc95afb4ef97e2a6365df27cbf8b2a3533d63471b52d5e54fc52247638701eea65fda0f339fa184919c1f8b386cff32e444e8a856bf1741aad23dd24b808de
AUX gdm-2.13.0.1-selinux-remove-attr.patch 908 SHA256 40074297200e3424a1baeb483d7fc50d9846a0c74ce46d72845090647d28d14b SHA512 d50cd2f1f2700c7feb9c7e887497581c8bd3d57760032974ef7cc361784de0a8998629aa8f993e60cd0027bf182187115c14b0b710954d15e58463ccb37e3d9d WHIRLPOOL 65cc7d5c8a52884d35882c7246ec323fcbc1f9c33d3aef8c289fed1cba40e39785c532f7326d423c39e329995e80099382569ecff6803da30c7e8571afea8bd7
AUX gdm-2.20.10-custom-session.patch 1105 SHA256 58d09e131375f993e46088078993953ea2fedc87ed9deafbfa35eb7f4e731e67 SHA512 6d127ed622372ad5e8eca88abf3ffd374b0b6afff33a77ad62bca7f8f4a3582ff9237e35217048da62249b2e2313267b281aab2fb5cd5593b188ace421c7f754 WHIRLPOOL 94f99868c9db380beda18bd6b283bdd35a87c9769c14c99138fd3fa2fd060b18591e5e80fe0e6387085ad77801ad384611a9c5076740f49da84d05a94cab519f
AUX gdm-2.20.10-desktop-session-dmrc-autologin.patch 873 SHA256 57f8e88acaf45b0cb84d80bb672dddf8e71a5152e9bff8216ff76d15b1e7dfcf SHA512 0dc69cf2e2ea41b4e200d681885263b596a053670a0d02b0035c4765a78e41cf776c16ce985aedd60ab76a5f5342d2cb08f1c7b401f588780e23169ca2fb9b61 WHIRLPOOL 5db6ce48d43c707ec1eaa1190e1ff46e0dd75be4633e135838647c9d6ecbf61ed3e3b5c07244b98dd51f07beb559e8a37d2b70da92d190ba45cc428c49f4223f
AUX gdm-2.20.10-gdmsetup-24hr-combo.patch 1108 SHA256 558de681677fd631619dd90aba2b3fe99e783d051d706c536b85268eae40f19c SHA512 916ef335a7cb7121eb4c6446a85c36a6892830ae8fd3f3668e0c43b67f731830c1604046865b842d4850effcf8d1179b73b85db7420464bbda16885ff40a6751 WHIRLPOOL 3e8600a80f74b214e685aef2c0f293e61873ad04eb82060de03f5bd12a344916ab7f38fb852377ca36b87daf1b884025e3389822edd87e0239cd745fd2eb4f70
AUX gdm-2.20.10-xinitrc-ssh-agent.patch 704 SHA256 59b0150159776a200c6041290f672f367b4a56f8adc5218d74a271a376c7cfe1 SHA512 c54fa3a3ec762290138e28b6b52f95ca765c7e279f6c3538f90e2df61dc6f7d45bc970a0f6f1a543c87404e8e094fd889a2ec6d3cd7ae0f651a5643fef1c725a WHIRLPOOL 646aa42795546b5131e56996fc38a4b49c963e4e85c76e410dd7f75b4945aade7b13d3f4200db1e57f656c78ae0c5684778f3f244c6a515571ffd1a3c8e1dc56
AUX gdm-2.20.2-gksu.patch 544 SHA256 3c7dabba9904d1ae382989099e03938c47eb2ce882f50d8fae9164a573bddb4d SHA512 6fcb5681a47f9bb0aa248e9c0dba27ccc7820ac56e8d1bb4621652a8bd759981899d24c08bd0546a1c4937c664e5d82e101da9900938198a9a0d1a9349891877 WHIRLPOOL 655d16026cf3dfe3a5e7c0007c7e80fa996b5afe6f5704a5326e40540b049c348caa70b7c4e681e5bbeafc28160142be0abb73015905e42a202a9a5f322fe06a
AUX gdm-2.20.9-parallel-make.patch 1499 SHA256 c8d04d1cae1c2bac16bf3f41fd481eacf5f4a3962f661996f93da39d4161bb0d SHA512 3ba30cdc5c9c665dc1000923d7fe61b2a4bf1ea9b5e8b88d07ed30e4ae28afa529894177e57fb032ec37b0a8ecc426a5f6acc4a6d2b1a973abf0ace50b17a8f3 WHIRLPOOL 7bf3163f549d498ded4f36a0a7f38b48819a676c0ac314286f920ee25e056a128c843b1df683edc2ceb3e8e947ca420f3fea1eb1d43519b2147aa5d262851c06
AUX gdm-2.32.0-automagic-libxklavier-support.patch 2069 SHA256 91fdd46ab5ad1b4071cb798499ddd98bee47c67961906d1db0ee47cd4919fac5 SHA512 81628b88ae7c773e8965ab5b6ffe8aa40c6fa59e0389bfbebf69c3af66e79e8850d6b762d515ff2ab1993ded29fec23cbc3b69513f32575c3bbfbfe8c95551b5 WHIRLPOOL 9f12d3c3290545c3cbde6582e5bea216c94d5a88cfa153cbabf08475e9b3ca4683262479fa56baf0ce0102f8cca898d69f38c4550251f570b6ba92e29d9d991c
AUX gdm-2.32.0-custom-session.patch 1317 SHA256 3f79b0355225669dd791527a50d5bd0f7ceca850a8eab7bb32f52d609b10eed6 SHA512 625eb4e98f5f753e20c8bace386a465483e079bd866c0cd309194f04af21b48b6c8f3405feb23fb2a93181824ad3f6f6d75c7b049c13532386be28dbcc53cf50 WHIRLPOOL 2014140c9793592fb51c1bc115da1390a9dd74cd2e07ef8fba70feba1e51971035968d2defda6f3be2150e3a983613c1b456a08f642b15dee4f122135cda06d0
AUX gdm-2.32.0-fix-daemonize-regression.patch 4048 SHA256 e95e1ebfcfe2c896130e4925fa6f23911bcfe4db27e2a6788229538c6bb2a59d SHA512 4b2e894096dcffb14fabcd4d7e8909bace087edb00077db0041d579311e1515e34ba88c416c2f933312f94cc6e376253970e5ab7751be2fa499719928f58b895 WHIRLPOOL ef70bdf111fd0cafe2d33889dfdbfaa70ea769c10d89e2319bdefa592f3290c4b3645a278f9ff10848c8fc2e6d0b895430078f453faeed9330d88072345fa393
AUX gdm-2.32.0-fix-vt-problems.patch 6156 SHA256 12da81b8085d76ce3099f1af0ec588c07c3f020f341f825683f4855c9303731e SHA512 cc31f51c3eaa51b9ceac21c66a61e5d59b1c07e7dc2166fe4c3abfc4eccbdd4b43605c0e936d003aaf337de599d1dcbc00726c9d63d4f682636b02e111237d63 WHIRLPOOL f0bec91b5decdb784d79d3d101acfeb5adfa794da938e49f3e84d0a78134e968fcd1ed6d13d3f9889055c5afb0f5db2257d20f2af33098f2ea7cf0acf889e458
AUX gdm-2.32.0-selinux-remove-attr.patch 851 SHA256 ad13d4b1253dca7d5ac362bcce9f5861c2830a3df32e5370a5a0d975c32ec258 SHA512 9dfd2a4076d8a379558bb2077ea3f1096056ca02753b4a23917924773f0c485ab1dd40a716b14be100e6f7a5d4fe6a9fadc5ce02c696db37055f8df5b0b7638e WHIRLPOOL db29685959f09d66261fa47b926b4eadc24d91ef3b63e295bca73c1520bc7bf513939dbd60cfbd143ba03cefcce2559498f756928c7e7f2652960ba9ef54daee
AUX gdm-2.32.0-xinitrc-ssh-agent.patch 863 SHA256 71231d08baf41ee7b91c33c3d8a731c078d1d29328e09223efb1f579bacdaffe SHA512 3d7e841c018044ab1fd9804ad57ae75ece0ed2f9a9731023e90a1b25099bff5375c73ac842e353b38328f95f5baf59b84e4859a54f47176da0443aed6b58e3b3 WHIRLPOOL 56302e13dd104ae7f19dabc443403c25ef7a69428934e3d8ce0432442845dfd03854576a2b426b307954f9fc17e7ef846992a210054c7cc0e744450a7e5743a4
AUX gdm-3.2.1.1-custom-session.patch 1317 SHA256 75bd1bdc0d396fee71ff41c2657f922a4c8e290c891cc72f47647ab832d0c285 SHA512 474f839febcebd86449e21ecd7557b599889af7b070b305afcd3c008164de2fc2d42749a4f06e7e405e27671da49a32291468b2940d1d15f05cb1088fb7f42f9 WHIRLPOOL 2310fd849c3a87eab5e78b482f74fb4b97a93b49bc4ecd60197054eadaaad35a6bc73500c246368c031e4646c3effd555233fe5a0cf17e99d81ab4b62e7215e4
AUX gdm-3.2.1.1-disable-accessibility.patch 1637 SHA256 60ef48cf07dab78c3f09e5e57cd9138398cfe1d5de4b17408d3c08da58239932 SHA512 7f1794e0560ab8fed659537e829734837cc83a9228e184247ec83446746e9cdc2cbff968c3dfb5c4a7e1c95c3ec7773383d6d9e5f713b3062ede4060b1551a9d WHIRLPOOL af978790c9d86aa096ee0355a848165f51bb9bd75fc8a36232ce00cc7cc14583e3532c222ba46bc5c7e1f753afdf5f1b2a54056c0ed6807dc402e62f0725b6c3
AUX gdm-3.2.1.1-pam-fix-1.patch 5032 SHA256 3109179ed53fac5b6cd0465b5d940421d95cb303942a641e7d388f621a15ce81 SHA512 77d2ed965ab875f29bbf84b0e39f1f31c01f4b24268a245c330ec94bb3f7bdb433cb67c38ee299f7f7e1fef6336330b9a61de3ff1896f292acf4915955250223 WHIRLPOOL 4bd25d9604ff464b15a9ada9e578c301adf5c5adb30bb23724debcccfc3884369781fd5d4c8afb7b039e2a1fd33d8bf7b738027c911f06402dd791dbb51fbc2f
AUX gdm-3.2.1.1-pam-fix-2.patch 1127 SHA256 6a8857ec7a748ca17a2e3ae99df79f1bd59d501b23d60a44761b92fda490ae02 SHA512 804f3d982f6a88c086729b758d1e3ce227306ca29ac468314165d2e20a3067c31547db6cbcc8ad53bbb62cffb808771849ec437388d6932ad518c2ad6cb88a14 WHIRLPOOL b625c9611fb2ee47fc2301802f4e2284da34784ceefcf5b7a16e09335eac7fd8940b57df99975a185dc6e7a0bfaaf35b4e18a330a7d8cdc18ac6de6647869e51
AUX gdm-3.3.92.1-disable-accessibility.patch 779 SHA256 a32bddeb5e57086df41b9db433152ae290a405d23c39f0ff497d61544f343528 SHA512 c735d9e9e34ed89d49623ca327da9667b3d17473bf8c77dc5fd59ee409d92f0eca0c9dd534673283dee0dbc0316a48b3c7f8f648393fa3add49c7a8e1e5e0ff1 WHIRLPOOL 564d708047fc81f092cd695f5a8cbf2017e9568afdb32996738256d0616e68dc80448a363619a9681a54e12239e25bcf5f1df4a07d47654edb371fab4a98462d
AUX gdm-3.4.1-dconf-0.13.patch 647 SHA256 4a6a4266e624ed89ba2267ff16e7d026e5129a8329cb336d91ac844cfd17d9d9 SHA512 8a8e052df1dfb41b6c999453cf6db81e0f76a85a519e848ae1a009b1bc150e8be42ca65f81699f37e5faa8b13064f1c3907ea92d4c1139987efb877177a05cb4 WHIRLPOOL 373da58b9f66869eb5491b004cbec67b351d9b28a3732e04cd80e1c7add0230f8c93597075ea54f4679dd973f82b3d424e41da8a5e20fee6ec4323911ae818e3
AUX gdm-3.4.1-plymouth.patch 10434 SHA256 22de460e0b1b659299f0afc8cd3a0e23e7da7b12a63e8317a43cb88b3342f718 SHA512 83f4e853d251fbc5f1ba4cc61eda4fd0cae1cd2f018d06f052f1dc8da75207ee413907fe7aef153b65493c95893070bb1f3fe90efa58d10f839a7c01152f8a95 WHIRLPOOL 9a1579e834ea1d63e8eb02b94501de477c09212cb73bc3439ae80ff97257621f0bda0da509a83e8419c32e8616e467264ee14a0cdec8f6bd89e8c90561e5469e
AUX gdm-3.4.1-save-root-window.patch 5010 SHA256 1472af09a3ca0ac1657130e1104e36c11dbd31a67f7600c9bde41d969b919b65 SHA512 f699f5fd345283813558c4637bbb19c6bec8857d785ab11b2752d02d4b0ac9bf67b682b7afbf252e8eaa81943f7d68b320ab65d0206afea825c0a5841dfb7fca WHIRLPOOL fbd6d27f92d60bb060e4b06f2a95ce88561a4b1dcd4a3c2d70a9485c8371599458bfe4b1ce8c9d92f7929d1fa0b61c934a936e079f81a5a9042aca08f8a7a683
AUX gdm-3.6.0-fix-daemonize-regression.patch 6639 SHA256 6ff6eeba681dc73ae77058ba6ad1ecb292af843189a83071b96b1d84fbe887e9 SHA512 5de1e38b447e1dce933b004951366c701707a35c990fa35c84959753b32326e93be7fde073abc51e5bf439b5fd4277adce5f3ab190a7aac3d65211d84411f06a WHIRLPOOL f6a5db38a750d47375f69088765dd9e653dc4a70750a542e660ce7c876cc30f61e05e332250e5daf0f9d50c512791eac18cc69585c42aa5decb206b2ee7b361d
AUX gdm-3.6.0-selinux-automagic.patch 909 SHA256 9b1a3c5913e53f30641dc1177d396060c81abcfff6d8e9acc738e4d19e396580 SHA512 68a6fa710862bde6479b9e35f66d5b65c5cf90df462d8f318ad06ad04fd2106376915250d8b09a6ca0716fab78aedc619e41de6f2c93e57449442a7613fe575b WHIRLPOOL a5ca1901f52be902cb6896759a3ce92f2298782d80ca6c6a023a3fd7a6cea8884f93af7cbc85788fd24166f4bf5da1c357b2056d3d6141fb5540273b9dd63a5a
AUX gdm-3.6.2-gdm-slave.xml-unicode.patch 792 SHA256 4e53f08356b9fbc0669bfe15df848d92b845244604a329ed4cfe753c94691990 SHA512 4f856ffeb3e9b720be24fdb2f231a3245b4fea2a503cfc74b5ebbf77418ae6c6cf377568f53da053efe42304e0bad9add2dc5d7a0571ed3152fb0ad0c16a9019 WHIRLPOOL 59fbab49f7420236a2a3a34f5b700b2b6306235d6f60b383886cdbd01f05153dc2c06a102c0baad8ed350ffdcaad7a1ba448abb2ac6d77a7e759c541f63f3b14
DIST gdm-3.4.1.tar.xz 1615612 SHA256 6292968dff5fc89877b5e1aaa3c7d1484dd3ed2d4f388e935841d053439be665 SHA512 0c3692a6008d8576319dc9d40411f36e0d04481809b342a84a88407b0d342cc234db01b21103a8e87fbbe0703d280e86444f0923e8df02f0642c59fe5c95ffed WHIRLPOOL 315d07e510303330e0e530c901ff9ac078254ebc9c2c406e573819672854073721736770caf63d31892c230beb9dcd5220985b0a53a464400a8154277ce97f23
DIST gdm-gentoo-2012.09.25.tar.xz 1448 SHA256 f5978e4309e5486be41fec437a6e538dbfca3451757f3282a557941c4e70700d SHA512 c9d1a4699c34ce8708a4e7eed1b38d66ead507a4a2a6b45f2ef6254d54b46c755c9195db0593d6aa6785a8986e2ef5235592071c0cae8c1c8963951ecdb7c079 WHIRLPOOL c0efd131977b0036431b9edd6932025247323f198dc1bd7195efb55d31fd6b106ebdf391944b0009cf7a3261e99160fa6041a26348fe020badf26d0785f5dcc8
EBUILD gdm-3.4.1-r3.ebuild 8645 SHA256 74686355a86af1c9cd9b2c99e544cd36fea93c416a16c51c9e00e2405d1446e3 SHA512 cb30a703f606b279932aaa004d753cc1dbb641fb82bbaef320f89433897241bf3589f7580f03a35e03f04e940c297b3f9509fc08872e1b6c88268d8d072b3dbc WHIRLPOOL d13003622168bde1cbca190cb21443e8a57383d79163a5d9bf3e22bfb389fc43dd2c69c2925b7a1167cdbc543f5e1906a3bf96a9b10490e7a9befa777564a4b5

View file

@ -0,0 +1,12 @@
#%PAM-1.0
auth optional pam_env.so
auth include system-login
auth required pam_nologin.so
account include system-login
password include system-login
session include system-auth
#Systemd=-session optional pam_systemd.so
#Keyring=session optional pam_gnome_keyring.so auto_start

View file

@ -0,0 +1,11 @@
#%PAM-1.0
auth optional pam_env.so
auth required pam_nologin.so
auth required pam_permit.so
account include system-login
password include system-login
session include system-auth
#Systemd=-session optional pam_systemd.so
# For the keyring to unlock with autologin, you need to set an empty
# password on the keyring.
#Keyring=session optional pam_gnome_keyring.so auto_start

View file

@ -0,0 +1,15 @@
#%PAM-1.0
# Note: no pam_gnome_keyring.so support since the login password is not used
auth optional pam_env.so
auth required pam_tally2.so onerr=succeed
auth required pam_shells.so
auth required pam_nologin.so
auth required pam_fprintd.so
auth optional pam_permit.so
account include system-login
password required pam_deny.so
session include system-auth
#Systemd=-session optional pam_systemd.so

View file

@ -0,0 +1,12 @@
#%PAM-1.0
auth optional pam_env.so
auth include system-login
auth required pam_nologin.so
account include system-login
password include system-login
session include system-auth
#Systemd=-session optional pam_systemd.so
#Keyring=session optional pam_gnome_keyring.so auto_start

View file

@ -0,0 +1,16 @@
#%PAM-1.0
auth optional pam_env.so
auth required pam_tally2.so onerr=succeed
auth required pam_shells.so
auth required pam_nologin.so
auth [success=done ignore=ignore default=die] pam_pkcs11.so wait_for_card card_only
auth optional pam_permit.so
account include system-login
password optional pam_pkcs11.so
password required pam_cracklib.so difok=2 minlen=8 dcredit=2 ocredit=2 retry=3
password optional pam_permit.so
session include system-auth
#Systemd=-session optional pam_systemd.so

View file

@ -0,0 +1,11 @@
#%PAM-1.0
auth required pam_env.so
# Allows greeter to list ldap users; bug #430740
#LDAP=-auth sufficient pam_ldap.so try_first_pass ignore_authinfo_unavail
auth required pam_permit.so
account required pam_nologin.so
account include system-services
password include system-services
session required pam_loginuid.so
session optional pam_keyinit.so force revoke
session include system-services

View file

@ -0,0 +1,11 @@
[Unit]
Description=GNOME Display Manager
After=systemd-user-sessions.service
[Service]
ExecStart=/usr/bin/gdm --nodaemon
Type=dbus
BusName=org.gnome.DisplayManager
[Install]
WantedBy=graphical.target

View file

@ -0,0 +1,9 @@
#!/bin/bash
# source keychain variables
keychain="`which keychain`"
if [ -n "$keychain" ] && [ -x "$keychain" ] && [ -f "$HOME/.bash_profile" ]
then
. "${HOME}/.bash_profile"
fi

View file

@ -0,0 +1,9 @@
#!/bin/bash
# source keychain variables
keychain="`which keychain 2>/dev/null`"
if [ -n "$keychain" ] && [ -x "$keychain" ] && [ -f "$HOME/.bash_profile" ]
then
. "${HOME}/.bash_profile"
fi

View file

@ -0,0 +1,10 @@
#!/bin/sh
# add ssh-agent if found
sshagent="`which ssh-agent`"
if [ -n "$sshagent" ] && [ -x "$sshagent" ] && [ -z "$SSH_AUTH_SOCK" ]; then
command="$sshagent -- $command"
elif [ -z "$sshagent" ] ; then
echo "$0: ssh-agent not found!"
fi

View file

@ -0,0 +1,10 @@
#!/bin/sh
# add ssh-agent if found
sshagent="`which ssh-agent 2>/dev/null`"
if [ -n "$sshagent" ] && [ -x "$sshagent" ] && [ -z "$SSH_AUTH_SOCK" ]; then
command="$sshagent -- $command"
elif [ -z "$sshagent" ] ; then
echo "$0: ssh-agent not found!"
fi

View file

@ -0,0 +1,24 @@
diff --exclude-from=/home/dang/.diffrc -u -ruN gdm-2.13.0.1.orig/configure gdm-2.13.0.1/configure
--- gdm-2.13.0.1.orig/configure 2005-11-14 17:34:33.000000000 -0500
+++ gdm-2.13.0.1/configure 2005-11-18 14:59:31.000000000 -0500
@@ -31700,7 +31700,7 @@
#define HAVE_SELINUX 1
_ACEOF
- EXTRA_DAEMON_LIBS="$EXTRA_DAEMON_LIBS -lselinux -lattr"
+ EXTRA_DAEMON_LIBS="$EXTRA_DAEMON_LIBS -lselinux"
fi
#
diff --exclude-from=/home/dang/.diffrc -u -ruN gdm-2.13.0.1.orig/configure.ac gdm-2.13.0.1/configure.ac
--- gdm-2.13.0.1.orig/configure.ac 2005-11-14 17:13:40.000000000 -0500
+++ gdm-2.13.0.1/configure.ac 2005-11-18 14:59:23.000000000 -0500
@@ -750,7 +750,7 @@
AC_CHECK_LIB(selinux,setexeccon,/bin/true)
AC_CHECK_LIB(selinux,is_selinux_enabled,/bin/true)
AC_DEFINE(HAVE_SELINUX)
- EXTRA_DAEMON_LIBS="$EXTRA_DAEMON_LIBS -lselinux -lattr"
+ EXTRA_DAEMON_LIBS="$EXTRA_DAEMON_LIBS -lselinux"
fi
#

View file

@ -0,0 +1,42 @@
---
fix custom sessions (see bug #216984, work done by Gilles, I'm just committing)
config/Xsession.in | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
Index: b/config/Xsession.in
===================================================================
--- a/config/Xsession.in
+++ b/config/Xsession.in
@@ -177,15 +177,6 @@ if [ -n "$GDM_LANG" ]; then
fi
fi
-# run all system xinitrc shell scripts.
-if [ -d /etc/X11/xinit/xinitrc.d ]; then
- for i in /etc/X11/xinit/xinitrc.d/* ; do
- if [ -x "$i" ]; then
- . "$i"
- fi
- done
-fi
-
if [ "x$command" = "xcustom" ] ; then
if [ -x "$HOME/.xsession" ]; then
command="$HOME/.xsession"
@@ -213,6 +204,15 @@ if [ "x$command" = "xdefault" ] ; then
fi
fi
+# run all system xinitrc shell scripts.
+if [ -d /etc/X11/xinit/xinitrc.d ]; then
+ for i in /etc/X11/xinit/xinitrc.d/* ; do
+ if [ -x "$i" ]; then
+ . "$i"
+ fi
+ done
+fi
+
# add ssh-agent if found
sshagent="`gdmwhich ssh-agent`"
if [ -n "$sshagent" ] && [ -x "$sshagent" ] && [ -z "$SSH_AUTH_SOCK" ]; then

View file

@ -0,0 +1,34 @@
Author: Fabio Erculiani <lxnay@sabayonlinux.org>
Date: Fri, 08 Aug 2009 09:19 +0000
Subject: Fix DESTOP_SESSION when dmrc is empty and autologin enabled.
---
daemon/slave.c | 8 ++++----
1 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/daemon/slave.c b/daemon/slave.c
index b52774d..ced9567 100644
--- a/daemon/slave.c
+++ b/daemon/slave.c
@@ -4638,10 +4638,6 @@ gdm_slave_session_start (void)
language = g_strdup (usrlang);
}
- tmp = gdm_strip_extension (session, ".desktop");
- g_free (session);
- session = tmp;
-
if (ve_string_empty (session)) {
g_free (session);
session = find_a_session ();
@@ -4651,6 +4647,10 @@ gdm_slave_session_start (void)
}
}
+ tmp = gdm_strip_extension (session, ".desktop");
+ g_free (session);
+ session = tmp;
+
if G_LIKELY (ve_string_empty (language)) {
g_free (language);
language = NULL;

View file

@ -0,0 +1,22 @@
#
# Ubuntu: https://bugs.edge.launchpad.net/ubuntu/+source/gdm/+bug/256283
# Description: Fix 24 hour combo box in gdmsetup
#
Index: gdm-2.20.10/gui/gdmsetup.c
===================================================================
--- gdm-2.20.10.orig/gui/gdmsetup.c 2009-04-03 14:17:35.000000000 +1100
+++ gdm-2.20.10/gui/gdmsetup.c 2009-04-03 14:17:45.000000000 +1100
@@ -1529,11 +1529,11 @@
val = gdm_config_get_string ((gchar *)key);
if (new_val) {
- if (strcmp (_(new_val), _("auto"))) {
+ if (strcmp (_(new_val), _("auto")) == 0) {
if (strcasecmp (ve_sure_string (val), "auto") != 0)
gdm_setup_config_set_string (key, "auto");
}
- else if (strcmp (_(new_val), _("yes"))) {
+ else if (strcmp (_(new_val), _("yes")) == 0) {
if (strcasecmp (ve_sure_string (val), "true") != 0 &&
strcasecmp (ve_sure_string (val), "yes") != 0)
gdm_setup_config_set_string (key, "true");

View file

@ -0,0 +1,26 @@
---
ssh-agent really needs to be handled by xinitrc like other agents.
Gentoo bug: 220603
config/Xsession.in | 8 --------
1 file changed, 8 deletions(-)
Index: b/config/Xsession.in
===================================================================
--- a/config/Xsession.in
+++ b/config/Xsession.in
@@ -213,14 +213,6 @@ if [ -d /etc/X11/xinit/xinitrc.d ]; then
done
fi
-# add ssh-agent if found
-sshagent="`gdmwhich ssh-agent`"
-if [ -n "$sshagent" ] && [ -x "$sshagent" ] && [ -z "$SSH_AUTH_SOCK" ]; then
- command="$sshagent -- $command"
-elif [ -z "$sshagent" ] ; then
- echo "$0: ssh-agent not found!"
-fi
-
echo "$0: Setup done, will execute: $command"
eval exec $command

View file

@ -0,0 +1,12 @@
diff --exclude-from=/home/dang/.scripts/diffrc -up -ruN gdm-2.20.2.orig/gui/gdmsetup.desktop.in.in gdm-2.20.2/gui/gdmsetup.desktop.in.in
--- gdm-2.20.2.orig/gui/gdmsetup.desktop.in.in 2007-11-26 18:11:04.000000000 -0500
+++ gdm-2.20.2/gui/gdmsetup.desktop.in.in 2007-11-29 11:40:38.000000000 -0500
@@ -3,7 +3,7 @@ Encoding=UTF-8
_Name=Login Window
_Comment=Configure GDM login window appearance and behavior
TryExec=@sbindir@/gdmsetup
-Exec=@sbindir@/gdmsetup
+Exec=gksu @sbindir@/gdmsetup
Icon=gdmsetup
StartupNotify=true
Terminal=false

View file

@ -0,0 +1,42 @@
--- a/gui/Makefile.am 2009-01-04 16:51:19.000000000 +0100
+++ b/gui/Makefile.am 2009-01-04 16:52:10.000000000 +0100
@@ -263,7 +263,7 @@
Gladedir = $(datadir)/gdm
Glade_DATA = gdmsetup.glade gdmchooser.glade gdmphotosetup.glade
-install-data-local:
+install-data-hook:
-test -z "$(DESTDIR)$(bindir)/gdmXnest" || rm -f $(DESTDIR)$(bindir)/gdmXnest
$(LN_S) -f gdmXnestchooser $(DESTDIR)$(bindir)/gdmXnest
--- a/gui/Makefile.in 2009-01-04 16:51:39.000000000 +0100
+++ b/gui/Makefile.in 2009-01-04 16:52:52.000000000 +0100
@@ -1222,7 +1225,9 @@
info-am:
install-data-am: install-GladeDATA install-SettingsDATA \
- install-SystemDATA install-data-local
+ install-SystemDATA
+ @$(NORMAL_INSTALL)
+ $(MAKE) $(AM_MAKEFLAGS) install-data-hook
install-dvi: install-dvi-recursive
@@ -1275,7 +1280,7 @@
html-am info info-am install install-GladeDATA \
install-SettingsDATA install-SystemDATA install-am \
install-binPROGRAMS install-data install-data-am \
- install-data-local install-dvi install-dvi-am install-exec \
+ install-data-hook install-dvi install-dvi-am install-exec \
install-exec-am install-html install-html-am install-info \
install-info-am install-libexecPROGRAMS install-man \
install-pdf install-pdf-am install-ps install-ps-am \
@@ -1295,7 +1300,7 @@
@INTLTOOL_DESKTOP_RULE@
-install-data-local:
+install-data-hook:
-test -z "$(DESTDIR)$(bindir)/gdmXnest" || rm -f $(DESTDIR)$(bindir)/gdmXnest
$(LN_S) -f gdmXnestchooser $(DESTDIR)$(bindir)/gdmXnest

View file

@ -0,0 +1,60 @@
From 481fe43b653b443ecfa8d4f3aa88d734d17cccd5 Mon Sep 17 00:00:00 2001
From: Gilles Dartiguelongue <eva@gentoo.org>
Date: Tue, 2 Nov 2010 23:21:27 +0100
Subject: [PATCH 6/6] fix libxklavier automagic support
libxklavier support is optional, make that fact explicit.
---
configure.ac | 28 +++++++++++++++++++---------
1 files changed, 19 insertions(+), 9 deletions(-)
diff --git a/configure.ac b/configure.ac
index 71d0247..10dbb72 100644
--- a/configure.ac
+++ b/configure.ac
@@ -129,17 +129,26 @@ SIMPLE_GREETER_LIBS="$SIMPLE_GREETER_LIBS -lm"
AC_SUBST(SIMPLE_GREETER_CFLAGS)
AC_SUBST(SIMPLE_GREETER_LIBS)
-PKG_CHECK_MODULES(LIBXKLAVIER,
- libxklavier >= $LIBXKLAVIER_REQUIRED_VERSION,
- have_libxklavier=yes,
- have_libxklavier=no)
-if test "x$have_libxklavier" = "xyes" ; then
- AC_DEFINE(HAVE_LIBXKLAVIER, [], [Define if we have libxklavier])
+AC_ARG_ENABLE([libxklavier],
+ AS_HELP_STRING([--enable-libxklavier],
+ [Enable libxklavier support @<:@default=yes@:>@]),
+ enable_libxklavier=$enableval,
+ enable_libxklavier=yes)
+have_libxklavier=no
+if test "x$enable_libxklavier" = "xyes"; then
+ PKG_CHECK_MODULES(LIBXKLAVIER,
+ libxklavier >= $LIBXKLAVIER_REQUIRED_VERSION,
+ have_libxklavier=yes,
+ have_libxklavier=no)
+ if test "x$have_libxklavier" = "xyes" ; then
+ AC_DEFINE(HAVE_LIBXKLAVIER, [], [Define if we have libxklavier])
+ fi
+ AC_SUBST(HAVE_LIBXKLAVIER)
+ AC_SUBST(LIBXKLAVIER_CFLAGS)
+ AC_SUBST(LIBXKLAVIER_LIBS)
fi
+
AM_CONDITIONAL(HAVE_LIBXKLAVIER, test x$have_libxklavier = xyes)
-AC_SUBST(HAVE_LIBXKLAVIER)
-AC_SUBST(LIBXKLAVIER_CFLAGS)
-AC_SUBST(LIBXKLAVIER_LIBS)
PKG_CHECK_MODULES(SIMPLE_CHOOSER,
dbus-glib-1 >= $DBUS_GLIB_REQUIRED_VERSION
@@ -1467,5 +1476,6 @@ echo \
SELinux support: ${with_selinux}
ConsoleKit support: ${use_console_kit}
UPower support: ${have_upower}
+ Libxklavier support: ${have_libxklavier}
Build with RBAC: ${msg_rbac_shutdown}
"
--
1.7.3.1

View file

@ -0,0 +1,51 @@
From 2dc0d268c7cc5d6133a9594adcd67dc543288b8f Mon Sep 17 00:00:00 2001
From: Gilles Dartiguelongue <eva@gentoo.org>
Date: Tue, 2 Nov 2010 23:19:07 +0100
Subject: [PATCH 4/6] make custom session work
Gentoo bug: #216984
fix custom sessions not doing sourcing in the proper order.
---
data/Xsession.in | 18 +++++++++---------
1 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/data/Xsession.in b/data/Xsession.in
index b2d98f2..0da187d 100755
--- a/data/Xsession.in
+++ b/data/Xsession.in
@@ -153,15 +153,6 @@ if [ -n "$GDM_LANG" ]; then
export LANG
fi
-# run all system xinitrc shell scripts.
-if [ -d /etc/X11/xinit/xinitrc.d ]; then
- for i in /etc/X11/xinit/xinitrc.d/* ; do
- if [ -x "$i" -a ! -d "$i" ]; then
- . "$i"
- fi
- done
-fi
-
if [ "x$command" = "xcustom" ] ; then
if [ -x "$HOME/.xsession" ]; then
command="$HOME/.xsession"
@@ -189,6 +180,15 @@ if [ "x$command" = "xdefault" ] ; then
fi
fi
+# run all system xinitrc shell scripts.
+if [ -d /etc/X11/xinit/xinitrc.d ]; then
+ for i in /etc/X11/xinit/xinitrc.d/* ; do
+ if [ -x "$i" ]; then
+ . "$i"
+ fi
+ done
+fi
+
# add ssh-agent if found
sshagent="`gdmwhich ssh-agent`"
if [ -n "$sshagent" ] && [ -x "$sshagent" ] && [ -z "$SSH_AUTH_SOCK" ]; then
--
1.7.3.1

View file

@ -0,0 +1,126 @@
From 7f5104b242e6b36e6143183b14582d362763ff2a Mon Sep 17 00:00:00 2001
From: Gilles Dartiguelongue <eva@gentoo.org>
Date: Tue, 2 Nov 2010 23:16:51 +0100
Subject: [PATCH 2/6] daemonize so that the boot process can continue
Gentoo bug: #236701
Originally from: Dan Nicholson <dbn.lists@gmail.com>
Fork gdm-binary, except when -nodaemon is used
gdm-binary now forks and the parent terminates, except when the
-nodaemon or --nodaemon options are used. This provides compatibility
with xdm. Fixes bug #550170.
---
daemon/main.c | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 64 insertions(+), 0 deletions(-)
diff --git a/daemon/main.c b/daemon/main.c
index 5b8d66b..191b6e3 100644
--- a/daemon/main.c
+++ b/daemon/main.c
@@ -513,6 +513,56 @@ is_debug_set (void)
return debug;
}
+static void
+dup_dev_null (int fd, int flags)
+{
+ int nullfd;
+ int dupfd;
+
+ VE_IGNORE_EINTR (nullfd = open ("/dev/null", flags));
+ if (G_UNLIKELY (nullfd < 0)) {
+ gdm_fail (_("Cannot open /dev/null: %s!"),
+ strerror (errno));
+ exit (EXIT_FAILURE);
+ }
+
+ VE_IGNORE_EINTR (dupfd = dup2 (nullfd, fd));
+ if (G_UNLIKELY (dupfd < 0)) {
+ gdm_fail (_("Cannot duplicate /dev/null: %s!"),
+ strerror (errno));
+ exit (EXIT_FAILURE);
+ }
+
+ VE_IGNORE_EINTR (close (nullfd));
+}
+
+static void
+daemonify (void)
+{
+ pid_t pid;
+
+ pid = fork ();
+
+ /* terminate the parent */
+ if (pid > 0)
+ exit (EXIT_SUCCESS);
+
+ if (G_UNLIKELY (pid < 0)) {
+ gdm_fail (_("fork () failed: %s!"), strerror (errno));
+ exit (EXIT_FAILURE);
+ }
+
+ if (G_UNLIKELY (setsid () < 0)) {
+ gdm_fail (_("setsid () failed: %s!"), strerror (errno));
+ exit (EXIT_FAILURE);
+ }
+
+ /* reopen stdin, stdout, stderr with /dev/null */
+ dup_dev_null (STDIN_FILENO, O_RDONLY);
+ dup_dev_null (STDOUT_FILENO, O_RDWR);
+ dup_dev_null (STDERR_FILENO, O_RDWR);
+}
+
int
main (int argc,
char **argv)
@@ -523,14 +573,17 @@ main (int argc,
DBusGConnection *connection;
GError *error;
int ret;
+ int i;
gboolean res;
gboolean xdmcp_enabled;
GdmSignalHandler *signal_handler;
static gboolean do_timed_exit = FALSE;
static gboolean print_version = FALSE;
static gboolean fatal_warnings = FALSE;
+ static gboolean no_daemon = FALSE;
static GOptionEntry entries [] = {
{ "fatal-warnings", 0, 0, G_OPTION_ARG_NONE, &fatal_warnings, N_("Make all warnings fatal"), NULL },
+ { "nodaemon", 0, 0, G_OPTION_ARG_NONE, &no_daemon, N_("Do not fork into the background"), NULL },
{ "timed-exit", 0, 0, G_OPTION_ARG_NONE, &do_timed_exit, N_("Exit after a time (for debugging)"), NULL },
{ "version", 0, 0, G_OPTION_ARG_NONE, &print_version, N_("Print GDM version"), NULL },
@@ -547,6 +600,14 @@ main (int argc,
g_type_init ();
+ /* preprocess the arguments to support the xdm style
+ * -nodaemon option
+ */
+ for (i = 0; i < argc; i++) {
+ if (strcmp (argv[i], "-nodaemon") == 0)
+ argv[i] = "--nodaemon";
+ }
+
context = g_option_context_new (_("GNOME Display Manager"));
g_option_context_add_main_entries (context, entries, NULL);
g_option_context_set_ignore_unknown_options (context, TRUE);
@@ -617,6 +678,9 @@ main (int argc,
exit (-1);
}
+ if (no_daemon == FALSE)
+ daemonify ();
+
/* pid file */
delete_pid ();
write_pid ();
--
1.7.3.1

View file

@ -0,0 +1,195 @@
From 64002e623fea54ab10040206d164c5fdee4a43d2 Mon Sep 17 00:00:00 2001
From: Nirbheek Chauhan <nirbheek@gentoo.org>
Date: Fri, 15 Apr 2011 22:13:44 +0530
Subject: [PATCH] Fix VT grab race with getty causing X to grab the wrong VT
On bootup, if X is spawned without any args, it'll take up the first unused VT.
If GDM starts up before gettys are spawned, X takes up VT1 or VT2 depending on
the init system and bootsplash.
This is problematic because afterwards getty will come up underneath X, and
cause keyboard problems and eventually crash X.
So we read /etc/inittab, check for open VTs, compare the two values, and take
the conservative one.
---
configure.ac | 4 ++
daemon/Makefile.am | 1 +
daemon/gdm-server.c | 106 ++++++++++++++++++++++++++++++++++++++++++++++++++-
3 files changed, 110 insertions(+), 1 deletions(-)
diff --git a/configure.ac b/configure.ac
index ca0f8bb..b9e7462 100644
--- a/configure.ac
+++ b/configure.ac
@@ -302,6 +302,10 @@ AC_CHECK_TYPE(socklen_t,,
AC_CHECK_HEADERS(sys/sockio.h)
AC_CHECK_FUNCS([setresuid setenv unsetenv clearenv])
+dnl Needed for querying the kernel for free VTs
+AC_CHECK_HEADERS(sys/vt.h)
+AC_CHECK_HEADERS(sys/ioctl.h)
+
dnl checks needed for Darwin compatibility to linux **environ.
AC_CHECK_HEADERS(crt_externs.h)
AC_CHECK_FUNCS(_NSGetEnviron)
diff --git a/daemon/Makefile.am b/daemon/Makefile.am
index da18835..c1b6bda 100644
--- a/daemon/Makefile.am
+++ b/daemon/Makefile.am
@@ -14,6 +14,7 @@ AM_CPPFLAGS = \
-DLIBEXECDIR=\"$(libexecdir)\" \
-DLOGDIR=\"$(logdir)\" \
-DSBINDIR=\"$(sbindir)\" \
+ -DSYSCONFDIR=\""$(sysconfdir)"\" \
-DGNOMELOCALEDIR=\""$(datadir)/locale"\" \
-DGDM_XAUTH_DIR=\"$(GDM_XAUTH_DIR)\" \
-DGDM_SCREENSHOT_DIR=\"$(GDM_SCREENSHOT_DIR)\" \
diff --git a/daemon/gdm-server.c b/daemon/gdm-server.c
index 339f3cc..29d16dc 100644
--- a/daemon/gdm-server.c
+++ b/daemon/gdm-server.c
@@ -26,6 +26,8 @@
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
+#include <sys/ioctl.h>
+#include <sys/vt.h>
#include <sys/wait.h>
#include <errno.h>
#include <ctype.h>
@@ -42,6 +44,7 @@
#include <glib/gi18n.h>
#include <glib/gstdio.h>
#include <glib-object.h>
+#include <gio/gio.h>
#include <X11/Xlib.h> /* for Display */
@@ -54,6 +57,8 @@ extern char **environ;
#define GDM_SERVER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GDM_TYPE_SERVER, GdmServerPrivate))
+#define INITTAB SYSCONFDIR"/inittab"
+
/* These are the servstat values, also used as server
* process exit codes */
#define SERVER_TIMEOUT 2 /* Server didn't start */
@@ -674,6 +679,105 @@ gdm_server_spawn (GdmServer *server,
}
/**
+ * Parse the inittab file used by getty to spawn VTs to find unused ttys
+ */
+static int
+get_free_vt_from_inittab ()
+{
+ GFile *gfile;
+ GFileInputStream *contents;
+ GDataInputStream *dstream;
+ GRegex *getty;
+ GMatchInfo *tty_match = NULL;
+ GSList *tty_list = NULL;
+ GError *error = NULL;
+ gchar *temp = NULL;
+ int vtno = 0;
+
+ gfile = g_file_new_for_path (INITTAB);
+ contents = g_file_read (gfile, NULL, &error);
+ g_object_unref (gfile);
+ if (!contents) {
+ if (error) {
+ g_debug ("Unable to open file %s", INITTAB);
+ g_error_free (error);
+ }
+ goto out;
+ }
+
+ dstream = g_data_input_stream_new (G_INPUT_STREAM (contents));
+ getty = g_regex_new ("^c[0-9]+:.+getty.+tty([0-9]+)", 0, 0, NULL);
+ g_object_unref (contents);
+
+ while (1) {
+ temp = g_data_input_stream_read_line (dstream, NULL, NULL, &error);
+ if (!temp)
+ break;
+ if (!g_regex_match (getty, temp, 0, &tty_match))
+ continue;
+ g_free (temp);
+ temp = g_match_info_fetch (tty_match, 1);
+ if (!temp)
+ continue;
+ tty_list = g_slist_insert_sorted (tty_list, temp, (GCompareFunc)g_strcmp0);
+ g_match_info_free (tty_match);
+ }
+
+ if (error) {
+ g_debug ("Unable to read line from %s", INITTAB);
+ g_error_free (error);
+ goto free;
+ }
+
+ /* Ignore holes in vt allocation, just take the last one */
+ temp = g_slist_last (tty_list)->data;
+ if (temp)
+ vtno = (int) g_ascii_strtoull (temp, NULL, 10) + 1;
+
+free:
+ g_object_unref (dstream);
+ g_regex_unref (getty);
+ g_slist_free_full (tty_list, g_free);
+ g_free (error);
+out:
+ return vtno;
+}
+
+/**
+ * Query the VT_* kernel ioctls to find an empty tty
+ */
+static int
+get_free_vt_from_kernel()
+{
+ int fd, vtno = 0;
+
+ fd = open ("/dev/tty0", O_WRONLY, 0);
+ if ((ioctl(fd, VT_OPENQRY, &vtno) < 0) || (vtno == -1)) {
+ vtno = 0;
+ g_debug ("Unable to find a free vt, falling back to Xorg autodetect");
+ }
+ return vtno;
+}
+
+static gchar*
+get_free_vt ()
+{
+ int inittab_vtno, kernel_vtno;
+ gchar* vt = NULL;
+
+ inittab_vtno = get_free_vt_from_inittab();
+ if (inittab_vtno > 0)
+ g_debug ("Inittab says vt%i is free\n", inittab_vtno);
+ kernel_vtno = get_free_vt_from_kernel();
+ if (kernel_vtno > 0)
+ g_debug ("Kernel says vt%i is free\n", kernel_vtno);
+ /* Select the greater of the two because getty will use the others */
+ if (kernel_vtno != 0 && inittab_vtno != 0)
+ vt = g_strdup_printf ("vt%i", kernel_vtno > inittab_vtno ? kernel_vtno : inittab_vtno);
+ return vt;
+}
+
+/**
* gdm_server_start:
* @disp: Pointer to a GdmDisplay structure
*
@@ -686,7 +790,7 @@ gdm_server_start (GdmServer *server)
gboolean res;
/* fork X server process */
- res = gdm_server_spawn (server, NULL);
+ res = gdm_server_spawn (server, get_free_vt());
return res;
}
--
1.7.3.4

View file

@ -0,0 +1,27 @@
From 41badd6d2ca652a875fec3eea420ae876023076d Mon Sep 17 00:00:00 2001
From: Gilles Dartiguelongue <eva@gentoo.org>
Date: Tue, 2 Nov 2010 23:15:54 +0100
Subject: [PATCH 1/6] remove unneeded linker directive for selinux
Gentoo bug: #41022
---
configure.ac | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/configure.ac b/configure.ac
index ed07dce..71d0247 100644
--- a/configure.ac
+++ b/configure.ac
@@ -873,7 +873,7 @@ if test "x$with_selinux" = "xyes" ; then
AC_CHECK_LIB(selinux,setexeccon,/bin/true)
AC_CHECK_LIB(selinux,is_selinux_enabled,/bin/true)
AC_DEFINE(HAVE_SELINUX, 1, [Define if have selinux])
- EXTRA_DAEMON_LIBS="$EXTRA_DAEMON_LIBS -lselinux -lattr"
+ EXTRA_DAEMON_LIBS="$EXTRA_DAEMON_LIBS -lselinux"
fi
dnl ---------------------------------------------------------------------------
--
1.7.3.1

View file

@ -0,0 +1,32 @@
From 1cb1841da3a8fedc1671637e2828d5e361af21fa Mon Sep 17 00:00:00 2001
From: Gilles Dartiguelongue <eva@gentoo.org>
Date: Tue, 2 Nov 2010 23:19:31 +0100
Subject: [PATCH 5/6] ssh-agent handling must be done at xinitrc.d
Gentoo bug: #220603
---
data/Xsession.in | 8 --------
1 files changed, 0 insertions(+), 8 deletions(-)
diff --git a/data/Xsession.in b/data/Xsession.in
index 0da187d..aa49b90 100755
--- a/data/Xsession.in
+++ b/data/Xsession.in
@@ -189,14 +189,6 @@ if [ -d /etc/X11/xinit/xinitrc.d ]; then
done
fi
-# add ssh-agent if found
-sshagent="`gdmwhich ssh-agent`"
-if [ -n "$sshagent" ] && [ -x "$sshagent" ] && [ -z "$SSH_AUTH_SOCK" ]; then
- command="$sshagent -- $command"
-elif [ -z "$sshagent" ] ; then
- echo "$0: ssh-agent not found!"
-fi
-
echo "$0: Setup done, will execute: $command"
eval exec $command
--
1.7.3.1

View file

@ -0,0 +1,51 @@
From b96c19976b6876648fd91949f78f06cf5d269b18 Mon Sep 17 00:00:00 2001
From: Gilles Dartiguelongue <eva@gentoo.org>
Date: Tue, 2 Nov 2010 23:19:07 +0100
Subject: [PATCH] make custom session work
Gentoo bug: #216984
fix custom sessions not doing sourcing in the proper order.
---
data/Xsession.in | 18 +++++++++---------
1 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/data/Xsession.in b/data/Xsession.in
index 118518c..201be92 100755
--- a/data/Xsession.in
+++ b/data/Xsession.in
@@ -155,15 +155,6 @@ fi
xhost +si:localuser:`id -un` || :
-# run all system xinitrc shell scripts.
-if [ -d /etc/X11/xinit/xinitrc.d ]; then
- for i in /etc/X11/xinit/xinitrc.d/* ; do
- if [ -x "$i" -a ! -d "$i" ]; then
- . "$i"
- fi
- done
-fi
-
if [ "x$command" = "xcustom" ] ; then
if [ -x "$HOME/.xsession" ]; then
command="$HOME/.xsession"
@@ -191,6 +182,15 @@ if [ "x$command" = "xdefault" ] ; then
fi
fi
+# run all system xinitrc shell scripts.
+if [ -d /etc/X11/xinit/xinitrc.d ]; then
+ for i in /etc/X11/xinit/xinitrc.d/* ; do
+ if [ -x "$i" -a ! -d "$i" ]; then
+ . "$i"
+ fi
+ done
+fi
+
# add ssh-agent if found
sshagent="`gdmwhich ssh-agent`"
if [ -n "$sshagent" ] && [ -x "$sshagent" ] && [ -z "$SSH_AUTH_SOCK" ]; then
--
1.7.7

View file

@ -0,0 +1,65 @@
From 91bd106c72362e51fbfa6966bc71dd0bb12d479d Mon Sep 17 00:00:00 2001
From: Alexandre Rostovtsev <tetromino@gmail.com>
Date: Wed, 14 Sep 2011 22:09:56 -0400
Subject: [PATCH] Disable a11y in gconf and gsettings defaults
---
data/00-upstream-settings | 6 +++---
data/session-setup.entries | 4 ++--
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/data/00-upstream-settings b/data/00-upstream-settings
index 1511b7b..87410cb 100644
--- a/data/00-upstream-settings
+++ b/data/00-upstream-settings
@@ -7,7 +7,7 @@
#
[org/gnome/desktop/a11y/keyboard]
-enable=true
+enable=false
[org/gnome/desktop/background]
show-desktop-icons=false
@@ -16,7 +16,7 @@ show-desktop-icons=false
exec='/bin/true'
[org/gnome/desktop/interface]
-toolkit-accessibility=true
+toolkit-accessibility=false
[org/gnome/desktop/lockdown]
disable-application-handlers=true
@@ -35,7 +35,7 @@ session-name='gdm-shell'
event-sounds=true
[org/gnome/settings-daemon/plugins/a11y-keyboard]
-active=true
+active=false
[org/gnome/settings-daemon/plugins/a11y-settings]
active=false
diff --git a/data/session-setup.entries b/data/session-setup.entries
index b84e16f..a47d761 100644
--- a/data/session-setup.entries
+++ b/data/session-setup.entries
@@ -406,14 +406,14 @@
<entry>
<key>/desktop/gnome/interface/accessibility</key>
<value>
- <bool>true</bool>
+ <bool>false</bool>
</value>
</entry>
<entry>
<key>/desktop/gnome/accessibility/keyboard/enable</key>
<value>
- <bool>true</bool>
+ <bool>false</bool>
</value>
</entry>
--
1.7.7

View file

@ -0,0 +1,126 @@
From 9c354795892b8c5fd661a35653991a88fabc76bf Mon Sep 17 00:00:00 2001
From: Ray Strode <rstrode@redhat.com>
Date: Mon, 24 Oct 2011 16:39:45 -0400
Subject: [PATCH] daemon: Don't emit session-exited when non-authenticated
worker fails
Sometimes PAM modules are finicky and don't die when you tell them to.
Instead they fail some seconds later.
If a user successfully logs in with one stack and another stack is
being troublesome, then we'll get notified about it finishing up
after the user is already logged in.
When that happens, we erroneously assume the stack finishing is the
stack the user's session is running on and then proceed to log the
user out.
This commit makes us be a little more careful about our bookkeeping
so we can ignore failures from slow PAM modules.
---
daemon/gdm-session-direct.c | 23 ++++++++++++++---------
1 files changed, 14 insertions(+), 9 deletions(-)
diff --git a/daemon/gdm-session-direct.c b/daemon/gdm-session-direct.c
index e178985..bb2bff8 100644
--- a/daemon/gdm-session-direct.c
+++ b/daemon/gdm-session-direct.c
@@ -91,10 +91,11 @@ struct _GdmSessionDirectPrivate
GHashTable *conversations;
+ GdmSessionConversation *session_conversation;
+
GList *pending_connections;
GPid session_pid;
- guint32 is_running : 1;
/* object lifetime scope */
char *id;
@@ -1073,7 +1074,7 @@ gdm_session_direct_handle_session_started (GdmSessionDirect *session,
pid);
session->priv->session_pid = pid;
- session->priv->is_running = TRUE;
+ session->priv->session_conversation = conversation;
_gdm_session_session_started (GDM_SESSION (session), conversation->service_name, pid);
@@ -1129,7 +1130,7 @@ gdm_session_direct_handle_session_exited (GdmSessionDirect *session,
g_debug ("GdmSessionDirect: Emitting 'session-exited' signal with exit code '%d'",
code);
- session->priv->is_running = FALSE;
+ session->priv->session_conversation = NULL;
_gdm_session_session_exited (GDM_SESSION (session), code);
return DBUS_HANDLER_RESULT_HANDLED;
@@ -1158,7 +1159,7 @@ gdm_session_direct_handle_session_died (GdmSessionDirect *session,
g_debug ("GdmSessionDirect: Emitting 'session-died' signal with signal number '%d'",
code);
- session->priv->is_running = FALSE;
+ session->priv->session_conversation = NULL;
_gdm_session_session_died (GDM_SESSION (session), code);
return DBUS_HANDLER_RESULT_HANDLED;
@@ -1790,7 +1791,7 @@ worker_exited (GdmSessionWorkerJob *job,
g_debug ("GdmSessionDirect: Worker job exited: %d", code);
g_object_ref (conversation->job);
- if (conversation->session->priv->is_running) {
+ if (conversation->session->priv->session_conversation == conversation) {
_gdm_session_session_exited (GDM_SESSION (conversation->session), code);
}
@@ -1819,7 +1820,7 @@ worker_died (GdmSessionWorkerJob *job,
g_debug ("GdmSessionDirect: Worker job died: %d", signum);
g_object_ref (conversation->job);
- if (conversation->session->priv->is_running) {
+ if (conversation->session->priv->session_conversation == conversation) {
_gdm_session_session_died (GDM_SESSION (conversation->session), signum);
}
@@ -2442,6 +2443,10 @@ stop_all_other_conversations (GdmSessionDirect *session,
g_strdup (conversation_to_keep->service_name),
conversation_to_keep);
}
+
+ if (session->priv->session_conversation != conversation_to_keep) {
+ session->priv->session_conversation = NULL;
+ }
}
}
@@ -2456,7 +2461,7 @@ gdm_session_direct_start_session (GdmSession *session,
char *program;
g_return_if_fail (session != NULL);
- g_return_if_fail (impl->priv->is_running == FALSE);
+ g_return_if_fail (impl->priv->session_conversation == NULL);
conversation = find_conversation_by_name (impl, service_name);
@@ -2504,7 +2509,7 @@ gdm_session_direct_close (GdmSession *session)
g_debug ("GdmSessionDirect: Closing session");
- if (impl->priv->is_running) {
+ if (impl->priv->session_conversation != NULL) {
gdm_session_record_logout (impl->priv->session_pid,
impl->priv->selected_user,
impl->priv->display_hostname,
@@ -2540,7 +2545,7 @@ gdm_session_direct_close (GdmSession *session)
g_hash_table_remove_all (impl->priv->environment);
impl->priv->session_pid = -1;
- impl->priv->is_running = FALSE;
+ impl->priv->session_conversation = NULL;
}
static void
--
1.7.8.1

View file

@ -0,0 +1,27 @@
From 9c874ee6f595906faf59f891f20492530888804b Mon Sep 17 00:00:00 2001
From: Ray Strode <rstrode@redhat.com>
Date: Mon, 24 Oct 2011 16:45:46 -0400
Subject: [PATCH] worker: don't block SIGTERM
If the slave tells us to go away, we should go away,
not wait a PAM module decides to let us get back to the
main loop.
---
daemon/session-worker-main.c | 1 -
1 files changed, 0 insertions(+), 1 deletions(-)
diff --git a/daemon/session-worker-main.c b/daemon/session-worker-main.c
index 9d40b8d..42fcd52 100644
--- a/daemon/session-worker-main.c
+++ b/daemon/session-worker-main.c
@@ -188,7 +188,6 @@ main (int argc,
gdm_signal_handler_set_fatal_func (signal_handler,
(GDestroyNotify)g_main_loop_quit,
main_loop);
- gdm_signal_handler_add (signal_handler, SIGTERM, signal_cb, NULL);
gdm_signal_handler_add (signal_handler, SIGINT, signal_cb, NULL);
gdm_signal_handler_add (signal_handler, SIGILL, signal_cb, NULL);
gdm_signal_handler_add (signal_handler, SIGBUS, signal_cb, NULL);
--
1.7.8.1

View file

@ -0,0 +1,30 @@
diff -Naur gdm-3.3.92.1//data/00-upstream-settings gdm-3.3.92.1.new//data/00-upstream-settings
--- gdm-3.3.92.1//data/00-upstream-settings 2012-02-08 04:50:32.000000000 +0530
+++ gdm-3.3.92.1.new//data/00-upstream-settings 2012-03-25 14:24:01.387842352 +0530
@@ -7,7 +7,7 @@
#
[org/gnome/desktop/a11y/keyboard]
-enable=true
+enable=false
[org/gnome/desktop/background]
show-desktop-icons=false
@@ -16,7 +16,7 @@
exec='/bin/true'
[org/gnome/desktop/interface]
-toolkit-accessibility=true
+toolkit-accessibility=false
[org/gnome/desktop/lockdown]
disable-application-handlers=true
@@ -35,7 +35,7 @@
event-sounds=true
[org/gnome/settings-daemon/plugins/a11y-keyboard]
-active=true
+active=false
[org/gnome/settings-daemon/plugins/a11y-settings]
active=false

View file

@ -0,0 +1,24 @@
From c0ad2d5b85b063bd7cb5dd2153f0755f4ebe3efb Mon Sep 17 00:00:00 2001
From: Matthias Clasen <mclasen@redhat.com>
Date: Thu, 19 Jul 2012 08:23:29 -0400
Subject: [PATCH] Update the syntax of the dconf profile file
We were using a deprecated syntax which stopped working in
dconf 0.13.4 - without warning :-(. See
http://live.gnome.org/dconf/SystemAdministrators
---
data/dconf-profile | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/data/dconf-profile b/data/dconf-profile
index d5a90e5..68deb5a 100644
--- a/data/dconf-profile
+++ b/data/dconf-profile
@@ -1,2 +1,2 @@
-user
-gdm
+user-db:user
+systemd-db:gdm
--
1.7.12

View file

@ -0,0 +1,338 @@
From c56fbb65277e8a17db5e0939f0b02e41c4ec784c Mon Sep 17 00:00:00 2001
From: Ray Strode <rstrode@redhat.com>
Date: Fri, 27 Nov 2009 18:52:54 -0500
Subject: [PATCH] daemon: enable smooth transition between plymouth and X
This commit adds optional support for interacting with plymouth
from gdm. This feature can be enabled by passing --with-plymouth
to configure.
Hopefully, this will enable the various distributions that use
plymouth to drop a patch.
https://bugzilla.gnome.org/show_bug.cgi?id=572173
---
configure.ac | 32 +++++++++++++
daemon/gdm-server.c | 60 +++++++++++++++++++++++++
daemon/gdm-server.h | 3 +
daemon/gdm-simple-slave.c | 106 ++++++++++++++++++++++++++++++++++++++++++++-
4 files changed, 200 insertions(+), 1 deletions(-)
diff --git a/configure.ac b/configure.ac
index 35e6e04..81ea23e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -264,6 +264,10 @@ AC_ARG_WITH(systemd,
AS_HELP_STRING([--with-systemd],
[Add systemd support @<:@default=auto@:>@]),
[with_systemd=$withval], [with_systemd=auto])
+AC_ARG_WITH(plymouth,
+ AS_HELP_STRING([--with-plymouth],
+ [Add plymouth support @<:@default=auto@:>@]),
+ [with_plymouth=$withval], [with_plymouth=auto])
AC_ARG_WITH(at-spi-registryd-directory,
AS_HELP_STRING([--with-at-spi-registryd-directory],
@@ -952,6 +956,33 @@ AC_SUBST(SYSTEMD_X_SERVER)
AC_DEFINE_UNQUOTED(SYSTEMD_X_SERVER,"$SYSTEMD_X_SERVER",[Path to systemd X server wrapper])
dnl ---------------------------------------------------------------------------
+dnl - Check for plymouth support
+dnl ---------------------------------------------------------------------------
+PKG_CHECK_MODULES(PLYMOUTH,
+ [ply-boot-client],
+ [have_plymouth=yes], [have_plymouth=no])
+
+if test "x$with_plymouth" = "xauto" ; then
+ if test x$have_plymouth = xno ; then
+ use_plymouth=no
+ else
+ use_plymouth=yes
+ fi
+else
+ use_plymouth="$with_plymouth"
+fi
+
+if test "x$use_plymouth" != "xno" ; then
+ if test "x$have_plymouth" = "xno"; then
+ AC_MSG_ERROR([Plymouth support explicitly required, but plymouth not found])
+ fi
+
+ AC_DEFINE(WITH_PLYMOUTH, 1, [Define to enable plymouth support])
+fi
+AC_SUBST(PLYMOUTH_CFLAGS)
+AC_SUBST(PLYMOUTH_LIBS)
+
+dnl ---------------------------------------------------------------------------
dnl - Check for D-Bus
dnl ---------------------------------------------------------------------------
@@ -1537,6 +1568,7 @@ echo \
SELinux support: ${with_selinux}
ConsoleKit support: ${use_console_kit}
systemd support: ${use_systemd}
+ plymouth support: ${use_plymouth}
UPower support: ${have_upower}
Build with RBAC: ${msg_rbac_shutdown}
"
diff --git a/daemon/gdm-server.c b/daemon/gdm-server.c
index d0d8ff9..6f2a939 100644
--- a/daemon/gdm-server.c
+++ b/daemon/gdm-server.c
@@ -32,6 +32,7 @@
#include <pwd.h>
#include <grp.h>
#include <signal.h>
+#include <sys/ioctl.h>
#include <sys/resource.h>
#ifdef HAVE_SYS_PRCTL_H
@@ -42,6 +43,10 @@
#include <systemd/sd-daemon.h>
#endif
+#ifdef WITH_PLYMOUTH
+#include <linux/vt.h>
+#endif
+
#include <glib.h>
#include <glib/gi18n.h>
#include <glib/gstdio.h>
@@ -751,6 +756,61 @@ gdm_server_spawn (GdmServer *server,
return ret;
}
+#ifdef WITH_PLYMOUTH
+static int
+get_active_vt (void)
+{
+ int console_fd;
+ struct vt_stat console_state = { 0 };
+
+ console_fd = open ("/dev/tty0", O_RDONLY | O_NOCTTY);
+
+ if (console_fd < 0) {
+ goto out;
+ }
+
+ if (ioctl (console_fd, VT_GETSTATE, &console_state) < 0) {
+ goto out;
+ }
+
+out:
+ if (console_fd >= 0) {
+ close (console_fd);
+ }
+
+ return console_state.v_active;
+}
+
+static char *
+get_active_vt_as_string (void)
+{
+ int vt;
+
+ vt = get_active_vt ();
+
+ if (vt <= 0) {
+ return NULL;
+ }
+
+ return g_strdup_printf ("vt%d", vt);
+}
+
+gboolean
+gdm_server_start_on_active_vt (GdmServer *server)
+{
+ gboolean res;
+ char *vt;
+
+ g_free (server->priv->command);
+ server->priv->command = g_strdup (X_SERVER " -background none -logverbose 7");
+ vt = get_active_vt_as_string ();
+ res = gdm_server_spawn (server, vt);
+ g_free (vt);
+
+ return res;
+}
+#endif
+
/**
* gdm_server_start:
* @disp: Pointer to a GdmDisplay structure
diff --git a/daemon/gdm-server.h b/daemon/gdm-server.h
index b53d68e..827f7fa 100644
--- a/daemon/gdm-server.h
+++ b/daemon/gdm-server.h
@@ -57,6 +57,9 @@ GdmServer * gdm_server_new (const char *display_id,
const char *seat_id,
const char *auth_file);
gboolean gdm_server_start (GdmServer *server);
+#ifdef HAVE_PLYMOUTH
+gboolean gdm_server_start_on_active_vt (GdmServer *server);
+#endif
gboolean gdm_server_stop (GdmServer *server);
char * gdm_server_get_display_device (GdmServer *server);
diff --git a/daemon/gdm-simple-slave.c b/daemon/gdm-simple-slave.c
index fc8649c..7c709a6 100644
--- a/daemon/gdm-simple-slave.c
+++ b/daemon/gdm-simple-slave.c
@@ -93,6 +93,9 @@ struct GdmSimpleSlavePrivate
#ifdef HAVE_LOGINDEVPERM
gboolean use_logindevperm;
#endif
+#ifdef WITH_PLYMOUTH
+ guint plymouth_is_running : 1;
+#endif
};
enum {
@@ -1204,6 +1207,74 @@ on_start_session_later (GdmGreeterServer *session,
slave->priv->start_session_when_ready = FALSE;
}
+#ifdef WITH_PLYMOUTH
+static gboolean
+plymouth_is_running (void)
+{
+ int status;
+ gboolean res;
+ GError *error;
+
+ error = NULL;
+ res = g_spawn_command_line_sync ("/bin/plymouth --ping",
+ NULL, NULL, &status, &error);
+ if (! res) {
+ g_debug ("Could not ping plymouth: %s", error->message);
+ g_error_free (error);
+ return FALSE;
+ }
+
+ return WIFEXITED (status) && WEXITSTATUS (status) == 0;
+}
+
+static void
+plymouth_prepare_for_transition (GdmSimpleSlave *slave)
+{
+ gboolean res;
+ GError *error;
+
+ error = NULL;
+ res = g_spawn_command_line_sync ("/bin/plymouth deactivate",
+ NULL, NULL, NULL, &error);
+ if (! res) {
+ g_warning ("Could not deactivate plymouth: %s", error->message);
+ g_error_free (error);
+ }
+}
+
+static void
+plymouth_quit_with_transition (GdmSimpleSlave *slave)
+{
+ gboolean res;
+ GError *error;
+
+ error = NULL;
+ res = g_spawn_command_line_sync ("/bin/plymouth quit --retain-splash",
+ NULL, NULL, NULL, &error);
+ if (! res) {
+ g_warning ("Could not quit plymouth: %s", error->message);
+ g_error_free (error);
+ }
+ slave->priv->plymouth_is_running = FALSE;
+}
+
+static void
+plymouth_quit_without_transition (GdmSimpleSlave *slave)
+{
+ gboolean res;
+ GError *error;
+
+ error = NULL;
+ res = g_spawn_command_line_sync ("/bin/plymouth quit",
+ NULL, NULL, NULL, &error);
+ if (! res) {
+ g_warning ("Could not quit plymouth: %s", error->message);
+ g_error_free (error);
+ }
+ slave->priv->plymouth_is_running = FALSE;
+}
+#endif
+
static void
setup_server (GdmSimpleSlave *slave)
{
@@ -1223,6 +1294,12 @@ setup_server (GdmSimpleSlave *slave)
*/
gdm_slave_save_root_windows (GDM_SLAVE (slave));
+#ifdef WITH_PLYMOUTH
+ /* Plymouth is waiting for the go-ahead to exit */
+ if (slave->priv->plymouth_is_running) {
+ plymouth_quit_with_transition (slave);
+ }
+#endif
}
static void
@@ -1426,6 +1503,12 @@ on_server_exited (GdmServer *server,
g_debug ("GdmSimpleSlave: server exited with code %d\n", exit_code);
gdm_slave_stopped (GDM_SLAVE (slave));
+
+#ifdef WITH_PLYMOUTH
+ if (slave->priv->plymouth_is_running) {
+ plymouth_quit_without_transition (slave);
+ }
+#endif
}
static void
@@ -1438,6 +1521,12 @@ on_server_died (GdmServer *server,
g_strsignal (signal_number));
gdm_slave_stopped (GDM_SLAVE (slave));
+
+#ifdef WITH_PLYMOUTH
+ if (slave->priv->plymouth_is_running) {
+ plymouth_quit_without_transition (slave);
+ }
+#endif
}
static gboolean
@@ -1484,7 +1573,17 @@ gdm_simple_slave_run (GdmSimpleSlave *slave)
G_CALLBACK (on_server_ready),
slave);
- res = gdm_server_start (slave->priv->server);
+#ifdef WITH_PLYMOUTH
+ slave->priv->plymouth_is_running = plymouth_is_running ();
+
+ if (slave->priv->plymouth_is_running) {
+ plymouth_prepare_for_transition (slave);
+ res = gdm_server_start_on_active_vt (slave->priv->server);
+ } else
+#endif
+ {
+ res = gdm_server_start (slave->priv->server);
+ }
if (! res) {
g_warning (_("Could not start the X "
"server (your graphical environment) "
@@ -1494,6 +1593,11 @@ gdm_simple_slave_run (GdmSimpleSlave *slave)
"In the meantime this display will be "
"disabled. Please restart GDM when "
"the problem is corrected."));
+#ifdef WITH_PLYMOUTH
+ if (slave->priv->plymouth_is_running) {
+ plymouth_quit_without_transition (slave);
+ }
+#endif
exit (1);
}
--
1.7.8.6

View file

@ -0,0 +1,141 @@
From c93d98b646a9a4fce3052260a1f08808d62d7155 Mon Sep 17 00:00:00 2001
From: Ray Strode <rstrode@redhat.com>
Date: Fri, 27 Nov 2009 18:27:53 -0500
Subject: [PATCH] daemon: save root window to pixmap at _XROOTPMAP_ID
This combined with starting the X server with
-background none will give distros using plymouth
(or potentially other boot splashes) a a nice fade
transition when g-s-d starts.
https://bugzilla.gnome.org/show_bug.cgi?id=572173
---
daemon/gdm-simple-slave.c | 8 +++++
daemon/gdm-slave.c | 72 +++++++++++++++++++++++++++++++++++++++++++++
daemon/gdm-slave.h | 1 +
3 files changed, 81 insertions(+), 0 deletions(-)
diff --git a/daemon/gdm-simple-slave.c b/daemon/gdm-simple-slave.c
index 9d1347a..fc8649c 100644
--- a/daemon/gdm-simple-slave.c
+++ b/daemon/gdm-simple-slave.c
@@ -1215,6 +1215,14 @@ setup_server (GdmSimpleSlave *slave)
/* Set the initial keyboard layout to something reasonable */
gdm_slave_set_initial_keyboard_layout (GDM_SLAVE (slave));
+ /* The root window has a background that may be useful
+ * to cross fade or transition from when setting the
+ * login screen background. We read it here, and stuff
+ * it into the standard _XROOTPMAP_ID root window property,
+ * so gnome-settings-daemon can get at it.
+ */
+ gdm_slave_save_root_windows (GDM_SLAVE (slave));
+
}
static void
diff --git a/daemon/gdm-slave.c b/daemon/gdm-slave.c
index a5ce62f..53633c0 100644
--- a/daemon/gdm-slave.c
+++ b/daemon/gdm-slave.c
@@ -43,6 +43,7 @@
#include <dbus/dbus-glib-lowlevel.h>
#include <X11/Xlib.h> /* for Display */
+#include <X11/Xatom.h> /* for XA_PIXMAP */
#include <X11/cursorfont.h> /* for watch cursor */
#include <X11/extensions/Xrandr.h>
#include <X11/Xatom.h>
@@ -364,6 +365,77 @@ gdm_slave_run_script (GdmSlave *slave,
return ret;
}
+static void
+gdm_slave_save_root_window_of_screen (GdmSlave *slave,
+ Atom id_atom,
+ int screen_number)
+{
+ Window root_window;
+ GC gc;
+ XGCValues values;
+ Pixmap pixmap;
+ int width, height, depth;
+
+ root_window = RootWindow (slave->priv->server_display,
+ screen_number);
+
+ width = DisplayWidth (slave->priv->server_display, screen_number);
+ height = DisplayHeight (slave->priv->server_display, screen_number);
+ depth = DefaultDepth (slave->priv->server_display, screen_number);
+ pixmap = XCreatePixmap (slave->priv->server_display,
+ root_window,
+ width, height, depth);
+
+ values.function = GXcopy;
+ values.plane_mask = AllPlanes;
+ values.fill_style = FillSolid;
+ values.subwindow_mode = IncludeInferiors;
+
+ gc = XCreateGC (slave->priv->server_display,
+ root_window,
+ GCFunction | GCPlaneMask | GCFillStyle | GCSubwindowMode,
+ &values);
+
+ if (XCopyArea (slave->priv->server_display,
+ root_window, pixmap, gc, 0, 0,
+ width, height, 0, 0)) {
+
+ long pixmap_as_long;
+
+ pixmap_as_long = (long) pixmap;
+
+ XChangeProperty (slave->priv->server_display,
+ root_window, id_atom, XA_PIXMAP,
+ 32, PropModeReplace, (guchar *) &pixmap_as_long,
+ 1);
+
+ }
+
+ XFreeGC (slave->priv->server_display, gc);
+}
+
+void
+gdm_slave_save_root_windows (GdmSlave *slave)
+{
+ int i, number_of_screens;
+ Atom atom;
+
+ number_of_screens = ScreenCount (slave->priv->server_display);
+
+ atom = XInternAtom (slave->priv->server_display,
+ "_XROOTPMAP_ID", False);
+
+ if (atom == 0) {
+ return;
+ }
+
+ for (i = 0; i < number_of_screens; i++) {
+ gdm_slave_save_root_window_of_screen (slave, atom, i);
+ }
+
+ XSync (slave->priv->server_display, False);
+}
+
void
gdm_slave_set_initial_keyboard_layout (GdmSlave *slave)
{
diff --git a/daemon/gdm-slave.h b/daemon/gdm-slave.h
index 7af20ed..aaaa8f2 100644
--- a/daemon/gdm-slave.h
+++ b/daemon/gdm-slave.h
@@ -78,6 +78,7 @@ void gdm_slave_set_initial_keyboard_layout (GdmSlave *slave);
void gdm_slave_set_initial_cursor_position (GdmSlave *slave);
void gdm_slave_set_busy_cursor (GdmSlave *slave);
+void gdm_slave_save_root_windows (GdmSlave *slave);
gboolean gdm_slave_run_script (GdmSlave *slave,
const char *dir,
const char *username);
--
1.7.8.6

View file

@ -0,0 +1,192 @@
From 722d31dc8823090b651b103f0194b6380f2d458e Mon Sep 17 00:00:00 2001
From: Alexandre Rostovtsev <tetromino@gentoo.org>
Date: Tue, 25 Sep 2012 22:30:29 -0400
Subject: [PATCH] daemonize so that the boot process can continue
Gentoo bug: #236701
Based on original patch by Dan Nicholson <dbn.lists@gmail.com> and
Gilles Dartiguelongue <eva@gentoo.org>.
Fork gdm-binary, except when -nodaemon is used
Makes the gdm main binary fork and daemonize unless the -nodaemon or
--nodaemon options are used. Provides compatibility with xdm. Fixes
bug #550170.
In daemonized mode, start a new process group, and kill it in our signal
handlers, so that killing gdm kills its spawned processes, and so that
"/etc/init.d/xdm stop" actually works.
---
configure.ac | 4 ++++
daemon/Makefile.am | 1 +
daemon/main.c | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 65 insertions(+)
diff --git a/configure.ac b/configure.ac
index 61a43d6..a851ba5 100644
--- a/configure.ac
+++ b/configure.ac
@@ -99,6 +99,10 @@ PKG_CHECK_MODULES(DAEMON,
AC_SUBST(DAEMON_CFLAGS)
AC_SUBST(DAEMON_LIBS)
+PKG_CHECK_MODULES(LIBDAEMON, libdaemon)
+AC_SUBST(LIBDAEMON_CFLAGS)
+AC_SUBST(LIBDAEMON_LIBS)
+
GLIB_GSETTINGS
PKG_CHECK_MODULES(NSS,
diff --git a/daemon/Makefile.am b/daemon/Makefile.am
index bb84765..cf89b47 100644
--- a/daemon/Makefile.am
+++ b/daemon/Makefile.am
@@ -380,6 +380,7 @@ gdm_binary_LDADD = \
$(top_builddir)/common/libgdmcommon.la \
$(XLIB_LIBS) \
$(DAEMON_LIBS) \
+ $(LIBDAEMON_LIBS) \
$(XDMCP_LIBS) \
$(LIBWRAP_LIBS) \
$(SYSTEMD_LIBS) \
diff --git a/daemon/main.c b/daemon/main.c
index 3b8572c..c2fe4fe 100644
--- a/daemon/main.c
+++ b/daemon/main.c
@@ -34,6 +34,8 @@
#include <locale.h>
#include <signal.h>
+#include <libdaemon/dfork.h>
+
#include <glib.h>
#include <glib/gi18n.h>
#include <glib/gstdio.h>
@@ -336,16 +338,26 @@ signal_cb (int signo,
gpointer data)
{
int ret;
+ static gboolean ignore_signals = FALSE;
g_debug ("Got callback for signal %d", signo);
ret = TRUE;
+ /* don't commit suicide before killing everyone in our process group */
+ if (ignore_signals)
+ return ret;
+
switch (signo) {
case SIGFPE:
case SIGPIPE:
/* let the fatal signals interrupt us */
g_debug ("Caught signal %d, shutting down abnormally.", signo);
+ /* if we daemonized, kill all the processes we spawned */
+ ignore_signals = TRUE;
+ kill (-getpid (), signo);
+ ignore_signals = FALSE;
+
ret = FALSE;
break;
@@ -354,6 +366,11 @@ signal_cb (int signo,
case SIGTERM:
/* let the fatal signals interrupt us */
g_debug ("Caught signal %d, shutting down normally.", signo);
+ /* if we daemonized, kill all the processes we spawned */
+ ignore_signals = TRUE;
+ kill (-getpid (), signo);
+ ignore_signals = FALSE;
+
ret = FALSE;
break;
@@ -418,13 +435,16 @@ main (int argc,
GOptionContext *context;
GError *error;
int ret;
+ int i;
gboolean res;
GdmSignalHandler *signal_handler;
static gboolean do_timed_exit = FALSE;
static gboolean print_version = FALSE;
static gboolean fatal_warnings = FALSE;
+ static gboolean no_daemon = FALSE;
static GOptionEntry entries [] = {
{ "fatal-warnings", 0, 0, G_OPTION_ARG_NONE, &fatal_warnings, N_("Make all warnings fatal"), NULL },
+ { "nodaemon", 0, 0, G_OPTION_ARG_NONE, &no_daemon, N_("Do not fork into the background"), NULL },
{ "timed-exit", 0, 0, G_OPTION_ARG_NONE, &do_timed_exit, N_("Exit after a time (for debugging)"), NULL },
{ "version", 0, 0, G_OPTION_ARG_NONE, &print_version, N_("Print GDM version"), NULL },
@@ -439,6 +459,14 @@ main (int argc,
g_type_init ();
+ /* preprocess the arguments to support the xdm style
+ * -nodaemon option
+ */
+ for (i = 0; i < argc; i++) {
+ if (strcmp (argv[i], "-nodaemon") == 0)
+ argv[i] = "--nodaemon";
+ }
+
context = g_option_context_new (_("GNOME Display Manager"));
g_option_context_add_main_entries (context, entries, NULL);
g_option_context_set_ignore_unknown_options (context, TRUE);
@@ -465,6 +493,33 @@ main (int argc,
g_log_set_always_fatal (fatal_mask);
}
+ if (!no_daemon) {
+ pid_t pid;
+ if (daemon_retval_init () < 0) {
+ g_warning ("Failed to create pipe");
+ exit (-1);
+ }
+ if ((pid = daemon_fork ()) < 0) {
+ /* Fork failed */
+ daemon_retval_done ();
+ exit (1);
+ } else if (pid) {
+ /* Parent process: wait 20s for daemon_retval_send() in the daemon process */
+ if ((ret = daemon_retval_wait (20)) < 0) {
+ g_warning ("Timed out waiting for daemon process: %s", strerror(errno));
+ exit (255);
+ } else if (ret > 0) {
+ g_warning ("Daemon process returned error code %d", ret);
+ exit (ret);
+ }
+ exit (0);
+ }
+ /* Daemon process */
+ daemon_close_all (-1);
+ /* Start a new process group so that killing the daemon will kill the processes that it spawned */
+ setsid ();
+ }
+
gdm_log_init ();
settings = gdm_settings_new ();
@@ -519,6 +574,9 @@ main (int argc,
g_timeout_add_seconds (30, (GSourceFunc) timed_exit_cb, main_loop);
}
+ if (!no_daemon)
+ daemon_retval_send (0);
+
g_main_loop_run (main_loop);
g_debug ("GDM finished, cleaning up...");
@@ -535,6 +593,8 @@ main (int argc,
ret = 0;
out:
+ if (!no_daemon)
+ daemon_retval_send (ret);
return ret;
}
--
1.7.12

View file

@ -0,0 +1,31 @@
From 8f9bf7b053fc7a6c2e5b33fc43c168ba7250cb98 Mon Sep 17 00:00:00 2001
From: Alexandre Rostovtsev <tetromino@gentoo.org>
Date: Tue, 25 Sep 2012 17:38:37 -0400
Subject: [PATCH] configure: Make selinux check non-automagic
---
configure.ac | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/configure.ac b/configure.ac
index 80a1fd4..61a43d6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -142,9 +142,13 @@ AC_SUBST(UPOWER)
AC_SUBST(UPOWER_CFLAGS)
AC_SUBST(UPOWER_LIBS)
+AC_ARG_WITH(selinux,
+ AS_HELP_STRING([--with-selinux],
+ [Add SELinux support]))
+
PKG_CHECK_MODULES(LIBSELINUX, libselinux, have_selinux=yes, have_selinux=no)
-if test "x$have_selinux" = "xyes" ; then
+if test "x$have_selinux" = "xyes" && test "x$with_selinux" != "xno" ; then
AC_DEFINE(HAVE_SELINUX, 1, [Define if have selinux])
fi
AC_SUBST(LIBSELINUX_CFLAGS)
--
1.7.12

View file

@ -0,0 +1,27 @@
From 72fd8c8da02b47403992945a61d2514d6ee78cf4 Mon Sep 17 00:00:00 2001
From: Alexandre Rostovtsev <tetromino@gentoo.org>
Date: Fri, 28 Dec 2012 18:50:37 -0500
Subject: [PATCH] daemon: remove spurious unicode characters from dbus
introspection file
https://bugzilla.gnome.org/show_bug.cgi?id=690842
---
daemon/gdm-slave.xml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/daemon/gdm-slave.xml b/daemon/gdm-slave.xml
index 547c44e..d055252 100644
--- a/daemon/gdm-slave.xml
+++ b/daemon/gdm-slave.xml
@@ -14,6 +14,6 @@
<arg name="address" type="s" direction="out" />
</method>
- <property name="session_id" type="s" access="read"/>•
- </interface>•
+ <property name="session_id" type="s" access="read"/>
+ </interface>
</node>
--
1.8.0.2

View file

@ -0,0 +1,275 @@
# Copyright 1999-2012 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/gnome-base/gdm/gdm-3.4.1-r3.ebuild,v 1.2 2012/12/26 21:45:01 eva Exp $
EAPI="4"
GNOME2_LA_PUNT="yes"
inherit autotools eutils gnome2 pam user
G_PV="2012.09.25"
G_P="gdm-gentoo-${G_PV}"
DESCRIPTION="GNOME Display Manager"
HOMEPAGE="https://live.gnome.org/GDM"
SRC_URI="${SRC_URI}
http://dev.gentoo.org/~tetromino/distfiles/${PN}/${G_P}.tar.xz"
LICENSE="GPL-2+"
SLOT="0"
IUSE="accessibility audit +consolekit +fallback fprint +gnome-shell +introspection ipv6 ldap plymouth selinux smartcard tcpd test xinerama +xklavier"
KEYWORDS="~amd64 ~sh ~x86"
# NOTE: x11-base/xorg-server dep is for X_SERVER_PATH etc, bug #295686
# nspr used by smartcard extension
# dconf, dbus and g-s-d are needed at install time for dconf update
COMMON_DEPEND="
>=dev-libs/dbus-glib-0.74
>=dev-libs/glib-2.29.3:2
>=x11-libs/gtk+-2.91.1:3
>=x11-libs/pango-1.3
dev-libs/nspr
>=dev-libs/nss-3.11.1
>=media-libs/fontconfig-2.5.0
>=media-libs/libcanberra-0.4[gtk3]
>=x11-misc/xdg-utils-1.0.2-r3
>=sys-power/upower-0.9
>=sys-apps/accountsservice-0.6.12
>=gnome-base/dconf-0.11.6
>=gnome-base/gnome-settings-daemon-3.1.4
gnome-base/gsettings-desktop-schemas
sys-apps/dbus
app-text/iso-codes
x11-base/xorg-server
x11-libs/libXi
x11-libs/libXau
x11-libs/libX11
x11-libs/libXdmcp
x11-libs/libXext
x11-libs/libXft
x11-libs/libXrandr
x11-apps/sessreg
virtual/pam
sys-auth/pambase[consolekit?]
accessibility? ( x11-libs/libXevie )
audit? ( sys-process/audit )
consolekit? ( sys-auth/consolekit[pam] )
introspection? ( >=dev-libs/gobject-introspection-0.9.12 )
plymouth? ( sys-boot/plymouth )
selinux? ( sys-libs/libselinux )
tcpd? ( >=sys-apps/tcp-wrappers-7.6 )
xinerama? ( x11-libs/libXinerama )
xklavier? ( >=x11-libs/libxklavier-4 )"
DEPEND="${COMMON_DEPEND}
test? ( >=dev-libs/check-0.9.4 )
xinerama? ( x11-proto/xineramaproto )
app-text/docbook-xml-dtd:4.1.2
sys-devel/gettext
x11-proto/inputproto
x11-proto/randrproto
>=dev-util/intltool-0.40.0
>=app-text/scrollkeeper-0.1.4
>=app-text/gnome-doc-utils-0.3.2
virtual/pkgconfig"
# XXX: These deps are from session and desktop files in data/ directory
# at-spi:1 is needed for at-spi-registryd (spawned by simple-chooser)
# fprintd is used via dbus by gdm-fingerprint-extension
RDEPEND="${COMMON_DEPEND}
>=gnome-base/gnome-session-2.91.92
x11-apps/xhost
x11-themes/gnome-icon-theme-symbolic
accessibility? (
app-accessibility/gnome-mag
app-accessibility/gok
app-accessibility/orca
gnome-extra/at-spi:1 )
consolekit? ( gnome-extra/polkit-gnome )
fallback? ( x11-wm/metacity )
fprint? (
sys-auth/fprintd
sys-auth/pam_fprint )
gnome-shell? ( >=gnome-base/gnome-shell-3.1.90 )
!gnome-shell? ( x11-wm/metacity )
smartcard? (
app-crypt/coolkey
sys-auth/pam_pkcs11 )
!gnome-extra/fast-user-switch-applet"
pkg_setup() {
enewgroup gdm
enewgroup video # Just in case it hasn't been created yet
enewuser gdm -1 -1 /var/lib/gdm gdm,video
# For compatibility with certain versions of nvidia-drivers, etc., need to
# ensure that gdm user is in the video group
if ! egetent group video | grep -q gdm; then
# FIXME XXX: is this at all portable, ldap-safe, etc.?
# XXX: egetent does not have a 1-argument form, so we can't use it to
# get the list of gdm's groups
local g=$(groups gdm)
elog "Adding user gdm to video group"
usermod -G video,${g// /,} gdm || die "Adding user gdm to video group failed"
fi
}
src_prepare() {
# remove unneeded linker directive for selinux, bug #41022
epatch "${FILESDIR}/${PN}-2.32.0-selinux-remove-attr.patch"
# daemonize so that the boot process can continue, bug #236701
epatch "${FILESDIR}/${PN}-2.32.0-fix-daemonize-regression.patch"
# GDM grabs VT2 instead of VT7, bug 261339, bug 284053, bug 288852
epatch "${FILESDIR}/${PN}-2.32.0-fix-vt-problems.patch"
# make custom session work, bug #216984
epatch "${FILESDIR}/${PN}-3.2.1.1-custom-session.patch"
# ssh-agent handling must be done at xinitrc.d, bug #220603
epatch "${FILESDIR}/${PN}-2.32.0-xinitrc-ssh-agent.patch"
# fix libxklavier automagic support
epatch "${FILESDIR}/${PN}-2.32.0-automagic-libxklavier-support.patch"
# plymouth support (in next release)
epatch "${FILESDIR}/${P}-save-root-window.patch"
epatch "${FILESDIR}/${P}-plymouth.patch"
# dconf-0.13.x compatibility (next release)
epatch "${FILESDIR}/${P}-dconf-0.13.patch"
# don't load accessibility support at runtime when USE=-accessibility
use accessibility || epatch "${FILESDIR}/${PN}-3.3.92.1-disable-accessibility.patch"
# make gdm-fallback session the default if USE=-gnome-shell
if ! use gnome-shell; then
sed -e "s:'gdm-shell':'gdm-fallback':" \
-i data/00-upstream-settings || die "sed failed"
fi
mkdir -p "${S}"/m4
eautoreconf
gnome2_src_prepare
}
src_configure() {
DOCS="AUTHORS ChangeLog NEWS README TODO"
# PAM is the only auth scheme supported
# even though configure lists shadow and crypt
# they don't have any corresponding code.
# --with-at-spi-registryd-directory= needs to be passed explicitly because
# of https://bugzilla.gnome.org/show_bug.cgi?id=607643#c4
G2CONF="${G2CONF}
--disable-static
--localstatedir=${EPREFIX}/var
--with-xdmcp=yes
--enable-authentication-scheme=pam
--with-pam-prefix=${EPREFIX}/etc
--with-at-spi-registryd-directory=${EPREFIX}/usr/libexec
$(use_with accessibility xevie)
$(use_with audit libaudit)
$(use_enable ipv6)
$(use_enable xklavier libxklavier)
$(use_with consolekit console-kit)
$(use_with plymouth)
$(use_with selinux)
$(use_with tcpd tcp-wrappers)
$(use_with xinerama)"
gnome2_src_configure
}
src_install() {
gnome2_src_install
# gdm-binary should be gdm to work with our init (#5598)
rm -f "${ED}/usr/sbin/gdm"
ln -sfn /usr/sbin/gdm-binary "${ED}/usr/sbin/gdm"
# our x11's scripts point to /usr/bin/gdm
ln -sfn /usr/sbin/gdm-binary "${ED}/usr/bin/gdm"
# log, etc.
keepdir /var/log/gdm
# install XDG_DATA_DIRS gdm changes
echo 'XDG_DATA_DIRS="/usr/share/gdm"' > 99xdg-gdm
doenvd 99xdg-gdm
# pam.d/gdm is no longer needed, and can block pam-1.1.6, #435042
rm -v "${ED}etc/pam.d/gdm" || die
cd "${WORKDIR}/${G_P}"
local LDAP
use ldap && LDAP=yes
emake LDAP=${LDAP} EPREFIX="${EPREFIX}" \
SYSTEMD_UNITDIR="$(systemd_get_unitdir)" DESTDIR="${D}" install
}
pkg_postinst() {
gnome2_pkg_postinst
dbus-launch dconf update || die "'dconf update' failed"
ewarn
ewarn "This is an EXPERIMENTAL release, please bear with its bugs and"
ewarn "visit us on #gentoo-desktop if you have problems."
ewarn
elog "To make GDM start at boot, edit /etc/conf.d/xdm"
elog "and then execute 'rc-update add xdm default'."
elog "If you already have GDM running, you will need to restart it."
elog
elog "GDM ignores most non-localization environment variables. If you"
elog "need GDM to launch gnome-session with a particular environment,"
elog "you need to use pam_env.so in /etc/pam.d/gdm-welcome; see"
elog "the pam_env man page for more information."
elog
if has_version sys-auth/pambase[gnome-keyring]; then
elog "For passwordless login to unlock your keyring, you need to set an"
elog "empty password on your keyring. Use app-crypt/seahorse for that."
else
elog "To unlock your keyring on login, install sys-auth/pambase"
elog "with USE=gnome-keyring"
fi
if [[ -f "/etc/X11/gdm/gdm.conf" ]]; then
elog "You had /etc/X11/gdm/gdm.conf which is the old configuration"
elog "file. It has been moved to /etc/X11/gdm/gdm-pre-gnome-2.16"
mv /etc/X11/gdm/gdm.conf /etc/X11/gdm/gdm-pre-gnome-2.16
fi
# https://bugzilla.redhat.com/show_bug.cgi?id=513579
# Lennart says this problem is fixed, but users are still reporting problems
# XXX: Do we want this elog?
# if has_version "media-libs/libcanberra[pulseaudio]" ; then
# elog
# elog "You have media-libs/libcanberra with the pulseaudio USE flag"
# elog "enabled. GDM will start a pulseaudio process to play sounds. This"
# elog "process should automatically terminate when a user logs into a"
# elog "desktop session. If GDM's pulseaudio fails to terminate and"
# elog "causes problems for users' audio, you can prevent GDM from"
# elog "starting pulseaudio by editing /var/lib/gdm/.pulse/client.conf"
# elog "so it contains the following two lines:"
# elog
# elog "autospawn = no"
# elog "daemon-binary = /bin/true"
# fi
}
pkg_postrm() {
gnome2_pkg_postrm
if rc-config list default | grep -q xdm; then
elog "To remove GDM from startup please execute"
elog "'rc-update del xdm default'"
fi
}

View file

@ -2,7 +2,7 @@
~gnome-extra/nemo-1.1.2
~x11-wm/muffin-1.1.2
=gnome-base/gdm-3.4.1-r1
~gnome-base/gdm-3.4.1
~app-accessibility/at-spi2-core-2.4.2
~app-accessibility/caribou-0.4.4