arakiken / mlterm

Other
147 stars 13 forks source link

configure script doesn't allow disabling mlimgloader and enabling a different tool #69

Open doronbehar opened 1 year ago

doronbehar commented 1 year ago

I want to configure mlterm to build with mlconfig and mlfc tools, but without mlimgloader. I noticed that if I use the flags:

--without-imagelib --with-tools=mlconfig,mlfc

I still get mlimgloader compiled. I think that this is the problem:

https://github.com/arakiken/mlterm/blob/3dfd3b7192a8a132c568a76ad5bcd246eebdc555/configure#L19996-L19999

I'm not sure I got the intention right - why enable mlimgloader almost unconditionally?

arakiken commented 1 year ago

Thanks. I'm sorry, but the behavior of --without-imagelib option may be confusing. If --without-imagelib option is specified, mlterm doesn't use any image loading library (gdk-pixbuf) directly but executes a external tool (mlimgloader) to load images. If you'd like to disable processing images, specify --disable-image option. But mlterm-3.9.3 has a bug which doesn't disable to build mlimgloader if --disable-image option is specified. Following commits fix it. https://github.com/arakiken/mlterm/commit/5952b52dd4cfe11034305023bd35d299d1ca9247 https://github.com/arakiken/mlterm/commit/26f2900413a6d3a93129b0787bab645516ad9ae5

doronbehar commented 1 year ago

Thanks for the fixes. I still don't understand what's the point in adding mlimgloader here:

https://github.com/arakiken/mlterm/blob/5952b52dd4cfe11034305023bd35d299d1ca9247/configure#L20000-L20003

I mean, why not let the --with-tools flag control the addition of mlimgloader exclusively.

If you'd insist on keeping the logic as is, it'd be nice if the ./configure --help output was a bit more explanatory because this logic is still unexpected and somewhat confusing IMO:

$ ./configure --help | grep -E '(image|img)'
  --disable-image         show image [default=enabled]
  --with-imagelib[=ARG]   image library (gdk-pixbuf) [default=no]
  --with-tools[=ARG]      external tools [default=mlclient,mlconfig,mlcc,mlterm-menu,mlimgloader,registobmp,mlfc]
doronbehar commented 1 year ago

friendly ping @arakiken .

arakiken commented 1 year ago

Sorry for replying late. mlimgloader is automatically added unless --disable-image or --with-imagelib option is specified. I don't want to change it because it breaks backward compatibility and a background image may not be displayed. I fixed a help message of ./configure and README as follows. https://github.com/arakiken/mlterm/commit/bce8303e59cdb4f840f3cf31d22b039dcef25dc6

doronbehar commented 1 year ago

I don't want to change it because it breaks backward compatibility and a background image may not be displayed. I fixed a help message of ./configure and README as follows.

OK It surely helps a bit, though I personally think a release can enjoy the privilege of introducing backwards incompatibilities, but it's your call.

mlimgloader is automatically added unless --disable-image or --with-imagelib option is specified.

Did you mean --without-imagelib?

doronbehar commented 1 year ago

BTW I tried the following configure flags:

[
  "--with-type-engines=cairo,xft",
  "--with-tools=mlcc,mlclient,mlconfig,mlfc,mlterm-menu,registobmp",
  "--with-gui=fb,sdl2,wayland,xlib",
  "--with-x",
  "--with-gtk=3.0",
  "--enable-bidi",
  "--enable-fcitx",
  "--enable-ibus",
  "--disable-image",
  "--enable-m17n",
  "--enable-otl",
  "--enable-ssh2",
  "--enable-uim",
  "--without-imagelib"
]

And I got the error:

checking how to hardcode library paths into programs... immediate
checking for connect in -lsocket... no
checking for X... libraries , headers
checking for gethostbyname... yes
checking for connect... yes
checking for remove... yes
checking for shmat... yes
checking for IceConnectionNumber in -lICE... yes
checking for GTK... yes
checking for GDK_PIXBUF... yes
checking for GIO... yes
checking for gdk-pixbuf-config... no

** ERROR **
no library is NOT supported.

configure: error: ./configure failed for gui/xlib

While if I remove the --without-imagelib still gdk-pixbuf-config is not found, but the build doesn't fail. However, mlimgloader is still enabled with the following configure flags:

[
  "--with-type-engines=cairo,xft",
  "--with-tools=mlcc,mlclient,mlconfig,mlfc,mlterm-menu,registobmp",
  "--with-gui=fb,sdl2,wayland,xlib",
  "--with-x",
  "--with-gtk=3.0",
  "--enable-bidi",
  "--enable-fcitx",
  "--enable-ibus",
  "--disable-image",
  "--enable-m17n",
  "--enable-otl",
  "--enable-ssh2",
  "--enable-uim"
]

So this is still an issue for me...

arakiken commented 11 months ago

Did you mean --without-imagelib?

I mean --with-imagelib. --with-imagelib option links gdk-pixbuf library to mlterm to show images. In this case, it is not necessary to build mlimgloader. It's confusing for historical reasons... sorry.

While if I remove the --without-imagelib still gdk-pixbuf-config is not found, but the build doesn't fail. However, mlimgloader is still enabled with the following configure flags: [ "--with-type-engines=cairo,xft", "--with-tools=mlcc,mlclient,mlconfig,mlfc,mlterm-menu,registobmp", "--with-gui=fb,sdl2,wayland,xlib", "--with-x", "--with-gtk=3.0", "--enable-bidi", "--enable-fcitx", "--enable-ibus", "--disable-image", "--enable-m17n", "--enable-otl", "--enable-ssh2", "--enable-uim"

I haven't found the cause of this problem yet. Thease options disable mlimgloader successfully in my arch linux.