<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>58008</bug_id>
          
          <creation_ts>2026-02-25 12:55:57 +0300</creation_ts>
          <short_desc>Отсутствует Cflags: -I${includedir} в  /usr/lib64/pkgconfig/oniguruma.pc</short_desc>
          <delta_ts>2026-03-06 03:24:15 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>rpm-build</component>
          <version>unstable</version>
          <rep_platform>x86_64</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P5</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Vitaly Lipatov">lav</reporter>
          <assigned_to name="placeholder@altlinux.org">placeholder</assigned_to>
          <cc>arseny</cc>
    
    <cc>glebfm</cc>
    
    <cc>imz</cc>
    
    <cc>ldv</cc>
    
    <cc>placeholder</cc>
    
    <cc>rider</cc>
    
    <cc>vt</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>282651</commentid>
    <comment_count>0</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2026-02-25 12:55:57 +0300</bug_when>
    <thetext>При сборке rust-кода с этой библиотекой не получается найти заголовки.

pkg-config не возвращает -I/usr/include.
далее
https://crates.io/crates/pkg-config не включает /usr/include в include_paths
далее
onig_sys не может найти oniguruma.h
там такой код:

// onig_sys/build.rs:240-245
for path in &amp;lib.include_paths {
    let header = path.join(&quot;oniguruma.h&quot;);
    if header.exists() {
        bindgen_headers(&amp;header.display().to_string());
        return;
    }
}


Мне кажется, у нас дефолтные пути специально убраны. Но тогда ещё было rust :)


На ALT:
$ cat /usr/lib64/pkgconfig/oniguruma.pc
prefix=/usr
exec_prefix=/usr
libdir=/usr/lib64
includedir=/usr/include
datarootdir=/usr/share
datadir=/usr/share

Name: oniguruma
Description: Regular expression library
Version: 6.9.10
Requires:
Libs: -lonig
Cflags:


На Fedora:
$ cat /usr/lib64/pkgconfig/oniguruma.pc
prefix=/usr
exec_prefix=/usr
libdir=/usr/lib64
includedir=/usr/include
datarootdir=/usr/share
datadir=/usr/share

Name: oniguruma
Description: Regular expression library
Version: 6.9.10
Requires:
Libs: -L${libdir} -lonig
Cflags: -I${includedir}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282706</commentid>
    <comment_count>1</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2026-02-25 18:09:03 +0300</bug_when>
    <thetext>Вижу что в pc.in есть желаемое, а в итоговом результате - нету.
Но у меня в пакете нет ничего специального для того, что бы чистить pc файлы. Думаю что виноват кто-то в rpmbuild:

Cleaning files in /usr/src/tmp/oniguruma-buildroot (auto)
mode of &apos;./usr/lib64/libonig.so.5.5.0&apos; changed from 0755 (rwxr-xr-x) to 0644 (rw-r--r--)
Verifying and fixing files in /usr/src/tmp/oniguruma-buildroot (binconfig,pkgconfig,libtool,desktop,gnuconfig)
/usr/bin/onig-config:
61c61
&lt;         show_includedir=-I/usr/include
---
&gt;         show_includedir=
/usr/lib64/pkgconfig/oniguruma.pc: Cflags: &apos;-I${includedir}&apos; --&gt; &apos;&apos;
/usr/lib64/pkgconfig/oniguruma.pc: Libs: &apos;-L${libdir} -lonig&apos; --&gt; &apos;-lonig&apos;
Checking contents of files in /usr/src/tmp/oniguruma-buildroot/ (default)

$ rpm -qf /usr/lib/rpm/fixup-pkgconfig 
rpm-build-4.0.4.210-alt1.x86_64</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282707</commentid>
    <comment_count>2</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2026-02-25 18:10:08 +0300</bug_when>
    <thetext>Т.к. проблема видимо глобальная, то локальные хаки глобально ничего не изменят - чинить надо rpm-build или rust-код.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282714</commentid>
    <comment_count>3</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2026-02-25 18:53:35 +0300</bug_when>
    <thetext>-I/usr/include не нужен и даже вреден.  Далее следует цитата из man gcc:

You can use -I to override a system header file, substituting your own version, since these directories are searched before the standard system header file directories.  However, you should not use this option to add directories that contain vendor-supplied system header files; use -isystem for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282719</commentid>
    <comment_count>4</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2026-02-25 20:08:00 +0300</bug_when>
    <thetext>Дим, а насколько вообще реально то, что (при условии что все другие дистрибутивы не вычищают pc файлы) смена порядка поиска заголовков может привести к проблемам ?

Ведь чистка pc файлов рассчитана на то, что их будет использовать только gcc, а реальность оказалась такова, что есть и другие потребители и они совсем не готовы к тому, что у нас поведение меняется от апстримного.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283314</commentid>
    <comment_count>5</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2026-03-05 16:44:54 +0300</bug_when>
    <thetext>(Ответ для Anton Farygin на комментарий #1)
&gt; Вижу что в pc.in есть желаемое, а в итоговом результате - нету.
&gt; Но у меня в пакете нет ничего специального для того, что бы чистить pc
&gt; файлы. Думаю что виноват кто-то в rpmbuild:
...

У меня наоборот, не убраны, хотя хотелось бы:

$ cat /usr/lib64/pkgconfig/tdjson.pc
prefix=/usr

Name: tdjson
Description: Telegram Library - JSON interface (shared)
Version: 1.8.52

CFlags: -I&quot;${prefix}/include&quot;
Libs: -L&quot;${prefix}/lib64&quot; -ltdjson
Requires.private: tdjson_private


Видимо, потому что не использованы промежуточные переменные типа
libdir=/usr/lib64
includedir=/usr/include</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283343</commentid>
    <comment_count>6</comment_count>
    <who name="Vitaly Chikunov">vt</who>
    <bug_when>2026-03-05 21:52:47 +0300</bug_when>
    <thetext>При каких условиях pkg-config не возвращает -I/usr/include, а должен?

Если ошибка в pkg-config-rs, то, вроде бы, он и должен её фиксить.

Зачем у нас удаляется -I/usr/include из *.pc файлов не вполне понятно, ведь это ломает поддержку PKG_CONFIG_SYSROOT_DIR / PKG_CONFIG_SYSTEM_INCLUDE_PATH. pkg-config сам справляется с удалением -I/usr/include, но может раньше он этого не делал? Тогда это просто устарело, зачем делать за pkg-config его работу.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283348</commentid>
    <comment_count>7</comment_count>
    <who name="Vitaly Chikunov">vt</who>
    <bug_when>2026-03-05 22:47:13 +0300</bug_when>
    <thetext>Код, который удаляет -I от 2002. Может его убрать?

Или оставить только кейс с /usr/local/include

                new_val=`printf %s &quot;$new_val&quot; |sed -e &apos;s,\(^\| \+\)-I/usr\(/local\)\?/include\($\| \+\),\1\3,g&apos;` || return 1
                        new_val=`printf %s &quot;$new_val&quot; |sed -e &apos;s,\(^\| \+\)-I\${includedir}\($\| \+\),\1\2,g&apos;` || return 1


хотя, лучше и его убрать, так как заменять просто не нужно, а паковать в /usr/local запрещено.

И оставить замену для -Wl,-rpath убрав -L

                new_val=`printf %s &quot;$new_val&quot; |sed -e &apos;s#\(^\| \+\)\(-L\|-Wl,-rpath,\)/usr\(/local\)\?/&apos;&quot;$RPM_LIB&quot;&apos;\($\| \+\)#\1\4#g&apos;` &amp;&amp;
                new_val=`printf %s &quot;$new_val&quot; |sed -e &apos;s#\(^\| \+\)\(-L\|-Wl,-rpath,\)\(&apos;$RPM_BUILD_ROOT&apos;\|&apos;$RPM_BUILD_DIR&apos;\|/usr/lib[^/]*/gcc-lib\)[^ ]*\($\| \+\)#\1\4#g&apos;` ||
                        new_val=`printf %s &quot;$new_val&quot; |sed -e &apos;s#\(^\| \+\)\(-L\|-Wl,-rpath,\)\${libdir}\($\| \+\)#\1\3#g&apos;` || return 1

@ldv?

На мой взгляд, при обычном и правильном использовании pkg-config ничего не должно поменяться. Наладится использование PKG_CONFIG_SYSROOT_DIR / PKG_CONFIG_SYSTEM_INCLUDE_PATH (хотя очевидно, что никто этим не пользовался). Что-то поменяется если кто-то парсит *.pc files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283353</commentid>
    <comment_count>8</comment_count>
    <who name="Vitaly Chikunov">vt</who>
    <bug_when>2026-03-06 03:24:15 +0300</bug_when>
    <thetext>Вот тестовое/rfc задание https://git.altlinux.org/tasks/410162/</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>