diff --git a/.gitignore b/.gitignore index c74ef8e..a6a5190 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,26 @@ -/xcircuit-*.tgz +/xcircuit-3.7.57.tgz +/xcircuit-3.9.40.tgz +/xcircuit-3.9.48.tgz +/xcircuit-3.9.49.tgz +/xcircuit-3.9.50.tgz +/xcircuit-3.9.51.tgz +/xcircuit-3.9.54.tgz +/xcircuit-3.9.56.tgz +/xcircuit-3.9.57.tgz +/xcircuit-3.9.58.tgz +/xcircuit-3.9.59.tgz +/xcircuit-3.9.60.tgz +/xcircuit-3.9.61.tgz +/xcircuit-3.9.65.tgz +/xcircuit-3.9.66.tgz +/xcircuit-3.9.67.tgz +/xcircuit-3.9.68.tgz +/xcircuit-3.10.4.tgz +/xcircuit-3.10.8.tgz +/xcircuit-3.10.9.tgz +/xcircuit-3.10.10.tgz +/xcircuit-3.10.12.tgz +/xcircuit-3.10.24.tgz +/xcircuit-3.10.28.tgz +/xcircuit-3.10.29.tgz +/xcircuit-3.10.30.tgz diff --git a/sources b/sources index e2eb38b..5c10eb1 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (xcircuit-3.10.45.tgz) = c08eeba7d1a22c009cca33f68723cc24c5565f00f34ca29f043481b32cae2327a8bb1fd6cfb82bfdaf6c18973d3bbb6ada3668d74c48879166fe2a11da4bfa96 +SHA512 (xcircuit-3.10.30.tgz) = 52bf65fa9b5c095092f60abe32b3c88180365cc8043a8e95652ea9ab20e01c3e790989fe41171ecd1b2c60684016f6963c4851105b17a1c8a3bac8d75db84a8e diff --git a/xcircuit-3.9.40-format-security.patch b/xcircuit-3.9.40-format-security.patch new file mode 100644 index 0000000..1a7b48d --- /dev/null +++ b/xcircuit-3.9.40-format-security.patch @@ -0,0 +1,58 @@ +diff -urp -x Makefile -x 'config.*' -x '*~' xcircuit-3.9.40.old/svg.c xcircuit-3.9.40.new/svg.c +--- xcircuit-3.9.40.old/svg.c 2015-10-07 00:04:49.000000000 +0900 ++++ xcircuit-3.9.40.new/svg.c 2016-06-25 00:13:28.468986578 +0900 +@@ -1108,12 +1108,12 @@ int xctcl_svg(ClientData clientData, Tcl + + if (locobjc >= 2) { + /* If there is a non-option argument, use it for the output filename */ +- sprintf(filename, Tcl_GetString(objv[1])); ++ sprintf(filename, "%s", Tcl_GetString(objv[1])); + } + else if (xobjs.pagelist[areawin->page]->pageinst->thisobject->name == NULL) +- sprintf(filename, xobjs.pagelist[areawin->page]->filename); ++ sprintf(filename, "%s", xobjs.pagelist[areawin->page]->filename); + else +- sprintf(filename, xobjs.pagelist[areawin->page]->pageinst->thisobject->name); ++ sprintf(filename, "%s", xobjs.pagelist[areawin->page]->pageinst->thisobject->name); + + pptr = strrchr(filename, '.'); + if (pptr != NULL) +diff -urp -x Makefile -x 'config.*' -x '*~' xcircuit-3.9.40.old/tclxcircuit.c xcircuit-3.9.40.new/tclxcircuit.c +--- xcircuit-3.9.40.old/tclxcircuit.c 2015-11-14 02:27:30.000000000 +0900 ++++ xcircuit-3.9.40.new/tclxcircuit.c 2016-06-25 00:15:07.012510579 +0900 +@@ -3876,7 +3876,7 @@ int xctcl_object(ClientData clientData, + case NameIdx: + if (nidx == 1 || areawin->selects == 0) { + if (objc == 3) { +- sprintf(thisinst->thisobject->name, Tcl_GetString(objv[nidx + 2])); ++ sprintf(thisinst->thisobject->name, "%s", Tcl_GetString(objv[nidx + 2])); + checkname(thisinst->thisobject); + } + Tcl_AppendElement(interp, thisinst->thisobject->name); +@@ -7294,7 +7294,7 @@ int xctcl_page(ClientData clientData, Tc + + case LoadIdx: + TechReplaceSave(); +- sprintf(_STR2, Tcl_GetString(objv[2 + nidx])); ++ sprintf(_STR2, "%s", Tcl_GetString(objv[2 + nidx])); + for (i = 3 + nidx; i < objc; i++) { + argv = Tcl_GetString(objv[i]); + if ((*argv == '-') && !strncmp(argv, "-repl", 5)) { +@@ -7380,7 +7380,7 @@ int xctcl_page(ClientData clientData, Tc + + switch (importtype) { + case XCircuitIdx: +- sprintf(_STR2, Tcl_GetString(objv[3 + nidx])); ++ sprintf(_STR2, "%s", Tcl_GetString(objv[3 + nidx])); + for (i = 4; i < objc; i++) { + strcat(_STR2, ","); + strcat(_STR2, Tcl_GetString(objv[i + nidx])); +@@ -7397,7 +7397,7 @@ int xctcl_page(ClientData clientData, Tc + Tcl_SetObjResult(interp, objPtr); + return XcTagCallback(interp, objc, objv); + } +- sprintf(_STR2, Tcl_GetString(objv[3 + nidx])); ++ sprintf(_STR2, "%s", Tcl_GetString(objv[3 + nidx])); + if (savepage != pageno) newpage(pageno); + loadbackground(); + if (savepage != pageno) newpage(savepage); diff --git a/xcircuit.spec b/xcircuit.spec index eaf7417..1453319 100644 --- a/xcircuit.spec +++ b/xcircuit.spec @@ -1,22 +1,20 @@ %global short_version 3.10 +%if 0%{?fedora} >= 28 +%global ghostscript_devel libgs-devel +%else +%global ghostscript_devel ghostscript-devel +%endif + %undefine _changelog_trimtime %undefine __brp_mangle_shebangs Name: xcircuit -Version: %{short_version}.45 -Release: 1%{?dist} +Version: %{short_version}.30 +Release: 3%{?dist} Summary: Electronic circuit schematic drawing program -# Xw/ HPND unused -# asg/ non-free unused -# flate.c GPL-2.0-only from acroformtool -# lib/tcl/matgen.tcl GPL-2.0-or-later -# spiceparser/ GPL-2.0-or-later unused -# utf8encodings.c not-a-license https://gitlab.com/fedora/legal/fedora-license-data/-/issues/498 -# xcircuit.c GPL-2.0-or-later -# SPDX confirmed -License: GPL-2.0-or-later AND GPL-2.0-only +License: GPLv2+ URL: http://opencircuitdesign.com/xcircuit Source: http://opencircuitdesign.com/xcircuit/archive/%{name}-%{version}.tgz @@ -24,14 +22,16 @@ Source1: %{name}.desktop # http://opencircuitdesign.com/xcircuit/archive/xcircuit.xpm as 64x64 Source2: %{name}.png -BuildRequires: make +Patch0: xcircuit-3.9.40-format-security.patch + +BuildRequires: make BuildRequires: pkgconfig(cairo) BuildRequires: pkgconfig(fontconfig) -BuildRequires: libgs-devel +BuildRequires: %ghostscript_devel BuildRequires: libXpm-devel BuildRequires: libXt-devel -BuildRequires: pkgconfig(tcl) <= 8.999 -BuildRequires: pkgconfig(tk) <= 8.999 +BuildRequires: tcl-devel +BuildRequires: tk-devel BuildRequires: zlib-devel BuildRequires: desktop-file-utils BuildRequires: ngspice @@ -43,7 +43,7 @@ BuildRequires: libtool # Need check Requires: coreutils Requires: gtk2 -Requires: tk8 +Requires: tk # Special FEL Gnome/KDE menu structure Requires: electronics-menu @@ -54,8 +54,11 @@ CAD program for circuit schematic drawing and schematic capture. %prep %setup -q +%patch0 -p1 #439604: TCL 8.5.1 +sed -i lib/tcl/tkcon.tcl \ + -e "s|package require -exact|package require|" sed -i Makefile.am \ -e 's|/lib/|/%{_lib}/|' @@ -66,17 +69,20 @@ sed -i examples/xc_remote.sh -e 's|/usr/local/bin|%{_bindir}|' chmod ugo-x lib/tcl/console.tcl %build -export WISH=/usr/bin/wish8 +export WISH=/usr/bin/wish #01/08/09 Without --enable-asg \ because it's broken %configure \ --with-tcl=%{_libdir} \ --with-tk=%{_libdir} \ %{nil} -%make_build +make %{?_smp_mflags} %install -%make_install +make \ + INSTALL="install -p" \ + DESTDIR=%{buildroot} \ + install make install-man mandir="%{buildroot}%{_mandir}" rm -rf examples/win32 @@ -111,52 +117,6 @@ desktop-file-install \ %{_mandir}/man1/%{name}.1.* %changelog -* Mon Aug 17 2026 Mamoru TASAKA - 3.10.45-1 -- 3.10.45 -- Still use Tcl/Tk 8: Not ready for Tk 9 - -* Fri Jul 17 2026 Fedora Release Engineering - 3.10.30-17 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild - -* Sat Jan 17 2026 Fedora Release Engineering - 3.10.30-16 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild - -* Fri Jul 25 2025 Fedora Release Engineering - 3.10.30-15 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild - -* Fri Jan 31 2025 Mamoru TASAKA - 3.10.30-14 -- Use tk8 explicitly - -* Sun Jan 19 2025 Mamoru TASAKA - 3.10.30-13 -- Fix for C23, include header properly - -* Sat Jul 20 2024 Fedora Release Engineering - 3.10.30-12 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild - -* Fri Apr 12 2024 Mamoru TASAKA - 3.10.30-11 -- SPDX migration - -* Sat Jan 27 2024 Fedora Release Engineering - 3.10.30-10 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Sat Jul 22 2023 Mamoru TASAKA - 3.10.30-9 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild - -* Tue Apr 11 2023 Florian Weimer - 3.10.30-8 -- Port to C99 - -* Tue Jan 24 2023 Mamoru TASAKA - 3.10.30-7 -- Rebuild for ghostscript 10 - -* Sat Jan 21 2023 Fedora Release Engineering - 3.10.30-6 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild - -* Sat Jul 23 2022 Fedora Release Engineering - 3.10.30-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild - -* Sat Jan 22 2022 Fedora Release Engineering - 3.10.30-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild - * Fri Jul 23 2021 Fedora Release Engineering - 3.10.30-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild