Hello community, here is the log from the commit of package inkscape for openSUSE:Factory checked in at 2020-06-02 14:33:54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/inkscape (Old) and /work/SRC/openSUSE:Factory/.inkscape.new.3606 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "inkscape" Tue Jun 2 14:33:54 2020 rev:106 rq:800981 version:1.0 Changes: -------- --- /work/SRC/openSUSE:Factory/inkscape/inkscape.changes 2020-04-19 21:49:59.052142695 +0200 +++ /work/SRC/openSUSE:Factory/.inkscape.new.3606/inkscape.changes 2020-06-02 14:34:08.526667753 +0200 @@ -1,0 +2,39 @@ +Thu May 7 08:30:50 UTC 2020 - [email protected] + +- Fix inkscape-split-extensions-extra.py for older python versions. + +------------------------------------------------------------------- +Tue May 4 15:29:43 UTC 2020 - Alexei Sorokin <[email protected]> + +- Update to version 1.0: + * See https://inkscape.org/release/inkscape-1.0/ +- Re-enable ImageMagick support. +- Replace inkscape-split-extensions-extra.sh with + inkscape-split-extensions-extra.py, adapting for 1.0. +- Add python3-numpy and python3-scour to the list of extra + dependencies as only extra extensions need them. +- Stop altering Name and GenericName from the .desktop file: + original values are fine. +- Remove + 0001-Run-python-script-for-translations-with-Python-3.patch: + merged upstream. +- Remove build_internal_libraries_as_static.patch: merged upstream. +- Remove f5e0ea893f34_extensions_python3_compatibility.patch: + merged upstream. +- Remove fix_install_targets.patch: fixed upstream. +- Remove inkscape-fix-for-poppler-0.76.patch: merged upstream. +- Remove inkscape-fix-for-poppler-0.82.patch: merged upstream. +- Remove inkscape-fix-for-poppler-0.83.patch: merged upstream. +- Remove inkscape-packages.patch: no longer needed. +- Remove mr_568_extensions_python3_compatibility.patch: merged + upstream. +- Remove mr_582_extensions_python3_compatibility.patch: merged + upstream. +- Remove obsolete hacks from the spec file and add new ones. +- Remove the inkscape-extensions-dia and + inkscape-extensions-skencil packages: the extensions were + removed upstream. +- Drop the python2 bcond, no practical use without skencil. +- Drop openSUSE versions prior to Leap 15.x. + +------------------------------------------------------------------- Old: ---- 0001-Run-python-script-for-translations-with-Python-3.patch _service _servicedata build_internal_libraries_as_static.patch f5e0ea893f34_extensions_python3_compatibility.patch fix_install_targets.patch inkscape-0.92.4.tar.bz2 inkscape-fix-for-poppler-0.76.patch inkscape-fix-for-poppler-0.82.patch inkscape-fix-for-poppler-0.83.patch inkscape-packages.patch inkscape-split-extensions-extra.sh mr_568_extensions_python3_compatibility.patch mr_582_extensions_python3_compatibility.patch New: ---- inkscape-1.0.tar.xz inkscape-split-extensions-extra.py ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ inkscape.spec ++++++ --- /var/tmp/diff_new_pack.B1cDTP/_old 2020-06-02 14:34:10.142672866 +0200 +++ /var/tmp/diff_new_pack.B1cDTP/_new 2020-06-02 14:34:10.146672879 +0200 @@ -16,98 +16,70 @@ # -%bcond_without python2 +%define _version 1.0_2020-05-01_4035a4fb49 Name: inkscape -Version: 0.92.4 +Version: 1.0 Release: 0 Summary: Vector Illustration Program License: GPL-3.0-only -Group: Productivity/Graphics/Vector Editors URL: https://inkscape.org/ -#Source: https://media.inkscape.org/dl/resources/file/%%{name}-%%{version}.tar.bz2 -Source: %{name}-%{version}.tar.bz2 - +Source: https://media.inkscape.org/dl/resources/file/%{name}-%{version}.tar.xz # openSUSE palette file Source1: openSUSE.gpl -Source2: inkscape-split-extensions-extra.sh -# PATCH-FIX-OPENSUSE inkscape-packages.patch [email protected] -- Suggest packages instead of compilation from source. -Patch0: inkscape-packages.patch -# PATCH-FIX-OPENSUSE build_internal_libraries_as_static.patch -- Avoid problems with dynamic library default from %%cmake macro -Patch1: build_internal_libraries_as_static.patch -# PATCH-FIX-OPENSUSE fix_install_targets.patch -- use correct libdir etc. -Patch2: fix_install_targets.patch -# PATCH-FIX-UPSTREAM inkscape-fix-for-poppler-0.76.patch -- Fix build with poppler 0.76 -Patch3: inkscape-fix-for-poppler-0.76.patch -# PATCH-FIX-OPENSUSE -- run i18n string extraction with python3 -Patch4: 0001-Run-python-script-for-translations-with-Python-3.patch -# PATCH-FIX-UPSTREAM https://gitlab.com/inkscape/inkscape/merge_requests/568.patch -- fixed in 0.92.5 -Patch5: mr_568_extensions_python3_compatibility.patch -# PATCH-FIX-UPSTREAM https://gitlab.com/inkscape/inkscape/commit/f5e0ea893f34c91f25d4781b37ee6eff15a7e213 -Patch6: f5e0ea893f34_extensions_python3_compatibility.patch -# PATCH-FIX-UPSTREAM https://gitlab.com/inkscape/inkscape/merge_requests/582.patch -- fixed in 0.92.5 -Patch7: mr_582_extensions_python3_compatibility.patch -# PATCH-FIX-UPSTREAM inkscape-fix-for-poppler-0.82.patch -- Fix build poppler 0.82 -Patch8: inkscape-fix-for-poppler-0.82.patch -# PATCH-FIX-UPSTREAM inkscape-fix-for-poppler-0.83.patch -- Fix build poppler 0.83 -Patch9: inkscape-fix-for-poppler-0.83.patch - -BuildRequires: gtkspell-devel -%if 0%{?suse_version} > 1325 -BuildRequires: libboost_headers-devel -%else -BuildRequires: boost-devel -%endif +Source2: inkscape-split-extensions-extra.py BuildRequires: cmake +BuildRequires: double-conversion-devel BuildRequires: fdupes BuildRequires: gc-devel BuildRequires: gcc-c++ -BuildRequires: gsl-devel -BuildRequires: gtkmm24-devel BuildRequires: intltool -# Disabling IM until inkscape upstream supports IM7 -#BuildRequires: libMagick++-devel +BuildRequires: libboost_headers-devel BuildRequires: liblcms2-devel BuildRequires: libpoppler-glib-devel BuildRequires: libtool BuildRequires: libxslt-devel BuildRequires: perl +BuildRequires: pkgconfig BuildRequires: popt-devel BuildRequires: potrace-devel BuildRequires: python3-devel BuildRequires: python3-gobject-devel BuildRequires: python3-xml BuildRequires: update-desktop-files -BuildRequires: pkgconfig(dbus-glib-1) -BuildRequires: pkgconfig(libcdr-0.1) +BuildRequires: pkgconfig(Magick++) +BuildRequires: pkgconfig(gdl-3.0) +BuildRequires: pkgconfig(gsl) +BuildRequires: pkgconfig(gtkmm-3.0) +BuildRequires: pkgconfig(gtkspell3-3.0) BuildRequires: pkgconfig(libexif) BuildRequires: pkgconfig(libjpeg) BuildRequires: pkgconfig(libpng) BuildRequires: pkgconfig(librevenge-0.0) +BuildRequires: pkgconfig(libsoup-2.4) BuildRequires: pkgconfig(libvisio-0.1) BuildRequires: pkgconfig(libwpg-0.3) Requires: python3-gobject -Recommends: %{name}-lang Recommends: python3-lxml +Recommends: python3-numpy Recommends: python3-scour +Recommends: python3-xml +Obsoletes: %{name}-extensions-dia < %{version} +Obsoletes: %{name}-extensions-skencil < %{version} %description Inkscape is a vector graphics editor. %package extensions-extra Summary: Additional extensions for Inkscape -Group: Productivity/Graphics/Vector Editors Requires: %{name} = %{version} -# ps2pdf-ext.py is a wrapper around ps2pdf, which lives in ghostscript package. +# ps_input.py is a wrapper around ps2pdf, which lives in ghostscript package. Requires: ghostscript Requires: python3-lxml +Requires: python3-numpy +Requires: python3-scour Requires: python3-xml -# for cdr and wmf modules -Recommends: yudit -# dxf_output.inx, eqtexsvg.inx: -Requires: pstoedit Enhances: %{name} -# python3-xml is already likely installed, so the big dependency is python3-lxml. Hence this supplements. -Supplements: packageand(%{name}:python3-lxml) +Supplements: (%{name} and python3-lxml and python3-numpy and python3-scour and python3-xml) %description extensions-extra Extra extensions for Inkscape. Recommended for everybody who wants to @@ -115,26 +87,13 @@ Inkscape is a vector graphics editor. -%package extensions-dia -Summary: Dia import extension for Inkscape -Group: Productivity/Graphics/Vector Editors -Requires: %{name} = %{version} -Requires: dia -Enhances: %{name} -Supplements: packageand(%{name}:dia) - -%description extensions-dia -Dia import extension for Inkscape. - -Inkscape is a vector graphics editor. - %package extensions-fig Summary: Fig import extensions for Inkscape -Group: Productivity/Graphics/Vector Editors Requires: %{name} = %{version} +Requires: %{name}-extensions-extra = %{version} Requires: transfig Enhances: %{name} -Supplements: packageand(%{name}:transfig) +Supplements: (%{name} and transfig) %description extensions-fig Fig family (XFig, Figurine, JFig, WinFig,...) import extension for @@ -144,124 +103,74 @@ %package extensions-gimp Summary: GIMP extensions for Inkscape -Group: Productivity/Graphics/Vector Editors Requires: %{name} = %{version} Requires: %{name}-extensions-extra = %{version} Requires: gimp Enhances: %{name} -Supplements: packageand(%{name}:gimp) +Supplements: (%{name} and gimp) %description extensions-gimp The GIMP import and export extensions for Inkscape. Inkscape is a vector graphics editor. -%package extensions-skencil -Summary: Skencil import extension for Inkscape -Group: Productivity/Graphics/Vector Editors -Requires: %{name} = %{version} -Requires: skencil -Enhances: %{name} -Supplements: packageand(%{name}:skencil) - -%description extensions-skencil -Skencil import extension for Inkscape. - -Inkscape is a vector graphics editor. - %lang_package %prep -%autosetup -p1 +%setup -q -n %{name}-%{_version} %build %define _lto_cflags %{nil} %ifarch %{arm} export LDFLAGS+="-Wl,--no-keep-memory -Wl,--reduce-memory-overheads" %endif -%cmake -%{make_jobs} - -# Unmangle XML and merge translations -# Currently missing from CMake build (https://bugs.launchpad.net/inkscape/+bug/1710337) -(cd .. -sed -ie 's:<_:<:g; s:</_:</:g' inkscape.appdata.xml.in -# msgfmt --xml ... is available since 0.19.7 -%if 0%{?suse_version} >= 1500 -msgfmt --xml -d ./po/ --template inkscape.appdata.xml.in -o inkscape.appdata.xml -%else -cp inkscape.appdata.xml.in inkscape.appdata.xml -%endif -) +%cmake \ + -DINKSCAPE_INSTALL_LIBDIR=%{_libdir} \ + -DWITH_MANPAGE_COMPRESSION=OFF +%cmake_build %install %cmake_install -rm -rf %{buildroot}%{_datadir}/locale/en_US@piglatin -rm -rf %{buildroot}%{_datadir}/inkscape/filters/filters.svg.h -rm -rf %{buildroot}%{_datadir}/inkscape/patterns/patterns.svg.h - -# its not really an extension (missing .inx), but a standalone script -# avoid perl dependency, same can be achieved with 'cat foo.svg | extensions/embedimage.py' -rm -rf %{buildroot}%{_datadir}/inkscape/extensions/embed_raster_in_svg.pl -# only useful for translators -rm -rf %{buildroot}%{_datadir}/inkscape/extensions/genpofiles.sh -# ruby port of simplepath.py, which is not used anywhere -rm -rf %{buildroot}%{_datadir}/inkscape/extensions/simplepath.rb -# only required on Windows -rm -rf %{buildroot}%{_datadir}/inkscape/extensions/print_win32_vector.* -# packaging/distribution info -rm -rf %{buildroot}%{_datadir}/inkscape/extensions/README - -install -D -m 0644 %{SOURCE1} %{buildroot}%{_datadir}/inkscape/palettes +# Only useful for translators. +rm %{buildroot}%{_datadir}/inkscape/extensions/genpofiles.sh +# Only required on Windows. +rm %{buildroot}%{_datadir}/inkscape/extensions/print_win32_vector.* +# Packaging/distribution info. +rm %{buildroot}%{_datadir}/inkscape/extensions/{LICENSE.txt,MANIFEST.in,README.md,STYLEGUIDE.md} +# Test framework. +rm %{buildroot}%{_datadir}/inkscape/extensions/setup.{cfg,py} \ + %{buildroot}%{_datadir}/inkscape/extensions/tox.ini \ + %{buildroot}%{_datadir}/inkscape/extensions/.pylintrc \ + %{buildroot}%{_datadir}/inkscape/extensions/doxygen-main.dox -%suse_update_desktop_file -N "Inkscape" -G "SVG Vector Illustrator" inkscape +install -Dpm 0644 %{SOURCE1} %{buildroot}%{_datadir}/inkscape/palettes/ %find_lang %{name} %{?no_lang_C} -%if !%{with python2} -# remove skencil extension as we need sk1 that is py2 only -rm -rf %{buildroot}%{_datadir}/inkscape/extensions/sk* -%endif - -# split extensions -bash %{SOURCE2} %{buildroot}%{_datadir}/inkscape/extensions "%%{_datadir}/inkscape/extensions/" +sed -i -e "1 s|#! *%{_bindir}/env python|#!%{_bindir}/python3|" %{buildroot}%{_datadir}/inkscape/extensions/*.py -sed -i -e "1 s,#! */usr/bin/env python,#!/usr/bin/python3," %{buildroot}%{_datadir}/inkscape/extensions/*.py - -# Localized man pages, correct install path -for man in %{buildroot}%{_mandir}/man1/inkscape.*.1; do - LOCALE=`echo $man | sed "s:.*%{_mandir}/man1/.*\.\([a-zA-Z_]\+\)\.1:\1:g"` - mkdir -m755 -p %{buildroot}%{_mandir}/$LOCALE/man1 - mv $man %{buildroot}%{_mandir}/$LOCALE/man1/%{name}.1 - echo "%%lang($LOCALE) %%dir %%{_mandir}/$LOCALE" >> %{name}.man-lang.tmp - echo "%%lang($LOCALE) %%dir %%{_mandir}/$LOCALE/man1" >> %{name}.man-lang.tmp - echo "%%lang($LOCALE) %%doc %%{_mandir}/$LOCALE/man1/inkscape.1*" >> %{name}.man-lang.tmp -done -sort -u %{name}.man-lang.tmp > %{name}.man-lang -rm %{name}.man-lang.tmp - -# Install appdata -install -D -m 0644 inkscape.appdata.xml %{buildroot}%{_datadir}/metainfo/inkscape.appdata.xml +# Split extensions. +python3 %{SOURCE2} %{buildroot}%{_datadir}/inkscape/extensions "%%{_datadir}/inkscape/extensions/" %fdupes %{buildroot} -# We can't really move the localized manpages to the lang package, since they'd -# create a conflict between the lang subpackage and bundles +%post -n %{name} -p /sbin/ldconfig -%files -f inkscape.lst -f %{name}.man-lang +%postun -n %{name} -p /sbin/ldconfig + +%files -f inkscape.lst %{_bindir}/* -%{_libdir}/libinkscape_base.so -%{_datadir}/applications/inkscape.desktop -%{_datadir}/icons/hicolor/*/apps/inkscape.png -%dir %{_datadir}/metainfo -%{_datadir}/metainfo/inkscape.appdata.xml -%dir %{_datadir}/inkscape -%{_datadir}/inkscape/[cf-z]* -%{_datadir}/inkscape/examples -%dir %{_datadir}/inkscape/extensions -%dir %{_datadir}/inkscape/extensions/ink2canvas -%{_datadir}/inkscape/extensions/xaml2svg +%{_libdir}/lib%{name}_base.so +%{_datadir}/applications/*Inkscape.desktop +%{_datadir}/icons/hicolor/*/apps/*Inkscape.png +%{_datadir}/metainfo/*Inkscape.appdata.xml +%dir %{_datadir}/inkscape/ +%{_datadir}/inkscape/[cdf-z]* +%{_datadir}/inkscape/examples/ +%dir %{_datadir}/inkscape/extensions/ +%{_datadir}/inkscape/extensions/svg_fonts/ +%{_datadir}/inkscape/extensions/xaml2svg/ %{_datadir}/inkscape/extensions/*.xsl* %{_datadir}/inkscape/extensions/colors.xml %{_datadir}/inkscape/extensions/Poly3DObjects/ @@ -272,46 +181,23 @@ %{_datadir}/inkscape/extensions/jessyInk_core_mouseHandler_zoomControl.js %{_datadir}/inkscape/extensions/jessyInk_video.svg %{_datadir}/inkscape/extensions/fontfix.conf -%{_datadir}/inkscape/extensions/ink2canvas/* %{_datadir}/inkscape/extensions/inkscape.extension.rng %{_datadir}/inkscape/extensions/seamless_pattern.svg %{_datadir}/inkscape/attributes/ %{_datadir}/inkscape/branding/ -%doc %{_mandir}/man?/*.* +%{_mandir}/man1/*.1%{?ext_man} +# We can't really move the localized manpages to the lang package, since they'd +# create a conflict between the lang subpackage and bundles +%dir %{_mandir}/hr/ +%dir %{_mandir}/hr/man1/ +%{_mandir}/*/man1/*.1%{?ext_man} # exclude extensions that go in other packages: -%exclude %{_datadir}/inkscape/extensions/Barcode -%exclude %{_datadir}/inkscape/extensions/ps2pdf-ext.py -%exclude %{_datadir}/inkscape/extensions/ps_input.inx -%exclude %{_datadir}/inkscape/extensions/eps_input.inx -%exclude %{_datadir}/inkscape/extensions/cdr* -%exclude %{_datadir}/inkscape/extensions/wmf* -%exclude %{_datadir}/inkscape/extensions/dia* %exclude %{_datadir}/inkscape/extensions/fig* %exclude %{_datadir}/inkscape/extensions/*gimp* -%if %{with python2} -%exclude %{_datadir}/inkscape/extensions/sk* -%endif %exclude %{_datadir}/inkscape/extensions/*dxf* -# this one is in extras, manually added there due to large dependencies on ghostscript -%exclude %{_datadir}/inkscape/extensions/ps2pdf-ext.py %files extensions-extra -f inkscape-extensions-extra.lst -%{_datadir}/inkscape/extensions/Barcode -# ps2pdf-ext is a wrapper around ps2pdf binary (part of ghostscript) -%{_datadir}/inkscape/extensions/ps_input.inx -%{_datadir}/inkscape/extensions/eps_input.inx -%{_datadir}/inkscape/extensions/ps2pdf-ext.py -# ps2dxf is a wrapper around pstoedit -%{_datadir}/inkscape/extensions/dxf_output.inx -%{_datadir}/inkscape/extensions/ps2dxf.sh -# This extensions seems erronous being copied in here too. -%exclude %{_datadir}/inkscape/extensions/*gimp* -%if %{with python2} -%exclude %{_datadir}/inkscape/extensions/sk* -%endif - -%files extensions-dia -%{_datadir}/inkscape/extensions/dia* +%{_datadir}/inkscape/extensions/output_scour.svg %files extensions-fig %{_datadir}/inkscape/extensions/fig* @@ -320,11 +206,6 @@ # NOTE: export_gimp_palette* does not depend on gimp, but belongs here logically: %{_datadir}/inkscape/extensions/*gimp* -%if %{with python2} -%files extensions-skencil -%{_datadir}/inkscape/extensions/sk* -%endif - %files lang -f %{name}.lang %changelog ++++++ inkscape-split-extensions-extra.py ++++++ #!/usr/bin/env python3 # List all files, that depend on base_extra_modules, explicitly or implicitly. import os import pathlib import re import sys # Search all .py files that are imported by mentioned modules. def make_deplist(inx_list, module_list): modules = set() inx_regex = re.compile(rf">(.+)\.py</(dependency|command)>") for entry in inx_list: with open(os.path.join(".", entry), encoding="utf-8") as file: for line in file: match = inx_regex.search(line) if (match and match.group(1) and match.group(1) not in module_list): modules.add(match.group(1)) for module in module_list.union(modules): name = os.path.join(".", f"{module}.py") if os.path.isfile(name): with open(name, encoding="utf-8") as file: for line in file: match = re.match(r"from (.+) import", line) if not match: match = re.match(r"import ([^#]+).*? *", line) if match and match.group(1): needle = re.sub(r"as .+", "", match.group(1)).strip() if (needle not in module_list.union(modules) and os.path.isfile(f"{needle}.py")): modules.add(needle) return modules if __name__ == "__main__": work_dir = pathlib.Path(os.getcwd()) os.chdir(sys.argv[1]) prefix = sys.argv[2] base_extra_modules = set(["lxml", "numpy", "scour", "xml"]) extra_modules = set() prev_modules = base_extra_modules while True: prev_module_regex = rf"({'|'.join(map(re.escape, prev_modules))})" import_regex = re.compile(rf"(import|from).* {prev_module_regex}") next_modules = set() # Search all .py files importing one of the mentioned modules. for entry in pathlib.Path(".").glob("**/*.py"): with entry.open(encoding="utf-8") as file: for line in file: if import_regex.search(line): name = str(entry.as_posix()) module = name.split(os.sep, 1)[0] if module.endswith(".py"): module = entry.stem if module not in next_modules: next_modules.add(module) prev_modules = next_modules if extra_modules.issuperset(prev_modules): break extra_modules.update(prev_modules) std_inx = set() extra_inx = set() # We have a complete list of .py files dependent on base_extra_modules. # Now we need a list of .inx module descriptors. inx_regex = re.compile(rf'({"|".join(map(re.escape, extra_modules))})\.py') for entry in pathlib.Path(".").iterdir(): if entry.is_file() and entry.suffix == ".inx": with entry.open(encoding="utf-8") as file: for line in file: if inx_regex.search(line): extra_inx.add(entry.name) # inx files that do not belong in extra_inx. if entry.name not in extra_inx: std_inx.add(entry.name) # Now create list of .py files that should belong in the std package. std_modules = make_deplist(std_inx, set()) # Now create list of .py files that are required by extra modules # (If no std module needs it, then they will belong in the extra package). extradep_modules = make_deplist(extra_inx, extra_modules) # And now verify everything and generate final list. exclusion_regex = re.compile(r"^(cdr|fig|.*gimp)") std_list = work_dir / "inkscape.lst" extra_list = work_dir / "inkscape-extensions-extra.lst" with std_list.open("w", encoding="utf-8") as file: for inx in std_inx: if not exclusion_regex.match(inx): print(f"{prefix}{inx}", file=file) with extra_list.open("w", encoding="utf-8") as file: for inx in extra_inx: if not exclusion_regex.match(inx): print(f"{prefix}{inx}", file=file) with std_list.open("a", encoding="utf-8") as std_file, extra_list.open("a", encoding="utf-8") as extra_file: for entry in pathlib.Path(".").iterdir(): if entry.is_file() and entry.suffix == ".py": name = str(entry.as_posix()) if exclusion_regex.match(name): pass elif entry.is_file() and entry.stem in extra_modules: print(f"{prefix}{entry.name}", file=extra_file) elif entry.is_file() and entry.stem in std_modules: print(f"{prefix}{entry.name}", file=std_file) elif entry.is_file() and entry.stem in extradep_modules: print(f"{prefix}{entry.name}", file=extra_file) else: print(f"ERROR: Undecided file {name}", file=sys.stderr) elif entry.is_dir(): if entry.name in extra_modules: print(f"{prefix}{entry.name}/", file=extra_file) elif entry.name in std_modules: print(f"{prefix}{entry.name}/", file=std_file) elif entry.name in extradep_modules: print(f"{prefix}{entry.name}/", file=extra_file)
