W dniu 3.12.2024 o 18:05, Adam Osuchowski pisze:
Maciej Kędzierski wrote:
Próbuję przebudować pakiety ze starszymi wersjami PHP, np. 7.4, czy 5.6 i
kompilacje wyrzucają błędy.
Jeden błąd namierzyłem i jest związany z bibliotekami libxml2>=2.12.

[...]

Po przywróceniu wersji libxml2-2.11.5, kompilacja przechodzi dalej, ale
wyrzuca błąd w innym miejscu.
Tego już nie mogę namierzyć, co za to odpowiada.
W libxml2 w pewnym momencie zmieniły się prototypy funkcji -- pododawali
kwalifikatory const, a nowy gcc jest bardzo akuratny. Wystarczy owarunkować
per wersja:


diff -ruNp php-7.2.34.orig/ext/libxml/libxml.c php-7.2.34/ext/libxml/libxml.c
--- php-7.2.34.orig/ext/libxml/libxml.c 2020-09-30 07:15:53.000000000 +0200
+++ php-7.2.34/ext/libxml/libxml.c      2024-11-17 23:07:54.494686435 +0100
@@ -728,7 +728,11 @@ PHP_LIBXML_API void php_libxml_ctx_warni
        va_end(args);
  }
+#if LIBXML_VERSION >= 21200
+PHP_LIBXML_API void php_libxml_structured_error_handler(void *userData, const 
xmlError *error)
+#else
  PHP_LIBXML_API void php_libxml_structured_error_handler(void *userData, 
xmlErrorPtr error)
+#endif
  {
        _php_list_set_error_structure(error, NULL);

W przypadku tego drugiego błędu winny jest jakiś totalnie zbędny patch
%{orgname}-mail.patch (php-mail.patch), made by PLD, w którym jakiś mądrala
próbował na siłę i nie wiadomo po co przerabiać wbudowaną funkcję mail().
Wykomentuj go ze speca i pójdzie od strzału.
_______________________________________________

No niestety od strzału nie idzie. Pojawiają się nowe błędy, patrz niżej.

Zakomentowałem php-mail.patch, nałożony został patch na libxml'a - idąc za podpowiedzią znalazłem trochę pełniejszą wersją patcha:
https://github.com/phpbrew/phpbrew/issues/1370
https://github.com/php/php-src/commit/0a39890c967aa57225bb6bdf4821aff7a3a3c082
na podstawie której stworzyłem ten poniższy:

php-7433-libxml_2_12.patch
====================

--- php-7.4.33/ext/libxml/libxml.c.orig 2022-10-31 11:36:06.000000000 +0100
+++ php-7.4.33/ext/libxml/libxml.c      2024-12-04 09:23:13.464210850 +0100
@@ -530,7 +530,11 @@ static int _php_libxml_free_error(xmlErr
       return 1;
}

-static void _php_list_set_error_structure(xmlErrorPtr error, const char *msg)
+#if LIBXML_VERSION >= 21200
+static void _php_list_set_error_structure(const xmlError *error, const char *msg)
+#else
+static void _php_list_set_error_structure(xmlError *error, const char *msg)
+#endif
{
       xmlError error_copy;
       int ret;
@@ -782,7 +786,11 @@ PHP_LIBXML_API void php_libxml_ctx_warni
       va_end(args);
}

+#if LIBXML_VERSION >= 21200
+PHP_LIBXML_API void php_libxml_structured_error_handler(void *userData, const xmlError *error)
+#else
PHP_LIBXML_API void php_libxml_structured_error_handler(void *userData, xmlErrorPtr error)
+#endif
{
       _php_list_set_error_structure(error, NULL);

@@ -1061,9 +1069,7 @@ static PHP_FUNCTION(libxml_use_internal_
   Retrieve last error from libxml */
static PHP_FUNCTION(libxml_get_last_error)
{
-       xmlErrorPtr error;
-
-       error = xmlGetLastError();
+       const xmlError *error = xmlGetLastError();

       if (error) {
               object_init_ex(return_value, libxmlerror_class_entry);
diff -ruNp php_sdl.c.orig php_sdl.c
--- php-7.4.33/ext/soap/php_sdl.c.orig  2022-10-31 11:36:07.000000000 +0100
+++ php-7.4.33/ext/soap/php_sdl.c       2024-12-04 09:12:19.160873316 +0100
@@ -333,7 +333,7 @@ static void load_wsdl_ex(zval *this_ptr,
       sdl_restore_uri_credentials(ctx);

       if (!wsdl) {
-               xmlErrorPtr xmlErrorPtr = xmlGetLastError();
+               const xmlError *xmlErrorPtr = xmlGetLastError();

               if (xmlErrorPtr) {
                       soap_error2(E_ERROR, "Parsing WSDL: Couldn't load from '%s' : %s", struri, xmlErrorPtr->message);


=======================

Z patchem dla libxml, mogę skompilować ręcznie kompilowaną swoją wersję 7.4.33, ale paczka z dystrybucji wywala się znowu, tym razem na kompilacji litespeed. Jak wywalę wszystkie wpisy z php.spec, odnośnie litespeed, to rebuild przebudowuje wszystko, tylko oczywiście nie robi paczek dla litespeed.

PS. Jak wyłączyć budowanie phpXX-litespeed w php.spec, bez wywalania wszystkich wpisów odnośnie litespeed?

Taki błąd jaki pojawia się przy kompilacji "litespeed".

/bin/sh /root/rpm/BUILD/php-7.4.33/libtool --silent --preserve-dup-deps --tag=CC --mode=compile x86_64-pld-linux-gcc  -Isapi/litespeed/ -I/root/rpm/BUILD/php-7.4.33/sapi/litespeed/ -DPHP_ATOM_INC -I/root/rpm /BUILD/php-7.4.33/include -I/root/rpm/BUILD/php-7.4.33/main -I/root/rpm/BUILD/php-7.4.33 -I/usr/include/valgrind -I/root/rpm/BUILD/php-7.4.33/ext/date/lib -I/usr/include/libxml2 -I/usr/include/enchant -I/usr /include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/sysprof-6 -I/usr/include/fribidi -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/webp -I/usr/include/ima p -I/root/rpm/BUILD/php-7.4.33/ext/mbstring/libmbfl -I/root/rpm/BUILD/php-7.4.33/ext/mbstring/libmbfl/mbfl -I/usr/include/pspell -I/usr/include/tidy -I/usr/include/xmlrpc-epi -I/root/rpm/BUILD/php-7.4.33/TSR M -I/root/rpm/BUILD/php-7.4.33/Zend  -DDEBUG_FASTCGI -DHAVE_STRNDUP -I/usr/include/xmlrpc-epi  -I/usr/include -O2 -fwrapv -pipe -Wformat -Werror=format-security -gdwarf-4 -fno-debug-types-section -fvar-track ing-assignments -g2 -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector-strong --param=ssp-buffer-size=4 -Werror=trampolines -fPIC -march=x86-64 -mtune=generic -gdwarf-4 -fno-debug-types-section -fvar-tracking-assignm ents -g2 -fPIC -DPIC -Wall -Wno-strict-aliasing -DZEND_SIGNALS   -c /root/rpm/BUILD/php-7.4.33/sapi/litespeed/lsapilib.c -o sapi/litespeed/lsapilib.lo In file included from /root/rpm/BUILD/php-7.4.33/sapi/litespeed/lsapi_main.c:53: /root/rpm/BUILD/php-7.4.33/sapi/litespeed/lscriu.c:In function 'LSCRIU_try_checkpoint': /root/rpm/BUILD/php-7.4.33/sapi/litespeed/lscriu.c:501:9:warning: variable 'iRet' set but not used [-Wunused-but-set-variable]
 501 |     int iRet;
     | ^~~~
/root/rpm/BUILD/php-7.4.33/sapi/litespeed/lsapi_main.c:In function 'lsapi_clean_shutdown': /root/rpm/BUILD/php-7.4.33/sapi/litespeed/lsapi_main.c:691:9:warning: variable 'sa_rc' set but not used [-Wunused-but-set-variable]
 691 |     int sa_rc;
     | ^~~~~
/root/rpm/BUILD/php-7.4.33/sapi/litespeed/lsapi_main.c:In function 'lsapi_module_main': /root/rpm/BUILD/php-7.4.33/sapi/litespeed/lsapi_main.c:753:9:warning: variable 'sa_rc' set but not used [-Wunused-but-set-variable]
 753 |     int sa_rc;
     | ^~~~~
/root/rpm/BUILD/php-7.4.33/sapi/litespeed/lsapi_main.c:In function 'zif_litespeed_response_headers': /root/rpm/BUILD/php-7.4.33/sapi/litespeed/lsapi_main.c:1729:9:warning: the comparison will always evaluate as 'true' for the address of 'headers' will never be NULL [-Waddress]
1729 |     if (!&SG(sapi_headers).headers) {
     | ^
In file included from /root/rpm/BUILD/php-7.4.33/sapi/litespeed/lsapi_main.c:20:
/root/rpm/BUILD/php-7.4.33/main/SAPI.h:56:20:note: 'headers' declared here
  56 |         zend_llist headers;
     | ^~~~~~~
/root/rpm/BUILD/php-7.4.33/sapi/litespeed/lsapi_main.c:In function 'zif_litespeed_finish_request': /root/rpm/BUILD/php-7.4.33/sapi/litespeed/lsapi_main.c:1790:5:error: implicit declaration of function 'php_header' [-Wimplicit-function-declaration]
1790 | php_header();
     | ^~~~~~~~~~
/root/rpm/BUILD/php-7.4.33/sapi/litespeed/lscriu.c:At top level:
/root/rpm/BUILD/php-7.4.33/sapi/litespeed/lscriu.c:314:14:warning: 'LSCRIU_Error_File_Name' defined but not used [-Wunused-function]
 314 | static char *LSCRIU_Error_File_Name(char *pchFile, int max_len)
     | ^~~~~~~~~~~~~~~~~~~~~~
/root/rpm/BUILD/php-7.4.33/sapi/litespeed/lscriu.c:104:12:warning: 's_criu_debug' defined but not used [-Wunused-variable]
 104 | static int s_criu_debug= 0;
     | ^~~~~~~~~~~~
make: *** [Makefile.litespeed:573: sapi/litespeed/lsapi_main.lo] Error 1
make: *** Waiting for unfinished jobs....
/root/rpm/BUILD/php-7.4.33/sapi/litespeed/lsapilib.c:In function 'LSAPI_ParseSockAddr': /root/rpm/BUILD/php-7.4.33/sapi/litespeed/lsapilib.c:2641:9:warning: '__builtin_strncpy' output may be truncated copying 108 bytes from a string of length 255 [-Wstringop-truncation]
2641 | strncpy( ((struct sockaddr_un *)pAddr)->sun_path, p,
     | ^

Kolejny patch jest potrzebny, którego nie mogę znaleźć.


PS. Zrobiłem też patcha dla libxml do wersji php-5.6.40, ale i z tą wersją PHP jeszcze walczę, bo tam pojawiają się też inne błędy, których nie mogę obejść.

/bin/sh /root/rpm/BUILD/php-5.6.40/libtool --silent --preserve-dup-deps --tag=CC --mode=compile x86_64-pld-linux-gcc  -Imain/ -I/root/rpm/BUILD/php-5.6.40/main/ -DPHP_ATOM_INC -I/root/rpm/BUILD/php-5.6.40/in clude -I/root/rpm/BUILD/php-5.6.40/main -I/root/rpm/BUILD/php-5.6.40 -I/root/rpm/BUILD/php-5.6.40/ext/date/lib -I/usr/include/libxml2 -I/usr/include/enchant -I/usr/include/freetype2 -I/usr/include/libpng16 - I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/sysprof-6 -I/usr/include/imap -I/root/rpm/BUILD/php-5.6.40/ext/mbstring/oniguruma -I/root/rpm/BUILD/php-5.6.40/ext/ mbstring/libmbfl -I/root/rpm/BUILD/php-5.6.40/ext/mbstring/libmbfl/mbfl -I/usr/include/pspell -I/usr/include/tidy -I/usr/include/xmlrpc-epi -I/root/rpm/BUILD/php-5.6.40/ext/zip/lib -I/root/rpm/BUILD/php-5.6. 40/TSRM -I/root/rpm/BUILD/php-5.6.40/Zend  -DDEBUG_FASTCGI -DHAVE_STRNDUP -DOPENSSL_NO_SSL2 -I/usr/include/xmlrpc-epi  -I/usr/include -O2 -fwrapv -pipe -Wformat -Werror=format-security -gdwarf-4 -fno-debug-t ypes-section -fvar-tracking-assignments -g2 -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector-strong --param=ssp-buffer-size=4 -Werror=trampolines -fPIC -march=x86-64 -mtune=generic -gdwarf-4 -fno-debug-types-sectio n -fvar-tracking-assignments -g2  -c /root/rpm/BUILD/php-5.6.40/main/reentrancy.c -o main/reentrancy.lo
/root/rpm/BUILD/php-5.6.40/main/reentrancy.c:In function 'php_readdir_r':
/root/rpm/BUILD/php-5.6.40/main/reentrancy.c:139:9:warning: 'readdir_r' is deprecated [-Wdeprecated-declarations]
 139 | readdir_r(dirp, entry);
     | ^~~~~~~~~
In file included from /root/rpm/BUILD/php-5.6.40/Zend/zend_virtual_cwd.h:90,
                from /root/rpm/BUILD/php-5.6.40/main/php.h:404,
                from /root/rpm/BUILD/php-5.6.40/main/php_reentrancy.h:24,
                from /root/rpm/BUILD/php-5.6.40/main/reentrancy.c:28:
/usr/include/dirent.h:185:12:note: declared here
 185 | extern int readdir_r(DIR *__restrict __dirp,
     | ^~~~~~~~~
/root/rpm/BUILD/php-5.6.40/main/reentrancy.c:139:9:error: too few arguments to function 'readdir_r'
 139 | readdir_r(dirp, entry);
     | ^~~~~~~~~
/usr/include/dirent.h:185:12:note: declared here
 185 | extern int readdir_r(DIR *__restrict __dirp,
     | ^~~~~~~~~
make: *** [Makefile:2420: main/reentrancy.lo] Error 1
make: *** Waiting for unfinished jobs....
błąd: Błędny stan wyjścia z /root/tmp/rpm-tmp.pwrEXI (%build)



_______________________________________________
pld-devel-pl mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-devel-pl

Odpowiedź listem elektroniczym