Page 1 of 1

rpm2txz Difficulty

Posted: 24 Sep 2014, 17:42
by Bogomips
Needed libpng16

Code: Select all

guest@porteus:~$ slackyd -c p10/Por/slackyd.conf -d
...
libpng16.so.16 required by:
 --> Package: imagemagick-6.8.9.7-1-i686 (/usr/lib/ImageMagick-6.8.9/modules-Q16HDRI/coders/png.so)
...
Searching libpng16.so.16: nothing found.
Obtained from libpng16_16-1.6.2-2-omv2013.0.i586.rpm

Code: Select all

guest@porteus:~$ ls -l /var/log/packages/libpng16_16-1.6.2-2-omv2013.0.i586 
-rw-r--r-- 1 root root 300 Sep 23 14:14 /var/log/packages/libpng16_16-1.6.2-2-omv2013.0.i586

guest@porteus:~$ ldd /usr/lib/ImageMagick-6.8.9/modules-Q16HDRI/coders/png.so
	...
   libpng16.so.16 => /usr/lib/libpng16.so.16 (0xb6feb000)
Turned up error upon invoking ImageMagick executable display

Code: Select all

display: relocation error: /usr/lib/ImageMagick-6.8.9/modules-Q16HDRI/coders/png.so: symbol png_set_option, version PNG16_0 not defined in file libpng16.so.16 with link time reference
But version PNG16_0 is supposed to be in RPM

Code: Select all

libpng16_16 - A library of functions for manipulating PNG image format files
Distribution: OpenMandriva Lx 2013.0
Repository: OpenMandriva Main i586
Package name: libpng16_16
Package version: 1.6.2
Package architecture: i586
Package type: rpm
Download size: 95,95 KB
Installed size: 222,05 KB
Official mirror: abf-downloads.rosalinux.ru
This package contains the library needed to run programs dynamically linked with libpng.
Provides
    libpng16_16 [== 2:1.6.2-2:2013.0]
    libpng16.so.16
    libpng16.so.16(PNG16_0)
RPM contents according to cpio

Code: Select all

guest@porteus:~$ rpm2cpio p10/Por/var/slackyd/libpng16_16-1.6.2-2-omv2013.0.i586.rpm | cpio -it
./usr/lib/libpng16.so.16
./usr/lib/libpng16.so.16.2.0
445 blocks

guest@porteus:~$ rpm2cpio p10/Por/var/slackyd/libpng16_16-1.6.2-2-omv2013.0.i586.rpm | cpio -dim
445 blocks
usr
└── lib
    ├── libpng16.so.16 -> libpng16.so.16.2.0
    └── libpng16.so.16.2.0

1 directory, 2 files
Contents of TXZ

Code: Select all

guest@porteus:~$ tar xJf p10/Por/ImMagick/libpng16_16-1.6.2-2-omv2013.0.i586.txz -C rpm2txz

rpm2txz
├── install
│   └── doinst.sh
└── usr
    └── lib
        └── libpng16.so.16.2.0

3 directories, 2 files

guest@porteus:~$ cat rpm2txz/install/doinst.sh 
( cd usr/lib ; rm -rf libpng16.so.16 )
( cd usr/lib ; ln -sf libpng16.so.16.2.0 libpng16.so.16 )
Info from usr/lib/libpng16.so.16.2.0 same as /usr/lib/libpng16.so.16.2.0

Code: Select all

guest@porteus:~$ cmp  /usr/lib/libpng16.so.16.2.0 usr/lib/libpng16.so.16.2.0
guest@porteus:~$ readelf -V usr/lib/libpng16.so.16.2.0
...
Version definition section '.gnu.version_d' contains 2 entries:
  Addr: 0x0000000000003600  Offset: 0x003600  Link: 3 (.dynstr)
  000000: Rev: 1  Flags: BASE   Index: 1  Cnt: 1  Name: libpng16.so.16
  0x001c: Rev: 1  Flags: none  Index: 2  Cnt: 1  Name: PNG16_0
And PNG16_0 is definitely there, and this has got me stymied :Search:

Re: rpm2txz Difficulty

Posted: 24 Sep 2014, 18:01
by francois
Searching libpng16.so.16: nothing found.

libpng16.so.16.2.0 is not libpng16.so.16

Try to make a link between libpng16.so.16.2.0 and libpng16.so.16 or make a copy of libpng16.so.16.2.0 and name it libpng16.so.16.

Re: rpm2txz Difficulty

Posted: 24 Sep 2014, 19:16
by brokenman
Francois is right. The doinst.sh file is run when a slackware package is installed. Because this is an rpm converted to a module, this file is never run and the symlink is not created. Run the commands in the doisnt.sh file

Code: Select all

cd usr/lib ; ln -sf libpng16.so.16.2.0 libpng16.so.16

Re: rpm2txz Difficulty

Posted: 24 Sep 2014, 19:20
by Slaxmax
Avoid packages rpm.
make your own libpng (slackbuilds)

slackbuild script (included latest libpng)
http://www.mediafire.com/download/fb4mu ... libpng.zip

Re: rpm2txz Difficulty

Posted: 24 Sep 2014, 21:52
by Bogomips
brokenman wrote:Francois is right. The doinst.sh file is run when a slackware package is installed. Because this is an rpm converted to a module, this file is never run and the symlink is not created.
But already have symlink

Code: Select all

guest@porteus:~$ ls -l /usr/lib/libpng16.so.16
lrwxrwxrwx 1 root root 18 Sep 23 14:14 /usr/lib/libpng16.so.16 -> libpng16.so.16.2.0*
Or am I missing something?

@slaxmax
Already having trouble with versions. libpng complained that previous libpng16 version tried was too high. (1.6.12 :: 1.4.12)

Re: rpm2txz Difficulty

Posted: 25 Sep 2014, 01:53
by brokenman
Ok your initial post doesn't say that. I don't see the file there.

Code: Select all

guest@porteus:~$ tar xJf p10/Por/ImMagick/libpng16_16-1.6.2-2-omv2013.0.i586.txz -C rpm2txz

rpm2txz
├── install
│   └── doinst.sh
└── usr
    └── lib
        └── libpng16.so.16.2.0

3 directories, 2 files
Using rpm packages will certainly complicate things and should only be used when you have no other option and you need a lilbrary not offered in slackware. Be very careful with mixing libpng packages to. This is an important library for many GUI programs and mixing the libraries is not recommended. I would recompile ImageMagick against the version of libpng that slackware carries.

Re: rpm2txz Difficulty

Posted: 28 Sep 2014, 00:31
by Bogomips
brokenman wrote:Using rpm packages will certainly complicate things and should only be used when you have no other option and you need a lilbrary not offered in slackware.
Thassright. libpng16 neither in Slackware package nor in source to be found.

After due thought, and taking into consideration being able to live without png in ImageMagick, decided on a plan of attack, which involved proceeding up the list of libpng16 RPMs at pkgs.org, doing a higher version whenever there were a few moments to spare.

Next RPM up

Code: Select all

openSUSE Update:
    libpng16-16-1.6.6-4.1.i586.rpm  Library for the Portable Network Graphics Format (PNG)
guest@porteus:~$ rpm2cpio p10/Por/var/slackyd/libpng16-16-1.6.6-4.1.i586.rpm|cpio -it       
./usr/lib/libpng16.so.16
./usr/lib/libpng16.so.16.6.0
468 blocks
Checking Version and Linkage

Code: Select all

guest@porteus:~$ rpm2cpio p10/Por/var/slackyd/libpng16-16-1.6.6-4.1.i586.rpm|cpio -dim
468 blocks
guest@porteus:~$ readelf -V usr/lib/libpng16.so.16
...
Version definition section '.gnu.version_d' contains 2 entries:
  Addr: 0x0000000000003b00  Offset: 0x003b00  Link: 5 (.dynstr)
  000000: Rev: 1  Flags: BASE   Index: 1  Cnt: 1  Name: libpng16.so.16
  0x001c: Rev: 1  Flags: none  Index: 2  Cnt: 1  Name: PNG16_0

guest@porteus:~$ tree usr/
usr/
└── lib
    ├── libpng16.so.16 -> libpng16.so.16.6.0
    └── libpng16.so.16.6.0

1 directory, 2 files
Creating Module and checking Linkage yet again

Code: Select all

guest@porteus:~$ dir2xzm usr libpng16-16-1.6.6-4.1.i586.xzm

guest@porteus:~$ mloop libpng16-16-1.6.6-4.1.i586.xzm 
 Your module has been mounted at: 
/mnt/loop
 Here is a list of the files:
lib

guest@porteus:~$ tree /mnt/loop
/mnt/loop
└── lib
    ├── libpng16.so.16 -> libpng16.so.16.6.0
    └── libpng16.so.16.6.0

1 directory, 2 files

guest@porteus:~$ ls -lh /mnt/loop/lib/libpng16.so.16
lrwxrwxrwx 1 guest guest 18 Sep 26 22:51 /mnt/loop/lib/libpng16.so.16 -> libpng16.so.16.6.0*
Activation & Run. And blow me down! (this always happens when there's no priority) :o

Code: Select all

loop12    7:12   0   5.1M  1 loop /mnt/live/memory/images/ImM_220914-png16.xzm
loop13    7:13   0   5.5M  1 loop /mnt/live/memory/images/binutils-2.23.52.0.1-i486-2.xzm
loop14    7:14   0    92K  0 loop /mnt/loop
loop15    7:15   0    92K  1 loop /mnt/live/memory/images/libpng16-16-1.6.6-4.1.i586.xzm

guest@porteus:~$ display &
[1] 4777
guest@porteus:~$ display: color is not known to server `FOREGROUND': Success @ error/xwindow.c/XGetPixelPacket/3040.
display: color is not known to server `BACKGROUND': Success @ error/xwindow.c/XGetPixelPacket/3052.

[1]+  Done                    display
Struck paydirt! :Yahoo!:

Now unsure whether due to hitting upon compatible version, or due to libpng of same version being provided as well in package, as previous RPM did not provide such.
SUSE wrote: Provides
libpng = 1.6.6-4.1
libpng16-16 = 1.6.6-4.1
libpng16-16(x86-32) = 1.6.6-4.1
libpng16.so.16
libpng16.so.16(PNG16_0)
Module for the Record

    Code: Select all

    imagemagick - An image viewing/manipulation program
    
        Distribution: Arch Linux
        Repository: Arch Linux Extra i686
        Package name: imagemagick
        Package version: 6.8.9.7
        Package architecture: i686
        Package type: xz
        Installed size: 10,17 MB
        Download size: 2,17 MB
        Binary package: imagemagick-6.8.9.7-1-i686.pkg.tar.xz
        Source package: imagemagick
    
    Requires
    
        fontconfig
        lcms2
        libcl
        liblqr
        libltdl
        libxext
        libxt
        perl
    _______________________________________________________________________________
    DEPENDENCIES
    System			USM			ARCH			IM
    ======			===			====			==
    fontconfig	  lcms2		 libcl		  liblqr (src)
    libxext						  libltdl	   lcms2
    libxt						    liblqr
    perl
    
    libpng16

    Code: Select all

    libpng16-16 - Library for the Portable Network Graphics Format (PNG)
    
        Distribution: openSUSE 13.1
        Repository: openSUSE Update
        Package name: libpng16-16
        Package version: 1.6.6
        Package architecture: i586
        Package type: rpm
        Installed size: 233,32 KB
        Download size: 113,67 KB
        Binary package: libpng16-16-1.6.6-4.1.i586.rpm
        Source package: libpng16-1.6.6-4.1.src.rpm
    Requires
        libc.so.6(GLIBC_2.11)
        libm.so.6
        libm.so.6(GLIBC_2.0)
        libz.so.1
        libz.so.1(ZLIB_1.2.3.4)
    Provides
        libpng = 1.6.6-4.1
        libpng16-16 = 1.6.6-4.1
        libpng16-16(x86-32) = 1.6.6-4.1
        libpng16.so.16
        libpng16.so.16(PNG16_0)
    
    guest@porteus:~$ rpm2txz p10/Por/var/slackyd/libpng16-16-1.6.6-4.1.i586.rpm 
    
    Slackware package maker, version 3.14159.
    
    Searching for symbolic links:
    usr/lib/libpng16.so.16 -> libpng16.so.16.6.0
    
    Making symbolic link creation script:
    ( cd usr/lib ; rm -rf libpng16.so.16 )
    ( cd usr/lib ; ln -sf libpng16.so.16.6.0 libpng16.so.16 )
    
    Slackware package /home/guest/libpng16-16-1.6.6-4.1.i586.txz created.
    
    Create Module

    Code: Select all

    root@porteus:/home/guest# sh p10/Por/xzmod.sh -q p10/Por/ImMagick/ImgMgk-6.8.9.7_270914 '.' /mnt/sda4/mods
    
    Default Module Name: ImgMgk-6.8.9.7_270914.xzm
    
    Installing to Fakeroot Directory
    
    libpng16-16-1.6.6-4.1.i586:                                              [240K]
    libgomp1-4.9.2-0.20140910.3.mga5.i586:                                   [110K]
    liblqr-0.4.2-1-i686:                                                     [110K]
    WARNING:  Package has not been created with 'makepkg'
    libcl-1.1-4-i686:                                                        [30K] 
    WARNING:  Package has not been created with 'makepkg'
    libltdl-2.4.2-14-i686:                                                   [840K]
    WARNING:  Package has not been created with 'makepkg'
    lcms2-2.4-i486-1: little cms engine, version 2                           [3.1M]
    imagemagick-6.8.9.7-1-i686:                                              [10M] 
    WARNING:  Package has not been created with 'makepkg'
    
    Creating Module ImgMgk-6.8.9.7_270914.xzm
    
    Parallel mksquashfs: Using 1 processor
    Creating 4.0 filesystem on /mnt/sda4/mods/ImgMgk-6.8.9.7_270914.xzm, block size 262144.
    [===========================================================================-] 568/568 100%
    Exportable Squashfs 4.0 filesystem, xz compressed, data block size 262144
            compressed data, compressed metadata, compressed fragments, compressed xattrs
            duplicates are removed
    Filesystem size 5336.98 Kbytes (5.21 Mbytes)
    

    Verify SymLinks

    Code: Select all

    root@porteus:/home/guest# mloop /mnt/sda4/mods/ImgMgk-6.8.9.7_270914.xzm 
     Your module has been mounted at: 
    /mnt/loop
     Here is a list of the files:
    etc  usr  var
    
    guest@porteus:~$ tree -L 2 /mnt/loop/usr/lib
    /mnt/loop/usr/lib
    ├── ImageMagick-6.8.9
    │   ├── config-Q16HDRI
    │   └── modules-Q16HDRI
    ├── libMagick++-6.Q16HDRI.so -> libMagick++-6.Q16HDRI.so.5.0.0
    ├── libMagick++-6.Q16HDRI.so.5 -> libMagick++-6.Q16HDRI.so.5.0.0
    ├── libMagick++-6.Q16HDRI.so.5.0.0
    ├── libMagickCore-6.Q16HDRI.so -> libMagickCore-6.Q16HDRI.so.2.0.0
    ├── libMagickCore-6.Q16HDRI.so.2 -> libMagickCore-6.Q16HDRI.so.2.0.0
    ├── libMagickCore-6.Q16HDRI.so.2.0.0
    ├── libMagickWand-6.Q16HDRI.so -> libMagickWand-6.Q16HDRI.so.2.0.0
    ├── libMagickWand-6.Q16HDRI.so.2 -> libMagickWand-6.Q16HDRI.so.2.0.0
    ├── libMagickWand-6.Q16HDRI.so.2.0.0
    ├── libOpenCL.so -> /usr/lib/libOpenCL.so.1
    ├── libOpenCL.so.1 -> /usr/lib/libOpenCL.so.1.0.0
    ├── libOpenCL.so.1.0.0
    ├── libgomp.so.1 -> libgomp.so.1.0.0
    ├── libgomp.so.1.0.0
    ├── liblcms2.la
    ├── liblcms2.so -> liblcms2.so.2.0.4
    ├── liblcms2.so.2 -> liblcms2.so.2.0.4
    ├── liblcms2.so.2.0.4
    ├── liblqr-1.so -> liblqr-1.so.0.3.2
    ├── liblqr-1.so.0 -> liblqr-1.so.0.3.2
    ├── liblqr-1.so.0.3.2
    ├── libltdl.so -> libltdl.so.7.3.0
    ├── libltdl.so.7 -> libltdl.so.7.3.0
    ├── libltdl.so.7.3.0
    ├── libpng16.so.16 -> libpng16.so.16.6.0
    ├── libpng16.so.16.6.0
    ...
    root@porteus:/home/guest# uloop
    /mnt/loop has been unmounted
    
    Activate & Run

    Code: Select all

    loop11    7:11   0     5M  1 loop /mnt/live/memory/images/flashplayer-plugin-11.2.202.400-i3
    loop12    7:12   0   5.2M  1 loop /mnt/live/memory/images/ImgMgk-6.8.9.7_270914.xzm
    
    guest@porteus:~$ display &
    [1] 6941
    guest@porteus:~$ display: color is not known to server `FOREGROUND': Success @ error/xwindow.c/XGetPixelPacket/3040.
    display: color is not known to server `BACKGROUND': Success @ error/xwindow.c/XGetPixelPacket/3052.
    
    [1]+  Done                    display
    :beer:

    Re: rpm2txz Difficulty

    Posted: 28 Sep 2014, 01:57
    by francois
    Is it solved?

    Re: rpm2txz Difficulty

    Posted: 28 Sep 2014, 12:04
    by Bogomips
    francois wrote:Is it solved?
    Good question. Difficulty overcome. But how? :unknown: