diff --git a/tix-8.4.2-tcl8.5.patch b/tix-8.4.2-tcl8.5.patch index ebedbd6..cdb6ba0 100644 --- a/tix-8.4.2-tcl8.5.patch +++ b/tix-8.4.2-tcl8.5.patch @@ -1,14 +1,272 @@ +diff -up Tix8.4.2/generic/tixImgXpm.c_old Tix8.4.2/generic/tixImgXpm.c +--- Tix8.4.2/generic/tixImgXpm.c_old 2008-01-08 11:53:37.000000000 +0100 ++++ Tix8.4.2/generic/tixImgXpm.c 2008-01-08 12:04:49.000000000 +0100 +@@ -45,19 +45,19 @@ static int ImgXpmConfigureMaster _ANSI_ + int flags)); + static int ImgXpmGetData _ANSI_ARGS_((Tcl_Interp *interp, + PixmapMaster *masterPtr)); +-static char ** ImgXpmGetDataFromFile _ANSI_ARGS_((Tcl_Interp * interp, ++static CONST84 char ** ImgXpmGetDataFromFile _ANSI_ARGS_((Tcl_Interp * interp, + char * string, int * numLines_return)); +-static char ** ImgXpmGetDataFromId _ANSI_ARGS_((Tcl_Interp * interp, ++static CONST84 char ** ImgXpmGetDataFromId _ANSI_ARGS_((Tcl_Interp * interp, + CONST84 char * id)); +-static char ** ImgXpmGetDataFromString _ANSI_ARGS_((Tcl_Interp*interp, ++static CONST84 char ** ImgXpmGetDataFromString _ANSI_ARGS_((Tcl_Interp*interp, + char * string, int * numLines_return)); + static void ImgXpmGetPixmapFromData _ANSI_ARGS_(( + Tcl_Interp * interp, + PixmapMaster *masterPtr, + PixmapInstance *instancePtr)); +-static char * GetType _ANSI_ARGS_((char * colorDefn, ++static CONST84 char * GetType _ANSI_ARGS_((CONST84 char * colorDefn, + int * type_ret)); +-static char * GetColor _ANSI_ARGS_((char * colorDefn, ++static CONST84 char * GetColor _ANSI_ARGS_((CONST84 char * colorDefn, + char * colorName, int * type_ret)); + + /* +@@ -286,7 +286,7 @@ ImgXpmGetData(interp, masterPtr) + Tcl_Interp *interp; /* For reporting errors. */ + PixmapMaster *masterPtr; + { +- char ** data = NULL; ++ CONST84 char ** data = NULL; + int isAllocated = 0; /* do we need to free "data"? */ + int listArgc; + CONST84 char ** listArgv = NULL; +@@ -363,7 +363,7 @@ ImgXpmGetData(interp, masterPtr) + return code; + } + +-static char ** ImgXpmGetDataFromId(interp, id) ++static CONST84 char ** ImgXpmGetDataFromId(interp, id) + Tcl_Interp * interp; + CONST84 char * id; + { +@@ -378,13 +378,13 @@ static char ** ImgXpmGetDataFromId(inter + if (hashPtr == NULL) { + Tcl_AppendResult(interp, "unknown pixmap ID \"", id, + "\"", NULL); +- return (char**)NULL; ++ return NULL; + } else { +- return (char**)Tcl_GetHashValue(hashPtr); ++ return (CONST84 char**)Tcl_GetHashValue(hashPtr); + } + } + +-static char ** ImgXpmGetDataFromString(interp, string, numLines_return) ++static CONST84 char ** ImgXpmGetDataFromString(interp, string, numLines_return) + Tcl_Interp * interp; + char * string; + int * numLines_return; +@@ -392,7 +392,7 @@ static char ** ImgXpmGetDataFromString(i + int quoted; + char * p, * list; + int numLines; +- char ** data; ++ CONST84 char ** data; + + /* skip the leading blanks (leading blanks are not defined in the + * the XPM definition, but skipping them shouldn't hurt. Also, the ability +@@ -510,17 +510,17 @@ static char ** ImgXpmGetDataFromString(i + + error: + Tcl_AppendResult(interp, "File format error", NULL); +- return (char**) NULL; ++ return NULL; + } + +-static char ** ImgXpmGetDataFromFile(interp, fileName, numLines_return) ++static CONST84 char ** ImgXpmGetDataFromFile(interp, fileName, numLines_return) + Tcl_Interp * interp; + char * fileName; + int * numLines_return; + { + FILE * fd = NULL; + int size, n; +- char ** data; ++ CONST84 char ** data; + char *cmdBuffer = NULL; + Tcl_DString buffer; /* initialized by Tcl_TildeSubst */ + +@@ -588,16 +588,16 @@ static char ** ImgXpmGetDataFromFile(int + ckfree(cmdBuffer); + } + Tcl_DStringFree(&buffer); +- return (char**)NULL; ++ return NULL; + } + + +-static char * ++static CONST84 char * + GetType(colorDefn, type_ret) +- char * colorDefn; ++ CONST84 char * colorDefn; + int * type_ret; + { +- char * p = colorDefn; ++ CONST84 char * p = colorDefn; + + /* skip white spaces */ + while (*p && isspace(*p)) { +@@ -642,9 +642,9 @@ GetType(colorDefn, type_ret) + /* + * colorName is guaranteed to be big enough + */ +-static char * ++static CONST84 char * + GetColor(colorDefn, colorName, type_ret) +- char * colorDefn; ++ CONST84 char * colorDefn; + char * colorName; /* if found, name is copied to this array */ + int * type_ret; + { +@@ -751,7 +751,7 @@ ImgXpmGetPixmapFromData(interp, masterPt + } + + for (i=0; incolors; i++) { +- char * colorDefn; /* the color definition line */ ++ CONST84 char * colorDefn; /* the color definition line */ + char * colorName; /* temp place to hold the color name + * defined for one type of visual */ + char * useName; /* the color name used for this +@@ -842,7 +842,7 @@ ImgXpmGetPixmapFromData(interp, masterPt + * Parse the main body of the image + */ + for (i=0; isize[1]; i++) { +- char * p = masterPtr->data[i+lOffset]; ++ CONST84 char * p = masterPtr->data[i+lOffset]; + + for (j=0; jsize[0]; j++) { + if (masterPtr->cpp == 1) { +diff -up Tix8.4.2/generic/tixImgXpm.h_old Tix8.4.2/generic/tixImgXpm.h +--- Tix8.4.2/generic/tixImgXpm.h_old 2008-01-08 12:04:59.000000000 +0100 ++++ Tix8.4.2/generic/tixImgXpm.h 2008-01-08 12:05:26.000000000 +0100 +@@ -55,7 +55,7 @@ typedef struct PixmapMaster { + int size[2]; /* width and height */ + int ncolors; /* number of colors */ + int cpp; /* characters per pixel */ +- char ** data; /* The data that defines this pixmap ++ CONST84 char ** data; /* The data that defines this pixmap + * image (array of strings). It is + * converted into an X Pixmap when this + * image is instanciated +diff -up Tix8.4.2/generic/tixInt.h_old Tix8.4.2/generic/tixInt.h +--- Tix8.4.2/generic/tixInt.h_old 2008-01-08 12:05:53.000000000 +0100 ++++ Tix8.4.2/generic/tixInt.h 2008-01-08 12:09:35.000000000 +0100 +@@ -23,6 +23,10 @@ + #include + #endif + ++#include ++#include ++#include ++ + /*---------------------------------------------------------------------- + * + * Tix Display Item Types diff -up Tix8.4.2/generic/tixWidget.c_old Tix8.4.2/generic/tixWidget.c ---- Tix8.4.2/generic/tixWidget.c_old 2005-03-25 21:15:53.000000000 +0100 -+++ Tix8.4.2/generic/tixWidget.c 2008-01-08 10:12:36.000000000 +0100 -@@ -231,6 +231,10 @@ TIX_DEFINE_CMD(Tix_CreateWidgetCmd) - Tcl_SetVar2(interp, "errorCode", NULL, oldErrorCode, - TCL_GLOBAL_ONLY); +--- Tix8.4.2/generic/tixWidget.c_old 2008-01-08 11:46:43.000000000 +0100 ++++ Tix8.4.2/generic/tixWidget.c 2008-01-08 11:53:17.000000000 +0100 +@@ -162,24 +162,23 @@ TIX_DEFINE_CMD(Tix_CreateWidgetCmd) + done: + + if (code != TCL_OK) { +- /* %% TCL CORE USED !! %% */ +- Interp *iPtr = (Interp *) interp; +- CONST84 char * oldResult, * oldErrorInfo, * oldErrorCode; ++ Tcl_SavedResult oldResult; ++ Tcl_Obj * oldErrorInfo, * oldErrorCode; + Tk_Window topLevel, tkwin; + + /* We need to save the old error message because + * interp->result may be changed by some of the following function + * calls. + */ +- if (interp->result) { +- oldResult = tixStrDup(interp->result); +- } else { +- oldResult = NULL; ++ oldErrorInfo = Tcl_GetVar2Ex(interp, "errorInfo", NULL, TCL_GLOBAL_ONLY); ++ oldErrorCode = Tcl_GetVar2Ex(interp, "errorCode", NULL, TCL_GLOBAL_ONLY); ++ if (oldErrorInfo) { ++ Tcl_IncrRefCount(oldErrorInfo); } -+/* ERR_IN_PROGRESS isn't defined in tcl8.5 */ -+#ifndef ERR_IN_PROGRESS -+#define ERR_IN_PROGRESS 0 -+#endif - iPtr->flags |= ERR_IN_PROGRESS; +- oldErrorInfo = Tcl_GetVar2(interp, "errorInfo", NULL, TCL_GLOBAL_ONLY); +- oldErrorCode = Tcl_GetVar2(interp, "errorCode", NULL, TCL_GLOBAL_ONLY); +- +- Tcl_ResetResult(interp); ++ if (oldErrorCode) { ++ Tcl_IncrRefCount(oldErrorCode); ++ } ++ Tcl_SaveResult(interp, &oldResult); + + /* (1) window */ + topLevel = cPtr->mainWindow; +@@ -217,21 +216,17 @@ TIX_DEFINE_CMD(Tix_CreateWidgetCmd) + } + } + } +- if (oldResult) { +- Tcl_SetResult(interp, (char *) oldResult, TCL_DYNAMIC); +- } +- if (oldErrorInfo && *oldErrorInfo) { +- Tcl_SetVar2(interp, "errorInfo", NULL, oldErrorInfo, +- TCL_GLOBAL_ONLY); +- } else { +- Tcl_SetVar2(interp, "errorInfo", NULL, oldResult, ++ Tcl_RestoreResult(interp, &oldResult); ++ if (oldErrorInfo) { ++ Tcl_SetVar2Ex(interp, "errorInfo", NULL, oldErrorInfo, + TCL_GLOBAL_ONLY); ++ Tcl_DecrRefCount(oldErrorInfo); + } + if (oldErrorCode) { +- Tcl_SetVar2(interp, "errorCode", NULL, oldErrorCode, ++ Tcl_SetVar2Ex(interp, "errorCode", NULL, oldErrorCode, + TCL_GLOBAL_ONLY); ++ Tcl_DecrRefCount(oldErrorCode); + } +- iPtr->flags |= ERR_IN_PROGRESS; } if (widCmd) { + ckfree(widCmd); +diff -up Tix8.4.2/Makefile.in_old Tix8.4.2/Makefile.in +--- Tix8.4.2/Makefile.in_old 2008-01-08 11:43:41.000000000 +0100 ++++ Tix8.4.2/Makefile.in 2008-01-08 11:46:22.000000000 +0100 +@@ -128,6 +128,7 @@ SHLIB_LD = @SHLIB_LD@ $(CFLAGS) -Wl,-son + SHLIB_LD_FLAGS = @SHLIB_LD_FLAGS@ + SHLIB_LD_LIBS = @SHLIB_LD_LIBS@ + STLIB_LD = @STLIB_LD@ ++TCL_VERSION = @TCL_VERSION@ + TCL_DEFS = @TCL_DEFS@ + TCL_SRC_DIR = @TCL_SRC_DIR@ + TCL_BIN_DIR = @TCL_BIN_DIR@ +@@ -294,7 +295,7 @@ VPATH = $(srcdir):$(srcdir)/generic:$(sr + + pkgIndex.tcl: + (\ +- echo 'if {[catch {package require Tcl 8.4}]} return';\ ++ echo 'if {[catch {package require Tcl $(TCL_VERSION)}]} return';\ + echo 'package ifneeded $(PACKAGE_NAME) $(PACKAGE_VERSION) \ + [list load [file join $$dir $(PKG_LIB_FILE)] $(PACKAGE_NAME)]'\ + ) > pkgIndex.tcl +diff -up Tix8.4.2/unix/tixUnixXpm.c_old Tix8.4.2/unix/tixUnixXpm.c +--- Tix8.4.2/unix/tixUnixXpm.c_old 2008-01-08 12:10:18.000000000 +0100 ++++ Tix8.4.2/unix/tixUnixXpm.c 2008-01-08 12:13:07.000000000 +0100 +@@ -19,12 +19,6 @@ + #include + #include + +-#if !defined(WIN32) && !defined(MAC_OSX_TK) +-#define TkPutImage(colors, ncolors, display, pixels, gc, image, destx, desty, srcx, srcy, width, height) \ +- XPutImage(display, pixels, gc, image, destx, desty, srcx, \ +- srcy, width, height); +-#endif +- + typedef struct PixmapData { + Pixmap mask; /* Mask: only display pixmap pixels where + * there are 1's here. */ diff --git a/tix.spec b/tix.spec index be6ff49..b216d0f 100644 --- a/tix.spec +++ b/tix.spec @@ -1,5 +1,6 @@ %{!?tcl_version: %define tcl_version %(echo 'puts $tcl_version' | tclsh)} %{!?tcl_sitearch: %define tcl_sitearch %{_libdir}/tcl%{tcl_version}} +%{!?tcl_sitelib: %define tcl_sitelib %{_datadir}/tcl%{tcl_version}} %define tixmajor 8.4 %define tcltkver 8.4.13 @@ -59,7 +60,7 @@ This package contains the tix documentation %patch1 -p1 -b .err %build -%configure --libdir=%{tcl_sitearch} +%configure --with-tcl=%{_libdir} --with-tk=%{_libdir} --libdir=%{tcl_sitearch} make all %{?_smp_mflags} PKG_LIB_FILE=libTix.so %install @@ -77,8 +78,8 @@ ln -sf libTix.so $RPM_BUILD_ROOT%{_libdir}/libTix.so ln -sf libTix.so $RPM_BUILD_ROOT%{_libdir}/libtix.so # install demo scripts -mkdir -p $RPM_BUILD_ROOT%{_datadir}/Tix%{tixmajor} -cp -a demos $RPM_BUILD_ROOT%{_datadir}/Tix%{tixmajor} +mkdir -p $RPM_BUILD_ROOT%{tcl_sitelib}/Tix%{tixmajor} +cp -a demos $RPM_BUILD_ROOT%{tcl_sitelib}/Tix%{tixmajor} # the header and man pages were in the previous package, keeping for now... mkdir -p $RPM_BUILD_ROOT%{_includedir} @@ -105,7 +106,6 @@ rm -rf $RPM_BUILD_ROOT %defattr(-,root,root,-) %{tcl_sitearch}/libTix.so %{tcl_sitearch}/Tix%{version} -%{_datadir}/Tix%{tixmajor} %doc *.txt *.html license.terms %files devel @@ -118,13 +118,16 @@ rm -rf $RPM_BUILD_ROOT %files doc %defattr(-,root,root,-) %doc docs/* +%doc %{tcl_sitelib}/Tix%{tixmajor} %changelog -* Mon Jan 7 2008 Marcela Maslanova - 1:8.4.2-3 -- fix for build with tcl8.5 -- change the installing paths -- remove unusued variable -- fix BuildRoot +* Thu Jan 10 2008 Vitezslav Crhonek - 1:8.4.2-3 +- Fix for build with tcl 8.5, change the installing paths, + remove unused variable (Marcela Maslanova ) +- Fix build issues and installation path problems for tcl 8.5, + move demo programs to -doc subpackage (Wart ) +- Fix buildroot, tix 8.4 to tcl 8.5 compatibility patch based on + patch by Greg Couch * Tue Aug 28 2007 Vitezslav Crhonek - 1:8.4.2-2 - Rebuild