Package Details: tela-circle-icon-theme-pink 2024.04.19-2

Git Clone URL: https://aur.archlinux.org/tela-circle-icon-theme.git (read-only, click to copy)
Package Base: tela-circle-icon-theme
Description: A flat colorful design icon theme (pink variant)
Upstream URL: https://github.com/vinceliuice/Tela-circle-icon-theme
Licenses: GPL3
Provides: tela-circle-icon-theme
Submitter: ogarcia
Maintainer: ogarcia (marmis)
Last Packager: marmis
Votes: 5
Popularity: 0.95
First Submitted: 2022-11-05 11:32 (UTC)
Last Updated: 2024-04-23 01:19 (UTC)

Dependencies (3)

Required by (5)

Sources (1)

Latest Comments

ogarcia commented on 2024-04-22 15:17 (UTC)

@marmis done! ;-)

marmis commented on 2024-04-22 15:12 (UTC)

Okay, @ogarcia, that works for me. Thanks!

ogarcia commented on 2024-04-22 06:49 (UTC)

Hi @marmis How about if I make you a co-maintainer to the package (both this one and the git) and you upload the changes you propose? I think it would be the best thing to do since you have done a great job. What do you think?

marmis commented on 2024-04-22 00:06 (UTC)

Hi, @ogarcia. This package was taking too long to build (122 mins, in one of my tests) and too much space (had to move BUILDDIR out of /tmp/makepkg), so I decided to take a look and try to improve this situation. You can see all my change on gitlab: tela-circle-icon-theme and tela-circle-icon-theme-spl.

The culprit: debug symbols

The debug option was enabled by default on makepkg.conf last year. I don't think it does anything special for assets packages, besides "copying source files needed for debug symbols...". However, this step takes 5 times more than everything else in makepkg. Removing it reduce build time to only 20 mins.

Avoid unnecessary builds

Besides the debug option, another factor that increases build time, is that every user has to build each theme variant, and the *-all with each theme again, even though you can only install one of them. So, every build takes at least twice the time and twice the space for every user.

My solution for this is to turn tela-circle-icon-theme-all into a meta package that pulls every theme package as dependencies, but don't actually builds anything. This reduces build time to only 10 mins on my machine, and also reduces space and memory usage to be enough to use BUILDDIR=/tmp/makepkg.

Package dependencies

These changes don't improve build times, but I think the dependencies could be improved here.

gtk-update-icon-cache

This is not really a dependency, it is only needed for the install.sh script. However, I think it shouldn't even be a makedepend here. gtk-update-icon-cache contains a pacman hook that updates the icon cache automatically, including when gtk-update-icon-cache is itself updated, but icon packages are not. But this system only makes sense if icon-theme.cache is NOT managed by pacman, that means it shouldn't be part of the package. Other packages does things this way, you can see how hicolor-icon-theme or adwaita-icon-theme's file list doesn't include any *.cache file. Besides, this icon theme could be used in DEs not based on GTK, so this step is not useful for them.

My solution for this is to export an alias gtk-update-icon-cache to install.sh that don't do anything, ensuring the icon cache is NOT generated at build time.

Optional dependencies

You can see at each themes index.theme that they inherit missing icons from Adwaita and Breeze, so I think it makes sense to declare adwaita-icon-theme and breeze-icons as optional dependencies.

Packages conflicts

I believe the conflicts section of these packages could be improved, based on community recommendations and usual PKGBUILDs you find around here.

git packages

Each PACKAGE-git needs to conflict with its non-git PACKAGE base, but the other way should NOT be specified. That means that tela-circle-icon-theme-blue shouldn't explicitly conflict with tela-circle-icon-theme-blue-git.

*-all packages

We don't need to (and shouldn't, actually) specify each theme variant as a conflict for tela-circle-icon-theme-all, nor should each tela-circle-icon-theme-VARIANT package conflict with the *-all variant. Instead, we can use the virtual package tela-circle-icon-theme that each package provides to define conflicts. This is done by specifying conflicts=(tela-circle-icon-theme) for tela-circle-icon-theme-allonly, leaving the field empty for tela-circle-icon-theme-VARIANTs. The same applies for *-git packages. You can see more details about this on the Wiki page.

We don't actually need to deal with this if tela-circle-icon-theme-allbecomes a meta package.