Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Confusing configure options #1377

Closed
birdie-github opened this issue May 6, 2024 · 5 comments
Closed

Confusing configure options #1377

birdie-github opened this issue May 6, 2024 · 5 comments
Labels
Bug Something isn't working

Comments

@birdie-github
Copy link

birdie-github commented May 6, 2024

For 4.4-beta1:

./configure --help | grep -i -E 'gtk|qt'
  --disable-gtk           Disable GTK support (default=enabled)
  --enable-gtk2           Use GTK 2 instead of GTK 3 (default=disabled)
  --disable-qt            Disable Qt support (default=enabled)
  --enable-qt5            Use Qt 5 instead of Qt 6 (default=disabled)

For GTK2, is it --disable-qt --disable-gtk --enable-gtk2 or just --disable-qt --enable-gtk2?

What's mutually exclusive? How must individual GTK2/3/QT5/QT6 builds be specified?

I'd do it this way instead:

./configure --help | grep -i -E 'gtk|qt'
  --enable-gtk2           Use GTK2 (default=disabled)
  --enable-gtk3           Use GTK3 (default=disabled)
  --enable-qt5            Use Qt5  (default=disabled)
  --enable-qt6            Use Qt6  (default=disabled)

Yeah, all four are disabled and something needs to be enabled otherwise you bail out with an error.

@birdie-github birdie-github added the Bug Something isn't working label May 6, 2024
@radioactiveman
Copy link
Member

  • Default config is Qt 6 + GTK 3 now
  • Qt only: --disable-gtk
  • GTK only: --disable-qt
  • Headless Audacious "daemon": --disable-gtk --disable-qt

And if you want to use older toolkit versions, add --enable-gtk2 or --enable-qt5.
Hence you don't need to use --disable-gtk --enable-gtk2 together.

@radioactiveman radioactiveman closed this as not planned Won't fix, can't repro, duplicate, stale May 6, 2024
@birdie-github
Copy link
Author

Qt only

5 or 6?

GTK only

2 or 3?

Hence you don't need to use

At least to me this logic is impossible to grasp without trial and error. Anyways, I can't argue.

@radioactiveman
Copy link
Member

Qt 6 only: --disable-gtk (because Qt 6 is enabled by default)
Qt 5 only: --disable-gtk --enable-qt5

GTK 3 only: --disable-qt (because GTK 3 is enabled by default)
GTK 2 only: --disable-qt -enable-gtk2

Meson shows the Qt / GTK version in the build summary. Would it solve your confusion if we add that to the ./configure output?

audacious 4.4-beta1

  Directories
    Prefix                   : /usr
    Bin dir                  : bin
    Lib dir                  : lib
    Data dir                 : share

  Configuration
    D-Bus support            : true
    Qt 5 support             : false
    Qt 6 support             : true
    GTK 2 support            : false
    GTK 3 support            : true
    Libarchive support       : false
    Valgrind analysis support: false
    Build stamp              : unknown build

Autotools:

Configuration:

  Install path:                           /usr

  D-Bus support:                          yes
  GTK support:                            yes
  Qt support:                             yes
  libarchive support:                     no
  Valgrind analysis support:              no

@birdie-github
Copy link
Author

birdie-github commented May 6, 2024

There are four independent backends and you make it sound like there are intricate dependencies between them and show me an explanation which is far from obvious given the output of the configure script. I'm sure in a year or two, if you don't touch the code, you'll simply forget how it is all set up and why.

Maybe just maybe the proposed solution is a tad more logical/obvious/simple. Anyways, distros and people will figure it out, so I don't want to waste any more of your precious time.

@mschwendt
Copy link

mschwendt commented May 6, 2024

Unless you have strong reservations about the current default (GTK 3 and/or Qt 6), you don't need to worry about the compatibility build options (GTK 2 and/or Qt 5). You just deal with the version-less --enable-foo --disable-foo switches.

Yes, it could be --enable-gtk3 since GTK 4 is available already, but including version numbers in build config switches is awkward, since if GUI toolkit major releases remain compatible with eachother, it become unnecessary to change build switches.

Furthermore, you are free to build for both GTK and Qt, since within Audacious you can choose the GUI backend at runtime. Which can be beneficial.

Originally, it was just a single GUI backend. GTK based.

Eventually, the developers wanted to migrate to a new GUI backend based on Qt but not making it the default for some time. Hence there have been two build-time switches. To enable/disable GTK, and to enable/disable Qt.

However, as the GUI toolkits themselves receive major version upgrades, they break compatibility with programs, and attempts at fixing the programs can take some time. Therefore, Audacious tries to support multiple major versions of Qt, e.g. 5 and 6, at build-time but making Qt 6 the default choice. Similarly with GTK 2 and GTK 3. With GTK 3 as new default.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants