mate-desktop / mate-settings-daemon

MATE settings daemon
https://mate-desktop.org
GNU General Public License v2.0
43 stars 47 forks source link

Travis-CI fixes #259

Closed raveit65 closed 5 years ago

raveit65 commented 5 years ago
raveit65 commented 5 years ago

Sadly not if building fedora rpm :/

+ find /builddir/build/BUILDROOT/mate-settings-daemon-1.21.2-2.fc30.x86_64 -name '*.la' -exec rm -rf '{}' ';'
+ desktop-file-validate /builddir/build/BUILDROOT/mate-settings-daemon-1.21.2-2.fc30.x86_64/etc/xdg/autostart/mate-settings-daemon.desktop
/builddir/build/BUILDROOT/mate-settings-daemon-1.21.2-2.fc30.x86_64/etc/xdg/autostart/mate-settings-daemon.desktop: file does not exist

RPM build errors:
error: Bad exit status from /var/tmp/rpm-tmp.ULhMD8 (%install)

I need to investigate why the desktop file isn't build.

raveit65 commented 5 years ago

Hmm, It isn't a .desktop file anymore.

[rave@mother ~]$ ls /home/rave/fedora-rawhide-x86_64-mate-1.22/root/builddir/build/BUILDROOT/mate-settings-daemon-1.21.2-2.fc30.x86_64/etc/xdg/autostart
mate-settings-daemon.desktop.in
raveit65 commented 5 years ago
-desktop_DATA = $(desktop_in_files:.desktop.in=.desktop)
+desktop_DATA = mate-settings-daemon.desktop

.....seems better and the .desktop file is under /etc/xdg/autostart in my rpm.

raveit65 commented 5 years ago

PR is updated.

raveit65 commented 5 years ago

Please do not merge! Here the m-s-d-daemon doesn't start in my f30 installation, I need to find out what's the problem caused.

raveit65 commented 5 years ago

Damned! Exec=/usr/local/libexec/mate-settings-daemon is very bad.

[root@mother rave]# cat /etc/xdg/autostart/mate-settings-daemon.desktop 
[Desktop Entry]
Type=Application
Name=MATE Settings Daemon
.....
.....
Exec=/usr/local/libexec/mate-settings-daemon
OnlyShowIn=MATE;
X-MATE-Autostart-Phase=Initialization
X-MATE-Autostart-Notify=true
X-MATE-AutoRestart=true
raveit65 commented 5 years ago

Before compiling we have this content in mate-settings-daemon.desktop.in

[Desktop Entry]
Type=Application
_Name=MATE Settings Daemon
Exec=@LIBEXECDIR@/mate-settings-daemon
OnlyShowIn=MATE;
X-MATE-Autostart-Phase=Initialization
X-MATE-Autostart-Notify=true
X-MATE-AutoRestart=true

After ./autogen.sh --prefix=/usr && make mate-settings-daemon.desktop looks like this.

[Desktop Entry]
Type=Application
Name=MATE Settings Daemon
...
...
Exec=@LIBEXECDIR@/mate-settings-daemon
OnlyShowIn=MATE;
X-MATE-Autostart-Phase=Initialization
X-MATE-Autostart-Notify=true
X-MATE-AutoRestart=true

And sudo make install installs it with that content.

[root@mother rave]# cat /etc/xdg/autostart/mate-settings-daemon.desktop 
[Desktop Entry]
Type=Application
Name=MATE Settings Daemon
...
...
Exec=@LIBEXECDIR@/mate-settings-daemon
OnlyShowIn=MATE;
X-MATE-Autostart-Phase=Initialization
X-MATE-Autostart-Notify=true
X-MATE-AutoRestart=true

So fixing debians distcheck problems in this way is really wrong. I have no idea why the marco @LIBEXECDIR@ won't be change to real dir.

raveit65 commented 5 years ago

Ok, i moved commit for archlinux build to a single PR, because it isn't related to the debian problems here and can be merge.

yetist commented 5 years ago

In the original version, the line that exists in configure.ac would do this. Now, you can try to replace it with sed in Makefile.am.

raveit65 commented 5 years ago

Just rebased against master.

Now, you can try to replace it with sed in Makefile.am.

But libexec dir can be different in distros, or not? That's why a var is used.

yetist commented 5 years ago

Whether or not to use libexecdir depends on the distro. If the distro wants to use a directory other than $prefix/libexec/, we need to make --libexecdir available, so I will try to fix that.

yetist commented 5 years ago

My research shows that this is a bug in intltools that exists on the debian distro.

This is the result of running the following command in the make distcheck build directory on debian.

root@0edaa746cf61:/rootdir/mate-settings-daemon-1.21.2/_build/sub/po# srcdir=../../../po /usr/bin/intltool-update -m
The following files contain translations and are currently not in use. Please
consider adding these to the POTFILES.in file, located in the po/ directory.

sub/data/mate-settings-daemon.desktop.in

If some of these files are left out on purpose then please add them to
POTFILES.skip instead of POTFILES.in. A file 'missing' containing this list
of left out files has been written in the current directory.
Please report to http://www.mate-desktop.org/

This is run on debian too, the difference is that using intltool-update-new to run the result, everythins is ok, the intltool-update-new file comes from archlinux.

root@0edaa746cf61:/rootdir/mate-settings-daemon-1.21.2/_build/sub/po# srcdir=../../../po /rootdir/intltool-update-new -m

The following are the differences between them.

root@0edaa746cf61:/rootdir/mate-settings-daemon-1.21.2/_build/sub/po# diff -u /usr/bin/intltool-update /rootdir/intltool-update-new 
--- /usr/bin/intltool-update    2017-12-22 03:23:13.000000000 +0000
+++ /rootdir/intltool-update-new    2019-02-11 16:27:10.199356541 +0000
@@ -620,6 +620,14 @@

     my @result;

+    # If the builddir is a subdir of srcdir, the list of files found will be prefixed with
+    # an additional prefix (e.g. "_build/sub" for automake 1.15 make distcheck). Try to
+    # handle that, by removing those matches as well.
+    my $absbuilddir = Cwd::abs_path("..\/");
+    my $abssrcdir = Cwd::abs_path("$SRCDIR/..");
+    # Check if builddir is a subdir of srcdir
+    my ($abspath,$relpath) = split /\s*$abssrcdir\/\s*/, $absbuilddir, 2;
+
     foreach (@buf_allfiles_sorted)
     {
         my $dummy = $_;
@@ -628,7 +636,10 @@
         $srcdir =~ s#^../##;
         $dummy =~ s#^$srcdir/../##;
         $dummy =~ s#^$srcdir/##;
-        $dummy =~ s#_build/##;
+        if ($relpath)
+        {
+            $dummy =~ s#^$relpath/##;
+        }
    if (!exists($in2{$dummy}))
    {
        push @result, $dummy

There is a patch found here: https://git.archlinux.org/svntogit/packages.git/tree/trunk/intltool_distcheck-fix.patch?h=packages/intltool Ubuntu also has a path named no-guess-builddir.patch in this tarballs: http://archive.ubuntu.com/ubuntu/pool/universe/i/intltool/intltool_0.51.0-5ubuntu1.debian.tar.xz

Bug report on ubuntu is here: https://bugs.launchpad.net/intltool/+bug/1117944

So, we don't need to make any changes, we need debian to patch intltool.

Can someone in the @mate-desktop/debian-maintainers team do it?

yetist commented 5 years ago

@raveit65

Before debian fixes intltools, we have two choices:

  1. Repeat to add more files to ignore in POTFILES.skin, which requires modifying each project code, see #261
  2. Fix intltools on debian before compiling in docker, no need to modify the code, see #262

I think using #262 is better.

raveit65 commented 5 years ago

I prefer solution 2. Or is it possible to disable distcheck for debian builds at travis for the moment? @ monta See https://github.com/mate-desktop/mate-settings-daemon/pull/259#issuecomment-462403038 Can you please file out a report add debian. Btw. debian should be patched.

monsta commented 5 years ago

It's been two years since I've sent the patch to Debian maintainers. https://bugs.debian.org/851868

See it for yourself. They don't want it because upstream is dead or something.

yetist commented 5 years ago

@raveit65

Or is it possible to disable distcheck for debian builds at travis for the moment?

Use the follow line in .travis.yml can do this.

after_scripts:
  - if [ ${DISTRO_NAME} != "debian" ];then
  -     make distcheck
  - fi