%define  MAJOR 8.6

Name:          tcl
Version:       8.6.8
Release:       8
Epoch:         1
Summary:       The Tool Command Language implementation
License:       BSD
URL:           https://sourceforge.net/projects/tcl/
Source0:       http://downloads.sourceforge.net/sourceforge/tcl/tcl-core%{version}-src.tar.gz

BuildRequires: autoconf zlib-devel systemtap-sdt-devel
Provides:      tcl(abi) = %{MAJOR}
Obsoletes:     tcl-tcldict <= %{version}
Provides:      tcl-tcldict = %{version}

Patch0000:     tcl-8.6.3-autopath.patch
Patch0001:     tcl-8.6.8-conf.patch
Patch0002:     tcl-8.6.8-hidden.patch
Patch0003:     tcl-8.6.5-parallel-make-fix.patch

Patch0004:     stay-out-of-internals-when-nice-interfaces-are-avail.patch
Patch0005:     oops.patch
Patch0006:     Fix-for-issue-9fd5c629c1-TclOO-aborts-when-a-trace-o.patch
Patch0007:     Fix-bug-3c32a3f8bd-segmentation-fault-in-TclOO.c-Rel.patch
Patch0008:     Fix-error-message-for-min-math-functions-to-for-for-.patch
Patch0009:     Fix-behavior-of-Tcl_GetRange-and-string-range-regard.patch
Patch0010:     Fix-11ae2be95d-tip-389-branch-string-range-errors-wi.patch
Patch0011:     Improved-overflow-prevention-1.patch
Patch0012:     Improved-overflow-prevention-2.patch
Patch0013:     27b682284974d0cd-command-file-delete-avoid-possible-.patch
Patch0014:     Fix-handling-of-surrogates-when-TCL_UTF_MAX-3-in-Tcl.patch
Patch0015:     Bug-fix-in-Tcl_UtfAtIndex-for-TCL_UTF_MAX-4-only-.-W.patch
Patch0016:     new-package.patch
Patch0017:     Plug-leak-in-TclSetEnv.patch
Patch0018:     closes-d051b77fc18d7340-fixed-segfault-by-integer-ov.patch
Patch0020:     amend-after-merge-8.6th-provide-additionally-an-erro.patch
Patch0021:     In-registry-protect-keyName-from-being-NULL-This-act.patch
Patch0022:     fixes-segfault-00d04c4f12-unfulfilled-base64-strict-.patch
Patch0023:     fixes-4ee9b4f3e965a7da5133-result-of-command-time-ov.patch
Patch0024:     fix-exec-test-error.patch

%description
Tcl(Tool Command Language) provides a powerful platform for creating integration applications
that tie together diverse applications, protocols, devices, and frameworks. When paired with
the Tk toolkit, Tcl provides the fastest and most powerful way to create GUI applications that
run on linux, Unix, and Mac OS X. Tcl can also be used for a variety of web-related tasks and
for creating powerful command languages for applications.

%package help
Summary: help document for tcl
Requires: %{name} = %{epoch}:%{version}-%{release}
BuildArch: noarch
Provides: %{name}-doc < %{version}-%{release}
Obsoletes: %{name}-doc = %{version}-%{release}

%description help
Help document for tcl.

%package devel
Summary: The development files for tcl
Requires: %{name} = %{epoch}:%{version}-%{release}

%description devel
The development files for tcl.

%prep
%autosetup -n %{name}%{version} -p1

%build
cd unix
autoconf
%configure --enable-threads --enable-symbols --enable-shared --enable-dtrace
%make_build CFLAGS="%{optflags}" TCL_LIBRARY=%{_datadir}/%{name}%{MAJOR}

%install
cd unix
make INSTALL_ROOT=$RPM_BUILD_ROOT TCL_LIBRARY=%{_datadir}/%{name}%{MAJOR} install
cd ..
ln -s tclsh%{MAJOR} %{buildroot}%{_bindir}/tclsh
ln -s lib%{name}%{MAJOR}.so $RPM_BUILD_ROOT%{_libdir}/lib%{name}.so

mkdir -p $RPM_BUILD_ROOT%{_libdir}/%{name}%{MAJOR}
ln -s %{_libdir}/%{name}Config.sh $RPM_BUILD_ROOT%{_libdir}/%{name}%{MAJOR}/%{name}Config.sh

mv license.terms COPYING
mkdir -p $RPM_BUILD_ROOT%{_includedir}/%{name}-private/generic
mkdir -p $RPM_BUILD_ROOT%{_includedir}/%{name}-private/unix

find generic unix -name "*.h" -exec cp -p '{}' %{buildroot}/%{_includedir}/%{name}-private/'{}' ';'
(
cd %{buildroot}/%{_includedir}
for header in *.h ; do
    if [ -f %{buildroot}/%{_includedir}/%{name}-private/generic/$header ]; then
        ln -sf ../../$header %{buildroot}/%{_includedir}/%{name}-private/generic
    fi
done
)
sed -i -e "s|$PWD/unix|%{_libdir}|; s|$PWD|%{_includedir}/%{name}-private|" %{buildroot}/%{_libdir}/%{name}Config.sh
rm -rf %{buildroot}/%{_datadir}/%{name}%{MAJOR}/ldAix

%check
cd unix
make test

%pre

%preun

%post
/sbin/ldconfig

%postun
/sbin/ldconfig

%files
%defattr(-,root,root)
%doc README changes COPYING
%{_bindir}/tclsh*
%dir %{_libdir}/%{name}%{MAJOR}
%{_datadir}/%{name}%{MAJOR}
%{_datadir}/%{name}8
%{_libdir}/lib%{name}%{MAJOR}.so
%exclude %{_datadir}/%{name}%{MAJOR}/tclAppInit.c

%files devel
%{_includedir}/*
%{_libdir}/lib%{name}stub%{MAJOR}.a
%{_libdir}/lib%{name}.so
%{_libdir}/%{name}Config.sh
%{_libdir}/%{name}ooConfig.sh
%{_libdir}/%{name}%{MAJOR}/%{name}Config.sh
%{_libdir}/pkgconfig/tcl.pc
%{_datadir}/%{name}%{MAJOR}/tclAppInit.c

%files help
%{_mandir}/man3/*
%{_mandir}/man1/*
%{_mandir}/mann/*

%changelog
* Tue Mar 17 2020 chengquan<chengquan3@huawei.com> - 1:8.6.8.8
- Type:bugfix
- ID:NA
- SUG:NA
- DESC:Rollback some patches & add /usr/lib64/tcl*

* Sat Jan 11 2020 zhangguangzhi<zhangguangzhi3@huawei.com> - 1:8.6.8.7
- Type:bugfix
- ID:NA
- SUG:NA
- DESC:del patch to be consistent with open source

* Wed Dec 25 2019 chengquan <chengquan3@huawei.com> - 1:8.6.8.6
- Type:bugfix
- ID:NA
- SUG:NA
- DESC:fix bug in update help package

* Mon Nov 4 2019 shenyangyang <shenyangyang4@huawei.com> - 1:8.6.8.5
- Type:NA
- ID:NA
- SUG:NA
- DESC:add use/bin/tclsh8.6

* Fri Nov 1 2019 caomeng <caomeng5@huawei.com> - 1:8.6.8.4
- Type:NA
- ID:NA
- SUG:NA
- DESC:fix tclConfig.sh problem

* Mon Sep 09 2019 Huiming Xie <xiehuiming@huawei.com> - 1:8.6.8.3
- Package init

