themix-project / themix-gui

Graphical application for generating different color variations of Oomox (Numix-based) and Materia (ex-Flat-Plat) themes (GTK2, GTK3, Cinnamon, GNOME, Openbox, Xfwm), Archdroid, Gnome-Color, Numix, Papirus and Suru++ icon themes. Have a hack for HiDPI in gtk2. Its Base16 plugin also allowing a lot of app themes support like Alacritty, Emacs, GTK4, KDE, VIM and many more.
GNU General Public License v3.0
2.07k stars 67 forks source link

Does anyone want to help write a Gentoo ebuild? #153

Open zjp opened 6 years ago

zjp commented 6 years ago

Hello,

Because of the fact that Gentoo is lacking some software that can be found in the AUR and since software availability is one of the main drivers that keeps a distro's install base wide, I've been working on an overlay to fill in some of the gaps.

I have part of an ebuild written here in the testing branch of my overlay repo, but I'd like some help writing it since it's the first one I've written "de novo" -- others are cannibalized from dead overlays.

Here is the link: https://github.com/zjpxshade/gentoo-zjpxshade/blob/testing/x11-misc/oomox/oomox-1.6.1.ebuild

If any are interested, I appreciate the help!

Thank you,

-Z

actionless commented 6 years ago

so, first of all, which software is missing?

for example for flatpak distribution, where inkscape dep is not available and where spotify plugin doesn't make any sense i've just disabled those two plugins. mb it's something what we can make in the gentoo packaging?

actionless commented 6 years ago

btw you can add PYTHON_COMPAT 3.6 since that python version is covered by travis

actionless commented 6 years ago

and also i think the main problem is what you're missing a call to install script, see this usage examples,

arch: https://github.com/themix-project/oomox/blob/master/packaging/arch/PKGBUILD#L85

ubuntu: https://github.com/themix-project/oomox/blob/master/packaging/ubuntu/create_ubuntu_package.sh#L16

actionless commented 6 years ago

also i am trying to write a makefile right now, it should make things even easier for packaging

actionless commented 6 years ago

now you can use make DESTDIR=..... PREFIX=..... install instead of install.sh script (usage links above updated)

zjp commented 6 years ago

Still setting up the house. In any case, I'm glad that you mentioned python because I had meant to ask anyway. As for the missing software, none of your dependencies -- for any module/addon/plugin/whathaveyou -- are missing. I was saying that the intent of my overlay is to provide software that hasn't been found on gentoo before, like pywal.

I might have to call the install script but if you look at the pywal ebuild it isn't called... I wonder what makes the difference between needing to call it and not.

actionless commented 6 years ago

so i think when you will add make DESTDIR=${DESTDIR} install to your current ebuild it gonna work

actionless commented 6 years ago

i think because pywal is a python library it's being installed using some pre-defined template for python packages in ebuild (https://wiki.gentoo.org/wiki/Project:Python/Eclasses)

but it doesn't make sense to package oomox as standard python package, because python part -- is just a useless gui which depends on plugins

and plugins are not python packages (plugin interfaces, ie oomox_plugin.py are python but it's just an interface for calling some shell script)

actionless commented 6 years ago

there is also an open discussion about packaging plugins as separate packages: https://github.com/themix-project/oomox/issues/129

zjp commented 6 years ago

I'll make those changes when I can and then get back to you with an update on whether or not the installation was successful and whether the program worked after that. I'll have to keep up-to-date on that thread so that when your move is complete I can update this package. At least on my end it may make more sense to keep those packages under this single installer and use USE flags to call them.

Also, per #73 should Python v3.4 be dropped from PYTHON_COMPAT?

actionless commented 6 years ago

python 3.4 probably will stay at least til end of the year, so better leave it in the ebuild (the biggest reason i wanna drop it is to use modern type annotations which available starting from 3.5)

Massimo-B commented 6 years ago

Thanks for this ticket as I was searching for an ebuild. Is the ebuild ready? Can't digest it:

# ebuild oomox-1.6.1.ebuild digest
Error(s) in metadata for 'x11-misc/oomox-1.6.1':
  DEPEND: expected: '(', got: '(sys-devel/bc', token 19
  REQUIRED_USE: malformed syntax: 'spotify? ( || (polkit gksu) ) || ( python_targets_python3_4 python_targets_python3_5 )'

However starting the gui from a repo clone is also failing:

$ ./gui.sh 

** (__main__.py:12070): WARNING **: Couldn't register with accessibility bus: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.
Traceback (most recent call last):
  File "/usr/lib64/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/usr/lib64/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/home/mb/src/other/oomox/oomox_gui/__main__.py", line 1, in <module>
    from .main import main
  File "/home/mb/src/other/oomox/oomox_gui/main.py", line 17, in <module>
    from .theme_file_parse import read_colorscheme_from_path
  File "/home/mb/src/other/oomox/oomox_gui/theme_file_parse.py", line 1, in <module>
    from .theme_model import THEME_MODEL
  File "/home/mb/src/other/oomox/oomox_gui/theme_model.py", line 4, in <module>
    from .plugin_loader import (
  File "/home/mb/src/other/oomox/oomox_gui/plugin_loader.py", line 46, in <module>
    init_plugins()
  File "/home/mb/src/other/oomox/oomox_gui/plugin_loader.py", line 29, in init_plugins
    os.path.join(plugin_path, "oomox_plugin.py")
  File "/home/mb/src/other/oomox/oomox_gui/helpers.py", line 23, in get_plugin_module
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 674, in exec_module
  File "<frozen importlib._bootstrap_external>", line 780, in get_code
  File "<frozen importlib._bootstrap_external>", line 832, in get_data
FileNotFoundError: [Errno 2] No such file or directory: '/home/mb/src/other/oomox/oomox_gui/../plugins/oomoxify/oomox_plugin.py'
$ python --version
Python 3.6.6

I also tried with a Python 3.5 and 2.7... The path of that file not found seems to be wrong:

$ find -name oomox_plugin.py
./plugins/icons_archdroid/oomox_plugin.py
./plugins/icons_gnomecolors/oomox_plugin.py
./plugins/import_base16/oomox_plugin.py
./plugins/import_pil/oomox_plugin.py
./plugins/theme_arc/oomox_plugin.py
./plugins/theme_materia/oomox_plugin.py
./plugins/theme_oomox/oomox_plugin.py

By the way, I was looking for a way to adapt Gtk theme colors, found https://github.com/satya164/gtk-theme-config, but that was archived and also the many forks are unmaintained. Then I can change some of the colors, but not some important applications highlight colors or the decoration title bar color. Then I found this oomox which seems to be a sophisticated theme editor.

actionless commented 6 years ago

in first case it explicitly saying about syntax error in ebuild, nuff said

in second: you're missing oomoxify submodule for some reason but its directory exists (and is blank/have missing files), so either fix the git submodule or completely remove that dir from ./plugins/ (i guess you just skipped the README.md and made normal clone instead of recursive)

and also it's not gonna to work with python 2

zjp commented 6 years ago

It's on my testing branch for a reason. I'm very new at this, but I thank you for your patience as I finish setting my house up and get back to work on it.

Jesse-Millwood commented 5 years ago

For what it's worth, I put this together: https://github.com/Jesse-Millwood/oomox-overlay

actionless commented 5 years ago

@Jesse-Millwood thanks a lot! i'll add a link to the readme after few other gentoo users with different setups will confirm it works for them

Jesse-Millwood commented 5 years ago

@Jesse-Millwood thanks a lot! i'll add a link to the readme after few other gentoo users with different setups will confirm it works for them

Sounds good! I am new to writing ebuilds but "it works on my machine" TM. So if anyone has an issue feel free to open an issue. It basically uses git to grab the repo because then it'll automatically do the recursive fetching for submodules. I don't know if it is necessarily idiomatic gentoo ebuild style since I'm not sure if the version is necessarily locked down for the submodules and I don't have package versions defined. But it does target the 1.11 version.

actionless commented 5 years ago

i just see what above there were some questionable topics and also i remember how many problems it was while people there trying to write a void-linux ebuild so i suggest at least one pair of eyes just double-check it :-)

i mean i could check if it's buildable under calculate-linux, but i have not enough gentoo background myself to see if the ebuild compliant to USE flags and other gentoo ecosystem packaging traditions

Massimo-B commented 5 years ago

I tested the ebuild, and it's working. Thank you very much. However it leaves a huge installation of 530M /opt/oomox/ with all the theme repo involved. Then it also depended on huge media-gfx/inkscape being built:

 # emerge -atv oomox

These are the packages that would be merged, in reverse order:

Calculating dependencies... done!
 * Manifest not found for '/usr/local/portage/x11-misc/oomox/oomox-1.6.1.ebuild'
[ebuild  N     ] x11-misc/oomox-1.11::oomox-overlay  0 KiB
[ebuild  N     ]  sys-process/parallel-20190122::gentoo  1.752 KiB
[ebuild  N     ]   dev-perl/Devel-Size-0.820.0::gentoo  USE="-test" 72 KiB
[ebuild  N     ]  media-gfx/inkscape-0.92.4::gentoo  USE="cdr dbus exif jpeg lcms nls openmp spell -dia -gnome -imagemagick -inkjar -latex -postscript -static-libs -visio -wpg" PYTHON_TARGETS="python2_7" 31.182 KiB
[ebuild  N     ]   media-gfx/uniconvertor-2.0_pre379-r2::gentoo  PYTHON_TARGETS="python2_7" 1.802 KiB
[ebuild  N     ]   dev-libs/boehm-gc-8.0.4::gentoo  USE="cxx threads -static-libs" ABI_X86="(64) -32 (-x32)" 1.134 KiB
[ebuild  N     ]   media-gfx/potrace-1.15::gentoo  USE="-metric -static-libs" 636 KiB
[ebuild  N     ]   media-gfx/scour-0.36::gentoo  PYTHON_TARGETS="python2_7 python3_6 -python3_4 -python3_5" 90 KiB
[ebuild  N     ]  dev-python/pyyaml-3.13::gentoo  USE="-examples -libyaml" PYTHON_TARGETS="python2_7 python3_6 -pypy -pypy3 -python3_4 -python3_5 -python3_7" 265 KiB
[ebuild  N     ]  dev-python/pystache-0.5.4::gentoo  USE="-test" PYTHON_TARGETS="python2_7 python3_6 -pypy -python3_4 -python3_5" 74 KiB

Total: 10 packages (10 new), Size of downloads: 37.003 KiB

Would you like to merge these packages? [Yes/No] 
Jesse-Millwood commented 5 years ago

@Massimo-B thank you for testing it out! I was looking at the arch pkgbuild and it depended on inkscape too. Since most other gentoo builds break things up, I'll try to break things up too. I realize /opt/ probably isn't the best place for everything. Maybe I can make the different themes different iuse flags?

Jesse-Millwood commented 5 years ago

Also this is my first ebuild I've really shared so if you have any other recommendations, I'd like to hear them.

actionless commented 5 years ago

arch pkgbuild currently depends on resvg instead of inkscape (both would work but resvg does the job faster)

but i think what resvg is not packaged for gentoo yet

mb it could be the right thing to be addressed by USE-flags or some other sort of option

Jesse-Millwood commented 5 years ago

It looks like there is some cargo support in gentoo ebuilds, I'll look at making a resvg ebuild and making it an option to use either inkscape or resvg

ilnanny commented 5 years ago

@Jesse-Millwood thanks ,working .

actionless commented 5 years ago

@Jesse-Millwood @ilnanny which link/instructions should i put to the readme?

and thanks a lot for packaging and testing :)

Jesse-Millwood commented 5 years ago

It still depends on inkscape and I haven't gotten resvg to build in an ebuild yet. I havn't broken things up with the use flags yet either. I got kind of bogged down with resvg and haven't revisited it in a little while.

If you want, you can link to my repo and say the instructions are there and maybe mention that it depends on inkscape and isn't as full featured as the other packaged versions?

actionless commented 5 years ago

inkscape the same functional as resvg, just 2-20x times slower when using with oomox

ilnanny commented 5 years ago

actionless i used the Jesse-Millwood overlay (I have already installed inkscape because I use it a lot.)


arc-built themes do not work, but they have also removed them from other packages like in void linux, I think it is a question of incompatibility with the arc theme. I do not know . If you are interested you can use the script of Erik Dubois ,Arc Theme Colora, search in erik repo.

actionless commented 5 years ago

but what the error do you have with oomox arc theme? and if you're using the correct submodule revision or just some random/latest version of arc gtk theme?

ilnanny commented 5 years ago

warns me that two scripts are missing to correctly export the arc theme. Now I'm on the work computer and I don't have gentoo here. But have you created the ebuild or are you using the overlay?

actionless commented 5 years ago

mb in ebuild arc revision need to be updated, please try replacing revision to this one:

https://github.com/NicoHood/arc-theme/tree/2e3feaa0451ad45ff40235ea90ffe98588b3f6e0

ilnanny commented 5 years ago

Thank you @actionless Now work fine!

actionless commented 5 years ago

@ilnanny so, after @Jesse-Millwood will update arc submodule in his ebuild it gonna be good enough for adding link to the readme?

Jesse-Millwood commented 5 years ago

yeah I'll try and fix the arc-theme thing this week. One of the issues is that the .gitsubmodule points to a branch that doesn't exist in the repo. I'm not entirely sure what the git3 ebuild commands are doing because the commit that the oomox repo is pointing at is correct.

Jesse-Millwood commented 5 years ago

Actually, I'm updating it to 1.12.2 and the build has gotten farther.

ilnanny commented 5 years ago

I manually copied the folder downloaded from the new link you posted to me and everything works fine. But I believe that the version installed on archlinux (git) is more up to date, the first theme concerns Mother's Day, while the version I installed on gentoo, has as its first theme, Valentine's Day. why .? Can you tell me which output should I post to you to check which is the most updated version ?.@actionless

ilnanny commented 5 years ago

@Jesse-Millwood now I update the repository and let you know. do you say I should uninstall the old version to check for proper operation?

Jesse-Millwood commented 5 years ago

I just removed the 1.11 ebuild and added the 1.12.2 ebuild. It did merge on my machine. I am going to have to look at splitting it up though I think in the future as this was reported:

* Final size of build directory: 1034992 KiB (1010.7 MiB)
 * Final size of installed tree:   502368 KiB ( 490.5 MiB)

I think the increased size is because of all of the icon themes, which shouldn't all be included in an ebuild I suppose.

ilnanny commented 5 years ago

Yes is very big . ...an extraction of the repo update output. `Readme.org | 1 + x11-misc/oomox/Manifest | 3 ++- x11-misc/oomox/oomox-1.11.ebuild | 3 ++- 3 files changed, 5 insertions(+), 2 deletions(-) === Sync completed for oomox-overlay q: Updating ebuild cache for /usr/local/portage/oomox-overlay `

Jesse-Millwood commented 5 years ago

I think an emerge oomox should update it.

I don't see the new one in your sync. In mine I got:

Fast-forward
 x11-misc/oomox/Manifest                                   | 3 ++-
 x11-misc/oomox/{oomox-1.11.ebuild => oomox-1.12.2.ebuild} | 0
 2 files changed, 2 insertions(+), 1 deletion(-)
 rename x11-misc/oomox/{oomox-1.11.ebuild => oomox-1.12.2.ebuild} (100%)
=== Sync completed for oomox-overlay
ilnanny commented 5 years ago

you're right, I've updated to the new version. o.t. this I created with oomox, mixing arc and matter and adjusting openbox by hand. What do you think about it ? Istantanea-1

Jesse-Millwood commented 5 years ago

I'll be upset if I don't see that on https://reddit.com/r/unixporn

ilnanny commented 5 years ago

yes : https://www.reddit.com/r/unixporn/comments/buqo53/screenshot_openbox_larry_the_cow/ :D

actionless commented 5 years ago

all right, so is it working good enough now to put it into readme? :)

Jesse-Millwood commented 5 years ago

@actionless I would say so. It could be better in terms of flexibility but right now it pulls in all of the themes so that you can use oomox to it's full extent.

ilnanny commented 5 years ago

work fine now

actionless commented 5 years ago

@Jesse-Millwood should i just leave a link to https://github.com/Jesse-Millwood/oomox-overlay or also leave some text around it?

Jesse-Millwood commented 5 years ago

@actionless You can just leave a link to my repo since that way seems to work.

I'll look at getting it added so the layman tool can use it, then it'll be easier.

Jesse-Millwood commented 5 years ago

Actually it looks like you'd be able to just do:

layman -o https://raw.github.com/Jesse-Millwood/oomox-overlay/layman.xml -f -a oomox-overlay
emerge --sync
emerge -av oomox

It seemed to work for me but it'd be nice to have some more input

ilnanny commented 5 years ago

required : app-portage/layman