control: close -1
Hello, answering inline
On Sat, 2 May 2020 16:32:27 -0500 (CDT) Timothy Pearson 
<tpear...@raptorengineering.com> wrote:
> Package: libpng16-16:ppc64le
> Version: 1.6.36-6
> 
> libpng is built without VSX support on POWER systems.  This breaks 
> assumptions in other software, such as node optipng (log below).
> 
> I can work around it with this, but it is not ideal:
> CFLAGS="-DPNG_POWERPC_VSX_OPT=0" npm install optipng-bin
> 
> npm install optipng-bin
> npm WARN npm npm does not support Node.js v10.15.2
> npm WARN npm You should probably upgrade to a newer version of node as we
> npm WARN npm can't make any promises that npm will work with this version.
> npm WARN npm Supported releases of Node.js are the latest release of 4, 6, 7, 
> 8, 9.
> npm WARN npm You can find the latest version at https:/nodejs.org/
> 
> > optipng-bin@6.0.0 postinstall 
> > /home/develop/build/ONLYOFFICE/build_tools/node_modules/optipng-bin
> > node lib/install.js
> 
>   ⚠ Command failed: 
> /home/develop/build/ONLYOFFICE/build_tools/node_modules/optipng-bin/vendor/optipng
>  --version
> /home/develop/build/ONLYOFFICE/build_tools/node_modules/optipng-bin/vendor/optipng:
>  1: 
> /home/develop/build/ONLYOFFICE/build_tools/node_modules/optipng-bin/vendor/optipng:
>  @@8�@@@@@@@�@@@@����: not found
> /home/develop/build/ONLYOFFICE/build_tools/node_modules/optipng-bin/vendor/optipng:
>  2: 
> /home/develop/build/ONLYOFFICE/build_tools/node_modules/optipng-bin/vendor/optipng:
>  d: not found
> /home/develop/build/ONLYOFFICE/build_tools/node_modules/optipng-bin/vendor/optipng:
>  1: 
> /home/develop/build/ONLYOFFICE/build_tools/node_modules/optipng-bin/vendor/optipng:
>  ELF: not found
> /home/develop/build/ONLYOFFICE/build_tools/node_modules/optipng-bin/vendor/optipng:
>  1: 
> /home/develop/build/ONLYOFFICE/build_tools/node_modules/optipng-bin/vendor/optipng:
>  Syntax error: ";" unexpected
> 

bad thing to run binaries built for amd64 and i386 on ppc64el, this is an 
optipng upstream issue

> 
>   ⚠ optipng pre-build test failed
>   ℹ compiling from source
>   ✖ Error: Command failed: /bin/sh -c make install
> pngrtran.c:99:1: warning: ‘png_rtran_ok’ defined but not used 
> [-Wunused-function]
>  png_rtran_ok(png_structrp png_ptr, int need_IHDR)
>  ^~~~~~~~~~~~
> ar: `u' modifier ignored since `D' is the default (see `U')
> ar: `u' modifier ignored since `D' is the default (see `U')
> ar: `u' modifier ignored since `D' is the default (see `U')
> ar: `u' modifier ignored since `D' is the default (see `U')
> pngxmem.c: In function ‘pngx_malloc_rows_extended’:
> pngxmem.c:38:34: warning: comparison is always false due to limited range of 
> data type [-Wtype-limits]
>         (pngx_alloc_size_t)height > (pngx_alloc_size_t)(-1) / 
> sizeof(png_bytep))
>                                   ^
> ar: `u' modifier ignored since `D' is the default (see `U')
> /usr/bin/ld: ../libpng/libpng.a(pngrutil.o): in function 
> `png_read_filter_row':
> pngrutil.c:(.text+0x29c0): undefined reference to 
> `png_init_filter_functions_vsx'
> collect2: error: ld returned 1 exit status
> make[1]: *** [Makefile:100: optipng] Error 1
> make: *** [Makefile:14: install] Error 2
> 
> cd src/optipng && \
> make install && \
> cd ../..
> make[1]: Entering directory 
> '/home/develop/build/ONLYOFFICE/build_tools/node_modules/optipng-bin/a4e0fea9-c020-4419-98f6-a1b3d4dfc863/src/optipng'
> cd ../libpng && \
> make -f Makefile PNGLIBCONF_H_PREBUILT=pnglibconf.h.optipng && \
> cd ../optipng
> make[2]: Entering directory 
> '/home/develop/build/ONLYOFFICE/build_tools/node_modules/optipng-bin/a4e0fea9-c020-4419-98f6-a1b3d4dfc863/src/libpng'
> cp pnglibconf.h.optipng pnglibconf.h
> gcc -c -I../zlib  -O2 -Wall -Wextra -o png.o png.c
> gcc -c -I../zlib  -O2 -Wall -Wextra -o pngerror.o pngerror.c
> gcc -c -I../zlib  -O2 -Wall -Wextra -o pngget.o pngget.c
> gcc -c -I../zlib  -O2 -Wall -Wextra -o pngmem.o pngmem.c
> gcc -c -I../zlib  -O2 -Wall -Wextra -o pngpread.o pngpread.c


as you can see you are trying to build libpng by yourself, not using the system 
version.

steps to reproduce:
git clone https://github.com/imagemin/optipng-bin
cd optipng-bin
look for lib/install.js and see how the installation is done:
basically, extracts a tarball with lots of embedded stuff (including libpng) 
and run make
tar xvf vendor/source/optipng.tar.gz 
cd optipng-0.7.7/
./configure --with-system-zlib --prefix=foo --bindir=bar
make 

here I see two errors:
1) libpng configure is not run:
edit configure and change
with_preconfigured_libpng=1
to
with_preconfigured_libpng=0

so you run a fresh libpng configure script, detecting correctly what is needed 
for your platform.
make will fail because of a library being misnamed misplaced
cp ../optipng-0.7.7/src/libpng/.libs/libpng16.a 
../optipng-0.7.7/src/libpng/libpng.a
make will succeed

2) use system libpng (the version you are blaming currently :p)
~/optipng-bin$ tar xvf vendor/source/optipng.tar
~/optipng-bin$ cd optipng-0.7.7/
~/optipng-bin/optipng-0.7.7$ ./configure --with-system-zlib 
--with-system-libpng --prefix=foor --bindir=bar
Checking for gcc...
Checking for system libpng...
Checking for system zlib...
~/optipng-bin/optipng-0.7.7$ make
cd src/optipng && \
make && \
cd ../..
make[1]: Entering directory 
'/home/locutusofborg/optipng-bin/optipng-0.7.7/src/optipng'
cd ../opngreduc && \
make -f Makefile libopngreduc.a && \
cd ../optipng
make[2]: Entering directory 
'/home/locutusofborg/optipng-bin/optipng-0.7.7/src/opngreduc'
gcc -c  -O2 -Wall -Wextra   -o opngreduc.o opngreduc.c
ar cru libopngreduc.a opngreduc.o
ar: `u' modifier ignored since `D' is the default (see `U')
ranlib libopngreduc.a
make[2]: Leaving directory 
'/home/locutusofborg/optipng-bin/optipng-0.7.7/src/opngreduc'
cd ../gifread && \
make -f Makefile libgifread.a && \
cd ../optipng
make[2]: Entering directory 
'/home/locutusofborg/optipng-bin/optipng-0.7.7/src/gifread'
gcc -c  -O2 -Wall -Wextra -o gifread.o gifread.c
ar cru libgifread.a gifread.o
ar: `u' modifier ignored since `D' is the default (see `U')
ranlib libgifread.a
make[2]: Leaving directory 
'/home/locutusofborg/optipng-bin/optipng-0.7.7/src/gifread'
cd ../pnmio && \
make -f Makefile libpnmio.a && \
cd ../optipng
make[2]: Entering directory 
'/home/locutusofborg/optipng-bin/optipng-0.7.7/src/pnmio'
gcc -c  -O2 -Wall -Wextra -o pnmin.o pnmin.c
gcc -c  -O2 -Wall -Wextra -o pnmout.o pnmout.c
gcc -c  -O2 -Wall -Wextra -o pnmutil.o pnmutil.c
ar cru libpnmio.a pnmin.o pnmout.o pnmutil.o
ar: `u' modifier ignored since `D' is the default (see `U')
ranlib libpnmio.a
make[2]: Leaving directory 
'/home/locutusofborg/optipng-bin/optipng-0.7.7/src/pnmio'
cd ../minitiff && \
make -f Makefile libminitiff.a && \
cd ../optipng
make[2]: Entering directory 
'/home/locutusofborg/optipng-bin/optipng-0.7.7/src/minitiff'
gcc -c  -O2 -Wall -Wextra -o tiffread.o tiffread.c
gcc -c  -O2 -Wall -Wextra -o tiffutil.o tiffutil.c
ar cru libminitiff.a tiffread.o tiffutil.o 
ar: `u' modifier ignored since `D' is the default (see `U')
ranlib libminitiff.a
make[2]: Leaving directory 
'/home/locutusofborg/optipng-bin/optipng-0.7.7/src/minitiff'
cd ../pngxtern && \
make -f Makefile libpngxtern.a && \
cd ../optipng
make[2]: Entering directory 
'/home/locutusofborg/optipng-bin/optipng-0.7.7/src/pngxtern'
gcc -c  -O2 -Wall -Wextra   -I../gifread -I../pnmio -I../minitiff -o pngxread.o 
pngxread.c
gcc -c  -O2 -Wall -Wextra   -I../gifread -I../pnmio -I../minitiff -o pngxrbmp.o 
pngxrbmp.c
gcc -c  -O2 -Wall -Wextra   -I../gifread -I../pnmio -I../minitiff -o pngxrgif.o 
pngxrgif.c
gcc -c  -O2 -Wall -Wextra   -I../gifread -I../pnmio -I../minitiff -o pngxrjpg.o 
pngxrjpg.c
gcc -c  -O2 -Wall -Wextra   -I../gifread -I../pnmio -I../minitiff -o pngxrpnm.o 
pngxrpnm.c
gcc -c  -O2 -Wall -Wextra   -I../gifread -I../pnmio -I../minitiff -o pngxrtif.o 
pngxrtif.c
gcc -c  -O2 -Wall -Wextra   -I../gifread -I../pnmio -I../minitiff -o pngxio.o 
pngxio.c
gcc -c  -O2 -Wall -Wextra   -I../gifread -I../pnmio -I../minitiff -o pngxmem.o 
pngxmem.c
pngxmem.c: In function 'pngx_malloc_rows_extended':
pngxmem.c:38:34: warning: comparison is always false due to limited range of 
data type [-Wtype-limits]
   38 |        (pngx_alloc_size_t)height > (pngx_alloc_size_t)(-1) / 
sizeof(png_bytep))
      |                                  ^
gcc -c  -O2 -Wall -Wextra   -I../gifread -I../pnmio -I../minitiff -o pngxset.o 
pngxset.c
ar cru libpngxtern.a pngxread.o pngxrbmp.o pngxrgif.o pngxrjpg.o pngxrpnm.o 
pngxrtif.o pngxio.o pngxmem.o pngxset.o
ar: `u' modifier ignored since `D' is the default (see `U')
ranlib libpngxtern.a
make[2]: Leaving directory 
'/home/locutusofborg/optipng-bin/optipng-0.7.7/src/pngxtern'
gcc -c  -O2 -Wall -Wextra -I../cexcept   -I../opngreduc -I../pngxtern -o 
optipng.o optipng.c
gcc -c  -O2 -Wall -Wextra -I../cexcept   -I../opngreduc -I../pngxtern -o 
optim.o optim.c
gcc -c  -O2 -Wall -Wextra -I../cexcept   -I../opngreduc -I../pngxtern -o 
bitset.o bitset.c
gcc -c  -O2 -Wall -Wextra -I../cexcept   -I../opngreduc -I../pngxtern -o 
ioutil.o ioutil.c
gcc -c  -O2 -Wall -Wextra -I../cexcept   -I../opngreduc -I../pngxtern -o 
ratio.o ratio.c
gcc -c  -O2 -Wall -Wextra -I../cexcept   -I../opngreduc -I../pngxtern -o 
wildargs.o wildargs.c
gcc -s -o optipng optipng.o optim.o bitset.o ioutil.o ratio.o wildargs.o 
../opngreduc/libopngreduc.a ../pngxtern/libpngxtern.a   ../gifread/libgifread.a 
../pnmio/libpnmio.a ../minitiff/libminitiff.a -lpng -lz -lm 
make[1]: Leaving directory 
'/home/locutusofborg/optipng-bin/optipng-0.7.7/src/optipng'


success!

In any case, not something we can fix Debian side, since the faulty code is 
optipng.
(I'll open a bug report on github citing this bug)
Gianfranco

Reply via email to