test/zip.spec
author J. Ali Harlow <ali@juiblex.co.uk>
Sat Oct 04 18:12:58 2014 +0100 (2014-10-04)
changeset 454 56ff755c268c
parent 393 d16ac3fb05fa
permissions -rw-r--r--
Only export symbols starting with razor_ in dynamic library.

Apart from being good practice to avoid clashes with higher-level
libraries and the application, this also fixes an obscure bug: The
gnulib library is used both by librazor (the dynamic library) and
by razor (the executable). In doing so, we want to have two separate
copies of the library despite the code duplication this involves.
Without the explicit limit to export only razor_ symbols, the razor
executable under mingw64 was picking up the getopt_long function
from librazor and the optind variable from libgnu which meant that
it did not see optind changing. Hiding librazor's copy of getopt
causes the linker to find libgnu's copy and everything works.

Note that under mingw librazor-#.dll still contains undocumented
(private) razor_ symbols but these will do no harm as long as nobody
tries to use them.
     1 %define _source_payload w9.gzdio
     2 %define _binary_payload w9.gzdio
     3 
     4 Name:      zip
     5 Summary:   Test package
     6 Group:     Test
     7 License:   GPL
     8 Version:   %{_version}
     9 Release:   1
    10 Source:    zip.tar
    11 BuildArch: noarch
    12 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
    13 Prefix:    /usr
    14 Requires:  zap
    15 Requires(pre,postun):  zap
    16 
    17 %description
    18 Test package
    19 
    20 %prep
    21 
    22 %build
    23 
    24 %install
    25 mkdir -p $RPM_BUILD_ROOT/usr/bin
    26 echo %{name}-%{version}-%{release} > $RPM_BUILD_ROOT/usr/bin/zip
    27 
    28 %clean
    29 
    30 %pre -p <lua>
    31 function mkdir_missing(dir)
    32     if posix.stat(dir)==nil then
    33 	posix.mkdir(dir)
    34     end
    35 end
    36 prefix=posix.getenv("RPM_INSTALL_PREFIX0")
    37 if prefix==nil then
    38     prefix="/usr"
    39 end
    40 if arg[2]==1 and posix.stat(prefix.."/bin/zap")~=nil then
    41     mkdir_missing(prefix.."/var")
    42     mkdir_missing(prefix.."/var/lib")
    43     posix.mkdir(prefix.."/var/lib/zip")
    44     io.output(prefix.."/var/lib/zip/data.zap")
    45     io.write("Important data\n");
    46     io.close()
    47 end
    48 
    49 %postun -p <lua>
    50 prefix=posix.getenv("RPM_INSTALL_PREFIX0")
    51 if prefix==nil then
    52     prefix="/usr"
    53 end
    54 if arg[2]==0 and posix.stat(prefix.."/bin/zap")~=nil then
    55     os.remove(prefix.."/var/lib/zip/data.zap")
    56     os.remove(prefix.."/var/lib/zip")
    57 end
    58 
    59 %files
    60 /usr/bin/zip