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

libxcb_xrm #82

Closed
braingineer opened this Issue May 10, 2016 · 19 comments

Comments

Projects
None yet
9 participants
@braingineer
Copy link

braingineer commented May 10, 2016

Hi all,

I seem to be having an issue getting this i3-gaps installed---which is weird because I installed it fresh not less than 6 months ago.

I am currently on Mint 17.3---which is based on Ubuntu 14.04.

The issue is "libxcb_xrm" or "xcb_xrm.h". I have scoured the internet and elsewhere and I can't figure it out.

Originally, I couldn't do a 'make' with gaps-next branch, because it would hit the xcb_xrm.h missing snag. Then, after (2), below, I got it installed but now I can't log in because of an xsession error "can't locate libxcb_xrm.so.0".

I tried:

  1. google. I found a package in yakkety with it, I think.
  2. the xcb-util-xrm repo.
  3. random stuff and pointed threats. no cooperation.

is there something I'm missing?

thanks

@Airblader

This comment has been minimized.

Copy link
Owner

Airblader commented May 10, 2016

i3, and therefore i3-gaps, started depending on a new library called xcb-util-xrm a couple of days ago. That means that distributions probably don't have that library packaged yet. So what you should do is go to your package maintainer or distribution maintainers and tell them to provide the library package. We've sent out a request to major distributions a while ago, but haven't received any feedback, so all I know is that Debian testing has such a package (others might, too, but I don't know).

To make it work meanwhile, you need to install the library yourself from source. It seems like that's what you tried to do, but "the xcb-util-xrm repo" doesn't really tell much about how you installed it. It'd be easiest if you checked how something like xcb-util-cursor is packaged for your distribution and do it in a similar way since the libraries are quite similar in their setup.

Alternatively, don't use the gaps-next branch for now, but the gaps branch, which is the stable i3 release that does not yet have this dependency. But again, please go to your distro / package maintainers and let them know about it.

@braingineer

This comment has been minimized.

Copy link

braingineer commented May 10, 2016

thanks for the immediate feedback!

to respond to some things:

  • I rolled back to the commit of the last release and got it installed (not sure why I didn't try that sooner.....)
  • sweet. my timing is awesome, ha.
  • for the xcb-util-xrm repo stuff, sorry about the lack of details. compiling things from source has never been my strong suit and tonight was my first foray into the whole autoconf stuff. I think my process was aclocal && autoconf && ./autogen.sh && make && sudo make install but not that cleanly (aka, lots of "why didn't that work.. oh i need libtools" or something like that).
  • I will definitely harass the package maintainers. I didn't realize they were the ones I could wag a finger at.

so, for the xcb-util-xrm bit, was that the right sequence? Was it supposed to install the libxcb_xrm.so as well as provide xcb_xrm.h?

@Airblader

This comment has been minimized.

Copy link
Owner

Airblader commented May 10, 2016

Was it supposed to install the libxcb_xrm.so as well as provide xcb_xrm.h?

Yes.

so, for the xcb-util-xrm bit, was that the right sequence?

The important part of where the library gets installed to, which is distribution dependant. For example, for Arch the sequence is this:

git submodule update --init
./autogen.sh --prefix=/usr
make
sudo make install
@braingineer

This comment has been minimized.

Copy link

braingineer commented May 10, 2016

Aaah. It was probably the prefix bit that I had left out that caused the trouble. Next time I'm feeling adventurous and can take a break from things working, I'll try to upgrade ;).

Thanks again for your help!

@patrick-motard

This comment has been minimized.

Copy link

patrick-motard commented Nov 14, 2016

@braingineer can you or @Airblader include instructions on the readme for this repo on how to install this dependency? Also, I checkout the gaps branch of i3-gaps and went through the install instructions and still was prompted with:

configure: error: Package requirements (xcb-xrm) were not met:
No package 'xcb-xrm' found

On Ubuntu 16.04.

@Airblader

This comment has been minimized.

Copy link
Owner

Airblader commented Nov 14, 2016

4.13 was just released so now the gaps branch contains the dependency as well. You should be able to find a PPA for xcb-xrm on Ubuntu.

@clawoflight

This comment has been minimized.

Copy link
Contributor

clawoflight commented Nov 14, 2016

Man, things like this remind me of why I switched to Arch... :)

@patrick-motard

This comment has been minimized.

Copy link

patrick-motard commented Nov 25, 2016

@Airblader I want to preface the below comments by saying that I am aware that you don't use i3-gaps on ubuntu, and it not your job to make sure it is compatible and easy to install on any distro. I'm only including this information to inform you and others of my experience so far so that maybe we can collectively be aware of some issues that exist for new users (like me!).

I have not been able to find a PPA on ubuntu for xcb-xrm. So looks like I wont be using i3-gaps on Ubuntu until that becomes available.

I tried checkout out a tag dated before "May 2016", the date you said i3 began to depend on xcb-xrm, but it didn't work either.

I found a thread on reddit which discussed a similar issue. In it you responded with instructions on how to install xcb-util-xrm from source. I thought it was a great find, but I'm very confused why you don't include these instructions on the readme for xcb-util-xrm github repo.

I tried the instructions you described, and it failed because I didn't have xorg-util-macros which is what you said might happen. I was not able to find a repository for ubuntu conaining xorg-util-macros, so i also was not able to install xcb-util-xrm. Looks like the person in the reddit thread had issues as well since the thread went on past your description and no conclusion was reached.

This page looked promising as a possible way of installing xcb-util-xrm but i've no idea how to install it.

@Airblader

This comment has been minimized.

Copy link
Owner

Airblader commented Nov 25, 2016

I tried checkout out a tag dated before

The 4.12 tag should work just fine. That tag also still uses the old build tooling instead of autotools.

I was not able to find a repository for ubuntu conaining xorg-util-macros, so i also was not able to install xcb-util-xrm.

I think on Ubuntu the package providing this is xutils-dev.

I'm very confused why you don't include these instructions on the readme for xcb-util-xrm github repo.

For one because autotools is a standard tooling and you can read up on it basically anywhere. The other reason is that everybody installing from source is not the solution. The solution is for somebody to provide a package in a PPA and I rely on the community to do its job.

This page looked promising as a possible way of installing xcb-util-xrm but i've no idea how to install it.

That's the actual Ubuntu package for it, but it's only available starting with Yakety, so 16.10.

@rivertam

This comment has been minimized.

Copy link

rivertam commented Dec 1, 2016

Compiled: How to build i3-gaps on Ubuntu 16.04

Because this is the first result on Google when researching the issue, I wanted to compile all of the knowledge alluded to in this thread here.

Here's what I did to install i3-gaps (assuming i3 is already installed)

sudo apt install libxcb1-dev libxcb-keysyms1-dev libpango1.0-dev libxcb-util0-dev libxcb-icccm4-dev libyajl-dev libstartup-notification0-dev libxcb-randr0-dev libev-dev libxcb-cursor-dev libxcb-xinerama0-dev libxcb-xkb-dev libxkbcommon-dev libxkbcommon-x11-dev autoconf
cd /tmp
git clone https://github.com/Airblader/xcb-util-xrm
cd xcb-util-xrm
git submodule update --init
./autogen.sh --prefix=/usr
make
sudo make install
cd /some/directory
git clone https://www.github.com/Airblader/i3 i3-gaps
cd i3-gaps
rm -rf build
mkdir build
cd build
../configure --prefix=/usr --sysconfdir=/etc
make
sudo make install

Then just refresh i3 and that'll do it.

@armand1m

This comment has been minimized.

Copy link

armand1m commented Jan 27, 2017

@rivertam thanks for your script!

But when running ./autogen.sh --prefix=/usr for building the xcb-util-xrm, this was the output:

hobbit@hobbit-infoway-w7430:/tmp/xcb-util-xrm$ ./autogen.sh --prefix=/usr
autoreconf: Entering directory `.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal -I m4
configure.ac:16: error: must install xorg-macros 1.16.0 or later before running autoconf/autogen
m4/xcb_util_common.m4:8: XCB_UTIL_COMMON is expanded from...
configure.ac:16: the top level
autom4te: /usr/bin/m4 failed with exit status: 1
aclocal: error: echo failed with exit status: 1
autoreconf: aclocal failed with exit status: 1

executed sudo apt install xutils-dev for the xorg-macros package, and tried again.

this was the output:

hobbit@hobbit-infoway-w7430:/tmp/xcb-util-xrm$ ./autogen.sh --prefix=/usr
autoreconf: Entering directory `.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal -I m4
configure.ac:16: warning: AC_PROG_LIBTOOL is m4_require'd but not m4_defun'd
m4/xcb_util_common.m4:8: XCB_UTIL_COMMON is expanded from...
configure.ac:16: the top level
configure.ac:16: warning: AC_PROG_LIBTOOL is m4_require'd but not m4_defun'd
m4/xcb_util_common.m4:8: XCB_UTIL_COMMON is expanded from...
configure.ac:16: the top level
autoreconf: configure.ac: tracing
configure.ac:16: warning: AC_PROG_LIBTOOL is m4_require'd but not m4_defun'd
m4/xcb_util_common.m4:8: XCB_UTIL_COMMON is expanded from...
configure.ac:16: the top level
autoreconf: configure.ac: not using Libtool
autoreconf: running: /usr/bin/autoconf
configure.ac:16: warning: AC_PROG_LIBTOOL is m4_require'd but not m4_defun'd
m4/xcb_util_common.m4:8: XCB_UTIL_COMMON is expanded from...
configure.ac:16: the top level
configure:4415: error: possibly undefined macro: AC_PROG_LIBTOOL
      If this token and others are legitimate, please use m4_pattern_allow.
      See the Autoconf documentation.
autoreconf: /usr/bin/autoconf failed with exit status: 1

So I executed: sudo apt install libtool, tried again and successfully build the xcb-util-xrm.

I've included these two libraries in the first apt install command of your snippet.

Also, included the autoreconf --force --install line, that generates the configure script needed for some steps after.

sudo apt install libxcb1-dev libxcb-keysyms1-dev libpango1.0-dev libxcb-util0-dev libxcb-icccm4-dev libyajl-dev libstartup-notification0-dev libxcb-randr0-dev libev-dev libxcb-cursor-dev libxcb-xinerama0-dev libxcb-xkb-dev libxkbcommon-dev libxkbcommon-x11-dev autoconf xutils-dev libtool
cd /tmp
git clone https://github.com/Airblader/xcb-util-xrm
cd xcb-util-xrm
git submodule update --init
./autogen.sh --prefix=/usr
make
sudo make install
cd /some/directory
git clone https://www.github.com/Airblader/i3 i3-gaps
cd i3-gaps
autoreconf --force --install
rm -rf build
mkdir build
cd build
../configure --prefix=/usr --sysconfdir=/etc
make
sudo make install
@gammons

This comment has been minimized.

Copy link

gammons commented Feb 20, 2017

@Airblader I ran into this issue as well with Ubuntu 16.04 and it took a lot of digging to get to this closed issue. It makes sense to update your "Compiling & Installing" wiki page for 16.04. libxcb-xrm-dev does not exist as a package, and is a big stumbling block for those who want to use i3-gaps with Ubuntu.

@Airblader

This comment has been minimized.

Copy link
Owner

Airblader commented Feb 20, 2017

I'm OK with someone updating the wiki, but as I've already mentioned in the wiki I'm not looking to keep telling everybody individually how to compile from source. No one in the Ubuntu community seems to be willing to provide a package and that is unfortunate, but it gets tiring to compensate for this by answering the same question over and over again.

@patrick-motard

This comment has been minimized.

Copy link

patrick-motard commented Feb 20, 2017

Hopefully a Ubuntu i3-gaps user who understands how to install it easily can add to the documentation at some point. I was never able to get it to work. Also hope the package libxcb-xrm package is added to ubuntu at some point.

@Airblader

This comment has been minimized.

Copy link
Owner

Airblader commented Feb 20, 2017

xcb-xrm already is in Ubuntu with 16.10, I believe.

@patrick-motard

This comment has been minimized.

Copy link

patrick-motard commented Feb 20, 2017

Definitely understand not wanting to personally maintain install instructions for every distribution under the sun and maintain this package at the same time. The community should help out. If I ever do figure it out I'll submit a PR to update the docs. Thanks for allowing us to add instructions per distro to it. 👍

@dragon788

This comment has been minimized.

Copy link

dragon788 commented Dec 23, 2017

For those stumbling on this later, this PPA has just enough to get a newer rofi going (yay for not breaking everything else on the system with random dependencies), and from there you can probably install the latest rofi manually via dpkg -i rofi-1.X.X.deb.

sudo add-apt-repository ppa:simon-monette/i3-gaps -y
sudo apt-get update
@wanderrful

This comment has been minimized.

Copy link

wanderrful commented Aug 12, 2018

I tried following the directions outlined in this repo's Readme for Ubuntu 14.04 LTS, I tried following the directions given in this issue thread, and I tried following the directions in the blog post that the one guy made here based on this issue thread: https://benjames.io/2017/09/03/installing-i3-gaps-on-ubuntu-16-04/

It has been 3.5 hours now and I officially give up. Not only did I break my Ubuntu distro by doing sudo apt-get update which somehow broke my NetworkManager's ability to connect to my wired connection, but even after completely wiping and reinstalling a brand new fresh distro and following all of these directions from scratch line by line this thing still pretends not to know what's going on.

user@computer:/tmp/xcb-util-xrm$ sudo ./autogen.sh --prefix=/usr
autoreconf: Entering directory `.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal -I m4
configure.ac:16: warning: AC_PROG_LIBTOOL is m4_require'd but not m4_defun'd
m4/xcb_util_common.m4:8: XCB_UTIL_COMMON is expanded from...
configure.ac:16: the top level
configure.ac:16: warning: AC_PROG_LIBTOOL is m4_require'd but not m4_defun'd
m4/xcb_util_common.m4:8: XCB_UTIL_COMMON is expanded from...
configure.ac:16: the top level
autoreconf: configure.ac: tracing
configure.ac:16: warning: AC_PROG_LIBTOOL is m4_require'd but not m4_defun'd
m4/xcb_util_common.m4:8: XCB_UTIL_COMMON is expanded from...
configure.ac:16: the top level
autoreconf: configure.ac: not using Libtool
autoreconf: running: /usr/bin/autoconf
configure.ac:16: warning: AC_PROG_LIBTOOL is m4_require'd but not m4_defun'd
m4/xcb_util_common.m4:8: XCB_UTIL_COMMON is expanded from...
configure.ac:16: the top level
autoreconf: configure.ac: not using Autoheader
autoreconf: running: automake --add-missing --copy --no-force
configure.ac:16: warning: AC_PROG_LIBTOOL is m4_require'd but not m4_defun'd
m4/xcb_util_common.m4:8: XCB_UTIL_COMMON is expanded from...
configure.ac:16: the top level
Makefile.am:24: error: Libtool library used but 'LIBTOOL' is undefined
Makefile.am:24:   The usual way to define 'LIBTOOL' is to add 'LT_INIT'
Makefile.am:24:   to 'configure.ac' and run 'aclocal' and 'autoconf' again.
Makefile.am:24:   If 'LT_INIT' is in 'configure.ac', make sure
Makefile.am:24:   its definition is in aclocal's search path.
autoreconf: automake failed with exit status: 1
akdlzmf@michelle:/tmp/xcb-util-xrm$ make
make: *** No targets specified and no makefile found.  Stop.
user@computer:/tmp/xcb-util-xrm$ 
user@computer:/usr/local/etc/i3-gaps$ { sudo autoreconf --force --install; sudo rm -rf build/; sudo mkdir -p build && cd build/;  sudo ../configure --prefix=/usr --sysconfdir=/etc --disable-sanitizers; }
Makefile.am:229: warning: '%'-style pattern rules are a GNU make extension
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... x86_64-unknown-linux-gnu
checking for gsed... sed
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether make supports nested variables... (cached) yes
checking whether to enable maintainer-specific portions of Makefiles... yes
checking for gawk... (cached) mawk
checking for GNU make... make
checking for a sed that does not truncate output... /bin/sed
checking whether to build with code coverage support... no
checking whether to enable debugging... yes
checking for style of include used by make... GNU
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking dependency style of gcc... gcc3
checking for gcc option to accept ISO C99... -std=gnu99
checking how to run the C preprocessor... gcc -std=gnu99 -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking minix/config.h usability... no
checking minix/config.h presence... no
checking for minix/config.h... no
checking whether it is safe to define __EXTENSIONS__... yes
checking for stdbool.h that conforms to C99... yes
checking for _Bool... yes
checking for mode_t... yes
checking for off_t... yes
checking for pid_t... yes
checking for size_t... yes
checking for ssize_t... yes
checking for pid_t... (cached) yes
checking vfork.h usability... no
checking vfork.h presence... no
checking for vfork.h... no
checking for fork... yes
checking for vfork... yes
checking for working fork... yes
checking for working vfork... (cached) yes
checking whether lstat correctly handles trailing slash... yes
checking for working strnlen... yes
checking for atexit... yes
checking for dup2... yes
checking for ftruncate... yes
checking for getcwd... yes
checking for gettimeofday... yes
checking for localtime_r... yes
checking for memchr... yes
checking for memset... yes
checking for mkdir... yes
checking for rmdir... yes
checking for setlocale... yes
checking for socket... yes
checking for strcasecmp... yes
checking for strchr... yes
checking for strdup... yes
checking for strerror... yes
checking for strncasecmp... yes
checking for strndup... yes
checking for strrchr... yes
checking for strspn... yes
checking for strstr... yes
checking for strtol... yes
checking for strtoul... yes
checking for library containing floor... -lm
checking for library containing ev_run... -lev
checking for library containing shm_open... -lrt
checking for library containing iconv_open... none required
checking whether gcc -std=gnu99 is Clang... no
checking whether pthreads work with -pthread... yes
checking for joinable pthread attribute... PTHREAD_CREATE_JOINABLE
checking whether more special flags are required for pthreads... no
checking for PTHREAD_PRIO_INHERIT... yes
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for LIBSN... yes
checking for XCB... yes
checking for XCB_UTIL... yes
checking for XCB_UTIL_CURSOR... yes
checking for XCB_UTIL_KEYSYMS... yes
checking for XCB_UTIL_WM... yes
checking for XCB_UTIL_XRM... no
configure: error: Package requirements (xcb-xrm) were not met:

No package 'xcb-xrm' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Even running sudo -i and manually doing all of this as root provides the same issues.

I added 3 different PPAs and they all reported that these packages you guys want me to install don't exist.

I just wanted was to make my Ubuntu look pretty. That's all!

I'm done. I'm so done with this. Prettifying my desktop is not worth all of this BS.

@Airblader

This comment has been minimized.

Copy link
Owner

Airblader commented Aug 13, 2018

I'm not entirely sure what to answer since you don't seem to be interested in making it work anymore.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment