From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 82625158094 for ; Sun, 14 Aug 2022 23:22:10 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id B05DB2BC01F; Sun, 14 Aug 2022 23:22:09 +0000 (UTC) Received: from w4.tutanota.de (w4.tutanota.de [81.3.6.165]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 3C15C2BC01F for ; Sun, 14 Aug 2022 23:22:09 +0000 (UTC) Received: from w3.tutanota.de (unknown [192.168.1.164]) by w4.tutanota.de (Postfix) with ESMTP id 404FC10602D6 for ; Sun, 14 Aug 2022 23:22:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1660519327; s=s1; d=catcream.org; h=From:From:To:To:Subject:Subject:Content-Description:Content-ID:Content-Type:Content-Type:Content-Transfer-Encoding:Content-Transfer-Encoding:Cc:Date:Date:In-Reply-To:MIME-Version:MIME-Version:Message-ID:Message-ID:Reply-To:References:Sender; bh=4IEJP+SObHQ0wMYsyFQxBfuPBWlV1aGGMvvwIXbiP5M=; b=qtZU46igD2UoUiYWixMf9h8yWJkfzbM2OaeYdslwOaDXOCbzKyvog3acRtN9mTWt ne3D2TXHKjo4oT1kNi+CEv0Oxc2Hlqx8T6skrq0Ivz62cUc2m/zm5DzF0fCeL+kX2uo 92uOaZ+I7U2V/YE9v1QpNudDd7UX8BlxeT8XfTKlmwloMzWyAIYcPODF57X7AW7t2B6 zU+0Uy/3tRr0Ev8GNl9CPjU3tN3sV/76M4+FwTUt+9e6UmbcYrapQzKsxkm6XKTdJmK QkY93yDTbElf/5ukDz3QVYyptDn6T68PRdRC8M/Q/tH/u69CBNS0Fum8Eng2DBDJBHI Qlr+CYQsug== Date: Mon, 15 Aug 2022 01:22:07 +0200 (CEST) From: cat@catcream.org To: Gentoo Soc Message-ID: Subject: [gentoo-soc] Gentoo musl Support Expansion for Qt/KDE Week 9 Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-soc@lists.gentoo.org Reply-to: gentoo-soc@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Archives-Salt: a6f22310-5ff2-4fd4-bfbf-6703d88a7337 X-Archives-Hash: 7d623146eacfa7d37577695d43e18804 This week I=E2=80=99ve tested every application in the kde-apps-meta meta p= ackage, I have also spent a lot of time learning ebuild development tooling= by working with the mauikit ebuilds. To start with I=E2=80=99ll talk about the mauikit ebuilds, and more general= ly using tools related to ebuild development. I had look over a lot of depe= ndencies, and making sure that I had no unneeded deps. So I learned how to = use things like iwdevtools, lddtree, and scanelf. A limitation of iwdevtool= s is that it can only look for linked libraries and not things like QML plu= gins. So I decided to make my own tool I call =E2=80=9Cehide=E2=80=9D. Ehide hides dependencies from the system, so you can run applications and s= ee if they actually need the dependencies or not. It works by creating a ne= w mount namespace, then enumerates files via =E2=80=98equery files =E2=80= =98, then checks if it=E2=80=99s a file with stat(2) and finally bind mount= s /dev/null to the files and spawns a new shell in the created namespace. T= his shell can now run commands and programs as if the dependency wasn=E2=80= =99t on the system to begin with. Creating a new mount namespace with unsha= re(CLONE_NEWNS) required CAP_SYS_ADMIN. So I also learned how to check for = capabilities with libcap, as well as setting capabs with fcaps.eclass in my= ebuild. All in all I learned a lot when working with this. Example of how I used it with Clip: 1) $ qa-vdb clip dev-qt/qtmultimedia:5 < # This indicates that qtmultimedia may be a wrong/unneeded RDEPEND, let=E2= =80=99s verify with ehide. 2) $ ehide qtmultimedia 3) (from spawned shell) $ clip CREATING INSTANCE OF MAUI APP QQmlApplicationEngine failed to load component qrc:/main.qml:5:1: module =E2=80=9CQtMultimedia=E2=80=9D is not installed This means that QtMultimedia is in fact required! It also works with multiple atoms, just like you=E2=80=99d expect. Sam had = an idea of integrating it into Portage so that you could hide every non-dep= endency of a package, to make sure that you have exactly the dependencies y= ou need in the ebuild, no more, no less. Think the inverse of emerge =E2=80= =93emptytree, and the =E2=80=9Cuniverse=E2=80=9D being world. Back to the ebuilds themselves: they are mostly finished but I just need to= clean up the commits so it becomes one commit per package. This is probabl= y easiest to do by just copying the ebuilds to some temp dir, git reset =E2= =80=93hard, and then copying back and commiting one by one. But I feel like= untangling this with git-rebase and friends is probably really good for me= to further learn using git. The second thing I did was kde-apps-meta testing. Most things just worked e= xcept for these following packages: Postgres, poxml, FreeRDP, and Okular. P= oxml was actually an old error related to a gettext issue me and Sam spent = a lot of time working on, but it=E2=80=99s still not fixed. (Upstream bug: = https://savannah.gnu.org/bugs/?62659). So that leaves Postgres, FreeRDP and= Okular, though I=E2=80=99ve used Okular and it works just fine. So I will = start working on Postgres and FreeRDP next week, and do Okular last. I=E2= =80=99ll also mention here that the Konsole test from two weeks ago is stil= l not fixed https://bugs.gentoo.org/862594. When I first wanted to emerge kde-apps-meta with FEATURES=3Dtest I wanted a= way to emerge deps of deps. Much like =E2=80=93emptytree but with a specif= ied max depth. This is because kde-apps-meta depends on other meta packages= like kde-apps/kdeaccessibility-meta, kde-apps/kdeadmin-meta, and kde-apps/= kdeedu-meta. I did some initial work on a tool I called rdeps which is used= like =E2=80=9Cemerge $(rdeps kde-apps-meta 2)=E2=80=9D. It kind of worked = but it had some bugs. As I just wanted to emerge my packages and not spend = too much time I instead made a much simpler program used like this: =E2=80= =99emerge $(rdeps =E2=80=9C$(rdeps kde-apps-meta)=E2=80=9D)=E2=80=99 which = worked! Looking back at this week I feel like I=E2=80=99ve learnt a whole lot, espe= cially regarding ebuild development and how to properly check for *DEPENDS.= To summarize I=E2=80=99ve ran test suites for kde-apps-meta, wrote two ebu= ild development applications, and almost finished writing the mauikit ebuil= ds. Personally I feel like I=E2=80=99ve done relatively little actual work = but a whole lot of learning compared to previous weeks. Today I will continue playing a bit with my PinePhone so I can get an initi= al sketch of my PPP Gentoo musl guide as requested. I got some help from me= gi debugging a levinboot buildtime issue, so I=E2=80=99ll go for that inste= ad of Tow-boot since it has a very annoying charging bug fixed. Megi is a d= eveloper who does the majority of the low level PinePhone Pro work. Next week I=E2=80=99ll untangle the mauikit ebuild commits, fix Postgres, p= oxml, FreeRDP, and Okular tests, and also work on getting accountsservice r= ewritten. In my proposal schedule next week is actually about getting test = suites to run for kde-apps-meta, so I am right on schedule!