Re: [exim] Exim 4.96 compile fails on Devuan 4

Top Page
Delete this message
Reply to this message
Author: Mike Tubby
Date:  
To: exim-users
Subject: Re: [exim] Exim 4.96 compile fails on Devuan 4


On 11/09/2022 22:15, Andrew C Aitchison via Exim-users wrote:
> On Sun, 11 Sep 2022, Mike Tubby via Exim-users wrote:
>
>> Hi all,
>>
>> Compiling Exim 4.96 fails on Devuan 4.0 Chimaera (basically Debian
>> but without systemd).
>>
>> Firstly it complained that I didn't have "pcre2.h" - which it has
>> never asked for before:
>>
>>     /bin/sh ../scripts/Configure-os.h
>>     cc -DMACRO_PREDEF macro_predef.c
>>     In file included from macro_predef.c:12:
>>     exim.h:527:10: fatal error: pcre2.h: No such file or directory
>>       527 | #include <pcre2.h>
>>           |          ^~~~~~~~~
>>     compilation terminated.
>>
>> so I did:
>>
>>     root@relay1:/home/mike/exim-4.96# apt-cache search pcre2
>>     elpa-pcre2el - Emacs mode to convert between PCRE, Emacs and rx
>> regexp syntax
>>     libpcre2-16-0 - New Perl Compatible Regular Expression Library -
>> 16 bit runtime files
>>     libpcre2-32-0 - New Perl Compatible Regular Expression Library -
>> 32 bit runtime files
>>     libpcre2-8-0 - New Perl Compatible Regular Expression Library- 8
>> bit runtime files
>>     libpcre2-dev - New Perl Compatible Regular Expression Library -
>> development files
>>     libpcre2-posix2 - New Perl Compatible Regular Expression Library
>> - posix-compatible runtime files
>>     libpcre3 - Old Perl 5 Compatible Regular Expression Library -
>> runtime files
>>     libpcre3-dev - Old Perl 5 Compatible Regular Expression Library -
>> development files
>>     librust-grep-pcre2-dev - Use PCRE2 with the 'grep' crate - Rust
>> source code
>>     librust-pcre2-dev - High level wrapper library for PCRE2 - Rust
>> source code
>>     librust-pcre2-sys-dev - Low level bindings to PCRE2 - Rust source
>> code
>>     pcre2-utils - New Perl Compatible Regular Expression Library -
>> utilities
>>     root@relay1:/home/mike/exim-4.96#
>>
>> and installed the bits I thought I needed:
>>
>>     root@relay1:/home/mike/exim-4.96# apt-get install libpcre2-dev
>> libpcre2-posix2
>>     Reading package lists... Done
>>     Building dependency tree... Done
>>     Reading state information... Done
>>     The following additional packages will be installed:
>>       libpcre2-16-0 libpcre2-32-0
>>     The following NEW packages will be installed:
>>       libpcre2-16-0 libpcre2-32-0 libpcre2-dev libpcre2-posix2
>>     0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded.
>>     Need to get 1,231 kB of archives.
>>     After this operation, 3,980 kB of additional disk space will be
>> used.
>>     Do you want to continue? [Y/n]
>>     Get:1 http://gb.deb.devuan.org/merged chimaera/main amd64
>> libpcre2-16-0 amd64 10.36-2 [231 kB]
>>     Get:2 http://gb.deb.devuan.org/merged chimaera/main amd64
>> libpcre2-32-0 amd64 10.36-2 [220 kB]
>>     Get:3 http://gb.deb.devuan.org/merged chimaera/main amd64
>> libpcre2-posix2 amd64 10.36-2 [49.1 kB]
>>     Get:4 http://gb.deb.devuan.org/merged chimaera/main amd64
>> libpcre2-dev amd64 10.36-2 [731 kB]
>>     Fetched 1,231 kB in 4s (311 kB/s)
>>
>>     <snip>
>>
>>
>> Now hen I compile I get:
>>
>>     cc spool_mbox.c
>>     cc arc.c
>>     cc bmi_spam.c
>>     cc dane.c
>>     cc dcc.c
>>     cc dmarc.c
>>     cc imap_utf7.c
>>     cc spf.c
>>     cc utf8.c
>>     cc version.c
>>     cc -o exim
>>     /usr/bin/ld: exim.o: in function `show_whats_supported':
>>     exim.c:(.text+0x95b): undefined reference to `pcre2_config_8'
>>     /usr/bin/ld: exim.o: in function `regex_must_compile':
>>     exim.c:(.text+0xf96): undefined reference to `pcre2_compile_8'
>>     /usr/bin/ld: exim.c:(.text+0xfcd): undefined reference to
>> `pcre2_general_context_create_8'
>>     /usr/bin/ld: exim.c:(.text+0xfd8): undefined reference to
>> `pcre2_compile_context_create_8'
>>     /usr/bin/ld: exim.c:(.text+0xfff): undefined reference to
>> `pcre2_compile_8'
>>     /usr/bin/ld: exim.c:(.text+0x100f): undefined reference to
>> `pcre2_compile_context_free_8'
>>     /usr/bin/ld: exim.c:(.text+0x1017): undefined reference to
>> `pcre2_general_context_free_8'
>>     /usr/bin/ld: exim.c:(.text+0x1030): undefined reference to
>> `pcre2_get_error_message_8'
>>     /usr/bin/ld: exim.c:(.text+0x1072): undefined reference to
>> `pcre2_get_error_message_8'
>>     /usr/bin/ld: exim.o: in function `regex_match_and_setup':
>>     exim.c:(.text+0x10c8): undefined reference to
>> `pcre2_match_data_create_from_pattern_8'
>>     /usr/bin/ld: exim.c:(.text+0x10f2): undefined reference to
>> `pcre2_match_8'
>>     /usr/bin/ld: exim.c:(.text+0x1132): undefined reference to
>> `pcre2_get_error_message_8'
>>
>>     ...
>>
>>     <snip>
>>
>>     ...
>>
>>
>>
>> Can't seem to find what's missing ... any ideas?
>
> # apt show libpcre2-8-0
>         ...        ...
>  This package contains the 8 bit runtime library, which operates on
>  ASCII and UTF-8 input.
>
> so I guess libpcre2-8-0 wasn't already installed.
>
> It wouldn't hurt to "make clean" first either.
>


root@relay1:/home/mike/exim-4.96# apt show libpcre2-8-0
Package: libpcre2-8-0
Version: 10.36-2
Priority: optional
Section: libs
Source: pcre2
Maintainer: Matthew Vernon <matthew@???>
Installed-Size: 680 kB
Depends: libc6 (>= 2.14)
Homepage: https://pcre.org/
Tag: role::shared-lib
Download-Size: 247 kB
APT-Manual-Installed: yes
APT-Sources: http://gb.deb.devuan.org/merged chimaera/main amd64 Packages
Description: New Perl Compatible Regular Expression Library- 8 bit
runtime files
 This is PCRE2, the new implementation of PCRE, a library of functions
 to support regular expressions whose syntax and semantics are as
 close as possible to those of the Perl 5 language. New projects
 should use this library in preference to the older library,
 confusingly called pcre3 in Debian.
 .
 This package contains the 8 bit runtime library.

root@relay1:/home/mike/exim-4.96#


doing a "make clean" and a "make" results in:


<snip> // lots of good stuff

x86_64-linux-gnu-gcc perl.c
cc malware.c
cc mime.c
cc regex.c
cc spam.c
cc spool_mbox.c
cc arc.c
cc bmi_spam.c
cc dane.c
cc dcc.c
cc dmarc.c
cc imap_utf7.c
cc spf.c
cc utf8.c
cc version.c
cc -o exim
/usr/bin/ld: exim.o: in function `show_whats_supported':
exim.c:(.text+0x95b): undefined reference to `pcre2_config_8'
/usr/bin/ld: exim.o: in function `regex_must_compile':
exim.c:(.text+0xf96): undefined reference to `pcre2_compile_8'
/usr/bin/ld: exim.c:(.text+0xfcd): undefined reference to
`pcre2_general_context_create_8'
/usr/bin/ld: exim.c:(.text+0xfd8): undefined reference to
`pcre2_compile_context_create_8'
/usr/bin/ld: exim.c:(.text+0xfff): undefined reference to `pcre2_compile_8'
/usr/bin/ld: exim.c:(.text+0x100f): undefined reference to
`pcre2_compile_context_free_8'
/usr/bin/ld: exim.c:(.text+0x1017): undefined reference to
`pcre2_general_context_free_8'
/usr/bin/ld: exim.c:(.text+0x1030): undefined reference to
`pcre2_get_error_message_8'
/usr/bin/ld: exim.c:(.text+0x1072): undefined reference to
`pcre2_get_error_message_8'
/usr/bin/ld: exim.o: in function `regex_match_and_setup':
exim.c:(.text+0x10c8): undefined reference to
`pcre2_match_data_create_from_pattern_8'
/usr/bin/ld: exim.c:(.text+0x10f2): undefined reference to `pcre2_match_8'
/usr/bin/ld: exim.c:(.text+0x1132): undefined reference to
`pcre2_get_error_message_8'
/usr/bin/ld: exim.c:(.text+0x1153): undefined reference to
`pcre2_get_ovector_count_8'
/usr/bin/ld: exim.c:(.text+0x11a2): undefined reference to
`pcre2_substring_get_bynumber_8'
/usr/bin/ld: exim.c:(.text+0x11d4): undefined reference to
`pcre2_match_data_free_8'
/usr/bin/ld: exim.o: in function `regex_match':
exim.c:(.text+0x120f): undefined reference to `pcre2_match_data_create_8'
/usr/bin/ld: exim.c:(.text+0x1246): undefined reference to `pcre2_match_8'
/usr/bin/ld: exim.c:(.text+0x1251): undefined reference to
`pcre2_get_ovector_pointer_8'
/usr/bin/ld: exim.o: in function `main':
exim.c:(.text+0x1d19): undefined reference to
`pcre2_general_context_create_8'
/usr/bin/ld: exim.c:(.text+0x1d28): undefined reference to
`pcre2_compile_context_create_8'
/usr/bin/ld: exim.c:(.text+0x1d3b): undefined reference to
`pcre2_match_context_create_8'
/usr/bin/ld: expand.o: in function `expand_string_internal':
expand.c:(.text+0x5cf9): undefined reference to `pcre2_compile_8'
/usr/bin/ld: expand.c:(.text+0x5d22): undefined reference to
`pcre2_get_error_message_8'
/usr/bin/ld: expand.c:(.text+0x5d6f): undefined reference to
`pcre2_match_data_create_8'
/usr/bin/ld: expand.c:(.text+0x5dbf): undefined reference to
`pcre2_get_ovector_pointer_8'
/usr/bin/ld: expand.c:(.text+0x5dfb): undefined reference to `pcre2_match_8'



so is still broken ...


Mike