{"id":2297,"date":"2020-04-10T19:33:37","date_gmt":"2020-04-10T19:33:37","guid":{"rendered":"http:\/\/blog.rastersoft.com\/?p=2297"},"modified":"2020-06-01T21:05:29","modified_gmt":"2020-06-01T21:05:29","slug":"compilando-gnome-shell","status":"publish","type":"post","link":"https:\/\/blog.rastersoft.com\/?p=2297","title":{"rendered":"Compilando Gnome Shell"},"content":{"rendered":"\n<p>Estos \u00faltimos meses he estado preparando un parche para <a href=\"https:\/\/en.wikipedia.org\/wiki\/Mutter_(software)\">Mutter<\/a>, y he necesitado instalar la rama de desarrollo de <a href=\"https:\/\/en.wikipedia.org\/wiki\/GNOME_Shell\">Gnome Shell<\/a>. Y aunque hay bastante documentaci\u00f3n, hay detalles que est\u00e1n algo incompletos, as\u00ed que voy a poner aqu\u00ed lo que he ido aprendiendo.<\/p>\n\n\n\n<p>Para empezar, toda la compilaci\u00f3n se hace mediante <a href=\"https:\/\/developer.gnome.org\/jhbuild\/\">jhbuild<\/a>, lo que simplifica much\u00edsimo el trabajo. Y aunque es mucho m\u00e1s sencillo que bajarse a mano todo, a\u00fan tiene algunos detalles peliagudos.<\/p>\n\n\n\n<p>Lo primero, si quer\u00e9is tener \u00e9xito en compilar una versi\u00f3n de desarrollo, es mejor que utilic\u00e9is <a href=\"https:\/\/getfedora.org\/\">Fedora<\/a>, en concreto la versi\u00f3n de desarrollo (o beta) tambi\u00e9n. De esta manera no tendr\u00e9is problemas de versiones con las dependencias. Para ello, nada mejor que utilizar una m\u00e1quina virtual. Aunque <a href=\"https:\/\/www.virtualbox.org\/\">VirtualBox<\/a> es una buena opci\u00f3n, yo tuve serios problemas con los controladores de pantalla (y es raro&#8230; con <a href=\"https:\/\/www.debian.org\/\">Debian<\/a> o <a href=\"https:\/\/ubuntu.com\/\">Ubuntu<\/a> siempre fueron perfectamente), por lo que al final me decant\u00e9 por <a href=\"https:\/\/wiki.gnome.org\/Apps\/Boxes\">Gnome Boxes<\/a>, una herramienta m\u00e1s sencilla, pero con la que no tuve ning\u00fan problema.<\/p>\n\n\n\n<p>Una vez instalada, bajamos jhbuild y lo instalamos con:<\/p>\n\n\n\n<p class=\"mycode\">git clone https:\/\/gitlab.gnome.org\/GNOME\/jhbuild.git<br>cd jhbuild<br>.\/autogen.sh<br>make<br>make install<\/p>\n\n\n\n<p>Una vez hecho esto debemos a\u00f1adir (si no lo tenemos ya) a nuestro <em>PATH<\/em> el directorio <em>~\/.local\/bin<\/em>. Y ya tendremos <em>jhbuild<\/em> instalado.<\/p>\n\n\n\n<p>El siguiente paso es pedir que nos construya Gnome Shell. Para ello escribimos:<\/p>\n\n\n\n<p class=\"mycode\">jhbuild build gnome-shell<\/p>\n\n\n\n<p>Sin embargo, lo m\u00e1s probable es que no funcione y nos diga que nos faltan un mont\u00f3n de dependencias. Para instalarlas, basta con ejecutar:<\/p>\n\n\n\n<p class=\"mycode\">jhbuild sysdeps &#8211; -install gnome-shell<\/p>\n\n\n\n<p>y tomarse un caf\u00e9 (o dos), porque tarda un buen rato en bajar e instalar las dependencias. Cuando termine volvemos a ejecutar el comando previo, y probablemente nos dir\u00e1 que nos falta a\u00fan <em>libavcodec<\/em> y compa\u00f1\u00eda. Por suerte es posible compilarlo a\u00fan as\u00ed, mediante:<\/p>\n\n\n\n<p class=\"mycode\">jhbuild build &#8211; -nodeps gnome-shell<\/p>\n\n\n\n<p>Ah\u00ed empezar\u00e1 a compilar por fin, y tardar\u00e1, tardar\u00e1 mucho (y requerir\u00e1 mucho disco duro, por cierto. Aseguraos de que vuestra m\u00e1quina virtual tiene suficiente). Pero lo importante que debemos saber es que el c\u00f3digo lo baja en <em>~\/jhbuild\/checkout<\/em>, por lo que si queremos aplicar parches, es ah\u00ed donde hay que tocar el c\u00f3digo.<\/p>\n\n\n\n<p>Cuando termina de compilar, instala todo en <em>~\/jhbuild\/install<\/em>, y ya podemos probarlo. Yo lo que suelo hacer es cerrar la sesi\u00f3n gr\u00e1fica, irme a una consola de texto (con <em>Alt+F2<\/em>), y ah\u00ed ejecutar primero:<\/p>\n\n\n\n<p class=\"mycode\">jhbuild shell<\/p>\n\n\n\n<p>para tener una <em>shell<\/em> dentro del entorno, y luego ejecutar:<\/p>\n\n\n\n<p class=\"mycode\">dbus-run-session &#8211; &#8211; ~\/jhbuild\/install\/bin\/gnome-shell &#8211; -wayland &#8211; -display-server<\/p>\n\n\n\n<p>y se arranca la sesi\u00f3n. Un problema que yo no he conseguido resolver es que la opci\u00f3n de <em>Cerrar sesi\u00f3n<\/em> no funciona. Yo lo resuelvo abriendo una terminal y matando el proceso.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Estos \u00faltimos meses he estado preparando un parche para Mutter, y he necesitado instalar la rama de desarrollo de Gnome Shell. Y aunque hay bastante documentaci\u00f3n, hay detalles que est\u00e1n algo incompletos, as\u00ed que voy a poner aqu\u00ed lo que he ido aprendiendo. Para empezar, toda la compilaci\u00f3n se hace mediante jhbuild, lo que simplifica &hellip; <a href=\"https:\/\/blog.rastersoft.com\/?p=2297\" class=\"more-link\">Seguir leyendo <span class=\"screen-reader-text\">Compilando Gnome Shell<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6,7],"tags":[],"class_list":["post-2297","post","type-post","status-publish","format-standard","hentry","category-trucos","category-tutoriales"],"_links":{"self":[{"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=\/wp\/v2\/posts\/2297","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2297"}],"version-history":[{"count":10,"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=\/wp\/v2\/posts\/2297\/revisions"}],"predecessor-version":[{"id":2322,"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=\/wp\/v2\/posts\/2297\/revisions\/2322"}],"wp:attachment":[{"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2297"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2297"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2297"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}