Raymo111/i3lock-color

Debian Build Failed

JezerM opened this issue · 10 comments

This issue is a....

[ ] Bug
[x] Other kind of issue (Please describe in detail)

Current Behavior

Can't build i3lock-color in Ubuntu.
No package 'xcb-image' found

./install-i3lock-color.sh
autoreconf: Entering directory `.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal --force
autoreconf: configure.ac: tracing
autoreconf: configure.ac: not using Libtool
autoreconf: running: /usr/bin/autoconf --force
autoreconf: running: /usr/bin/autoheader --force
autoreconf: running: automake --add-missing --copy --force-missing
autoreconf: Leaving directory `.'
mkdir: se ha creado el directorio 'build/'
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking target system type... x86_64-pc-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... /usr/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... /usr/bin/sed
checking whether to build with code coverage support... no
checking whether to enable debugging... no
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 whether make supports the include directive... yes (GNU style)
checking dependency style of gcc... gcc3
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/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 explicit_bzero... 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 pam_authenticate... -lpam
checking for library containing iconv_open... none required
checking for pkg-config... /home/linuxbrew/.linuxbrew/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for xcb xcb-xkb xcb-xinerama xcb-randr xcb-composite... yes
checking for xcb-image... no
configure: error: Package requirements (xcb-image) were not met:

No package 'xcb-image' found

Environment

Output of i3lock --version:

i3lock version: 2.11.1

Where'd you get i3lock-color from?

[ ] AUR package (which one?)
[x] Built from source yourself
[ ] Other (Please describe in detail)

And yes, I installed the recommended packages for Ubuntu 20.10 in README

What's the output of sudo apt search xcb-image?

> sudo apt search xcb-image
Ordenando... Hecho
Buscar en todo el texto... Hecho
libxcb-image0/groovy,now 0.4.0-1build1 amd64 [instalado]
  utility libraries for X C Binding -- image

libxcb-image0-dev/groovy,now 0.4.0-1build1 amd64 [instalado]
  utility libraries for X C Binding -- image, development files

libxcb-image0 and libxcb-image0-dev are installed.

That's really strange. Ummm... it works for me on 20.04 LTS. Maybe try a reboot before you install?

I rebooted, but the problem persists.
Btw, this message is showed after No package 'xcb-image' found:

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

Alternatively, you may set the environment variables XCB_IMAGE_CFLAGS
and XCB_IMAGE_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
make: *** No se especificó ningún objetivo y no se encontró ningún makefile.  Alto.
[sudo] contraseña para jezer:
make: *** No hay ninguna regla para construir el objetivo 'install'.  Alto.

Though, PKG_CONFIG_PATH env variable does not exist.

Yeah you might have to set that to something in an rc file. I'm not sure, you'll have to search around for a solution there. Sorry I can't be of much help, I just can't repro it.

It seems .pc files are not shipped in debian packages as it's said here, so it's needed to install them from other sources.
So, right now, I successfully fixed the xcb-image problem with brew... Now, xcb-xrm is not found... I'm checking it.

Ok, after a long research, I built it.
So, for those packages that are not recognized in the process, such as xcb-image or xcb-xrm, you would need to either install them from not Debian sources or build them from original sources.
xcb-image can be installed with brew with brew install xcb-util-image.
xcb-xrm is not in brew, and I couldn't find a great source so I had to build it from the original source.

Dependencies for xcb-xrm:

  • libtool (install it with sudo apt install libtool)
  • xorg macros (sudo apt install xutils-dev)

How to build xcb-xrm:

  • First, clone it to wherever you want with --recursive flag.
  • ./autogen.sh
  • The .pc files are created.
  • Add the xcb-util-xrm folder path to PKG_CONFIG_PATH: export PKG_CONFIG_PATH=$PKG_CONFIG_PATH/:[the folder absolute path]
  • That's it. You can check it with the command pkg-config --list-all | grep "xcb-xrm"
  • It's recommendable to add this path permanently, but I don't know how yet...

Finally, building i3lock-color

  • Clone the repo wherever you want.
  • chmod +x build.sh or chmod +x install-i3lock-color.sh to build and install.
  • ./build.sh or ./install-i3lock-color.sh and hope nothing fails.
  • Then, go to build folder, and make.
  • That's all.

Good to know. ASan is a known issue, try compiling without it (you'll have to either do it manually or modify the script).

Edit: Since the previous comment has now been added as a tutorial to the readme, I've commented out some ASan errors that @JezerM was experiencing in his comment. Click on the dropdown beside "edited by" above the comment to read the original issues.

I just ran ../configure --prefix=/usr --sysconfdir=/etc --disable-sanitizers as suggested in i3lock, and that solved my problem.

autoreconf --force --install

rm -rf build/
mkdir -p build && cd build/

../configure \
  --prefix=/usr \
  --sysconfdir=/etc \
  --disable-sanitizers

make

Thanks~

No problem. I've just included the --disable-sanitizers flag by default in the build script, so hopefully no one else sees any issues.