##
##  perl-dbi.spec -- OpenPKG RPM Package Specification
##  Copyright (c) 2000-2025 OpenPKG Project <http://openpkg.org/>
##
##  Permission to use, copy, modify, and distribute this software for
##  any purpose with or without fee is hereby granted, provided that
##  the above copyright notice and this permission notice appear in all
##  copies.
##
##  THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
##  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
##  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
##  IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR
##  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
##  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
##  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
##  USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
##  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
##  OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
##  OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
##  SUCH DAMAGE.
##

#   versions of individual parts
%define       V_perl            5.22
%define       V_dbi             1.641
%define       V_sql_statement   1.412
%define       V_sql_abstract    1.75
%define       V_sql_routine     0.70.3
%define       V_sql_builder     0.033
%define       V_sql_interpolate 0.41
%define       V_sql_translator  0.11007
%define       V_dbd_mock        1.39
%define       V_dbd_anydata     0.110
%define       V_dbd_csv         0.22
%define       V_dbd_sprite      6.11
%define       V_dbd_sqlite      1.52
%define       V_dbd_mysql       4.045
%define       V_dbd_pgsql       3.7.4
%define       V_dbd_oracle      1.26
%define       V_dbd_sybase      1.14_1
%define       V_dbd_odbc        1.58
%define       V_dbd_pglite      0.11
%define       V_dbd_cego        1.4.0

#   package information
Name:         perl-dbi
Summary:      Perl Modules for use with DBI API
URL:          http://www.cpan.org/
Vendor:       Perl Community
Packager:     OpenPKG Project
Distribution: OpenPKG Community
Class:        BASE
Group:        Perl
License:      GPL/Artistic
Version:      %{V_perl}
Release:      20180320

#   package options
%option       with_sqlite       yes
%option       with_mysql        no
%option       with_pgsql        no
%option       with_oracle       no
%option       with_sybase       no
%option       with_odbc         no
%option       with_cego         no

#   package backward compatibility
%option       with_dbd_sqlite   no
%option       with_dbd_mysql    no
%option       with_dbd_pgsql    no
%option       with_dbd_oracle   no
%option       with_dbd_sybase   no
%option       with_dbd_odbc     no
%option       with_dbd_cego     no
%if "%{with_dbd_sqlite}" == "yes"
%undefine     with_sqlite
%define       with_sqlite       yes
%endif
%if "%{with_dbd_mysql}" == "yes"
%undefine     with_mysql
%define       with_mysql        yes
%endif
%if "%{with_dbd_pgsql}" == "yes"
%undefine     with_pgsql
%define       with_pgsql        yes
%endif
%if "%{with_dbd_oracle}" == "yes"
%undefine     with_oracle
%define       with_oracle       yes
%endif
%if "%{with_dbd_sybase}" == "yes"
%undefine     with_sybase
%define       with_sybase       yes
%endif
%if "%{with_dbd_odbc}" == "yes"
%undefine     with_odbc
%define       with_odbc         yes
%endif
%if "%{with_dbd_cego}" == "yes"
%undefine     with_cego
%define       with_cego         yes
%endif

#   list of sources
Source0:      http://www.cpan.org/authors/id/T/TI/TIMB/DBI-%{V_dbi}.tar.gz
Source1:      http://www.cpan.org/authors/id/R/RE/REHSACK/SQL-Statement-%{V_sql_statement}.tar.gz
Source2:      http://www.cpan.org/authors/id/R/RI/RIBASUSHI/SQL-Abstract-%{V_sql_abstract}.tar.gz
Source3:      http://www.darrenduncan.net/d/perl/archives/SQL-Routine-v%{V_sql_routine}.tar.gz
Source4:      http://download.openpkg.org/components/orphaned/SQL-Builder-%{V_sql_builder}.tar.gz
Source5:      http://www.cpan.org/authors/id/M/MA/MARKSTOS/SQL-Interpolate-%{V_sql_interpolate}.tar.gz
Source6:      http://www.cpan.org/authors/id/J/JR/JROBINSON/SQL-Translator-%{V_sql_translator}.tar.gz
Source7:      http://www.cpan.org/authors/id/D/DR/DROLSKY/DBD-Mock-%{V_dbd_mock}.tar.gz
Source8:      http://www.cpan.org/authors/id/R/RE/REHSACK/DBD-AnyData-%{V_dbd_anydata}.tar.gz
Source9:      http://www.cpan.org/modules/by-module/DBD/DBD-CSV-%{V_dbd_csv}.tar.gz
Source10:     http://www.cpan.org/authors/id/T/TU/TURNERJW/DBD-Sprite-%{V_dbd_sprite}.tar.gz
Source11:     http://www.cpan.org/authors/id/I/IS/ISHIGAKI/DBD-SQLite-%{V_dbd_sqlite}.tar.gz
Source12:     http://www.cpan.org/authors/id/C/CA/CAPTTOFU/DBD-mysql-%{V_dbd_mysql}.tar.gz
Source13:     http://www.cpan.org/authors/id/T/TU/TURNSTEP/DBD-Pg-%{V_dbd_pgsql}.tar.gz
Source14:     http://www.cpan.org/authors/id/T/TI/TIMB/DBD-Oracle-%{V_dbd_oracle}.tar.gz
Source15:     http://www.cpan.org/authors/id/M/MJ/MJEVANS/DBD-ODBC-%{V_dbd_odbc}.tar.gz
Source16:     http://www.peppler.org/downloads/DBD-Sybase-%{V_dbd_sybase}.tar.gz
Source17:     http://www.cpan.org/authors/id/G/GR/GRUBER/DBD-PgLite-%{V_dbd_pglite}.tar.gz
Source18:     http://www.lemke-it.com/DBD-cego-%{V_dbd_cego}.tar.gz
Patch0:       perl-dbi.patch

#   build information
BuildPreReq:  OpenPKG, openpkg >= 20160101, perl >= %{V_perl}, perl-openpkg >= %{V_perl}-20040126, pkgconfig
PreReq:       OpenPKG, openpkg >= 20160101, perl >= %{V_perl}
BuildPreReq:  perl-module, perl-util, perl-net, perl-locale, perl-text, perl-parse, perl-crypto
PreReq:       perl-module, perl-util, perl-net, perl-locale, perl-text, perl-parse, perl-crypto
%if "%{with_sqlite}" == "yes"
BuildPreReq:  sqlite, perl-locale >= %{V_perl}-20060921
PreReq:       sqlite, perl-locale >= %{V_perl}-20060921
%endif
%if "%{with_mysql}" == "yes"
BuildPreReq:  mysql
PreReq:       mysql
%endif
%if "%{with_pgsql}" == "yes"
BuildPreReq:  postgresql
PreReq:       postgresql
%endif
%if "%{with_oracle}" == "yes"
BuildPreReq:  oracle
PreReq:       oracle
%endif
%if "%{with_sybase}" == "yes"
BuildPreReq:  freetds, libiconv
PreReq:       freetds, libiconv
%endif
%if "%{with_odbc}" == "yes"
BuildPreReq:  ODBC
PreReq:       ODBC
%endif
%if "%{with_cego}" == "yes"
BuildPreReq:  cego
PreReq:       cego
%endif

%description
    Various modules for using the DBI API of Perl:
    - DBI (%{V_dbi})
    - SQL::Statement (%{V_sql_statement})
    - SQL::Abstract (%{V_sql_abstract})
    - SQL::Routine (%{V_sql_routine})
    - SQL::Builder (%{V_sql_builder})
    - SQL::Interpolate (%{V_sql_interpolate})
    - SQL::Translator (%{V_sql_translator})
    - DBD::Mock (%{V_dbd_mock})
    - DBD::AnyData (%{V_dbd_anydata})
    - DBD::CSV (%{V_dbd_csv})
    - DBD::Sprite (%{V_dbd_sprite})
    - DBD::SQLite (%{V_dbd_sqlite}) [%{with_sqlite}]
    - DBD::PgLite (%{V_dbd_pglite}) [%{with_sqlite}]
    - DBD::mysql (%{V_dbd_mysql}) [%{with_mysql}]
    - DBD::Pg (%{V_dbd_pgsql}) [%{with_pgsql}]
    - DBD::Oracle (%{V_dbd_oracle}) [%{with_oracle}]
    - DBD::Sybase (%{V_dbd_sybase}) [%{with_sybase}]
    - DBD::ODBC (%{V_dbd_odbc}) [%{with_odbc}]
    - DBD::Cego (%{V_dbd_cego}) [%{with_cego}]

%track
    prog perl-dbi:DBI = {
        version   = %{V_dbi}
        url       = http://www.cpan.org/authors/id/T/TI/TIMB/
        regex     = DBI-(\d+\.\d+)\.tar\.gz
    }
    prog perl-dbi:SQL-Statement = {
        version   = %{V_sql_statement}
        url       = http://www.cpan.org/authors/id/R/RE/REHSACK/
        regex     = SQL-Statement-(__VER__)\.tar\.gz
    }
    prog perl-dbi:SQL-Abstract = {
        version   = %{V_sql_abstract}
        url       = http://www.cpan.org/authors/id/R/RI/RIBASUSHI/
        regex     = SQL-Abstract-(__VER__)\.tar\.gz
    }
    prog perl-dbi:SQL-Routine = {
        version   = %{V_sql_routine}
        url       = http://www.darrenduncan.net/d/perl/archives/
        regex     = SQL-Routine-v(__VER__)\.tar\.gz
    }
    prog perl-dbi:SQL-Builder = {
        disabled
        comment   = "rse: disappeared from CPAN"
        version   = %{V_sql_builder}
        url       = http://download.openpkg.org/components/orphaned/
        regex     = SQL-Builder-(__VER__)\.tar\.gz
    }
    prog perl-dbi:SQL-Interpolate = {
        version   = %{V_sql_interpolate}
        url       = http://www.cpan.org/authors/id/M/MA/MARKSTOS/
        regex     = SQL-Interpolate-(__VER__)\.tar\.gz
    }
    prog perl-dbi:SQL-Translator = {
        version   = %{V_sql_translator}
        url       = http://www.cpan.org/authors/id/J/JR/JROBINSON/
        regex     = SQL-Translator-(__VER__)\.tar\.gz
    }
    prog perl-dbi:DBD-Mock = {
        version   = %{V_dbd_mock}
        url       = http://www.cpan.org/authors/id/D/DR/DROLSKY/
        regex     = DBD-Mock-(__VER__)\.tar\.gz
    }
    prog perl-dbi:DBD-AnyData = {
        version   = %{V_dbd_anydata}
        url       = http://www.cpan.org/authors/id/R/RE/REHSACK/
        regex     = DBD-AnyData-(__VER__)\.tar\.gz
    }
    prog perl-dbi:DBD-CSV = {
        version   = %{V_dbd_csv}
        url       = http://www.cpan.org/modules/by-module/DBD/
        regex     = DBD-CSV-(\d+\.\d\d)\.tar\.gz
    }
    prog perl-dbi:DBD-mysql = {
        version   = %{V_dbd_mysql}
        url       = http://www.cpan.org/authors/id/C/CA/CAPTTOFU/
        regex     = DBD-mysql-(__VER__)\.tar\.gz
    }
    prog perl-dbi:DBD-ODBC = {
        version   = %{V_dbd_odbc}
        url       = http://www.cpan.org/authors/id/M/MJ/MJEVANS/
        regex     = DBD-ODBC-(__VER__)\.tar\.gz
    }
    prog perl-dbi:DBD-Oracle = {
        version   = %{V_dbd_oracle}
        url       = http://www.cpan.org/authors/id/T/TI/TIMB/
        regex     = DBD-Oracle-(__VER__)\.tar\.gz
    }
    prog perl-dbi:DBD-Pg = {
        version   = %{V_dbd_pgsql}
        url       = http://www.cpan.org/authors/id/T/TU/TURNSTEP/
        regex     = DBD-Pg-(__VER__)\.tar\.gz
    }
    prog perl-dbi:DBD-Sprite = {
        version   = %{V_dbd_sprite}
        url       = http://www.cpan.org/authors/id/T/TU/TURNERJW/
        regex     = DBD-Sprite-(__VER__)\.tar\.gz
    }
    prog perl-dbi:DBD-SQLite = {
        version   = %{V_dbd_sqlite}
        url       = http://www.cpan.org/authors/id/A/AD/ADAMK/
        regex     = DBD-SQLite-(__VER__)\.tar\.gz
    }
    prog perl-dbi:DBD-PgLite = {
        version   = %{V_dbd_pglite}
        url       = http://www.cpan.org/authors/id/G/GR/GRUBER/
        regex     = DBD-PgLite-(__VER__)\.tar\.gz
    }
    prog perl-dbi:DBD-Sybase = {
        version   = %{V_dbd_sybase}
        url       = http://www.peppler.org/downloads/
        regex     = DBD-Sybase-(__VER__)\.tar\.gz
    }
    prog perl-dbi:DBD-cego = {
        version   = %{V_dbd_cego}
        url       = http://www.lemke-it.com/litexec?request=pubcego&user=&lang=en
        regex     = DBD-cego-(__VER__)\.tar\.gz
    }

%prep
    %setup -q -c
    %setup -q -T -D -a 1
    %setup -q -T -D -a 2
    %setup -q -T -D -a 3
    %setup -q -T -D -a 4
    %setup -q -T -D -a 5
    %setup -q -T -D -a 6
    %setup -q -T -D -a 7
    %setup -q -T -D -a 8
    %setup -q -T -D -a 9
    %setup -q -T -D -a 10
    %setup -q -T -D -a 11
    %setup -q -T -D -a 12
    %setup -q -T -D -a 13
    %setup -q -T -D -a 14
    %setup -q -T -D -a 15
    %setup -q -T -D -a 16
    %setup -q -T -D -a 17
    %setup -q -T -D -a 18
    %patch -p0
    chmod u+w SQL-Translator-*/*

%build

%install
    %{l_prefix}/bin/perl-openpkg prepare

    #   build and install individual modules
    %{l_prefix}/bin/perl-openpkg -d %{SOURCE0}  configure build install
    %{l_prefix}/bin/perl-openpkg -d %{SOURCE1}  configure build install
    %{l_prefix}/bin/perl-openpkg -d %{SOURCE2}  configure build install
    %{l_prefix}/bin/perl-openpkg -d %{SOURCE3}  configure build install
    %{l_prefix}/bin/perl-openpkg -d %{SOURCE4}  configure build install
    %{l_prefix}/bin/perl-openpkg -d %{SOURCE5}  configure build install
    %{l_prefix}/bin/perl-openpkg -d %{SOURCE6}  configure build install
    %{l_prefix}/bin/perl-openpkg -d %{SOURCE7}  configure build install
    %{l_prefix}/bin/perl-openpkg -d %{SOURCE8}  configure build install
    %{l_prefix}/bin/perl-openpkg -d %{SOURCE9}  configure build install
    %{l_prefix}/bin/perl-openpkg -d %{SOURCE10} configure build install

%if "%{with_sqlite}" == "yes"
    #   build DBD::SQLite
    ( cd DBD-SQLite-%{V_dbd_sqlite}
      #   remove local SQLite sources (we use external one)
      #   in order to not confuse ExtUtils::MakeMaker
      mv ppport.h dbdimp.[ch] SQLiteXS.h ..
      for file in `echo *.[ch] getsqlite.pl`; do
          sed -e "s;^ *$file *$;;" <MANIFEST >MANIFEST.NEW && mv MANIFEST.NEW MANIFEST
          rm -f $file
      done
      mv ../ppport.h ../dbdimp.[ch] ../SQLiteXS.h .
      #   substitute paths in patched Makefile.PL
      %{l_shtool} subst %{l_value -s -a} Makefile.PL
      #   perform regular build and install
      %{l_prefix}/bin/perl-openpkg configure -A SQLITE_LOCATION=%{l_prefix} build install
    ) || exit $?

    #   build DBD::PgLite
    %{l_prefix}/bin/perl-openpkg -d DBD-PgLite-%{V_dbd_pglite} configure build install
%endif

%if "%{with_mysql}" == "yes"
    #   build DBD::mysql
    ( cd DBD-mysql-%{V_dbd_mysql}
      #   (determines MySQL header/lib paths via mysql_config in $PATH)
      %{l_prefix}/bin/perl-openpkg configure build install
    ) || exit $?
%endif

%if "%{with_pgsql}" == "yes"
    #   build DBD::Pg
    ( cd DBD-Pg-%{V_dbd_pgsql}
      %{l_shtool} subst \
          -e 's;POSTGRES_LIB -lpq;POSTGRES_LIB -lpq -lssl -lcrypto -lcrypt;' \
          Makefile.PL
      POSTGRES_HOME=%{l_prefix}
      POSTGRES_INCLUDE=%{l_prefix}/include/postgresql
      POSTGRES_LIB=%{l_prefix}/lib
      export POSTGRES_HOME POSTGRES_INCLUDE POSTGRES_LIB
      %{l_prefix}/bin/perl-openpkg configure build install
    ) || exit $?
%endif

%if "%{with_oracle}" == "yes"
    #   build DBD::oracle
    ( cd DBD-Oracle-%{V_dbd_oracle}
      ORACLE_HOME="`%{l_rc} --query oracle_home`"
      export ORACLE_HOME
      case "%{l_platform -t}" in
          i?86-linux* )
              ;;
          sun*-sunos* | ix86-sunos* )
              #   OpenPKG builds with gcc in 32-bit mode by default
              %{l_shtool} subst \
                   -e 's;demo_rdbms\.mk;demo_rdbms32.mk;g' \
                   Makefile.PL
              ;;
          * )
              echo "Platform \"%{l_platform -t}\" not supported" 1>&2
              exit 1
              ;;
      esac
      %{l_prefix}/bin/perl-openpkg configure build install
    ) || exit $?
%endif

%if "%{with_sybase}" == "yes"
    #   build DBD::Sybase
    ( cd DBD-Sybase-%{V_dbd_sybase}
      SYBASE="%{l_prefix}"
      export SYBASE
      %{l_shtool} subst \
          -e 's;\([^s(]/lib\);\1/freetds;g' \
          -e 's;-lct;%{l_ldflags} -lct -liconv;g' \
          Makefile.PL
      %{l_prefix}/bin/perl-openpkg configure build install
    ) || exit $?
%endif

%if "%{with_odbc}" == "yes"
    #   build DBD::odbc
    ( cd DBD-ODBC-%{V_dbd_odbc}
      ODBCHOME="%{l_prefix}"
      DBROOT=
      export ODBCHOME DBROOT
      %{l_prefix}/bin/perl-openpkg configure build install
    ) || exit $?
%endif

%if "%{with_cego}" == "yes"
    #   build DBD::Cego
    ( cd DBD-cego
      rm -f ._* >/dev/null 2>&1 || true
      %{l_prefix}/bin/perl-openpkg --args=--prefix=%{l_prefix} configure build install
    ) || exit $?
%endif

    #   determine installation files
    %{l_prefix}/bin/perl-openpkg -F perl-openpkg-files fixate cleanup
    %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT %{l_files_std} `cat perl-openpkg-files`

%files -f files

%clean

