mate-desktop / mate-terminal

The MATE Terminal Emulator
http://www.mate-desktop.org
GNU General Public License v3.0
133 stars 73 forks source link

Meson #341

Closed yetist closed 4 years ago

yetist commented 4 years ago

Add meson build system.

raveit65 commented 4 years ago

@yetist PR needs updating.

meson build -Dprefix=/usr/local

<cut>

Found pkg-config: /usr/bin/pkg-config (1.6.3)
Run-time dependency glib-2.0 found: YES 2.64.3
Run-time dependency gtk+-3.0 found: YES 3.24.20
Run-time dependency gio-2.0 found: YES 2.64.3
Run-time dependency vte-2.91 found: YES 0.60.3
Run-time dependency dconf found: YES 0.36.0
Run-time dependency x11 found: YES 1.6.9
Run-time dependency sm found: YES 1.2.3
Run-time dependency ice found: YES 1.0.10
Configuring config.h using configuration
Configuring terminal-version.h using configuration
Found pkg-config: /usr/bin/pkg-config (1.6.3)

src/meson.build:106:0: ERROR: File eggdesktopfile.c does not exist.
raveit65 commented 4 years ago

Can you please help review other open PRs? Maybe https://github.com/mate-desktop/mate-applets/pull/475 or https://github.com/mate-desktop/caja/pull/1422 ?

raveit65 commented 4 years ago

@yetist Meson branch of mate-sub-modules is merged. I guess this PR needs an update.

yetist commented 4 years ago

Done, commit is updated.

raveit65 commented 4 years ago

@yetist I asked this already before in another meson PR. Do we really need a LINGUAS file for meson, which needs to be updated by hand when we add a new language? With autotools this happens automatic. help/Makefile.am

HELP_LINGUAS = $(if $(IGNORE_HELP_LINGUAS), \
    $(filter-out $(IGNORE_HELP_LINGUAS),$(subst /,,$(dir $(wildcard */*.po)))), \
    $(subst /,,$(dir $(wildcard */*.po))) )
raveit65 commented 4 years ago

I tested installation to an empty /usr/local/ dir.

[rave@mother mate-terminal-dist]$ sudo ninja -C build install
<cut>
Installing /media/Data/Programme/Linux/Mate-Desktop/git-version/github-matedesktop/mate-terminal-dist/build/po/zh_TW.gmo to /usr/local/share/locale/zh_TW/LC_MESSAGES/mate-terminal.mo
Running custom install script '/media/Data/Programme/Linux/Mate-Desktop/git-version/github-matedesktop/mate-terminal-dist/meson_post_install.py /usr/local/share'
Compiling gsettings schemas...
Error opening directory “/usr/local/share/glib-2.0/schemas”: No such file or directory
Updating icon cache...
<cut>

No gsettings schemas...

[root@mother rave]# ls -l /usr/local/share/
insgesamt 20
drwxr-xr-x   2 root root 4096  5. Aug 16:43 applications
drwxr-xr-x 110 root root 4096  5. Aug 16:43 help
drwxr-xr-x 127 root root 4096  5. Aug 16:43 locale
drwxr-xr-x   3 root root 4096  5. Aug 16:43 man
drwxr-xr-x   2 root root 4096  5. Aug 16:43 metainfo
[rave@mother mate-terminal-dist]$ sudo ninja -C build uninstall
ninja: Entering directory `build'
[0/1] /usr/bin/meson --internal uninstall
Deleted: /usr/local/bin/mate-terminal
Deleted: /usr/local/share/applications/mate-terminal.desktop
Deleted: /usr/local/share/metainfo/mate-terminal.appdata.xml
Deleted: /usr/local/share/man/man1/mate-terminal.1
Deleted: /usr/local/bin/mate-terminal.wrapper
Deleted: /usr/local/share/man/man1
Deleted: /usr/local/share/man
Deleted: /usr/local/share/metainfo
Could not delete /usr/local/share/applications: [Errno 39] Directory not empty: '/usr/local/share/applications'.
Could not delete /usr/local/share: [Errno 39] Directory not empty: '/usr/local/share'.
Deleted: /usr/local/bin

Uninstall finished.

Deleted: 9
Failed: 2
[root@mother rave]# ls -l /usr/local/share/
insgesamt 12
drwxr-xr-x   2 root root 4096  5. Aug 16:49 applications
drwxr-xr-x 110 root root 4096  5. Aug 16:43 help
drwxr-xr-x 127 root root 4096  5. Aug 16:43 locale

Ignore applications dir, but files in help and locale dir won`t be uninstalled.

yetist commented 4 years ago

Could not delete /usr/local/share/applications: [Errno 39] Directory not empty: '/usr/local/share/applications'. Could not delete /usr/local/share: [Errno 39] Directory not empty: '/usr/local/share'. Deleted: /usr/local/bin

Uninstall finished.

Deleted: 9 Failed: 2

I guess there are other files in these directories, so uninstalling mate-terminal will not delete this directory.

raveit65 commented 4 years ago

'/usr/local/share/applications' has a cache file, but that wasn't problem.

Files in help and locale directory won`t be uninstalled. Gsettings schemas won't be installed.

yetist commented 4 years ago
$ DESTDIR=/tmp/aaaa ninja uninstall 
[0/1] /usr/bin/meson --internal uninstall
Deleted: /tmp/aaaa/usr/bin/mate-terminal
Deleted: /tmp/aaaa/usr/share/applications/mate-terminal.desktop
Deleted: /tmp/aaaa/usr/share/metainfo/mate-terminal.appdata.xml
Deleted: /tmp/aaaa/usr/share/man/man1/mate-terminal.1
Deleted: /tmp/aaaa/usr/bin/mate-terminal.wrapper
Deleted: /tmp/aaaa/usr/share/man/man1
Deleted: /tmp/aaaa/usr/share/man
Deleted: /tmp/aaaa/usr/share/metainfo
Deleted: /tmp/aaaa/usr/share/applications
Could not delete /tmp/aaaa/usr/share: [Errno 39] Directory not empty: '/tmp/aaaa/usr/share'.
Deleted: /tmp/aaaa/usr/bin
Could not delete /tmp/aaaa/usr: [Errno 39] Directory not empty: '/tmp/aaaa/usr'.
Could not delete /tmp/aaaa: [Errno 39] Directory not empty: '/tmp/aaaa'.

Uninstall finished.

Deleted: 10
Failed: 3

Remember that files created by custom scripts have not been removed.

It is designed by meson, or it can be said that it is a bug of meson. If files are not listed in meson-logs/install-log.txt, these files will not be deleted when uninstalling.

yetist commented 4 years ago

When run ninja install -v to install, you can see the output:

...
Running custom install script '/usr/bin/meson --internal yelphelper install --subdir=help --id=mate-terminal --installdir=share/help --sources=index.docbook@@legal.xml --symlinks=true --media=figures/mate-terminal-default.png@@figures/mate-terminal-tabbed.png'
...
Running custom install script '/usr/bin/meson --internal gettext install --subdir=po --localedir=share/locale --pkgname=mate-terminal'
...
Running custom install script '/home/yetist/checkout/03-mate-desktop/mate-terminal/meson_post_install.py /usr/share'
...

And after run uninstall, you can see the output line:

Remember that files created by custom scripts have not been removed.
raveit65 commented 4 years ago

What is changed with the git push -f?

yetist commented 4 years ago

What is changed with the git push -f?

Install schema files and rebase on master. https://github.com/mate-desktop/mate-terminal/blob/3c4825f24b3e6b33f9d305f08cadd14f4b79dfb5/src/meson.build#L95-L97

sc0w commented 4 years ago

subprojects/mate-submodules/meson.build:85: WARNING: Consider using the built-in warning_level option instead of using "-Wextra".

subprojects/mate-submodules/meson.build:85: WARNING: Consider using the built-in warning_level option instead of using "-Wall".

raveit65 commented 4 years ago

It is designed by meson, or it can be said that it is a bug of meson. If files are not listed in meson-logs/install-log.txt, these files will not be deleted when uninstalling.

This is really progress that a simple install/uninstall command doesn't work in 2020. This told me not to remove autotools support from our projects and use it as long as possible.

sc0w commented 4 years ago

@yetist can you fix the warnings I mentioned please?

subprojects/mate-submodules/meson.build:85: WARNING: Consider using the built-in warning_level option instead of using "-Wextra".

subprojects/mate-submodules/meson.build:85: WARNING: Consider using the built-in warning_level option instead of using "-Wall".
sc0w commented 4 years ago

@yetist

...and we have now 1000 more lines per distro in the logs

it seems it is built twice, probably related to the warnings I mentioned

yetist commented 4 years ago

...and we have now 1000 more lines per distro in the logs

it seems it is built twice.

Yes, one for autotools, one for meson.