Skip to content

builder doesn't work when use custom builder with preinstalled system libraries #355

Open
@garry-t

Description

How to make it work, I have built my own builder followed by https://buildpacks.io/docs/for-platform-operators/how-to/build-inputs/create-builder/builder/

In result packages in not visible during build phase

# build image docker
FROM ubuntu:jammy

COPY ./bin/yj-linux /usr/local/bin/yj

# Workaround for docker <= 20.10.9
RUN sed -i -e 's/^APT/# APT/' -e 's/^DPkg/# DPkg/' /etc/apt/apt.conf.d/docker-clean

# Install packages that we want to make available at both build and run time
RUN apt-get update && apt-get install -y xz-utils ca-certificates libyaml-0-2 git cmake libutfcpp-dev\
    libjemalloc2 \
    apt-transport-https \
    build-essential \
    ca-certificates \
    curl \
    file \
    ffmpeg\
    git-core \
    gnupg \
    imagemagick \
    libcurl4-openssl-dev \
    libffi-dev \
    libfontconfig \
    libmagickcore-dev \
    libpq-dev \
    libreadline-dev \
    libssl-dev \
    libxext6 \
    libxml2-dev \
    libxrender-dev \
    libxslt1-dev \
    libyaml-dev \
    mediainfo \
    python3-pip \
    python3-setuptools \
    zlib1g-dev &&\
    apt-get clean && \
    rm -rf /var/lib/apt/lists/* && \
    python3 -m pip install mutagen



RUN git clone https://github.com/taglib/taglib.git /tmp/taglib && \
    cd /tmp/taglib && \
    git checkout 50b89ad19a3097a626b834c0265b2f4b62d2f274 && \
    mkdir build && cd build && \
    cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release .. && \
    make -j$(nproc) && make install && \
    rm -rf /tmp/taglib

# Set required CNB user information
ARG cnb_uid=1000
ARG cnb_gid=1000
ENV CNB_USER_ID=${cnb_uid}
ENV CNB_GROUP_ID=${cnb_gid}

# Create user and group
RUN groupadd cnb --gid ${CNB_GROUP_ID} && \
  useradd --uid ${CNB_USER_ID} --gid ${CNB_GROUP_ID} -m -s /bin/bash cnb

# Set user and group
USER ${CNB_USER_ID}:${CNB_GROUP_ID}

# Set required CNB target information
LABEL io.buildpacks.base.distro.name="ubuntu"
LABEL io.buildpacks.base.distro.version="22.04"
[[io.buildpacks.group]]
id = "heroku/ruby"

This build fails to find openssl-dev, libpq-dev and probably other packages.

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
[builder]       
[builder]       current directory:
[builder]       /layers/heroku_ruby/gems/ruby/3.2.0/gems/openssl-3.0.0/ext/openssl
[builder]       /layers/heroku_ruby/ruby/bin/ruby extconf.rb
[builder]       checking for rb_io_maybe_wait()... yes
[builder]       checking for t_open() in -lnsl... no
[builder]       checking for socket() in -lsocket... no
[builder]       checking for openssl/ssl.h... no
[builder]       *** extconf.rb failed ***
[builder]       Could not create Makefile due to some reason, probably lack of necessary
[builder]       libraries and/or headers.  Check the mkmf.log file for more details.  You may
[builder]       need configuration options.

[builder]           openssl
[builder]       
[builder]       
[builder]       Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
[builder]       
[builder]           current directory: /layers/heroku_ruby/gems/ruby/3.2.0/gems/pg-1.5.8/ext
[builder]       /layers/heroku_ruby/ruby/bin/ruby extconf.rb
[builder]       Calling libpq with GVL unlocked
[builder]       checking for pg_config... no
[builder]       checking for libpq per pkg-config... no
[builder]       Using libpq from 
[builder]       checking for libpq-fe.h... no
[builder]       Can't find the 'libpq-fe.h header
[builder]       *****************************************************************************
[builder]       
[builder]       Unable to find PostgreSQL client library.
[builder]       
[builder]       Please install libpq or postgresql client package like so:
[builder]         sudo apt install libpq-dev
[builder]         sudo yum install postgresql-devel
[builder]         sudo zypper in postgresql-devel
[builder]         sudo pacman -S postgresql-libs

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions