##
##  perl-curses.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_curses          1.32
%define       V_curses_ui       0.9609
%define       V_curses_ui_dtv   0.10
%define       V_curses_widgets  1.997
%define       V_curses_forms    1.997
%define       V_cdk_perl        20230205

#   package information
Name:         perl-curses
Summary:      Perl Modules for use with Curses
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:      20230206

#   list of sources
Source0:      http://www.cpan.org/modules/by-module/Curses/Curses-%{V_curses}.tgz
Source1:      http://www.cpan.org/authors/id/M/MD/MDXI/Curses-UI-%{V_curses_ui}.tar.gz
Source2:      http://www.cpan.org/authors/id/G/GS/GSAINIO/Curses-UI-DelimitedTextViewer-%{V_curses_ui_dtv}.tar.gz
Source3:      http://www.cpan.org/authors/id/C/CO/CORLISS/CursesWidgets-%{V_curses_widgets}.tar.gz
Source4:      http://www.cpan.org/authors/id/C/CO/CORLISS/CursesForms-%{V_curses_forms}.tar.gz
Source5:      ftp://ftp.invisible-island.net/cdk/cdk-perl-%{V_cdk_perl}.tgz

#   build information
BuildPreReq:  OpenPKG, openpkg >= 20160101, perl >= %{V_perl}, perl-openpkg >= %{V_perl}-20040126
PreReq:       OpenPKG, openpkg >= 20160101, perl >= %{V_perl}
BuildPreReq:  ncurses, cdk >= 4.9.11.20031210, perl-term
PreReq:       ncurses, cdk >= 4.9.11.20031210, perl-term

%description
    Various modules for using the Curses library from within the Perl
    language plus additional widgets:
    - Curses (%{V_curses})
    - Curses::UI (%{V_curses_ui})
    - Curses::UI::DelimitedTextViewer (%{V_curses_ui_dtv})
    - Curses::Widgets (%{V_curses_widgets})
    - Curses::Forms (%{V_curses_forms})
    - Cdk (%{V_cdk_perl})

%track
    prog perl-curses:cdk-perl = {
        version   = %{V_cdk_perl}
        url       = ftp://ftp.invisible-island.net/cdk/
        regex     = cdk-perl-(__VER__)\.tgz
    }
    prog perl-curses:Curses = {
        version   = %{V_curses}
        url       = http://www.cpan.org/modules/by-module/Curses/
        regex     = Curses-(__VER__)\.tgz
    }
    prog perl-curses:Curses-UI = {
        version   = %{V_curses_ui}
        url       = http://www.cpan.org/authors/id/M/MD/MDXI/
        regex     = Curses-UI-(__VER__)\.tar\.gz
    }
    prog perl-curses:Curses-UI-DelimitedTextViewer = {
        version   = %{V_curses_ui_dtv}
        url       = http://www.cpan.org/authors/id/G/GS/GSAINIO/
        regex     = Curses-UI-DelimitedTextViewer-(__VER__)\.tar\.gz
    }
    prog perl-curses:CursesForms = {
        version   = %{V_curses_forms}
        url       = http://www.cpan.org/authors/id/C/CO/CORLISS/
        regex     = CursesForms-(__VER__)\.tar\.gz
    }
    prog perl-curses:CursesWidgets = {
        version   = %{V_curses_widgets}
        url       = http://www.cpan.org/authors/id/C/CO/CORLISS/
        regex     = CursesWidgets-(__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

%build

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

    #   build Curses
    ( cd Curses-%{V_curses}
      hint="unknown"
      case "%{l_platform -t}" in
          *-freebsd* ) hint="freebsd.ncurses" ;;
          *-linux*   ) hint="linux.ncurses"   ;;
          *-sunos*   ) hint="solaris"         ;;
      esac
      if [ -f hints/c-$hint.h ]; then
          cp hints/c-$hint.h c-config.h
      fi
    ) || exit $?
    CURSES_CFLAGS="%{l_cppflags ncurses}" \
    CURSES_LDFLAGS="%{l_ldflags} -lncurses" \
    CURSES_PANEL_CFLAGS="%{l_cppflags ncurses}" \
    CURSES_PANEL_LDFLAGS="%{l_ldflags} -lncurses" \
    CURSES_MENU_CFLAGS="%{l_cppflags ncurses}" \
    CURSES_MENU_LDFLAGS="%{l_ldflags} -lncurses" \
    CURSES_FORM_CFLAGS="%{l_cppflags ncurses}" \
    CURSES_FORM_LDFLAGS="%{l_ldflags} -lncurses" \
    %{l_prefix}/bin/perl-openpkg -d Curses-%{V_curses} \
        --args "PANELS MENUS FORMS" \
        configure build install

    %{l_prefix}/bin/perl-openpkg -d Curses-UI-%{V_curses_ui} \
        configure build install
    %{l_prefix}/bin/perl-openpkg -d Curses-UI-DelimitedTextViewer-%{V_curses_ui_dtv} \
        configure build install
    %{l_prefix}/bin/perl-openpkg -d CursesWidgets-%{V_curses_widgets} \
        configure build install
    %{l_prefix}/bin/perl-openpkg -d CursesForms-%{V_curses_forms} \
        configure build install

    #   build Cdk
    ( cd cdk-perl-%{V_cdk_perl}
      %{l_shtool} subst \
          -e 's;-L/usr/local/lib;%{l_ldflags};' \
          -e 's;-I/usr/include/ncurses;%{l_cppflags ncurses};' \
          -e 's;-I/usr/local/include/cdk;%{l_cppflags cdk};' \
          Makefile.PL.in
      CC="%{l_cc}" \
      CFLAGS="%{l_cflags -O}" \
      CPPFLAGS="%{l_cppflags cdk .}" \
      LDFLAGS="%{l_ldflags}" \
      LIBS="-lncurses" \
      ./configure \
          --prefix=%{l_prefix}
    ) || exit $?
    %{l_prefix}/bin/perl-openpkg -d cdk-perl-%{V_cdk_perl} configure build install

    %{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

