Which documentation do we have?
http://www.mono-project.com/docs/gui/gtksharp/
http://www.mono-project.com/docs/gui/gtksharp/tutorials/
Gtk# is a Graphical User Interface Toolkit for mono and .Net.
What is "Toolkit" and how it relates to other parts of graphical stacks ?
How many stacks do we have? X, Wayland, Mir ?
binds gtk+ toolkit and assorted GNOME libraries.
which libraries does toolkit include?
which other libraries are wrapped?
Does it allow work with OpenGL?
What is Stetic and how to install it in gentoo?
Gtk# 3.0 will be built against the .net 2.0 profile, but it will be possible to install 2.12 and 3.0 in parallel for compatibility.
(q) http://www.mono-project.com/docs/gui/gtksharp/plan/
there is no more 2.0 profile (because MS opensourced 4.0, 4.5, 4.6), so we need a more modern plan
https://github.com/gentoo/dotnet/issues/131 - no docs about how Gtk+ and Gtk# are packaged for portage
The current state of affairs is, that the stable branch and the testing branch of gx86 take different approaches:
- stable: eclass-based modular sub projects (kinda like gstreamer)
- testing: monolithic gtk-sharp
As currently implemented, these approaches are not only incompatible, but difficult to support simultaneously in ebuilds that DEPEND on them. To preserve the two-prong status quo sustainably, the dotnet team would probably need to create virtuals to prevent a profusion of DEPENDenceies like:
( || ( <=dev-dotnet/gtk-sharp-2.12.13[foolib] dev-dotnet/foo-sharp))
from appearing all over the place which, although probably legal in EAPI5+, will anyhow bring portage's dep-solver to it's knees, in practice, causing all kinds of spooky disasters whenever any structural change occurs and general slowness any time --complete-graph evaluation occurs.
I think the questions that need answering are:
- How much benefit is derived from the modular ebuilds as compared to the monolithic approach?
- Is there a good reason to maintain both or can we pick one or the other approach and treeclean the other out of existence?
Why do developers think that approaches are incompatible?
How exactly "modular design" is implemented?
How exactly "monolitic design" is implemented?
How the Gtk+ project is structured in it's source repository?
Which pieces of C# code the Gtk# project includes and why?
How Gtk+ is packaged in stable and testing branches?
The text of "modular" ebuild:
https://github.com/gentoo/gentoo/blob/3734280aee79307945994b3396c1b7f073ae1a85/dev-dotnet/gtk-sharp/gtk-sharp-2.12.10.ebuild (main tree)
KEYWORDS="amd64 ppc x86 ~x86-fbsd ~x86-freebsd ~amd64-linux ~x86-linux ~x86-solaris"
The text of eclass for supporting "modules":
https://github.com/gentoo/gentoo/blob/86cec2922af8e267dbcccde278327e6ad40b6c3e/eclass/gtk-sharp-module.eclass (main tree)
https://github.com/gentoo/dotnet/blob/4f761293e163822fc10d0fe1aa6555cafd4ceec3/eclass/gtk-sharp-module.eclass (dotnet overlay)
The texts of "monolitic" ebuilds:
https://github.com/gentoo/gentoo/blob/3734280aee79307945994b3396c1b7f073ae1a85/dev-dotnet/gtk-sharp/gtk-sharp-2.12.21.ebuild (main tree)
https://github.com/gentoo/dotnet/blob/4f761293e163822fc10d0fe1aa6555cafd4ceec3/dev-dotnet/gtk-sharp/gtk-sharp-2.99.3.ebuild (dotnet overlay)
KEYWORDS="~amd64 ~x86 ~ppc"
this is testing branch, because it is marked as testing with tilda sign for all architectures:
https://dev.gentoo.org/~zmedico/portage/doc/man/emerge.1.html
- KEYWORDS
-
The KEYWORDS variable in an ebuild file is also used for masking
a package still in testing. There are architecture-specific keywords for
each package that let portage know which systems are compatible with
the package. Packages which compile on an architecture, but have not been
proven to be "stable", are masked with a tilde (~) in front of the
architecture name. emerge examines the ACCEPT_KEYWORDS environment
variable to allow or disallow the emerging of a package masked by
KEYWORDS. To inform emerge that it should build these 'testing'
versions of packages, you should update your
/etc/portage/package.accept_keywords
file to list the packages you want the
'testing' version. See portage(5) for more information.
-
--complete-graph evaluation
https://dev.gentoo.org/~zmedico/portage/doc/man/emerge.1.html
- --complete-graph [ y | n ]
-
This causes emerge to consider the deep dependencies of all
packages from the world set. With this option enabled,
emerge will bail out if it determines that the given operation will
break any dependencies of the packages that have been added to the
graph. Like the --deep option, the --complete-graph
option will significantly increase the time taken for dependency
calculations. Note that, unlike the --deep option, the
--complete-graph option does not cause any more packages to
be updated than would have otherwise been updated with the option disabled.
Using --with-bdeps=y together with --complete-graph makes
the graph as complete as possible.
- --complete-graph-if-new-use < y | n >
-
Trigger the --complete-graph behavior if USE or IUSE will
change for an installed package. This option is enabled by default.
- --complete-graph-if-new-ver < y | n >
- Trigger the --complete-graph behavior if an installed package version will change (upgrade or downgrade). This option is enabled by default.
- --with-bdeps < y | n >
-
In dependency calculations, pull in build time dependencies
that are not strictly required. This defaults to 'n' for
installation actions, meaning they will not be installed, and
'y' for the --depclean action, meaning they will not be removed.
- --with-test-deps [ y | n ]
-
For packages matched by arguments, this option will pull in dependencies
that are conditional on the "test" USE flag, even if "test" is not
enabled in FEATURES for the matched packages. (see make.conf(5)
for more information about FEATURES settings).
These settings can be added to
EMERGE_DEFAULT_OPTS (see make.conf(5)) and later overridden via the
command line.
I don't understood the words above why "modular" design is worse for package manager. There should be a more detailed explaination with description of detailed operations and their count/amount.
what is gx86?
what is gx86 (without multilib as in https://wiki.gentoo.org/wiki/Gx86-multilib? )
By the way, the multilib page is also doesn't explain everything clearly
for now i assume that it is shortname for "gtk-x86"
Stetic
http://www.monodevelop.com/documentation/stetic-gui-designer/
http://www.mono-project.com/archived/stetic/
it's distributed as part of monodevelop (i think so looking at screenshots). That is why there is no ebuilds found on gpo.zugaina.org