Compiz compiling help

I’m trying to get compiz working - I had used it for years, but now I’m having problems.

This is a new/fresh install from: manjaro-xfce-21.2.1-220103-linux515.iso

So I’m using xfce.

I installed compiz-easy-patch - using pamac GUI with AUR enabled.

It compiled and worked - at first time of installing.

But there was a bug/crash that I got.

When I drag out a new window/object, compiz throws an exception, that gets caught - but all the windows are moved into the same workspace/screen. After that first crash/recover, compiz has fixed itself and the crash does not happen again.

eg. in mousepad, if I drag-out a tab to become a separate new window for the tab/file, or if I drag an email to a different folder in thunderbird.

I would say the crash sounds exactly like the one described here:

https://bugs.launchpad.net/ubuntu/+source/compiz/+bug/832312

but my cause may be different.

So then I tried removing compiz-easy-patch, and installing compiz from other sources (like the 0.8 version), and they were not complete, so everything got removed.

Now with all my previous efforts removed and cleaned, when I try to install compiz-easy-patch again, it error’s out when compiling:

[ 16%] Generating zh_TW/LC_MESSAGES/compiz.mo
[ 16%] Linking CXX static library libcompiz_grid_grabhandler.a
[ 16%] Generating zu/LC_MESSAGES/compiz.mo
/var/tmp/pamac-build-coach/compiz-easy-patch/src/compiz-0.9.14.1/po/xh.po:5: warning: header field 'Language' missing in header
/var/tmp/pamac-build-coach/compiz-easy-patch/src/compiz-0.9.14.1/po/zh_CN.po:7: warning: header field 'Language' missing in header
/var/tmp/pamac-build-coach/compiz-easy-patch/src/compiz-0.9.14.1/po/zh_HK.po:7: warning: header field 'Language' missing in header
/var/tmp/pamac-build-coach/compiz-easy-patch/src/compiz-0.9.14.1/po/zh_TW.po:7: warning: header field 'Language' missing in header
/var/tmp/pamac-build-coach/compiz-easy-patch/src/compiz-0.9.14.1/po/zu.po:5: warning: header field 'Language' missing in header
[ 16%] Built target compiz_grid_grabhandler
[ 16%] Linking CXX static library libcompiz_string.a
[ 16%] Built target compiz_string
[ 16%] Built target nls
make: *** [Makefile:166: all] Error 2
==> ERROR: A failure occurred in build().
    Aborting...

It does that with both the pamac GUI and from:

$ pikaur -S --noconfirm compiz-easy-patch

Any help on how to build, or track down the error better would be helpful.

Thanks,
John.

Alright, I’m seeing some bizarre behavior when compiling that package.

Compiling using the following:

git clone https://aur.archlinux.org/compiz-easy-patch.git
cd compiz-easy-patch && makepkg -s --noconfirm

The first time i compile it, it works. However, if I remove the compiz-easy-patch folder, then compile it again (using the same commands as above), it fails with that error message.

If I reboot, I can compile it again, but subsequent compilations give that error. Clearing /tmp and .cache folders don’t appear to make a difference.

the compizAUR package has the same compiling issue (first time works, subsequent times fail). compiling either of these packages once will prevent either from successfully compiling until after a reboot.

On the bright side, we now know how to re-create that issue at will (just compile it once, then compile it again immediately afterward).

So I may have found a workaround…

half the time, if i go to compile it and it fails, it will succeed after some cleanup and switching to a different terminal.

try the build:

git clone https://aur.archlinux.org/compiz-easy-patch.git
cd compiz-easy-patch && makepkg -s

If it fails, run the following:

sudo rm -rf pkg
rm -rf ./src/compiz-*/build

close the terminal, then open another in the same location (compiz-easy-patch) and run the following:

sleep 60; makepkg -si --noextract

i’m not sure why this appears to work. maybe a race condition, and/or leftover items set in the bash environment (although I’ve compared printenv for before and after and there doesn’t appear to be any differences).

You could try removing the "${srcdir}/${_name}-${pkgver}/build" dir if it exist

possibly adding a remove command in the build() function

...

build() {
    cd "${srcdir}/${_name}-${pkgver}"
    [[ -d ./build ]] && rm -rf ./build
    mkdir build; cd build

...

Another option to build is using chrootbuild as the makepkg process will look at the system packages and include those in .SCRINFO and this could - perhaps - I really have no idea what I am talking about … :scream:

 sudo pacman -Syu manjaro-chrootbuild

Assuming a tree like this sources/compiz-easy-patch

./sources
   ...
├── compiz-easy-patch
│   ├── compiz-easy-defaults.patch
│   ├── compiz-easy.gschema.override
│   ├── compiz-easy-patch.install
│   ├── compiz-gtk-decorator-theme-selector
│   ├── compiz-gtk-decorator-theme-selector.desktop
│   ├── compiz-xfce-autostart-setup
│   ├── compiz-xfce-autostart-setup.desktop
│   ├── compiz-xfce-uninstall-helper
│   ├── compiz-xfce-uninstall-helper.desktop
│   ├── focus-prevention-disable.patch
│   ├── gcc10_common_fix.patch
│   ├── gtk-extents.patch
│   ├── LICENSE
│   ├── no-compile-gschemas.patch
│   ├── PKGBUILD
│   ├── README.md
│   ├── remove-unused-or-broken-buttons.patch
│   ├── reverse-unity-config.patch
│   └── screenshot-launch-fix.patch
   ...

Navigate to the sources folder and run chrootbuild

sudo chrootbuild -p compiz-easy-patch

The resulting packages differs in size - I have no idea why - that would require some deeper investigation - a task for another time - one quick-draw is the size of .SRCINFO :person_shrugging: due to the lesser amount of packages in the chroot.

  • makepkg -s
    -rw-r--r-- 1 fh fh 6771081 Mar 27 08:27 compiz-easy-patch-0.9.14.1-6-x86_64.pkg.tar.zst
    
  • chrootbuild -p compiz-easy-patch
    -rw-r--r-- 1 fh fh 6756568 Mar 27 08:58 compiz-easy-patch-0.9.14.1-6-x86_64.pkg.tar.zst
    
2 Likes

Thanks @lectrode - the first build worked, so now I have:

compiz-0.9.14.1.tar.xz = 3903188
compiz-easy-patch-0.9.14.1-6-x86_64.pkg.tar.zst = 6771406

Which one do I install (using pacman -U ./XXX)?

Or should I run:

makepkg --install

or:

make install

and from which sub-directory?

And, should I also install metacity too?

the .pkg.tar.zst is the installation package. you can install it with

sudo pacman -U *.pkg.tar.zst

metacity should be automatically installed as a dependency for compiz-easy-patch when you install it.

Thanks - so far, so good.

It’s running, no crash.

I’ll do my config and use it for a bit…

Update:

Ah, that didn’t last long.

The ‘no crash’ was just for the first running of compiz, right after the compile.

Ever since then, I get the crash when dragging out a new window (eg. 2 tabs in mousepad, drag one out).

It does output this error:

/usr/include/c++/11.2.0/bits/stl_vector.h:1045: std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::operator[](std::vector<_Tp, _Alloc>::size_type) [with _Tp = float; _Alloc = std::allocator<float>; std::vector<_Tp, _Alloc>::reference = float&; std::vector<_Tp, _Alloc>::size_type = long unsigned int]: Assertion '__n < this->size()' failed.

[1]+  Aborted                 (core dumped) compiz --replace

Again, only crashed for the first run. There after, it does not crash.

Also, with the window style/appearance theme of ‘Adwaita’, the xfce4-terminal is missing its window borders.

I think that may be related to /usr/share/themes/Adwaita not having a ‘metacity-1’ sub-directory?

So I installed’ xfce-theme-greybird’ and use Greybird for my themes.

It’s not exactly the look I want, but I can live with it.

Thank you sir! The chrootbuild worked. Compiz is running again.

One thing I’m wondering: At start chrootbuild seemed to download a bunch of packages. Are these files permanently installed, or will the only reside during build?

The default is to create the root in /var/lib/chrootbuild and the destination is not removed afterwards but reused/updated when chrootbuild is run next time.

$ sudo du --si /var/lib/chrootbuild | tail -1
2,5G    /var/lib/chrootbuild/
1 Like

sudo du -si /var/lib/chrootbuild|tail -1

produces: du: invalid option -- 'i'

without “i” it boils down to:
2155520 /var/lib/chrootbuild

So what am I missing?

the i is likely supposed to be an h for “human readable”

:slight_smile:

It is a typo - it should have –si