openSUSE Commits
Threads by month
- ----- 2025 -----
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
May 2021
- 1 participants
- 2473 discussions
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-agate-lookup for openSUSE:Factory checked in at 2021-05-21 21:50:19
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-agate-lookup (Old)
and /work/SRC/openSUSE:Factory/.python-agate-lookup.new.2988 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-agate-lookup"
Fri May 21 21:50:19 2021 rev:2 rq:894791 version:0.3.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-agate-lookup/python-agate-lookup.changes 2018-05-29 16:47:54.781448451 +0200
+++ /work/SRC/openSUSE:Factory/.python-agate-lookup.new.2988/python-agate-lookup.changes 2021-05-21 21:50:33.402099111 +0200
@@ -1,0 +2,8 @@
+Fri May 21 08:34:07 UTC 2021 - pgajdos(a)suse.com
+
+- emphasize that tests are online only
+- use github tarball
+- deleted sources
+ - COPYING (not needed)
+
+-------------------------------------------------------------------
Old:
----
COPYING
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-agate-lookup.spec ++++++
--- /var/tmp/diff_new_pack.SDsVAr/_old 2021-05-21 21:50:33.814097405 +0200
+++ /var/tmp/diff_new_pack.SDsVAr/_new 2021-05-21 21:50:33.818097388 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-agate-lookup
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2021 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -12,7 +12,8 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
+#
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
@@ -22,19 +23,19 @@
Release: 0
License: MIT
Summary: Remote lookup tables for agate
-Url: http://agate-lookup.readthedocs.org/
+URL: http://agate-lookup.readthedocs.org/
Group: Development/Languages/Python
-Source: https://files.pythonhosted.org/packages/source/a/agate-lookup/agate-lookup-…
-Source10: https://raw.githubusercontent.com/wireservice/agate-lookup/%{version}/COPYI…
+Source: https://github.com/wireservice/agate-lookup/archive/refs/tags/%{version}.ta…
BuildRequires: %{python_module devel}
BuildRequires: %{python_module setuptools}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
-%if %{with test}
+# SECTION test requirements
BuildRequires: %{python_module agate >= 1.5.0}
BuildRequires: %{python_module PyYAML >= 3.11}
+BuildRequires: %{python_module pytest}
BuildRequires: %{python_module requests >= 2.9.1}
-%endif
+# /SECTION
Requires: python-agate >= 1.5.0
Requires: python-PyYAML >= 3.11
Requires: python-requests >= 2.9.1
@@ -47,7 +48,6 @@
%prep
%setup -q -n agate-lookup-%{version}
-cp %{SOURCE10} .
sed -i -e '/^#!\//, 1d' agatelookup/*.py
%build
@@ -57,10 +57,9 @@
%python_install
%python_expand %fdupes %{buildroot}%{$python_sitelib}
-%if %{with test}
%check
-%python_exec setup.py test
-%endif
+# online tests
+#%%pytest
%files %{python_files}
%defattr(-,root,root,-)
++++++ agate-lookup-0.3.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/agate-lookup-0.3.1/.gitignore new/agate-lookup-0.3.1/.gitignore
--- old/agate-lookup-0.3.1/.gitignore 1970-01-01 01:00:00.000000000 +0100
+++ new/agate-lookup-0.3.1/.gitignore 2016-12-19 23:10:55.000000000 +0100
@@ -0,0 +1,12 @@
+.DS_Store
+*.pyc
+*.swp
+*.swo
+.tox
+*.egg-info
+docs/_build
+dist
+.coverage
+build
+.proof
+.test.png
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/agate-lookup-0.3.1/.travis.yml new/agate-lookup-0.3.1/.travis.yml
--- old/agate-lookup-0.3.1/.travis.yml 1970-01-01 01:00:00.000000000 +0100
+++ new/agate-lookup-0.3.1/.travis.yml 2016-12-19 23:10:55.000000000 +0100
@@ -0,0 +1,12 @@
+language: python
+python:
+ - "2.7"
+ - "3.3"
+ - "3.4"
+ - "3.5"
+# command to install dependencies
+install:
+ - if [[ $TRAVIS_PYTHON_VERSION == 3* ]]; then pip install -r requirements-py3.txt; else pip install -r requirements-py2.txt; fi
+# command to run tests
+script: nosetests tests
+sudo: false
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/agate-lookup-0.3.1/AUTHORS.rst new/agate-lookup-0.3.1/AUTHORS.rst
--- old/agate-lookup-0.3.1/AUTHORS.rst 1970-01-01 01:00:00.000000000 +0100
+++ new/agate-lookup-0.3.1/AUTHORS.rst 2016-12-19 23:10:55.000000000 +0100
@@ -0,0 +1,3 @@
+The following individuals have contributed code to agate-lookup:
+
+* `Christopher Groskopf <https://github.com/onyxfish>`_
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/agate-lookup-0.3.1/CHANGELOG.rst new/agate-lookup-0.3.1/CHANGELOG.rst
--- old/agate-lookup-0.3.1/CHANGELOG.rst 1970-01-01 01:00:00.000000000 +0100
+++ new/agate-lookup-0.3.1/CHANGELOG.rst 2016-12-19 23:10:55.000000000 +0100
@@ -0,0 +1,37 @@
+0.3.1 - December 19, 2016
+-------------------------
+
+* Add missing module.
+
+0.3.0 - December 19, 2016
+-------------------------
+
+* Remove monkeypatching pattern.
+* Upgrade required agate to ``1.5.0``.
+
+0.2.1 - March 9, 2016
+---------------------
+
+* Reorganize docs.
+* Add caching to docs.
+* Reversed order of source and table keys in lookup method.
+
+0.2.0 - March 8, 2016
+---------------------
+
+* Update to latest `lookup` metadata format.
+* Implement local caching for offline usage. (#14)
+* Remove options to :class:`Source` for generating custom file paths.
+
+0.1.1 - March 8, 2016
+---------------------
+
+* Added CPI calculation example to docs.
+* Improvements to error handling.
+* Fetched lookup tables now automatically have row names assigned.
+* :meth:`TableLookup.from_table` class method implemented.
+
+0.1.0 - February 28, 2016
+-------------------------
+
+* Initial version.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/agate-lookup-0.3.1/COPYING new/agate-lookup-0.3.1/COPYING
--- old/agate-lookup-0.3.1/COPYING 1970-01-01 01:00:00.000000000 +0100
+++ new/agate-lookup-0.3.1/COPYING 2016-12-19 23:10:55.000000000 +0100
@@ -0,0 +1,21 @@
+The MIT License
+
+Copyright (c) 2016 Christopher Groskopf and contributors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/agate-lookup-0.3.1/PKG-INFO new/agate-lookup-0.3.1/PKG-INFO
--- old/agate-lookup-0.3.1/PKG-INFO 2016-12-19 23:11:30.000000000 +0100
+++ new/agate-lookup-0.3.1/PKG-INFO 1970-01-01 01:00:00.000000000 +0100
@@ -1,55 +0,0 @@
-Metadata-Version: 1.1
-Name: agate-lookup
-Version: 0.3.1
-Summary: agate-lookup adds remote lookup tables to agate.
-Home-page: http://agate-lookup.readthedocs.org/
-Author: Christopher Groskopf
-Author-email: chrisgroskopf(a)gmail.com
-License: MIT
-Description: .. image:: https://travis-ci.org/wireservice/agate-lookup.png
- :target: https://travis-ci.org/wireservice/agate-lookup
- :alt: Build status
-
- .. image:: https://img.shields.io/pypi/dw/agate-lookup.svg
- :target: https://pypi.python.org/pypi/agate-lookup
- :alt: PyPI downloads
-
- .. image:: https://img.shields.io/pypi/v/agate-lookup.svg
- :target: https://pypi.python.org/pypi/agate-lookup
- :alt: Version
-
- .. image:: https://img.shields.io/pypi/l/agate-lookup.svg
- :target: https://pypi.python.org/pypi/agate-lookup
- :alt: License
-
- .. image:: https://img.shields.io/pypi/pyversions/agate-lookup.svg
- :target: https://pypi.python.org/pypi/agate-lookup
- :alt: Support Python versions
-
- agate-lookup adds one-line access to `lookup <https://github.com/wireservice/lookup>`_ tables to `agate <https://github.com/wireservice/agate>`_.
-
- Important links:
-
- * agate http://agate.rtfd.org
- * Documentation: http://agate-lookup.rtfd.org
- * Repository: https://github.com/wireservice/agate-lookup
- * Issues: https://github.com/wireservice/agate-lookup/issues
-
-Platform: UNKNOWN
-Classifier: Development Status :: 4 - Beta
-Classifier: Intended Audience :: Developers
-Classifier: Intended Audience :: Science/Research
-Classifier: License :: OSI Approved :: MIT License
-Classifier: Natural Language :: English
-Classifier: Operating System :: OS Independent
-Classifier: Programming Language :: Python
-Classifier: Programming Language :: Python :: 2.7
-Classifier: Programming Language :: Python :: 3.3
-Classifier: Programming Language :: Python :: 3.4
-Classifier: Programming Language :: Python :: 3.5
-Classifier: Programming Language :: Python :: Implementation :: CPython
-Classifier: Programming Language :: Python :: Implementation :: PyPy
-Classifier: Topic :: Multimedia :: Graphics
-Classifier: Topic :: Scientific/Engineering :: Information Analysis
-Classifier: Topic :: Scientific/Engineering :: Visualization
-Classifier: Topic :: Software Development :: Libraries :: Python Modules
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/agate-lookup-0.3.1/agate_lookup.egg-info/PKG-INFO new/agate-lookup-0.3.1/agate_lookup.egg-info/PKG-INFO
--- old/agate-lookup-0.3.1/agate_lookup.egg-info/PKG-INFO 2016-12-19 23:11:30.000000000 +0100
+++ new/agate-lookup-0.3.1/agate_lookup.egg-info/PKG-INFO 1970-01-01 01:00:00.000000000 +0100
@@ -1,55 +0,0 @@
-Metadata-Version: 1.1
-Name: agate-lookup
-Version: 0.3.1
-Summary: agate-lookup adds remote lookup tables to agate.
-Home-page: http://agate-lookup.readthedocs.org/
-Author: Christopher Groskopf
-Author-email: chrisgroskopf(a)gmail.com
-License: MIT
-Description: .. image:: https://travis-ci.org/wireservice/agate-lookup.png
- :target: https://travis-ci.org/wireservice/agate-lookup
- :alt: Build status
-
- .. image:: https://img.shields.io/pypi/dw/agate-lookup.svg
- :target: https://pypi.python.org/pypi/agate-lookup
- :alt: PyPI downloads
-
- .. image:: https://img.shields.io/pypi/v/agate-lookup.svg
- :target: https://pypi.python.org/pypi/agate-lookup
- :alt: Version
-
- .. image:: https://img.shields.io/pypi/l/agate-lookup.svg
- :target: https://pypi.python.org/pypi/agate-lookup
- :alt: License
-
- .. image:: https://img.shields.io/pypi/pyversions/agate-lookup.svg
- :target: https://pypi.python.org/pypi/agate-lookup
- :alt: Support Python versions
-
- agate-lookup adds one-line access to `lookup <https://github.com/wireservice/lookup>`_ tables to `agate <https://github.com/wireservice/agate>`_.
-
- Important links:
-
- * agate http://agate.rtfd.org
- * Documentation: http://agate-lookup.rtfd.org
- * Repository: https://github.com/wireservice/agate-lookup
- * Issues: https://github.com/wireservice/agate-lookup/issues
-
-Platform: UNKNOWN
-Classifier: Development Status :: 4 - Beta
-Classifier: Intended Audience :: Developers
-Classifier: Intended Audience :: Science/Research
-Classifier: License :: OSI Approved :: MIT License
-Classifier: Natural Language :: English
-Classifier: Operating System :: OS Independent
-Classifier: Programming Language :: Python
-Classifier: Programming Language :: Python :: 2.7
-Classifier: Programming Language :: Python :: 3.3
-Classifier: Programming Language :: Python :: 3.4
-Classifier: Programming Language :: Python :: 3.5
-Classifier: Programming Language :: Python :: Implementation :: CPython
-Classifier: Programming Language :: Python :: Implementation :: PyPy
-Classifier: Topic :: Multimedia :: Graphics
-Classifier: Topic :: Scientific/Engineering :: Information Analysis
-Classifier: Topic :: Scientific/Engineering :: Visualization
-Classifier: Topic :: Software Development :: Libraries :: Python Modules
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/agate-lookup-0.3.1/agate_lookup.egg-info/SOURCES.txt new/agate-lookup-0.3.1/agate_lookup.egg-info/SOURCES.txt
--- old/agate-lookup-0.3.1/agate_lookup.egg-info/SOURCES.txt 2016-12-19 23:11:30.000000000 +0100
+++ new/agate-lookup-0.3.1/agate_lookup.egg-info/SOURCES.txt 1970-01-01 01:00:00.000000000 +0100
@@ -1,11 +0,0 @@
-README.rst
-setup.cfg
-setup.py
-agate_lookup.egg-info/PKG-INFO
-agate_lookup.egg-info/SOURCES.txt
-agate_lookup.egg-info/dependency_links.txt
-agate_lookup.egg-info/requires.txt
-agate_lookup.egg-info/top_level.txt
-agatelookup/__init__.py
-agatelookup/source.py
-agatelookup/table.py
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/agate-lookup-0.3.1/agate_lookup.egg-info/dependency_links.txt new/agate-lookup-0.3.1/agate_lookup.egg-info/dependency_links.txt
--- old/agate-lookup-0.3.1/agate_lookup.egg-info/dependency_links.txt 2016-12-19 23:11:30.000000000 +0100
+++ new/agate-lookup-0.3.1/agate_lookup.egg-info/dependency_links.txt 1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/agate-lookup-0.3.1/agate_lookup.egg-info/requires.txt new/agate-lookup-0.3.1/agate_lookup.egg-info/requires.txt
--- old/agate-lookup-0.3.1/agate_lookup.egg-info/requires.txt 2016-12-19 23:11:30.000000000 +0100
+++ new/agate-lookup-0.3.1/agate_lookup.egg-info/requires.txt 1970-01-01 01:00:00.000000000 +0100
@@ -1,3 +0,0 @@
-agate>=1.5.0
-requests>=2.9.1
-pyyaml>=3.11
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/agate-lookup-0.3.1/agate_lookup.egg-info/top_level.txt new/agate-lookup-0.3.1/agate_lookup.egg-info/top_level.txt
--- old/agate-lookup-0.3.1/agate_lookup.egg-info/top_level.txt 2016-12-19 23:11:30.000000000 +0100
+++ new/agate-lookup-0.3.1/agate_lookup.egg-info/top_level.txt 1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-agatelookup
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/agate-lookup-0.3.1/docs/Makefile new/agate-lookup-0.3.1/docs/Makefile
--- old/agate-lookup-0.3.1/docs/Makefile 1970-01-01 01:00:00.000000000 +0100
+++ new/agate-lookup-0.3.1/docs/Makefile 2016-12-19 23:10:55.000000000 +0100
@@ -0,0 +1,130 @@
+# Makefile for Sphinx documentation
+#
+
+# You can set these variables from the command line.
+SPHINXOPTS =
+SPHINXBUILD = sphinx-build
+PAPER =
+BUILDDIR = _build
+
+# Internal variables.
+PAPEROPT_a4 = -D latex_paper_size=a4
+PAPEROPT_letter = -D latex_paper_size=letter
+ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
+
+.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest
+
+help:
+ @echo "Please use \`make <target>' where <target> is one of"
+ @echo " html to make standalone HTML files"
+ @echo " dirhtml to make HTML files named index.html in directories"
+ @echo " singlehtml to make a single large HTML file"
+ @echo " pickle to make pickle files"
+ @echo " json to make JSON files"
+ @echo " htmlhelp to make HTML files and a HTML help project"
+ @echo " qthelp to make HTML files and a qthelp project"
+ @echo " devhelp to make HTML files and a Devhelp project"
+ @echo " epub to make an epub"
+ @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
+ @echo " latexpdf to make LaTeX files and run them through pdflatex"
+ @echo " text to make text files"
+ @echo " man to make manual pages"
+ @echo " changes to make an overview of all changed/added/deprecated items"
+ @echo " linkcheck to check all external links for integrity"
+ @echo " doctest to run all doctests embedded in the documentation (if enabled)"
+
+clean:
+ -rm -rf $(BUILDDIR)/*
+
+html:
+ $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
+ @echo
+ @echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
+
+dirhtml:
+ $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
+ @echo
+ @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
+
+singlehtml:
+ $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
+ @echo
+ @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
+
+pickle:
+ $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
+ @echo
+ @echo "Build finished; now you can process the pickle files."
+
+json:
+ $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
+ @echo
+ @echo "Build finished; now you can process the JSON files."
+
+htmlhelp:
+ $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
+ @echo
+ @echo "Build finished; now you can run HTML Help Workshop with the" \
+ ".hhp project file in $(BUILDDIR)/htmlhelp."
+
+qthelp:
+ $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
+ @echo
+ @echo "Build finished; now you can run "qcollectiongenerator" with the" \
+ ".qhcp project file in $(BUILDDIR)/qthelp, like this:"
+ @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/agatelookup.qhcp"
+ @echo "To view the help file:"
+ @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/agatelookup.qhc"
+
+devhelp:
+ $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
+ @echo
+ @echo "Build finished."
+ @echo "To view the help file:"
+ @echo "# mkdir -p $$HOME/.local/share/devhelp/agatelookup"
+ @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/agatelookup"
+ @echo "# devhelp"
+
+epub:
+ $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
+ @echo
+ @echo "Build finished. The epub file is in $(BUILDDIR)/epub."
+
+latex:
+ $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+ @echo
+ @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
+ @echo "Run \`make' in that directory to run these through (pdf)latex" \
+ "(use \`make latexpdf' here to do that automatically)."
+
+latexpdf:
+ $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+ @echo "Running LaTeX files through pdflatex..."
+ make -C $(BUILDDIR)/latex all-pdf
+ @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
+
+text:
+ $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
+ @echo
+ @echo "Build finished. The text files are in $(BUILDDIR)/text."
+
+man:
+ $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
+ @echo
+ @echo "Build finished. The manual pages are in $(BUILDDIR)/man."
+
+changes:
+ $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
+ @echo
+ @echo "The overview file is in $(BUILDDIR)/changes."
+
+linkcheck:
+ $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
+ @echo
+ @echo "Link check complete; look for any errors in the above output " \
+ "or in $(BUILDDIR)/linkcheck/output.txt."
+
+doctest:
+ $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
+ @echo "Testing of doctests in the sources finished, look at the " \
+ "results in $(BUILDDIR)/doctest/output.txt."
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/agate-lookup-0.3.1/docs/conf.py new/agate-lookup-0.3.1/docs/conf.py
--- old/agate-lookup-0.3.1/docs/conf.py 1970-01-01 01:00:00.000000000 +0100
+++ new/agate-lookup-0.3.1/docs/conf.py 2016-12-19 23:10:55.000000000 +0100
@@ -0,0 +1,225 @@
+# -*- coding: utf-8 -*-
+#
+# This file is execfile()d with the current directory set to its containing dir.
+#
+# Note that not all possible configuration values are present in this
+# autogenerated file.
+#
+# All configuration values have a default; values that are commented out
+# serve to show the default.
+
+import os
+import sys
+
+# If extensions (or modules to document with autodoc) are in another directory,
+# add these directories to sys.path here. If the directory is relative to the
+# documentation root, use os.path.abspath to make it absolute, like shown here.
+sys.path.insert(0, os.path.abspath('..'))
+
+# -- General configuration -----------------------------------------------------
+
+# If your documentation needs a minimal Sphinx version, state it here.
+#needs_sphinx = '1.0'
+
+# Add any Sphinx extension module names here, as strings. They can be extensions
+# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
+extensions = ['sphinx.ext.autodoc', 'sphinx.ext.intersphinx']
+autodoc_member_order = 'bysource'
+
+intersphinx_mapping = {
+ 'python': ('http://docs.python.org/3.5/', None),
+ 'agate': ('http://agate.readthedocs.org/en/latest/', None)
+}
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = ['_templates']
+
+# The suffix of source filenames.
+source_suffix = '.rst'
+
+# The encoding of source files.
+#source_encoding = 'utf-8-sig'
+
+# The master toctree document.
+master_doc = 'index'
+
+# General information about the project.
+project = u'agate-lookup'
+copyright = u'2016, Christopher Groskopf'
+
+# The version info for the project you're documenting, acts as replacement for
+# |version| and |release|, also used in various other places throughout the
+# built documents.
+#
+# The short X.Y version.
+version = '0.3.1'
+# The full version, including alpha/beta/rc tags.
+release = '0.3.1'
+
+# The language for content autogenerated by Sphinx. Refer to documentation
+# for a list of supported languages.
+#language = None
+
+# There are two options for replacing |today|: either, you set today to some
+# non-false value, then it is used:
+#today = ''
+# Else, today_fmt is used as the format for a strftime call.
+#today_fmt = '%B %d, %Y'
+
+# List of patterns, relative to source directory, that match files and
+# directories to ignore when looking for source files.
+exclude_patterns = ['_build']
+
+# The reST default role (used for this markup: `text`) to use for all documents.
+#default_role = None
+
+# If true, '()' will be appended to :func: etc. cross-reference text.
+#add_function_parentheses = True
+
+# If true, the current module name will be prepended to all description
+# unit titles (such as .. function::).
+#add_module_names = True
+
+# If true, sectionauthor and moduleauthor directives will be shown in the
+# output. They are ignored by default.
+#show_authors = False
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = 'sphinx'
+
+# A list of ignored prefixes for module index sorting.
+#modindex_common_prefix = []
+
+
+# -- Options for HTML output ---------------------------------------------------
+
+# The theme to use for HTML and HTML Help pages. See the documentation for
+# a list of builtin themes.
+html_theme = 'default'
+
+on_rtd = os.environ.get('READTHEDOCS', None) == 'True'
+
+if not on_rtd: # only import and set the theme if we're building docs locally
+ import sphinx_rtd_theme
+ html_theme = 'sphinx_rtd_theme'
+ html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
+
+# Theme options are theme-specific and customize the look and feel of a theme
+# further. For a list of options available for each theme, see the
+# documentation.
+#html_theme_options = {}
+
+# Add any paths that contain custom themes here, relative to this directory.
+#html_theme_path = []
+
+# The name for this set of Sphinx documents. If None, it defaults to
+# "<project> v<release> documentation".
+#html_title = None
+
+# A shorter title for the navigation bar. Default is the same as html_title.
+#html_short_title = None
+
+# The name of an image file (relative to this directory) to place at the top
+# of the sidebar.
+#html_logo = None
+
+# The name of an image file (within the static path) to use as favicon of the
+# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
+# pixels large.
+#html_favicon = None
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+html_static_path = ['_static']
+
+# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
+# using the given strftime format.
+#html_last_updated_fmt = '%b %d, %Y'
+
+# If true, SmartyPants will be used to convert quotes and dashes to
+# typographically correct entities.
+#html_use_smartypants = True
+
+# Custom sidebar templates, maps document names to template names.
+#html_sidebars = {}
+
+# Additional templates that should be rendered to pages, maps page names to
+# template names.
+#html_additional_pages = {}
+
+# If false, no module index is generated.
+#html_domain_indices = True
+
+# If false, no index is generated.
+#html_use_index = True
+
+# If true, the index is split into individual pages for each letter.
+#html_split_index = False
+
+# If true, links to the reST sources are added to the pages.
+#html_show_sourcelink = True
+
+# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
+#html_show_sphinx = True
+
+# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
+#html_show_copyright = True
+
+# If true, an OpenSearch description file will be output, and all pages will
+# contain a <link> tag referring to it. The value of this option must be the
+# base URL from which the finished HTML is served.
+#html_use_opensearch = ''
+
+# This is the file name suffix for HTML files (e.g. ".xhtml").
+#html_file_suffix = None
+
+# Output file base name for HTML help builder.
+htmlhelp_basename = 'agatelookupdoc'
+
+
+# -- Options for LaTeX output --------------------------------------------------
+
+# The paper size ('letter' or 'a4').
+#latex_paper_size = 'letter'
+
+# The font size ('10pt', '11pt' or '12pt').
+#latex_font_size = '10pt'
+
+# Grouping the document tree into LaTeX files. List of tuples
+# (source start file, target name, title, author, documentclass [howto/manual]).
+latex_documents = [
+ ('index', 'agate-lookup.tex', u'agate-lookup Documentation',
+ u'Christopher Groskopf', 'manual'),
+]
+
+# The name of an image file (relative to this directory) to place at the top of
+# the title page.
+#latex_logo = None
+
+# For "manual" documents, if this is true, then toplevel headings are parts,
+# not chapters.
+#latex_use_parts = False
+
+# If true, show page references after internal links.
+#latex_show_pagerefs = False
+
+# If true, show URL addresses after external links.
+#latex_show_urls = False
+
+# Additional stuff for the LaTeX preamble.
+#latex_preamble = ''
+
+# Documents to append as an appendix to all manuals.
+#latex_appendices = []
+
+# If false, no module index is generated.
+#latex_domain_indices = True
+
+
+# -- Options for manual page output --------------------------------------------
+
+# One entry per manual page. List of tuples
+# (source start file, name, description, authors, manual section).
+man_pages = [
+]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/agate-lookup-0.3.1/docs/index.rst new/agate-lookup-0.3.1/docs/index.rst
--- old/agate-lookup-0.3.1/docs/index.rst 1970-01-01 01:00:00.000000000 +0100
+++ new/agate-lookup-0.3.1/docs/index.rst 2016-12-19 23:10:55.000000000 +0100
@@ -0,0 +1,188 @@
+======================
+agate-lookup |release|
+======================
+
+.. include:: ../README.rst
+
+Install
+=======
+
+To install:
+
+.. code-block:: bash
+
+ pip install agate-lookup
+
+For details on development or supported platforms see the `agate documentation <http://agate.readthedocs.org>`_.
+
+Import
+======
+
+agate-lookup is an agate `extension <http://agate.readthedocs.org/en/latest/extensions.html>`_. To use it, first import it and patch its functionality into agate:
+
+.. code-block:: python
+
+ import agate
+ import agatelookup
+
+Importing agate-lookup adds methods to :class:`agate.Table <agate.table.Table>`.
+
+Basic lookup
+============
+
+agate-lookup allows you to join your tables to data from the `lookup <https://github.com/wireservice/lookup>`_ project. The basic mechanism for doing this is the :meth:`.TableLookup.lookup` method. For example, if you have this table:
+
++---------+------+
+| company | usps |
++=========+======+
+| Walmart | AR |
++---------+------+
+| Exxon | TX |
++---------+------+
+| Chevron | CA |
++---------+------+
+
+You could add the state name to the table by running:
+
+.. code-block:: python
+
+ joined = table.lookup('usps', 'state')
+
+The resulting table would be:
+
++---------+------+------------+
+| company | usps | state |
++=========+======+============+
+| Walmart | AR | Arkansas |
++---------+------+------------+
+| Exxon | TX | Texas |
++---------+------+------------+
+| Chevron | CA | California |
++---------+------+------------+
+
+If your table has different keys from the lookup table, you can specify them using the :code:`table_key` argument. For example, if your table had the column name :code:`postal` then you could achieve the same result by running:
+
+.. code-block:: python
+
+ joined = table.lookup('postal', 'state', lookup_key='usps')
+
+Multi-column lookup
+===================
+
+Some lookup tables have multiple key columns, for example :code:`year` and :code:`month`. To join to a table like this, pass a sequence of column names as the first argument. For example, consider this table:
+
++-------+-------+
+| usps | year |
++=======+=======+
+| AZ | 1985 |
++-------+-------+
+| WY | 2014 |
++-------+-------+
+| SC | 1994 |
++-------+-------+
+
+We can join the population of the state for each year with this code:
+
+.. code-block:: python
+
+ joined = table.lookup(['usps', 'year'], 'population')
+
++-------+------+-------------+
+| usps | year | population |
++=======+======+=============+
+| AZ | 1985 | 3,183,538 |
++-------+------+-------------+
+| WY | 2014 | 584,153 |
++-------+------+-------------+
+| SC | 1994 | 3,705,397 |
++-------+------+-------------+
+
+Versioned lookup
+================
+
+Some lookup tables have several versions. For example, the NAICS business code classification is revised every 5 years. You can also select a particular version of the lookup table using the :code:`version` argument. To join the :code:`2012` edition of the NAICS codes, you would run:
+
+.. code-block:: python
+
+ joined = table.lookup('naics', 'description', version='2012')
+
+Fetch a table without joining
+=============================
+
+You can also fetch a lookup table without joining it. For example, to get the Consumer Price Index by year and month:
+
+.. code-block:: python
+
+ cpi = agate.Table.from_lookup(['year', 'month'], 'cpi')
+
++-------+-------+--------+
+| year | month | cpi |
++=======+=======+========+
+| 1947 | 1 | 21.48 |
++-------+-------+--------+
+| 1947 | 2 | 21.62 |
++-------+-------+--------+
+| 1947 | 3 | 22.00 |
++-------+-------+--------+
+| ... | ... | ... |
++-------+-------+--------+
+
+Lookup tables automatically have :code:`row_names` assigned. In this case the row names are a tuple of :code:`(year, month)`. We can use this to quickly calculate inflation-adjusted prices in another table.
+
+.. code-block:: python
+
+ BASE_CPI = cpi.rows[('2015', '12')]['cpi']
+
+ deflator = lambda r: r['price'] * cpi.rows[(r['year'], r['month'])]['cpi'] / BASE_CPI)
+
+ adjusted = table.compute([
+ ('real_price', agate.Formula(agate.Number(), deflator)
+ ])
+
+The :code:`adjusted` table will now have a :code:`real_price` column with prices in December, 2015 dollars.
+
+Using a custom repository
+=========================
+
+By default, agate-lookup will use the `wireservice/lookup <https://github.com/wireservice/lookup>`_ repository of lookup tables. Look there to see what key/value combinations and versions you can use with lookup.
+
+You can specify your own repository of lookup tables by constructing an instance of :class:`.Source` and passing it into the :meth:`.TableLookup.lookup` method.
+
+Caching
+=======
+
+Lookup tables are cached each time they are downloaded. The default cache location is :code:`~/lookup`. In order to ensure you have the latest version, tables are redownloaded each time that they are used, unless a network connection can not be made. If there is a connection issue, the cached copy will be read from disk.
+
+You can override the default caching location by creating a custom :class:`Source` and passing the :code:`cache` argument.
+
+API
+===
+
+.. autofunction:: agatelookup.table.lookup
+
+.. autofunction:: agatelookup.table.from_lookup
+
+.. autoclass:: agatelookup.source.Source
+ :members:
+
+Authors
+=======
+
+.. include:: ../AUTHORS.rst
+
+Changelog
+=========
+
+.. include:: ../CHANGELOG.rst
+
+License
+=======
+
+.. include:: ../COPYING
+
+Indices and tables
+==================
+
+* :ref:`genindex`
+* :ref:`modindex`
+* :ref:`search`
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/agate-lookup-0.3.1/example.py new/agate-lookup-0.3.1/example.py
--- old/agate-lookup-0.3.1/example.py 1970-01-01 01:00:00.000000000 +0100
+++ new/agate-lookup-0.3.1/example.py 2016-12-19 23:10:55.000000000 +0100
@@ -0,0 +1,50 @@
+#!/usr/bin/env python
+
+import agate
+import agatelookup
+
+# Simple
+table = agate.Table([
+ ('WA',),
+ ('VA',),
+ ('NE',)
+], ['usps'])
+
+joined = table.lookup('usps', 'state')
+
+joined.print_table()
+
+# Versioned
+table = agate.Table([
+ ('1111',),
+ ('313320',),
+ ('522310',)
+], ['naics'], [agate.Text()])
+
+joined = table.lookup('naics', 'description', version='2012')
+
+joined.print_table()
+
+# Multiple keys
+table = agate.Table([
+ ('AZ', '1985'),
+ ('WY', '2014'),
+ ('SC', '1994')
+], ['usps', 'year'], [agate.Text(), agate.Text()])
+
+table.print_table()
+
+joined = table.lookup(['usps', 'year'], 'population')
+
+joined.print_table()
+
+# Multiple keys 2
+table = agate.Table([
+ ('1985', '3'),
+ ('2007', '5'),
+ ('2011', '6')
+], ['year', 'month'], [agate.Text(), agate.Text()])
+
+joined = table.lookup(['year', 'month'], 'cpi')
+
+joined.print_table()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/agate-lookup-0.3.1/examples/usps/state.csv new/agate-lookup-0.3.1/examples/usps/state.csv
--- old/agate-lookup-0.3.1/examples/usps/state.csv 1970-01-01 01:00:00.000000000 +0100
+++ new/agate-lookup-0.3.1/examples/usps/state.csv 2016-12-19 23:10:55.000000000 +0100
@@ -0,0 +1,58 @@
+usps,state
+AL,Alabama
+AK,Alaska
+AZ,Arizona
+AR,Arkansas
+CA,California
+CO,Colorado
+CT,Connecticut
+DE,Delaware
+DC,District of Columbia
+FL,Florida
+GA,Georgia
+HI,Hawaii
+ID,Idaho
+IL,Illinois
+IN,Indiana
+IA,Iowa
+KS,Kansas
+KY,Kentucky
+LA,Louisiana
+ME,Maine
+MD,Maryland
+MA,Massachusetts
+MI,Michigan
+MN,Minnesota
+MS,Mississippi
+MO,Missouri
+MT,Montana
+NE,Nebraska
+NV,Nevada
+NH,New Hampshire
+NJ,New Jersey
+NM,New Mexico
+NY,New York
+NC,North Carolina
+ND,North Dakota
+OH,Ohio
+OK,Oklahoma
+OR,Oregon
+PA,Pennsylvania
+RI,Rhode Island
+SC,South Carolina
+SD,South Dakota
+TN,Tennessee
+TX,Texas
+UT,Utah
+VT,Vermont
+VA,Virginia
+WA,Washington
+WV,West Virginia
+WI,Wisconsin
+WY,Wyoming
+AS,American Samoa
+GU,Guam
+MP,Northern Mariana Islands
+PR,Puerto Rico
+UM,U.S. Minor Outlying Islands
+VI,U.S. Virgin Islands
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/agate-lookup-0.3.1/examples/usps/state.csv.yml new/agate-lookup-0.3.1/examples/usps/state.csv.yml
--- old/agate-lookup-0.3.1/examples/usps/state.csv.yml 1970-01-01 01:00:00.000000000 +0100
+++ new/agate-lookup-0.3.1/examples/usps/state.csv.yml 2016-12-19 23:10:55.000000000 +0100
@@ -0,0 +1,13 @@
+data: United States Postal System state abbreviations and US state names
+version: N/A
+sources:
+ - United States Census Bureau, http://www.census.gov/geo/reference/ansi.html
+contributors:
+ - Christopher Groskopf <chrisgroskopf(a)gmail.com>
+columns:
+ usps:
+ name: USPS state abbreviation
+ type: Text
+ state:
+ name: State name
+ type: Text
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/agate-lookup-0.3.1/requirements-py2.txt new/agate-lookup-0.3.1/requirements-py2.txt
--- old/agate-lookup-0.3.1/requirements-py2.txt 1970-01-01 01:00:00.000000000 +0100
+++ new/agate-lookup-0.3.1/requirements-py2.txt 2016-12-19 23:10:55.000000000 +0100
@@ -0,0 +1,11 @@
+unittest2==0.5.1
+nose>=1.1.2
+tox>=1.3
+Sphinx>=1.2.2
+sphinx_rtd_theme>=0.1.6
+wheel>=0.24.0
+ordereddict>=1.1
+agate>=1.5.0
+requests>=2.9.1
+pyyaml>=3.11
+mock>=1.3.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/agate-lookup-0.3.1/requirements-py3.txt new/agate-lookup-0.3.1/requirements-py3.txt
--- old/agate-lookup-0.3.1/requirements-py3.txt 1970-01-01 01:00:00.000000000 +0100
+++ new/agate-lookup-0.3.1/requirements-py3.txt 2016-12-19 23:10:55.000000000 +0100
@@ -0,0 +1,9 @@
+nose>=1.1.2
+tox>=1.3
+Sphinx>=1.2.2
+sphinx_rtd_theme>=0.1.6
+wheel>=0.24.0
+agate>=1.5.0
+requests>=2.9.1
+pyyaml>=3.11
+mock>=1.3.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/agate-lookup-0.3.1/setup.cfg new/agate-lookup-0.3.1/setup.cfg
--- old/agate-lookup-0.3.1/setup.cfg 2016-12-19 23:11:30.000000000 +0100
+++ new/agate-lookup-0.3.1/setup.cfg 2016-12-19 23:10:55.000000000 +0100
@@ -1,8 +1,2 @@
[bdist_wheel]
universal = 1
-
-[egg_info]
-tag_build =
-tag_date = 0
-tag_svn_revision = 0
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/agate-lookup-0.3.1/tests/test_source.py new/agate-lookup-0.3.1/tests/test_source.py
--- old/agate-lookup-0.3.1/tests/test_source.py 1970-01-01 01:00:00.000000000 +0100
+++ new/agate-lookup-0.3.1/tests/test_source.py 2016-12-19 23:10:55.000000000 +0100
@@ -0,0 +1,34 @@
+#!/usr/bin/env python
+# -*- coding: utf8 -*-
+
+try:
+ import unittest2 as unittest
+except ImportError:
+ import unittest
+
+import agate
+import agatelookup
+
+class TestSource(agate.AgateTestCase):
+ def setUp(self):
+ self.source = agatelookup.Source()
+
+ def test_get_metadata(self):
+ meta = self.source.get_metadata('usps', 'state')
+
+ self.assertIn('Census Bureau', meta['sources'][0])
+
+ def test_get_table(self):
+ table = self.source.get_table('usps', 'state')
+
+ self.assertColumnNames(table, ['usps', 'state'])
+ self.assertColumnTypes(table, [agate.Text, agate.Text])
+ self.assertSequenceEqual(table.row_names[:2], ['AL', 'AK'])
+
+ def test_get_table_multiple_keys(self):
+ table = self.source.get_table(['year', 'month'], 'cpi')
+ print(table)
+
+ self.assertColumnNames(table, ['year', 'month', 'cpi'])
+ self.assertColumnTypes(table, [agate.Text, agate.Text, agate.Number])
+ self.assertSequenceEqual(table.row_names[:2], [('1947', '1'), ('1947', '2')])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/agate-lookup-0.3.1/tests/test_table.py new/agate-lookup-0.3.1/tests/test_table.py
--- old/agate-lookup-0.3.1/tests/test_table.py 1970-01-01 01:00:00.000000000 +0100
+++ new/agate-lookup-0.3.1/tests/test_table.py 2016-12-19 23:10:55.000000000 +0100
@@ -0,0 +1,150 @@
+#!/usr/bin/env python
+# -*- coding: utf8 -*-
+
+try:
+ import unittest2 as unittest
+except ImportError:
+ import unittest
+
+import agate
+import agatelookup
+import mock
+import requests
+
+class TestLookup(agate.AgateTestCase):
+ def setUp(self):
+ self._source = agatelookup.Source(cache=False)
+
+ def test_lookup(self):
+ rows = (
+ ('WA',),
+ ('VA',),
+ ('TX',)
+ )
+
+ column_names = ['usps']
+ column_types = [agate.Text()]
+
+ table = agate.Table(rows, column_names, column_types)
+
+ result = table.lookup('usps', 'state', source=self._source)
+
+ self.assertColumnNames(result, ['usps', 'state'])
+ self.assertColumnTypes(result, [agate.Text, agate.Text])
+
+ self.assertSequenceEqual(result.rows[1].values(), ['VA', 'Virginia'])
+
+ def test_lookup_key(self):
+ rows = (
+ ('WA',),
+ ('VA',),
+ ('TX',)
+ )
+
+ column_names = ['postal']
+ column_types = [agate.Text()]
+
+ table = agate.Table(rows, column_names, column_types)
+
+ result = table.lookup('postal', 'state', lookup_key='usps', source=self._source)
+
+ self.assertColumnNames(result, ['postal', 'state'])
+ self.assertColumnTypes(result, [agate.Text, agate.Text])
+
+ self.assertSequenceEqual(result.rows[1].values(), ['VA', 'Virginia'])
+
+ def test_lookup_version(self):
+ rows = (
+ ('1111',),
+ ('313320',),
+ ('522310',)
+ )
+
+ column_names = ['naics']
+ column_types = [agate.Text()]
+
+ table = agate.Table(rows, column_names, column_types)
+
+ result = table.lookup('naics', 'description', version='2012', source=self._source)
+
+ self.assertColumnNames(result, ['naics', 'description'])
+ self.assertColumnTypes(result, [agate.Text, agate.Text])
+
+ self.assertSequenceEqual(result.rows[1].values(), ['313320', 'Fabric Coating Mills'])
+
+ def test_lookup_multiple_keys(self):
+ rows = (
+ ('AZ', '1985'),
+ ('WY', '2014'),
+ ('SC', '1994')
+ )
+
+ column_names = ['usps', 'year']
+ column_types = [agate.Text(), agate.Text()]
+
+ table = agate.Table(rows, column_names, column_types)
+
+ result = table.lookup(['usps', 'year'], 'population', source=self._source)
+
+ self.assertColumnNames(result, ['usps', 'year', 'population'])
+ self.assertColumnTypes(result, [agate.Text, agate.Text, agate.Number])
+
+ self.assertSequenceEqual(result.rows[1].values(), ['WY', '2014', 584153])
+
+ def test_lookup_no_match(self):
+ rows = (
+ ('WA',),
+ ('VA',),
+ ('FA',)
+ )
+
+ column_names = ['usps']
+ column_types = [agate.Text()]
+
+ table = agate.Table(rows, column_names, column_types)
+
+ result = table.lookup('usps', 'state', source=self._source)
+
+ self.assertColumnNames(result, ['usps', 'state'])
+ self.assertColumnTypes(result, [agate.Text, agate.Text])
+
+ self.assertSequenceEqual(result.rows[2].values(), ['FA', None])
+
+ def test_lookup_require_match(self):
+ rows = (
+ ('WA',),
+ ('VA',),
+ ('FA',)
+ )
+
+ column_names = ['usps']
+ column_types = [agate.Text()]
+
+ table = agate.Table(rows, column_names, column_types)
+
+ with self.assertRaises(ValueError):
+ result = table.lookup('usps', 'state', require_match=True, source=self._source)
+
+ def test_from_lookup(self):
+ table = agate.Table.from_lookup('usps', 'state')
+
+ self.assertColumnNames(table, ['usps', 'state'])
+ self.assertColumnTypes(table, [agate.Text, agate.Text])
+ self.assertSequenceEqual(table.rows[1].values(), ['AK', 'Alaska'])
+
+ def test_connection_fails(self):
+ with mock.patch.object(requests, 'get') as mock_method:
+ mock_method.side_effect = requests.ConnectionError
+
+ with self.assertRaises(RuntimeError):
+ agate.Table.from_lookup('usps', 'state', source=self._source)
+
+ def test_cache(self):
+ source = agatelookup.Source(cache='examples')
+
+ with mock.patch.object(requests, 'get') as mock_method:
+ mock_method.side_effect = requests.ConnectionError
+
+ table = agate.Table.from_lookup('usps', 'state', source=source)
+
+ self.assertColumnNames(table, ['usps', 'state'])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/agate-lookup-0.3.1/tox.ini new/agate-lookup-0.3.1/tox.ini
--- old/agate-lookup-0.3.1/tox.ini 1970-01-01 01:00:00.000000000 +0100
+++ new/agate-lookup-0.3.1/tox.ini 2016-12-19 23:10:55.000000000 +0100
@@ -0,0 +1,29 @@
+[tox]
+envlist = py27,py33,py34,py35,pypy
+
+[testenv]
+deps=
+ nose>=1.1.2
+ six>=1.6.1
+ mock>=1.3.0
+commands=nosetests
+
+[testenv:py27]
+deps=
+ {[testenv]deps}
+
+[testenv:py33]
+deps=
+ {[testenv]deps}
+
+[testenv:py34]
+deps=
+ {[testenv:py33]deps}
+
+[testenv:py35]
+deps=
+ {[testenv:py33]deps}
+
+[testenv:pypy]
+deps=
+ {[testenv:py33]deps}
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-atpublic for openSUSE:Factory checked in at 2021-05-21 21:50:18
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-atpublic (Old)
and /work/SRC/openSUSE:Factory/.python-atpublic.new.2988 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-atpublic"
Fri May 21 21:50:18 2021 rev:3 rq:894788 version:2.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-atpublic/python-atpublic.changes 2020-12-02 13:58:15.781803772 +0100
+++ /work/SRC/openSUSE:Factory/.python-atpublic.new.2988/python-atpublic.changes 2021-05-21 21:50:32.834101463 +0200
@@ -1,0 +2,16 @@
+Fri May 21 08:42:52 UTC 2021 - pgajdos(a)suse.com
+
+- version update to 2.3
+ 2.3 (2021-04-13)
+ ================
+ * Do type hinting the right way. (GL#10)
+
+ 2.2 (2021-04-13)
+ ================
+ * ``public()`` and ``private()`` can't be correctly type annotated, so the
+ type hints on these two functions have been removed. The ``ModuleAware``
+ was also removed. (GL#10)
+ * Added a ``py.typed`` file to satisfy type checkers. (GL#9)
+ * Fixed a documentation cross-reference bug.
+
+-------------------------------------------------------------------
Old:
----
atpublic-2.1.1.tar.gz
New:
----
atpublic-2.3.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-atpublic.spec ++++++
--- /var/tmp/diff_new_pack.Mjd2no/_old 2021-05-21 21:50:33.246099757 +0200
+++ /var/tmp/diff_new_pack.Mjd2no/_new 2021-05-21 21:50:33.246099757 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-atpublic
#
-# Copyright (c) 2020 SUSE LLC
+# Copyright (c) 2021 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -19,7 +19,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
%define skip_python2 1
Name: python-atpublic
-Version: 2.1.1
+Version: 2.3
Release: 0
Summary: @public decorator for populating __all__
License: Apache-2.0
++++++ atpublic-2.1.1.tar.gz -> atpublic-2.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/public-2.1.1/LICENSE new/public-2.3/LICENSE
--- old/public-2.1.1/LICENSE 2020-10-22 23:37:55.000000000 +0200
+++ new/public-2.3/LICENSE 2021-04-14 03:23:18.000000000 +0200
@@ -1,4 +1,4 @@
-Copyright 2016-2020 Barry Warsaw
+Copyright 2016-2021 Barry Warsaw
Licensed under the Apache License, Version 2.0 (the "License"); you may not
use this file except in compliance with the License. You may obtain a copy of
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/public-2.1.1/MANIFEST.in new/public-2.3/MANIFEST.in
--- old/public-2.1.1/MANIFEST.in 2020-10-22 23:37:55.000000000 +0200
+++ new/public-2.3/MANIFEST.in 2021-04-14 03:23:18.000000000 +0200
@@ -1,5 +1,7 @@
include *.py MANIFEST.in LICENSE README.rst
-global-include *.txt *.rst *.ini *.c *.h *.cfg
+global-include *.txt *.rst *.ini *.c *.h *.cfg py.typed
+recursive-include test *.py
+recursive-include docs *.py
exclude .gitignore
exclude *.so
prune build
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/public-2.1.1/README.rst new/public-2.3/README.rst
--- old/public-2.1.1/README.rst 2020-10-22 23:37:55.000000000 +0200
+++ new/public-2.3/README.rst 2021-04-14 03:23:18.000000000 +0200
@@ -10,7 +10,7 @@
Author
======
-``public`` is Copyright (C) 2016-2020 Barry Warsaw <barry(a)python.org>
+``public`` is Copyright (C) 2016-2021 Barry Warsaw <barry(a)python.org>
Licensed under the terms of the Apache License Version 2.0. See the LICENSE
file for details.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/public-2.1.1/docs/NEWS.rst new/public-2.3/docs/NEWS.rst
--- old/public-2.1.1/docs/NEWS.rst 2020-10-22 23:37:55.000000000 +0200
+++ new/public-2.3/docs/NEWS.rst 2021-04-14 03:23:18.000000000 +0200
@@ -2,6 +2,27 @@
@public NEWS
==============
+2.3 (2021-04-13)
+================
+* Do type hinting the right way. (GL#10)
+
+2.2 (2021-04-13)
+================
+* ``public()`` and ``private()`` can't be correctly type annotated, so the
+ type hints on these two functions have been removed. The ``ModuleAware``
+ was also removed. (GL#10)
+* Added a ``py.typed`` file to satisfy type checkers. (GL#9)
+* Fixed a documentation cross-reference bug.
+
+2.1.3 (2021-02-15)
+==================
+* I `blue <https://blue.readthedocs.io/en/latest/>`_ it!
+
+2.1.2 (2021-01-01)
+==================
+* Update copyright years.
+* Include ``test/__init__.py`` and ``docs/__init__.py`` (GL#9)
+
2.1.1 (2020-10-22)
==================
* Rename top-level tests/ directory to test/ (GL#8)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/public-2.1.1/docs/apiref.rst new/public-2.3/docs/apiref.rst
--- old/public-2.1.1/docs/apiref.rst 2020-10-22 23:37:55.000000000 +0200
+++ new/public-2.3/docs/apiref.rst 2021-04-14 03:23:18.000000000 +0200
@@ -10,9 +10,3 @@
.. autofunction:: public.private
.. autofunction:: public.install
-
-
-Types:
-
-.. autoclass:: public.ModuleAware
- :members:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/public-2.1.1/docs/conf.py new/public-2.3/docs/conf.py
--- old/public-2.1.1/docs/conf.py 2020-10-22 23:37:55.000000000 +0200
+++ new/public-2.3/docs/conf.py 2021-04-14 03:23:18.000000000 +0200
@@ -47,7 +47,7 @@
# General information about the project.
project = u'public'
-copyright = u'2016-2020 by Barry Warsaw'
+copyright = u'2016-2021 by Barry Warsaw'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/public-2.1.1/docs/index.rst new/public-2.3/docs/index.rst
--- old/public-2.1.1/docs/index.rst 2020-10-22 23:37:55.000000000 +0200
+++ new/public-2.3/docs/index.rst 2021-04-14 03:23:18.000000000 +0200
@@ -53,7 +53,7 @@
Copyright
=========
-Copyright (C) 2016-2020 Barry A. Warsaw
+Copyright (C) 2016-2021 Barry A. Warsaw
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -81,5 +81,5 @@
NEWS
-.. _`simple guide`: docs/using.html
-.. _`API reference`: docs/apiref.html
+.. _`simple guide`: using.html
+.. _`API reference`: apiref.html
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/public-2.1.1/public/__init__.py new/public-2.3/public/__init__.py
--- old/public-2.1.1/public/__init__.py 2020-10-22 23:37:55.000000000 +0200
+++ new/public-2.3/public/__init__.py 2021-04-14 03:23:18.000000000 +0200
@@ -1,20 +1,27 @@
from .private import private
from .public import public
-from .types import ModuleAware
-__version__ = '2.1.1'
+__version__ = '2.3'
def install() -> None:
"""Install @public and @private into builtins."""
import builtins
+
builtins.public = public # type: ignore [attr-defined]
builtins.private = private # type: ignore [attr-defined]
+# mypy does not understand that __all__ gets populated at runtime via the
+# following call,
+__all__ = [
+ 'private',
+ 'public',
+]
+
+
public(
- ModuleAware=ModuleAware,
- public=public,
private=private,
- )
+ public=public,
+)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/public-2.1.1/public/public.py new/public-2.3/public/public.py
--- old/public-2.1.1/public/public.py 2020-10-22 23:37:55.000000000 +0200
+++ new/public-2.3/public/public.py 2021-04-14 03:23:18.000000000 +0200
@@ -1,14 +1,21 @@
import sys
-from typing import Any, Optional
+from typing import Any, overload
from .types import ModuleAware
-# http://bugs.python.org/issue26632
-def public(thing: Optional[ModuleAware] = None,
- **kws: Any
- ) -> Optional[ModuleAware]:
+@overload
+def public(thing: ModuleAware) -> ModuleAware:
+ ... # pragma: no cover
+
+
+@overload
+def public(**kws: Any) -> None:
+ ... # pragma: no cover
+
+
+def public(thing=None, **kws): # type: ignore
"""Add a name or names to __all__
There are two forms of use for this function. Most commonly it will
@@ -43,7 +50,8 @@
sys._getframe(1).f_globals
if thing is None
# The decorator syntax.
- else sys.modules[thing.__module__].__dict__)
+ else sys.modules[thing.__module__].__dict__
+ )
dunder_all = mdict.setdefault('__all__', [])
if not isinstance(dunder_all, list):
raise ValueError(f'__all__ must be a list not: {type(dunder_all)}')
@@ -59,8 +67,9 @@
# I think it's impossible to use the @public decorator and pass in
# keyword arguments. Not quite syntactically impossible, but you'll
# get a TypeError if you try it, before you even get to this code.
- assert len(kws) == 0, (
- 'Keyword arguments are incompatible with use as decorator')
+ assert (
+ len(kws) == 0
+ ), 'Keyword arguments are incompatible with use as decorator'
if thing.__name__ not in dunder_all:
dunder_all.append(thing.__name__)
return thing
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/public-2.1.1/public/types.py new/public-2.3/public/types.py
--- old/public-2.1.1/public/types.py 2020-10-22 23:37:55.000000000 +0200
+++ new/public-2.3/public/types.py 2021-04-14 03:23:18.000000000 +0200
@@ -1,10 +1,4 @@
-try:
- from typing import Protocol
-except ImportError: # pragma: nocover
- # Python < 3.8
- from typing_extensions import Protocol # type: ignore
+from typing import Any, Callable, TypeVar
-class ModuleAware(Protocol):
- __module__: str
- __name__: str
+ModuleAware = TypeVar('ModuleAware', bound=Callable[..., Any])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/public-2.1.1/setup.cfg new/public-2.3/setup.cfg
--- old/public-2.1.1/setup.cfg 2020-10-22 23:37:55.000000000 +0200
+++ new/public-2.3/setup.cfg 2021-04-14 03:23:18.000000000 +0200
@@ -4,7 +4,6 @@
[flake8]
exclude = conf.py
-hang-closing = true
jobs = 1
max-line-length = 79
@@ -22,13 +21,14 @@
public
[tool:isort]
+include_trailing_comma = true
+known_first_party = public
length_sort_straight = true
lines_after_imports = 2
lines_between_types = 1
-multi_line_output = 4
+multi_line_output = 3
order_by_type = false
skip = conf.py
-known_first_party = public
[mypy]
namespace_packages = true
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/public-2.1.1/setup.py new/public-2.3/setup.py
--- old/public-2.1.1/setup.py 2020-10-22 23:37:55.000000000 +0200
+++ new/public-2.3/setup.py 2021-04-14 03:23:18.000000000 +0200
@@ -24,6 +24,9 @@
url='http://public.readthedocs.io/',
packages=find_packages(where='.', exclude=['test*', 'docs']),
include_package_data=True,
+ package_data={
+ 'public': ['public/py.typed'],
+ },
# readthedocs builds fail unless zip_safe is False.
zip_safe=False,
python_requires='>=3.6',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/public-2.1.1/test/test_mypy.py new/public-2.3/test/test_mypy.py
--- old/public-2.1.1/test/test_mypy.py 1970-01-01 01:00:00.000000000 +0100
+++ new/public-2.3/test/test_mypy.py 2021-04-14 03:23:18.000000000 +0200
@@ -0,0 +1,19 @@
+# https://gitlab.com/warsaw/public/-/issues/10
+
+from public import private, public
+
+
+@public
+def one(x: int) -> int:
+ return x * 2
+
+
+one(4)
+
+
+@private
+def two(x: int) -> int:
+ return x * 3
+
+
+two(4)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/public-2.1.1/tox.ini new/public-2.3/tox.ini
--- old/public-2.1.1/tox.ini 2020-10-22 23:37:55.000000000 +0200
+++ new/public-2.3/tox.ini 2021-04-14 03:23:18.000000000 +0200
@@ -20,11 +20,14 @@
commands =
python -m flake8 public
isort public
+ blue --diff public
mypy -p public
+ mypy test/test_mypy.py
deps =
flake8
isort>=5.4.1
mypy
+ blue>=0.6.0
[testenv:docs]
basepython = python3
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package charliecloud for openSUSE:Factory checked in at 2021-05-21 21:50:18
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/charliecloud (Old)
and /work/SRC/openSUSE:Factory/.charliecloud.new.2988 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "charliecloud"
Fri May 21 21:50:18 2021 rev:18 rq:894813 version:0.23
Changes:
--------
--- /work/SRC/openSUSE:Factory/charliecloud/charliecloud.changes 2021-02-22 14:41:15.572677486 +0100
+++ /work/SRC/openSUSE:Factory/.charliecloud.new.2988/charliecloud.changes 2021-05-21 21:50:31.122108554 +0200
@@ -1,0 +2,14 @@
+Mon May 3 16:37:44 UTC 2021 - Ferdinand Thiessen <rpm(a)fthiessen.de>
+
+- Update to version 0.23
+ * ch-image push: now works with Docker Hub
+ * ch-image:
+ * remove compatibility alias ch-grow
+ * new subcommand reset
+ * ch-image build: fix bugs in whitespace handling
+ * miscellaneous bug fixes and improvements
+ * Full changes:
+ https://github.com/hpc/charliecloud/compare/v0.22...v0.23
+- Only apply Replace-hardcode-path.patch if needed
+
+-------------------------------------------------------------------
Old:
----
charliecloud-0.22.tar.gz
New:
----
charliecloud-0.23.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ charliecloud.spec ++++++
--- /var/tmp/diff_new_pack.mET4Mt/_old 2021-05-21 21:50:32.602102424 +0200
+++ /var/tmp/diff_new_pack.mET4Mt/_new 2021-05-21 21:50:32.606102408 +0200
@@ -17,7 +17,7 @@
Name: charliecloud
-Version: 0.22
+Version: 0.23
Release: 0
Summary: User-defined software stacks (UDSS) for HPC centers
License: Apache-2.0
@@ -29,15 +29,15 @@
# Recommend for ch-grow
# used to build images
Requires: fakeroot
-Recommends: docker
Recommends: buildah >= 1.11.2
+Recommends: docker
Recommends: python3-requests >= 2.6.0
Recommends: squashfs >= 4.2
-%if !(0%{?sle_version} <= 120400 && 0%{?is_backports})
+%if !(0%{?sle_version} <= 120500 && !0%{?is_opensuse})
Recommends: python3-lark-parser >= 0.7.1
%endif
# Build the documentation
-%if !(0%{?sle_version} <= 120400 && 0%{?is_backports})
+%if !(0%{?sle_version} <= 120500 && !0%{?is_opensuse})
BuildRequires: python3-Sphinx
BuildRequires: python3-sphinx_rtd_theme
BuildRequires: rsync
@@ -80,7 +80,9 @@
%prep
%setup -q
+%if "%{_lib}" == "lib64"
%patch0 -p 1
+%endif
%build
%configure --disable-test
@@ -90,7 +92,7 @@
%make_install
# Documentation won't build on SLE-12
-%if !(0%{?sle_version} <= 120400 && 0%{?is_backports})
+%if !(0%{?sle_version} <= 120500 && !0%{?is_opensuse})
mv %{buildroot}%{_datadir}/doc/charliecloud/html .
%endif
@@ -114,7 +116,7 @@
%dir %{_libdir}/charliecloud/
%{_libdir}/charliecloud/*
-%if !(0%{?sle_version} <= 120400 && 0%{?is_backports})
+%if !(0%{?sle_version} <= 120500 && !0%{?is_opensuse})
%{_mandir}/man1/*
%{_mandir}/man7/*
++++++ charliecloud-0.22.tar.gz -> charliecloud-0.23.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/charliecloud-0.22/.github/workflows/main.yml new/charliecloud-0.23/.github/workflows/main.yml
--- old/charliecloud-0.22/.github/workflows/main.yml 2021-01-27 18:27:08.000000000 +0100
+++ new/charliecloud-0.23/.github/workflows/main.yml 2021-03-13 01:13:51.000000000 +0100
@@ -14,7 +14,7 @@
strategy:
fail-fast: true # if any job fails, cancel the rest immediately
matrix:
- builder: [none, docker, ch-image, buildah, buildah-runc, buildah-setuid]
+ builder: [none, docker, ch-image]
keep_sudo: # if false, remove self from sudoers after install/setup
- false
include:
@@ -68,6 +68,7 @@
getconf _NPROCESSORS_ONLN
free -m
df -h
+ locale -a
- name: lines of code
if: ${{ matrix.builder == 'none' }}
@@ -89,21 +90,24 @@
[[ $(command -v bats) == /usr/local/bin/bats ]]
[[ $(bats --version) == 'Bats 0.4.0' ]]
- - name: install/configure dependencies, all
- run: |
- # configure doesn't tell us about these.
- sudo apt-get install pigz pv
- # configure does tell us about these.
- sudo apt-get install squashfs-tools squashfuse
- # Track newest Sphinx in case it breaks things.
- sudo su -c 'umask 0022 && pip3 install sphinx sphinx-rtd-theme'
-
- name: install/configure dependencies, ch-image
if: ${{ matrix.builder == 'ch-image' }}
run: |
- # Use most current Lark rather than the one in Ubuntu b/c new
- # versions sometimes break things.
- sudo su -c 'umask 0022 && pip3 install lark-parser'
+ # Install the minimum Python version we support (issue #959). Python
+ # is pretty quick to build, so this only takes a couple of minutes.
+ cd /usr/local/src
+ wget -nv https://www.python.org/ftp/python/3.6.12/Python-3.6.12.tar.xz
+ tar xf Python-3.6.12.tar.xz
+ cd Python-3.6.12
+ ./configure --prefix=/usr/local
+ make $ch_makej
+ sudo sh -c 'umask 0022 && make install'
+ command -v pip3
+ command -v python3
+ [[ $(command -v pip3) == /usr/local/bin/pip3 ]]
+ [[ $(command -v python3) == /usr/local/bin/python3 ]]
+ # Use most current packages b/c new versions sometimes break things.
+ sudo sh -c 'umask 0022 && pip3 install lark-parser requests'
- name: install/configure dependencies, all Buildah
if: ${{ startsWith(matrix.builder, 'buildah') }}
@@ -127,6 +131,15 @@
sudo usermod --add-subuids 10000-65536 $USER
sudo usermod --add-subgids 10000-65536 $USER
+ - name: install/configure dependencies, all
+ run: |
+ # configure doesn't tell us about these.
+ sudo apt-get install pigz pv
+ # configure does tell us about these.
+ sudo apt-get install squashfs-tools squashfuse
+ # Track newest Sphinx in case it breaks things.
+ sudo su -c 'umask 0022 && pip3 install sphinx sphinx-rtd-theme'
+
- name: build/install from Git
run: |
./autogen.sh
@@ -149,7 +162,12 @@
bin/ch-run --version
$ch_prefix/from-git/bin/ch-run --version
- - name: late setup & validation
+ - name: late setup & validation, ch-image
+ if: ${{ matrix.builder == 'ch-image' }}
+ run: |
+ [[ $(bin/ch-image python-path) = /usr/local/bin/python3 ]]
+
+ - name: late setup & validation, all
run: |
bin/ch-test --is-pedantic all
bin/ch-test --is-sudo all
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/charliecloud-0.22/VERSION new/charliecloud-0.23/VERSION
--- old/charliecloud-0.22/VERSION 2021-02-08 18:55:08.000000000 +0100
+++ new/charliecloud-0.23/VERSION 2021-04-17 00:24:56.000000000 +0200
@@ -1 +1 @@
-0.22
+0.23
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/charliecloud-0.22/bin/Makefile.am new/charliecloud-0.23/bin/Makefile.am
--- old/charliecloud-0.22/bin/Makefile.am 2021-01-20 23:15:34.000000000 +0100
+++ new/charliecloud-0.23/bin/Makefile.am 2021-03-16 18:10:00.000000000 +0100
@@ -33,15 +33,14 @@
## Python scripts - need text processing
-bin_SCRIPTS = ch-run-oci # scripts to build
-EXTRA_SCRIPTS = ch-image ch-grow # more scripts that *may* be built
+bin_SCRIPTS = ch-run-oci # scripts to build
+EXTRA_SCRIPTS = ch-image # more scripts that *may* be built
if ENABLE_CH_IMAGE
-bin_SCRIPTS += ch-image ch-grow
+bin_SCRIPTS += ch-image
endif
-EXTRA_DIST = ch-grow.py.in ch-image.py.in ch-run-oci.py.in
+EXTRA_DIST = ch-image.py.in ch-run-oci.py.in
CLEANFILES = $(bin_SCRIPTS) $(EXTRA_SCRIPTS)
-ch-grow: ch-grow.py.in
ch-image: ch-image.py.in
ch-run-oci: ch-run-oci.py.in
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/charliecloud-0.22/bin/Makefile.in new/charliecloud-0.23/bin/Makefile.in
--- old/charliecloud-0.22/bin/Makefile.in 2021-02-08 19:11:07.000000000 +0100
+++ new/charliecloud-0.23/bin/Makefile.in 2021-04-17 00:25:06.000000000 +0200
@@ -94,7 +94,7 @@
build_triplet = @build@
host_triplet = @host@
bin_PROGRAMS = ch-checkns$(EXEEXT) ch-run$(EXEEXT) ch-ssh$(EXEEXT)
-@ENABLE_CH_IMAGE_TRUE@am__append_1 = ch-image ch-grow
+@ENABLE_CH_IMAGE_TRUE@am__append_1 = ch-image
subdir = bin
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/misc/m4/ax_check_compile_flag.m4 \
@@ -370,8 +370,8 @@
ch-umount
bin_SCRIPTS = ch-run-oci $(am__append_1)
-EXTRA_SCRIPTS = ch-image ch-grow # more scripts that *may* be built
-EXTRA_DIST = ch-grow.py.in ch-image.py.in ch-run-oci.py.in
+EXTRA_SCRIPTS = ch-image # more scripts that *may* be built
+EXTRA_DIST = ch-image.py.in ch-run-oci.py.in
CLEANFILES = $(bin_SCRIPTS) $(EXTRA_SCRIPTS)
all: config.h
$(MAKE) $(AM_MAKEFLAGS) all-am
@@ -849,7 +849,6 @@
.PRECIOUS: Makefile
-ch-grow: ch-grow.py.in
ch-image: ch-image.py.in
ch-run-oci: ch-run-oci.py.in
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/charliecloud-0.22/bin/ch-build new/charliecloud-0.23/bin/ch-build
--- old/charliecloud-0.22/bin/ch-build 2021-01-26 19:29:41.000000000 +0100
+++ new/charliecloud-0.23/bin/ch-build 2021-03-16 18:10:00.000000000 +0100
@@ -11,7 +11,8 @@
$ $(basename "$0") [-b BUILDER] [--builder-info] -t TAG [ARGS ...] CONTEXT
-BUILDER is one of: buildah ch-image docker.
+BUILDER is "ch-image" or "docker"
+ (or experimentally: "buildah", "buildah-runc", "buildah-setuid")
ARGS are passed unchanged to the underlying builder.
EOF
)
@@ -48,7 +49,7 @@
buildah*)
buildah --version
;;
- ch-image|ch-grow)
+ ch-image)
"${ch_bin}/ch-image" --version
;;
docker)
@@ -123,7 +124,7 @@
"$@"
fi
;;
- ch-image|ch-grow)
+ ch-image)
"${ch_bin}/ch-image" build "$@"
;;
docker)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/charliecloud-0.22/bin/ch-builder2tar new/charliecloud-0.23/bin/ch-builder2tar
--- old/charliecloud-0.22/bin/ch-builder2tar 2021-01-27 18:27:08.000000000 +0100
+++ new/charliecloud-0.23/bin/ch-builder2tar 2021-03-16 18:10:00.000000000 +0100
@@ -130,7 +130,7 @@
;;
-ch-image|ch-grow)
+ch-image)
echo "exporting"
storage=$("${ch_bin}/ch-image" storage-path)/img/$(tag_to_path "$image")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/charliecloud-0.22/bin/ch-grow.py.in new/charliecloud-0.23/bin/ch-grow.py.in
--- old/charliecloud-0.22/bin/ch-grow.py.in 2020-12-10 00:16:47.000000000 +0100
+++ new/charliecloud-0.23/bin/ch-grow.py.in 1970-01-01 01:00:00.000000000 +0100
@@ -1,20 +0,0 @@
-#!%PYTHON_SHEBANG%
-
-import subprocess
-import sys
-
-ch_image = sys.path[0] + "/ch-image"
-rc = subprocess.call([ch_image] + sys.argv[1:])
-
-print("""\
-
-
-******************************************************************************
-
-NOTE: This program is now called ch-image. We plan to remove the ch-grow name
-in Charliecloud version 0.23.
-
-******************************************************************************
-""", end="", file=sys.stderr)
-
-sys.exit(rc)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/charliecloud-0.22/bin/ch-image.py.in new/charliecloud-0.23/bin/ch-image.py.in
--- old/charliecloud-0.22/bin/ch-image.py.in 2021-02-04 00:15:39.000000000 +0100
+++ new/charliecloud-0.23/bin/ch-image.py.in 2021-04-09 21:49:04.000000000 +0200
@@ -171,6 +171,19 @@
sp.add_argument("dest_ref", metavar="DEST_REF", nargs="?",
help="destination image reference (default: IMAGE_REF)")
+ # python-path
+ help="print path to python interpreter in use"
+ sp = sps.add_parser("python-path", help=help, description=help,
+ formatter_class=ch.HelpFormatter)
+ sp.set_defaults(func=misc.python_path)
+
+ # reset
+ help="delete everything in ch-image builder storage"
+ sp = sps.add_parser("reset", help=help, description=help,
+ formatter_class=ch.HelpFormatter)
+ sp.set_defaults(func=misc.reset)
+ add_opts(sp, common_opts, True)
+
# storage-path
help="print storage directory path"
sp = sps.add_parser("storage-path", help=help, description=help,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/charliecloud-0.22/bin/ch-test new/charliecloud-0.23/bin/ch-test
--- old/charliecloud-0.22/bin/ch-test 2021-01-22 23:36:01.000000000 +0100
+++ new/charliecloud-0.23/bin/ch-test 2021-03-16 18:10:00.000000000 +0100
@@ -64,7 +64,7 @@
builder_check () {
printf 'checking builder ...\n'
case $CH_BUILDER in
- ch-image|ch-grow)
+ ch-image)
if ! "${ch_bin}/ch-image" --dependencies; then
fatal 'builder: ch-image: missing dependencies'
fi
@@ -113,25 +113,6 @@
builder_choose
method='default'
fi
- if [[ $CH_BUILDER == ch-grow ]]; then
- export CH_BUILDER=ch-image
- cat <<'EOF' 1>&2
-
-WARNING: ch-grow is now called ch-image. We plan to remove the ch-grow name in
-Charliecloud version 0.23.
-
-EOF
- fi
- if [[ -n $CH_GROW_STORAGE ]]; then
- export CH_IMAGE_STORAGE=$CH_GROW_STORAGE
- unset CH_GROW_STORAGE
- cat <<'EOF' 1>&2
-
-WARNING: $CH_GROW_STORAGE is now called $CH_IMAGE_STORAGE. We plan to remove
-the old name in Charliecloud version 0.23.
-
-EOF
- fi
printf "%-*s %s (%s)\n" "$width" 'builder:' "$CH_BUILDER" "$method"
if [[ $CH_BUILDER == ch-image ]]; then
vset CH_IMAGE_STORAGE '' "$CH_IMAGE_STORAGE" "/var/tmp/$USER/ch-image" \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/charliecloud-0.22/configure new/charliecloud-0.23/configure
--- old/charliecloud-0.22/configure 2021-02-08 19:11:06.000000000 +0100
+++ new/charliecloud-0.23/configure 2021-04-17 00:25:05.000000000 +0200
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for Charliecloud 0.22.
+# Generated by GNU Autoconf 2.69 for Charliecloud 0.23.
#
# Report bugs to <https://github.com/hpc/charliecloud>.
#
@@ -580,8 +580,8 @@
# Identity of this package.
PACKAGE_NAME='Charliecloud'
PACKAGE_TARNAME='charliecloud'
-PACKAGE_VERSION='0.22'
-PACKAGE_STRING='Charliecloud 0.22'
+PACKAGE_VERSION='0.23'
+PACKAGE_STRING='Charliecloud 0.23'
PACKAGE_BUGREPORT='https://github.com/hpc/charliecloud'
PACKAGE_URL=''
@@ -1301,7 +1301,7 @@
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures Charliecloud 0.22 to adapt to many kinds of systems.
+\`configure' configures Charliecloud 0.23 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1372,7 +1372,7 @@
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of Charliecloud 0.22:";;
+ short | recursive ) echo "Configuration of Charliecloud 0.23:";;
esac
cat <<\_ACEOF
@@ -1480,7 +1480,7 @@
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-Charliecloud configure 0.22
+Charliecloud configure 0.23
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1660,7 +1660,7 @@
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by Charliecloud $as_me 0.22, which was
+It was created by Charliecloud $as_me 0.23, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -2628,7 +2628,7 @@
# Define the identity of the package.
PACKAGE='charliecloud'
- VERSION='0.22'
+ VERSION='0.23'
cat >>confdefs.h <<_ACEOF
@@ -6233,7 +6233,7 @@
$as_echo "$have_nvidia_libs" >&6; }
# Python
-vmin_python=3.4
+vmin_python=3.6
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if \"$PYTHON_SHEBANG\" starts with slash" >&5
$as_echo_n "checking if \"$PYTHON_SHEBANG\" starts with slash... " >&6; }
case $PYTHON_SHEBANG in #(
@@ -7794,7 +7794,7 @@
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by Charliecloud $as_me 0.22, which was
+This file was extended by Charliecloud $as_me 0.23, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -7860,7 +7860,7 @@
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-Charliecloud config.status 0.22
+Charliecloud config.status 0.23
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/charliecloud-0.22/configure.ac new/charliecloud-0.23/configure.ac
--- old/charliecloud-0.22/configure.ac 2021-01-27 18:27:08.000000000 +0100
+++ new/charliecloud-0.23/configure.ac 2021-03-13 01:13:51.000000000 +0100
@@ -315,7 +315,7 @@
AC_MSG_RESULT($have_nvidia_libs)
# Python
-vmin_python=3.4
+vmin_python=3.6
AC_MSG_CHECKING([if "$PYTHON_SHEBANG" starts with slash])
AS_CASE([$PYTHON_SHEBANG],
[/*], [AC_MSG_RESULT([ok])],
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/charliecloud-0.22/doc/Makefile.am new/charliecloud-0.23/doc/Makefile.am
--- old/charliecloud-0.22/doc/Makefile.am 2021-01-27 18:27:08.000000000 +0100
+++ new/charliecloud-0.23/doc/Makefile.am 2021-03-16 18:10:00.000000000 +0100
@@ -35,8 +35,6 @@
ch-dir2squash.rst \
ch-fromhost_desc.rst \
ch-fromhost.rst \
-ch-grow_desc.rst \
-ch-grow.rst \
ch-image_desc.rst \
ch-image.rst \
ch-mount_desc.rst \
@@ -82,7 +80,6 @@
man/ch-checkns.1 \
man/ch-dir2squash.1 \
man/ch-fromhost.1 \
-man/ch-grow.1 \
man/ch-image.1 \
man/ch-mount.1 \
man/ch-pull2dir.1 \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/charliecloud-0.22/doc/Makefile.in new/charliecloud-0.23/doc/Makefile.in
--- old/charliecloud-0.22/doc/Makefile.in 2021-02-08 19:11:07.000000000 +0100
+++ new/charliecloud-0.23/doc/Makefile.in 2021-04-17 00:25:06.000000000 +0200
@@ -311,8 +311,6 @@
ch-dir2squash.rst \
ch-fromhost_desc.rst \
ch-fromhost.rst \
-ch-grow_desc.rst \
-ch-grow.rst \
ch-image_desc.rst \
ch-image.rst \
ch-mount_desc.rst \
@@ -357,7 +355,6 @@
@ENABLE_MAN_TRUE@man/ch-checkns.1 \
@ENABLE_MAN_TRUE@man/ch-dir2squash.1 \
@ENABLE_MAN_TRUE@man/ch-fromhost.1 \
-@ENABLE_MAN_TRUE@man/ch-grow.1 \
@ENABLE_MAN_TRUE@man/ch-image.1 \
@ENABLE_MAN_TRUE@man/ch-mount.1 \
@ENABLE_MAN_TRUE@man/ch-pull2dir.1 \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/charliecloud-0.22/doc/ch-build_desc.rst new/charliecloud-0.23/doc/ch-build_desc.rst
--- old/charliecloud-0.22/doc/ch-build_desc.rst 2020-12-10 00:06:07.000000000 +0100
+++ new/charliecloud-0.23/doc/ch-build_desc.rst 2021-03-01 22:54:16.000000000 +0100
@@ -20,14 +20,18 @@
Supported builders, unprivileged:
- * :code:`buildah`: Buildah in "rootless" mode with no setuid helpers, using
- :code:`ch-run` (via :code:`ch-run-oci`) for :code:`RUN` instructions. This
- requires Buildah v1.10.1+; see the install instructions.
-
* :code:`ch-image`: Our internal builder.
Supported builders, privileged:
+ * :code:`docker`: Docker.
+
+Experimental builders (i.e., the code is there but not tested much):
+
+ * :code:`buildah`: Buildah in "rootless" mode with no setuid helpers, using
+ :code:`ch-run` (via :code:`ch-run-oci`) for :code:`RUN` instructions. This
+ mode is fully unprivileged.
+
* :code:`buildah-runc`: Buildah in "rootless" mode with setuid
helpers, using the default :code:`runc` for :code:`RUN` instructions.
@@ -35,8 +39,6 @@
using :code:`ch-run` (via :code:`ch-run-oci`) for :code:`RUN`
instructions.
- * :code:`docker`: Docker.
-
Specifying the builder, in descending order of priority:
:code:`-b`, :code:`--builder BUILDER`
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/charliecloud-0.22/doc/ch-grow.rst new/charliecloud-0.23/doc/ch-grow.rst
--- old/charliecloud-0.22/doc/ch-grow.rst 2020-04-15 21:31:09.000000000 +0200
+++ new/charliecloud-0.23/doc/ch-grow.rst 1970-01-01 01:00:00.000000000 +0100
@@ -1,8 +0,0 @@
-:orphan:
-
-ch-grow man page
-++++++++++++++++
-
-.. include:: ./ch-grow_desc.rst
-.. include:: ./bugs.rst
-.. include:: ./see_also.rst
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/charliecloud-0.22/doc/ch-grow_desc.rst new/charliecloud-0.23/doc/ch-grow_desc.rst
--- old/charliecloud-0.22/doc/ch-grow_desc.rst 2020-12-10 00:22:56.000000000 +0100
+++ new/charliecloud-0.23/doc/ch-grow_desc.rst 1970-01-01 01:00:00.000000000 +0100
@@ -1,4 +0,0 @@
-Synopsis
-========
-
-Deprecated name for :code:`ch-image`; will be removed in version 0.23.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/charliecloud-0.22/doc/ch-image_desc.rst new/charliecloud-0.23/doc/ch-image_desc.rst
--- old/charliecloud-0.22/doc/ch-image_desc.rst 2021-02-05 21:09:13.000000000 +0100
+++ new/charliecloud-0.23/doc/ch-image_desc.rst 2021-04-09 21:49:04.000000000 +0200
@@ -8,6 +8,7 @@
$ ch-image [...] list
$ ch-image [...] pull [...] IMAGE_REF [IMAGE_DIR]
$ ch-image [...] push [--image DIR] IMAGE_REF [DEST_REF]
+ $ ch-image [...] reset
$ ch-image [...] storage-path
$ ch-image { --help | --version | --dependencies }
@@ -290,6 +291,11 @@
Use the unpacked image located at :code:`DIR` rather than an image in the
storage directory named :code:`IMAGE_REF`.
+:code:`reset`
+-------------
+
+Delete all images and cache from ch-image builder storage.
+
:code:`storage-path`
--------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/charliecloud-0.22/doc/charliecloud.rst new/charliecloud-0.23/doc/charliecloud.rst
--- old/charliecloud-0.22/doc/charliecloud.rst 2020-12-10 00:06:07.000000000 +0100
+++ new/charliecloud-0.23/doc/charliecloud.rst 2021-03-16 18:10:00.000000000 +0100
@@ -17,7 +17,6 @@
ch-checkns(1),
ch-dir2squash(1),
ch-fromhost(1),
-ch-grow(1),
ch-image(1),
ch-mount(1),
ch-pull2dir(1),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/charliecloud-0.22/doc/command-usage.rst new/charliecloud-0.23/doc/command-usage.rst
--- old/charliecloud-0.22/doc/command-usage.rst 2020-12-10 00:06:07.000000000 +0100
+++ new/charliecloud-0.23/doc/command-usage.rst 2021-03-16 18:10:00.000000000 +0100
@@ -54,13 +54,6 @@
.. include:: ./ch-builder2squash_desc.rst
-ch-grow
-+++++++
-
-Deprecated name for :code:`ch-image`; will be removed in version 0.23.
-
-.. include:: ./ch-grow_desc.rst
-
ch-fromhost
+++++++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/charliecloud-0.22/doc/conf.py new/charliecloud-0.23/doc/conf.py
--- old/charliecloud-0.22/doc/conf.py 2020-12-10 00:06:07.000000000 +0100
+++ new/charliecloud-0.23/doc/conf.py 2021-03-16 18:10:00.000000000 +0100
@@ -262,9 +262,6 @@
("ch-dir2squash", "ch-dir2squash",
"Create a SquashFS file from an image directory",
[], 1),
- ("ch-grow", "ch-grow",
- 'Deprecated name for "ch-image"; will be removed in version 0.23.',
- [], 1),
("ch-fromhost", "ch-fromhost",
"Inject files from the host into an image directory, with various magic",
[], 1),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/charliecloud-0.22/doc/dev.rst new/charliecloud-0.23/doc/dev.rst
--- old/charliecloud-0.22/doc/dev.rst 2020-12-09 01:49:33.000000000 +0100
+++ new/charliecloud-0.23/doc/dev.rst 2021-03-16 18:10:00.000000000 +0100
@@ -71,11 +71,13 @@
Peer review
-----------
-**Issues and pull requests.** The standard workflow is to introduce a
-change in an issue, get consensus on what to do, and then create a `pull
+**Issues and pull requests.** The standard workflow is to introduce a change
+in an issue, get consensus on what to do, and then create a *draft* `pull
request <https://git-scm.com/book/en/v2/GitHub-Contributing-to-a-Project>`_
-(PR) for the implementation. The issue, not the PR, should be tagged and
-milestoned so a given change shows up only once in the various views.
+(PR) for the implementation.
+
+The issue, not the PR, should be tagged and milestoned so a given change shows
+up only once in the various views.
If consensus is obtained through other means (e.g., in-person discussion),
then open a PR directly. In this case, the PR should be tagged and milestoned,
@@ -105,22 +107,24 @@
log). Instead, use "addresses", and we'll edit the keywords into the commit
message(s) at merge time if needed.
-**PR review procedure.** When your PR is ready for review �����which may or may
-not be when you want it considered for merging ��� do one or both of:
+**PR review procedure.** When your draft PR is ready for review �����which may or
+may not be when you want it considered for merging! ��� do one or both of:
* Request review from the person(s) you want to look at it. If you think it
may be ready for merge, that should include the project lead. The purpose of
- requsting review is so the person is notified you need their help.
+ requesting review is so the person is notified you need their help.
* If you think it may be ready to merge (even if you're not sure), then also
- tag the PR :code:`ready to merge`. The purpose of this is so the project
- lead can see which PRs are ready to consider for merging. If the project
- lead decides it's ready, they will merge; otherwise, they'll untag.
+ mark the PR "ready to review". The purpose of this is so the project lead
+ can see which PRs are ready to consider for merging (green icon) and which
+ are not (gray icon). If the project lead decides it's ready, they will
+ merge; otherwise, they'll change it back to draft.
In both cases, the person from whom you requested review now owns the branch,
and you should stop work on it unless and until you get it back.
-Do not hesitate to pester your reviewer if you haven't heard back promptly.
+Do not hesitate to pester your reviewer if you haven't heard back promptly,
+say within 24 hours.
*Special case 1:* Often, the review consists of code changes, and the reviewer
will want you to assess those changes. GitHub doesn't let you request review
@@ -280,12 +284,6 @@
error. Often (or usually) there is a documentation or usability bug that
caused the "user error".*
-:code:`ready to merge`
- PRs only. Adding this tag speculates that the PR is complete and requests it
- be considered for merging to master. If the project lead requests changes,
- they'll remove the tag. Re-add it when you're ready to try again. Lead
- removes tag after merging.
-
:code:`wontfix`
We are not going to do this, and we won't merge PRs. Close issue after
tagging, though sometimes you'll want to leave a few days to allow for
@@ -477,7 +475,7 @@
------------
* charliecloud
- * Python 3.4+
+ * Python 3.6+
* Either:
* the provided example :code:`centos7` or :code:`centos8` image
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/charliecloud-0.22/examples/spark/slurm.sh new/charliecloud-0.23/examples/spark/slurm.sh
--- old/charliecloud-0.22/examples/spark/slurm.sh 2020-04-15 21:31:09.000000000 +0200
+++ new/charliecloud-0.23/examples/spark/slurm.sh 2021-03-16 18:10:00.000000000 +0100
@@ -59,6 +59,7 @@
SPARK_WORKER_DIR=/tmp/spark
SPARK_LOCAL_IP=127.0.0.1
SPARK_MASTER_HOST=${master_ip}
+JAVA_HOME=/usr/lib/jvm/default-java/
EOF
mysecret=$(cat /dev/urandom | tr -dc '0-9a-f' | head -c 48)
cat <<EOF > "${conf}/spark-defaults.sh"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/charliecloud-0.22/examples/spark/test.bats new/charliecloud-0.23/examples/spark/test.bats
--- old/charliecloud-0.22/examples/spark/test.bats 2020-11-17 21:35:54.000000000 +0100
+++ new/charliecloud-0.23/examples/spark/test.bats 2021-03-16 18:10:00.000000000 +0100
@@ -31,22 +31,21 @@
spark_config=$spark_dir
spark_log=/tmp/sparklog
if [[ $ch_multinode ]]; then
- # Use the last non-loopback IP address. This is a barely educated
- # guess and shouldn't be relied on for real code, but hopefully it
- # works for testing.
- master_ip=$( ip -o -f inet addr show \
- | grep -F 'scope global' \
- | tail -1 \
- | sed -r 's/^.+inet ([0-9.]+).+/\1/')
+ # We use hostname to determine the interface to use for this test,
+ # avoiding complicated logic determining which interface is the HSN.
+ # In many environments this likely results in the tests running over
+ # the slower management interface, which is fine for testing, but
+ # should be avoided for large scale runs.
+ master_host="$(hostname)"
# Start Spark workers using pdsh. We would really prefer to do this
# using srun, but that doesn't work; see issue #230.
command -v pdsh >/dev/null 2>&1 || pedantic_fail "pdsh not in path"
pernode="pdsh -R ssh -w ${SLURM_NODELIST} -- PATH='${PATH}'"
else
- master_ip=127.0.0.1
+ master_host=localhost
pernode=
fi
- master_url="spark://${master_ip}:7077"
+ master_url="spark://${master_host}:7077"
master_log="${spark_log}/*master.Master*.out"
}
@@ -58,12 +57,15 @@
[[ $output = 'u=rwx,g=,o=' ]]
# create config
$ch_mpirun_node mkdir -p "$spark_config"
+ # We set JAVA_HOME in the spark environment file as this appears to be the
+ # idiomatic method for ensuring spark finds the java install.
tee <<EOF > "${spark_config}/spark-env.sh"
SPARK_LOCAL_DIRS=/tmp/spark
SPARK_LOG_DIR=$spark_log
SPARK_WORKER_DIR=/tmp/spark
SPARK_LOCAL_IP=127.0.0.1
-SPARK_MASTER_HOST=${master_ip}
+SPARK_MASTER_HOST=${master_host}
+JAVA_HOME=/usr/lib/jvm/default-java/
EOF
my_secret=$(cat /dev/urandom | tr -dc '0-9a-f' | head -c 48)
tee <<EOF > "${spark_config}/spark-defaults.conf"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/charliecloud-0.22/lib/base.sh new/charliecloud-0.23/lib/base.sh
--- old/charliecloud-0.22/lib/base.sh 2021-01-27 18:27:08.000000000 +0100
+++ new/charliecloud-0.23/lib/base.sh 2021-03-16 18:10:00.000000000 +0100
@@ -22,7 +22,7 @@
fi
fi
case $CH_BUILDER in
- buildah|buildah-runc|buildah-setuid|ch-image|ch-grow|docker|none)
+ buildah|buildah-runc|buildah-setuid|ch-image|docker|none)
;;
*)
echo "unknown builder: $CH_BUILDER" 1>&2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/charliecloud-0.22/lib/build.py new/charliecloud-0.23/lib/build.py
--- old/charliecloud-0.22/lib/build.py 2021-02-05 21:09:13.000000000 +0100
+++ new/charliecloud-0.23/lib/build.py 2021-04-06 01:51:43.000000000 +0200
@@ -590,7 +590,7 @@
def __init__(self, *args):
super().__init__(*args)
self.key = ch.tree_terminal(self.tree, "WORD")
- value = ch.tree_terminal(self.tree, "LINE")
+ value = ch.tree_terminals_cat(self.tree, "LINE_CHUNK")
if (not value.startswith('"')):
value = '"' + value + '"'
self.value = unescape(value)
@@ -651,8 +651,8 @@
cli.force, cli.no_force_detect)
def str_(self):
- alias = "AS %s" % self.alias if self.alias else ""
- return "%s %s" % (self.base_ref, alias)
+ alias = " AS %s" % self.alias if self.alias else ""
+ return "%s%s" % (self.base_ref, alias)
class Run(Instruction):
@@ -690,19 +690,22 @@
class I_run_shell(Run):
+ # Note re. line continuations and whitespace: Whitespace before the
+ # backslash is passed verbatim to the shell, while the newline and any
+ # whitespace between the newline and baskslash are deleted.
+
def __init__(self, *args):
super().__init__(*args)
- # FIXME: Can't figure out how to remove continuations at parse time.
- cmd = ch.tree_terminal(self.tree, "LINE").replace("\\\n", "")
+ cmd = ch.tree_terminals_cat(self.tree, "LINE_CHUNK")
self.cmd = env.shell + [cmd]
class I_shell(Instruction):
-
+
def __init__(self, *args):
super().__init__(*args)
self.shell = [variables_sub(unescape(i), env.env_build)
for i in ch.tree_terminals(self.tree, "STRING_QUOTED")]
-
+
def str_(self):
return str(self.shell)
@@ -713,7 +716,7 @@
def __init__(self, *args):
super().__init__(*args)
- self.path = variables_sub(ch.tree_terminal(self.tree, "LINE"),
+ self.path = variables_sub(ch.tree_terminals_cat(self.tree, "LINE_CHUNK"),
env.env_build)
def str_(self):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/charliecloud-0.22/lib/charliecloud.py new/charliecloud-0.23/lib/charliecloud.py
--- old/charliecloud-0.22/lib/charliecloud.py 2021-02-05 21:09:13.000000000 +0100
+++ new/charliecloud-0.23/lib/charliecloud.py 2021-04-09 21:49:04.000000000 +0200
@@ -104,7 +104,7 @@
?instruction: _WS? ( arg | copy | env | from_ | run | shell | workdir | uns_forever | uns_yet )
-directive.2: _WS? "#" _WS? DIRECTIVE_NAME "=" LINE _NEWLINES
+directive.2: _WS? "#" _WS? DIRECTIVE_NAME "=" _line _NEWLINES
DIRECTIVE_NAME: ( "escape" | "syntax" )
comment: _WS? _COMMENT_BODY _NEWLINES
_COMMENT_BODY: /#[^\n]*/
@@ -118,7 +118,7 @@
arg_equals: WORD "=" ( WORD | STRING_QUOTED )
env: "ENV"i _WS ( env_space | env_equalses ) _NEWLINES
-env_space: WORD _WS LINE
+env_space: WORD _WS _line
env_equalses: env_equals ( _WS env_equals )*
env_equals: WORD "=" ( WORD | STRING_QUOTED )
@@ -127,16 +127,16 @@
run: "RUN"i _WS ( run_exec | run_shell ) _NEWLINES
run_exec.2: _string_list
-run_shell: LINE
+run_shell: _line
shell: "SHELL"i _WS _string_list _NEWLINES
-workdir: "WORKDIR"i _WS LINE _NEWLINES
+workdir: "WORKDIR"i _WS _line _NEWLINES
-uns_forever: UNS_FOREVER _WS LINE _NEWLINES
+uns_forever: UNS_FOREVER _WS _line _NEWLINES
UNS_FOREVER: ( "EXPOSE"i | "HEALTHCHECK"i | "MAINTAINER"i | "STOPSIGNAL"i | "USER"i | "VOLUME"i )
-uns_yet: UNS_YET _WS LINE _NEWLINES
+uns_yet: UNS_YET _WS _line _NEWLINES
UNS_YET: ( "ADD"i | "CMD"i | "ENTRYPOINT"i | "LABEL"i | "ONBUILD"i )
/// Common ///
@@ -145,15 +145,29 @@
OPTION_KEY: /[a-z]+/
OPTION_VALUE: /[^ \t\n]+/
+// Matching lines in the face of continuations is surprisingly hairy. Notes:
+//
+// 1. The underscore prefix means the rule is always inlined (i.e., removed
+// and children become children of its parent).
+//
+// 2. LINE_CHUNK must not match any characters that _LINE_CONTINUE does.
+//
+// 3. This is very sensitive to the location of repetition. Moving the plus
+// either to the entire regex (i.e., ���/(...)+/���) or outside the regex
+// (i.e., ���/.../+���) gave parse errors.
+//
+_line: ( _LINE_CONTINUE | LINE_CHUNK )+
+LINE_CHUNK: /[^\\\n]+|(\\(?![ \t]+\n))+/
+
HEX_STRING: /[0-9A-Fa-f]+/
-LINE: ( _LINE_CONTINUE | /[^\n]/ )+
WORD: /[^ \t\n=]/+
_string_list: "[" _WS? STRING_QUOTED ( "," _WS? STRING_QUOTED )* _WS? "]"
-_NEWLINES: _WS? "\n"+
-_WS: /[ \t]|\\\n/+
-_LINE_CONTINUE: "\\\n"
+_WSH: /[ \t]/+ // sequence of horizontal whitespace
+_LINE_CONTINUE: "\\" _WSH? "\n" // line continuation
+_WS: ( _WSH | _LINE_CONTINUE )+ // horizontal whitespace w/ line continuations
+_NEWLINES: ( _WS? "\n" )+ // sequence of newlines
%import common.ESCAPED_STRING -> STRING_QUOTED
"""
@@ -667,7 +681,10 @@
try:
tree = class_.parser.parse(s)
except lark.exceptions.UnexpectedInput as x:
- FATAL("image ref syntax, char %d: %s" % (x.column, s))
+ if (x.column == -1):
+ FATAL("image ref syntax, at end: %s" % s)
+ else:
+ FATAL("image ref syntax, char %d: %s" % (x.column, s))
except lark.exceptions.UnexpectedEOF as x:
# We get UnexpectedEOF because of Lark issue #237. This exception
# doesn't have a column location.
@@ -974,11 +991,19 @@
def blob_exists_p(self, digest):
"""Return true if a blob with digest (hex string) exists in the
remote repository, false otherwise."""
+ # Gotchas:
+ #
+ # 1. HTTP 401 means both unauthorized *or* not found, I assume to avoid
+ # information leakage about the presence of stuff one isn't allowed
+ # to see. By the time it gets here, we should be authenticated, so
+ # interpret it as not found.
+ #
+ # 2. Sometimes we get 301 Moved Permanently. It doesn't bubble up to
+ # here because requests.request() follows redirects. However,
+ # requests.head() does not follow redirects, and it seems like a
+ # weird status, so I worry there is a gotcha I haven't figured out.
url = self._url_of("blobs", "sha256:%s" % digest)
- # FIXME: Sometimes we get 301 Moved Permanently. requests.head() doesn't
- # follow redirects (but requests.request("HEAD", ...) does), and I
- # wasn't able to figure out why. So possibly there is some gotcha here.
- res = self.request("HEAD", url, {200,404})
+ res = self.request("HEAD", url, {200,401,404})
return (res.status_code == 200)
def blob_to_file(self, digest, path):
@@ -1062,7 +1087,6 @@
Use current session if there is one, or start a new one if not. If
authentication fails (or isn't initialized), then authenticate and
re-try the request."""
- VERBOSE("%s: %s" % (method, url))
self.session_init_maybe()
VERBOSE("auth: %s" % self.auth)
res = self.request_raw(method, url, statuses | {401}, **kwargs)
@@ -1087,7 +1111,7 @@
Session must already exist. If auth arg given, use it; otherwise, use
object's stored authentication if initialized; otherwise, use no
authentication."""
- DEBUG("%s: %s" % (method, url))
+ VERBOSE("%s: %s" % (method, url))
if (auth is None):
auth = self.auth
try:
@@ -1152,23 +1176,31 @@
@staticmethod
def root_env():
+ if ("CH_GROW_STORAGE" in os.environ):
+ # Avoid surprises if user still has $CH_GROW_STORAGE set (see #906).
+ FATAL("$CH_GROW_STORAGE no longer supported; use $CH_IMAGE_STORAGE")
try:
return os.environ["CH_IMAGE_STORAGE"]
except KeyError:
- try:
- p = os.environ["CH_GROW_STORAGE"]
- WARNING("$CH_GROW_STORAGE is deprecated in favor of $CH_IMAGE_STORAGE")
- WARNING("the old name will be removed in Charliecloud version 0.23")
- return p
- except KeyError:
- return None
+ return None
def manifest_for_download(self, image_ref):
return self.download_cache // ("%s.manifest.json" % image_ref.for_path)
+ def reset(self):
+ if (self.valid_p()):
+ rmtree(self.root)
+ else:
+ FATAL("%s not a builder storage" % (self.root));
+
def unpack(self, image_ref):
return self.unpack_base // image_ref.for_path
+ def valid_p(self):
+ "Return True if storage present and seems valid, False otherwise."
+ return (os.path.isdir(self.unpack_base) and
+ os.path.isdir(self.download_cache))
+
class TarFile(tarfile.TarFile):
@@ -1545,12 +1577,17 @@
return None
def tree_terminals(tree, tname):
- """Yield values of all child terminals of type type_, or empty list if none
+ """Yield values of all child terminals named tname, or empty list if none
found."""
for j in tree.children:
if (isinstance(j, lark.lexer.Token) and j.type == tname):
yield j.value
+def tree_terminals_cat(tree, tname):
+ """Return the concatenated values of all child terminals named tname as a
+ string, with no delimiters. If none, return the empty string."""
+ return "".join(tree_terminals(tree, tname))
+
def unlink(path, *args, **kwargs):
"Error-checking wrapper for os.unlink()."
ossafe(os.unlink, "can't unlink: %s" % path, path)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/charliecloud-0.22/lib/misc.py new/charliecloud-0.23/lib/misc.py
--- old/charliecloud-0.22/lib/misc.py 2021-02-04 00:15:39.000000000 +0100
+++ new/charliecloud-0.23/lib/misc.py 2021-04-09 21:49:04.000000000 +0200
@@ -45,5 +45,11 @@
for img in sorted(imgs):
print(ch.Image_Ref(img))
+def python_path(cli):
+ print(sys.executable)
+
+def reset(cli):
+ ch.storage.reset()
+
def storage_path(cli):
print(ch.storage.root)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/charliecloud-0.22/packaging/vagrant/Vagrantfile new/charliecloud-0.23/packaging/vagrant/Vagrantfile
--- old/charliecloud-0.22/packaging/vagrant/Vagrantfile 2020-12-10 00:06:07.000000000 +0100
+++ new/charliecloud-0.23/packaging/vagrant/Vagrantfile 2021-03-01 22:54:16.000000000 +0100
@@ -196,7 +196,7 @@
EOF
# Install Buildah.
- c.vm.provision "buildah", type: "shell", privileged: false,
+ c.vm.provision "buildah", type: "shell", run: "never", privileged: false,
inline: <<-EOF
set -e
cd /usr/local/src
@@ -328,7 +328,7 @@
user=vagrant
fi
sudo -iu $user -- sh -c "ch-test --pedantic yes -b docker all"
- sudo -iu $user -- sh -c "ch-test --pedantic yes -b buildah all"
+ #sudo -iu $user -- sh -c "ch-test --pedantic yes -b buildah all"
sudo -iu $user -- sh -c "ch-test --pedantic yes -b ch-image all"
EOF
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/charliecloud-0.22/test/build/40_pull.bats new/charliecloud-0.23/test/build/40_pull.bats
--- old/charliecloud-0.22/test/build/40_pull.bats 2021-02-05 21:09:13.000000000 +0100
+++ new/charliecloud-0.23/test/build/40_pull.bats 2021-03-13 01:13:51.000000000 +0100
@@ -285,6 +285,8 @@
# nVidia NGC: https://ngc.nvidia.com
# FIXME: 96 MiB unpacked; also kind of slow
+ # FIXME: Can't pull this image with LC_ALL=C (issue #970).
+ LC_ALL=en_US.utf-8 \
ch-image pull nvcr.io/hpc/foldingathome/fah-gpu:7.6.21
# Things not here (yet?):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/charliecloud-0.22/test/build/50_ch-image.bats new/charliecloud-0.23/test/build/50_ch-image.bats
--- old/charliecloud-0.22/test/build/50_ch-image.bats 2021-02-05 21:09:13.000000000 +0100
+++ new/charliecloud-0.23/test/build/50_ch-image.bats 2021-04-09 21:49:04.000000000 +0200
@@ -63,6 +63,42 @@
[[ $output = *"00_tiny"* ]]
}
+@test 'ch-image reset' {
+ export CH_IMAGE_STORAGE="$BATS_TMPDIR"/reset
+
+ # Ensure our test storage dir doesn't exist yet.
+ [[ ! -e $CH_IMAGE_STORAGE ]]
+
+ # Put an image innit.
+ ch-image pull alpine:3.9
+ ls "$CH_IMAGE_STORAGE"
+
+ # List images; should be only the one we just pulled.
+ run ch-image list
+ echo "$output"
+ [[ $status -eq 0 ]]
+ [[ $output = "alpine:3.9" ]]
+
+ # Reset.
+ ch-image reset
+
+ # Image storage directory should be gone.
+ ls "$CH_IMAGE_STORAGE" || true
+ [[ ! -e $CH_IMAGE_STORAGE ]]
+
+ # List images; should error with not found.
+ run ch-image list
+ echo "$output"
+ [[ $status -eq 1 ]]
+ [[ $output = *"$CH_IMAGE_STORAGE/img: No such file or directory"* ]]
+
+ # Reset again; should error.
+ run ch-image reset
+ echo "$output"
+ [[ $status -eq 1 ]]
+ [[ $output = *"$CH_IMAGE_STORAGE not a builder storage"* ]]
+}
+
@test 'ch-image storage-path' {
run ch-image storage-path
echo "$output"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/charliecloud-0.22/test/build/50_dockerfile.bats new/charliecloud-0.23/test/build/50_dockerfile.bats
--- old/charliecloud-0.22/test/build/50_dockerfile.bats 2021-02-05 21:09:13.000000000 +0100
+++ new/charliecloud-0.23/test/build/50_dockerfile.bats 2021-04-06 01:51:43.000000000 +0200
@@ -1,5 +1,6 @@
load ../common
+
@test 'Dockerfile: syntax quirks' {
# These should all yield an output image, but we don't actually care about
# it, so re-use the same one.
@@ -40,9 +41,119 @@
# multiple before
# tab before
EOF
+
echo "$output"
[[ $status -eq 0 ]]
[[ $(echo "$output" | grep -Fc 'comment') -eq 6 ]]
+
+ # Whitespace and newlines (turn on whitespace highlighting in your editor):
+ run ch-image build -t syntax-quirks -f - . <<'EOF'
+FROM 00_tiny
+
+# trailing whitespace: shell sees it verbatim
+RUN true
+
+# whitespace-only line: ignored
+
+# two in a row
+
+
+
+# line continuation, no whitespace: shell sees one word
+RUN echo test1\
+a
+# two in a row
+RUN echo test1\
+b\
+c
+
+# whitespace before line continuation: shell sees whitespace verbatim
+RUN echo test2 \
+a
+# two in a row
+RUN echo test2 \
+b \
+c
+
+# whitespace after line continuation: shell sees one word
+RUN echo test3\
+a
+# two in a row
+RUN echo test3\
+b\
+c
+
+# whitespace before & after line continuation: shell sees before only
+RUN echo test4 \
+a
+# two in a row
+RUN echo test4 \
+b \
+c
+
+# whitespace on continued line: shell sees continued line's whitespace
+RUN echo test5\
+ a
+# two in a row
+RUN echo test5\
+ b\
+ c
+
+# whitespace-only continued line: shell sees whitespace verbatim
+RUN echo test6\
+ \
+a
+# two in a row
+RUN echo test6\
+ \
+ \
+b
+
+# backslash that is not a continuation: shell sees it verbatim
+RUN echo test\ 7\
+a
+# two in a row
+RUN echo test\ 7\ \
+b
+EOF
+ echo "$output"
+ [[ $status -eq 0 ]]
+ output_expected=$(cat <<'EOF'
+warning: not yet supported, ignored: issue #777: .dockerignore file
+ 1 FROM 00_tiny
+ 4 RUN ['/bin/sh', '-c', 'true ']
+ 13 RUN ['/bin/sh', '-c', 'echo test1a']
+test1a
+ 16 RUN ['/bin/sh', '-c', 'echo test1bc']
+test1bc
+ 21 RUN ['/bin/sh', '-c', 'echo test2 a']
+test2 a
+ 24 RUN ['/bin/sh', '-c', 'echo test2 b c']
+test2 b c
+ 29 RUN ['/bin/sh', '-c', 'echo test3a']
+test3a
+ 32 RUN ['/bin/sh', '-c', 'echo test3bc']
+test3bc
+ 37 RUN ['/bin/sh', '-c', 'echo test4 a']
+test4 a
+ 40 RUN ['/bin/sh', '-c', 'echo test4 b c']
+test4 b c
+ 45 RUN ['/bin/sh', '-c', 'echo test5 a']
+test5 a
+ 48 RUN ['/bin/sh', '-c', 'echo test5 b c']
+test5 b c
+ 53 RUN ['/bin/sh', '-c', 'echo test6 a']
+test6 a
+ 57 RUN ['/bin/sh', '-c', 'echo test6 b']
+test6 b
+ 63 RUN ['/bin/sh', '-c', 'echo test\\ 7a']
+test 7a
+ 66 RUN ['/bin/sh', '-c', 'echo test\\ 7\\ b']
+test 7 b
+grown in 16 instructions: syntax-quirks
+EOF
+)
+ diff -u <(echo "$output_expected") <(echo "$output")
}
@@ -61,7 +172,6 @@
[[ $output = *"can't parse: -:2,1"* ]]
# internal blabber
[[ $output = *"No terminal defined for 'W' at line 2 col 1"* ]]
- [[ $output = *'Expecting: {'* ]]
# Bad long option.
run ch-image build -t foo -f - . <<'EOF'
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package libgda for openSUSE:Factory checked in at 2021-05-21 21:50:17
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libgda (Old)
and /work/SRC/openSUSE:Factory/.libgda.new.2988 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libgda"
Fri May 21 21:50:17 2021 rev:90 rq:894835 version:6.0.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/libgda/libgda.changes 2020-12-01 14:22:11.729554948 +0100
+++ /work/SRC/openSUSE:Factory/.libgda.new.2988/libgda.changes 2021-05-21 21:50:30.454111321 +0200
@@ -1,0 +2,49 @@
+Fri May 21 14:03:48 UTC 2021 - Callum Farmer <gmbr3(a)opensuse.org>
+
+- Fix incorrect Requires tag in glade catalog
+
+-------------------------------------------------------------------
+Wed Feb 10 15:01:53 UTC 2021 - Callum Farmer <gmbr3(a)opensuse.org>
+
+- Update to version 6.0.0:
+ + MySQL: now supports version 8.0
+ + PostgreSQL now support GdaText values, so take care because
+ some SELECT operations concatenating strings return
+ GdaText values instead of strings
+ + Lot of memory leaks fixed
+ + Added a new module named GdaDB to simplify DDL operations
+ + Added database generation from an XML file
+ + Updated internal SQLite3 version
+ + Added "examples" directory as a target to be built
+ + Numerous improvements in CI organization
+ + Documentation reorganisation and porting to the new format
+ + Code modernized for multiple objects
+ + Added new API for GdaConnection object
+ + Added uniform LOG_DOMAIN usage between translation units
+ + Added Uniform debug code generation
+ + Eliminated multiple static global variable
+ + Improved code quality for libgda to use -Werror
+ + Multiple code improvements, formation, and corrections
+ + Batch parsing, should remove spacesa and enters before
+ return next statement
+ + Only PostgreSQL, MySQL and SQLite providers are supported
+ + Improved Meson options name and behavior
+- Remove libgda-mysql-bool.patch: contained in upstream
+- Remove libgda-no-pg_config.patch: contained in upstream
+
+-------------------------------------------------------------------
+Wed Feb 3 15:36:31 UTC 2021 - Callum Farmer <gmbr3(a)opensuse.org>
+
+- Update to version 5.2.10:
+ + MySQL: initial support for JSON type
+ + MySQL: test against 8.0
+ + GdaParser: remove spaces and enters before next statement
+ + GdauiSet: fix gdaui_set_source_get_ref_columns() return value
+ + SqlParser: fix Vala bindings
+ + Vala: added missing variadic methods to VAPI
+ + Removing Python 2 support to use Python 3 by default
+ + Glade catalog and pixmaps installation directory
+ fixed for make distcheck
+- Add libgda-mysql-bool.patch: fixes conflicting types
+
+-------------------------------------------------------------------
Old:
----
libgda-5.2.9.tar.xz
libgda-no-pg_config.patch
New:
----
libgda-6.0.0.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libgda.spec ++++++
++++ 776 lines (skipped)
++++ between /work/SRC/openSUSE:Factory/libgda/libgda.spec
++++ and /work/SRC/openSUSE:Factory/.libgda.new.2988/libgda.spec
++++++ libgda-5.2.9.tar.xz -> libgda-6.0.0.tar.xz ++++++
/work/SRC/openSUSE:Factory/libgda/libgda-5.2.9.tar.xz /work/SRC/openSUSE:Factory/.libgda.new.2988/libgda-6.0.0.tar.xz differ: char 25, line 1
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package anjuta for openSUSE:Factory checked in at 2021-05-21 21:50:16
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/anjuta (Old)
and /work/SRC/openSUSE:Factory/.anjuta.new.2988 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "anjuta"
Fri May 21 21:50:16 2021 rev:114 rq:894782 version:3.34.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/anjuta/anjuta.changes 2020-01-27 20:13:19.128371649 +0100
+++ /work/SRC/openSUSE:Factory/.anjuta.new.2988/anjuta.changes 2021-05-21 21:50:29.730114319 +0200
@@ -1,0 +2,5 @@
+Sun Feb 14 19:42:44 UTC 2021 - Callum Farmer <gmbr3(a)opensuse.org>
+
+- Add libgda-6.patch: support GDA 6
+
+-------------------------------------------------------------------
New:
----
libgda-6.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ anjuta.spec ++++++
--- /var/tmp/diff_new_pack.KjIHuX/_old 2021-05-21 21:50:30.178112464 +0200
+++ /var/tmp/diff_new_pack.KjIHuX/_new 2021-05-21 21:50:30.178112464 +0200
@@ -1,7 +1,7 @@
#
# spec file for package anjuta
#
-# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2021 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -25,6 +25,8 @@
URL: https://wiki.gnome.org/Apps/Anjuta
Source0: https://download.gnome.org/sources/anjuta/3.34/%{name}-%{version}.tar.xz
Source99: %{name}-rpmlintrc
+# PATCH-FIX-UPSTREAM libgda-6.patch gmbr3(a)opensuse.org -- Require and support GDA 6
+Patch0: libgda-6.patch
BuildRequires: autogen
BuildRequires: binutils-devel
BuildRequires: bison
@@ -44,6 +46,7 @@
BuildRequires: translation-update-upstream
BuildRequires: vala
BuildRequires: yelp-tools
+BuildRequires: gnome-common
BuildRequires: pkgconfig(gdk-pixbuf-2.0) >= 2.0.0
BuildRequires: pkgconfig(gdl-3.0) >= 3.5.5
BuildRequires: pkgconfig(gladeui-2.0) >= 3.12.0
@@ -51,7 +54,7 @@
BuildRequires: pkgconfig(gtk+-3.0) >= 3.6.0
BuildRequires: pkgconfig(gtksourceview-3.0) >= 3.0.0
BuildRequires: pkgconfig(libdevhelp-3.0) >= 3.7.5
-BuildRequires: pkgconfig(libgda-5.0) >= 5.0.0
+BuildRequires: pkgconfig(libgda-6.0) >= 6.0.0
BuildRequires: pkgconfig(libgvc)
BuildRequires: pkgconfig(libxml-2.0) >= 2.4.23
BuildRequires: pkgconfig(serf-1)
@@ -62,7 +65,7 @@
Requires: automake
Requires: gettext
# libgda-sqlite is needed by the symbol-db plugin. See bnc#624924.
-Requires: libgda-sqlite
+Requires: libgda-sqlite >= 6.0.0
Requires: libtool
%ifnarch ia64 s390 s390x aarch64 ppc64le
BuildRequires: valgrind-devel
@@ -125,10 +128,12 @@
%lang_package
%prep
-%setup -q
+%autosetup -p1
translation-update-upstream
%build
+export AUTOPOINT='intltoolize --automake --copy'
+autoreconf -fiv
%configure\
--disable-static \
--enable-glade-catalog \
++++++ libgda-6.patch ++++++
From 77bf4308332d3660c136719c5590dd2e882e3f44 Mon Sep 17 00:00:00 2001
From: Ting-Wei Lan <lantw(a)src.gnome.org>
Date: Sat, 22 Sep 2018 14:51:42 +0800
Subject: [PATCH] symbol-db: Fix build with the current libgda master branch
GdaTimestamp has been removed and replaced by GDateTime. The version
number went back to 5.90 and bumped to 5.91 on the libgda master branch.
---
configure.ac | 2 +-
plugins/symbol-db/symbol-db-engine-core.c | 21 +++++++++++++++++++++
2 files changed, 22 insertions(+), 1 deletion(-)
diff --git a/configure.ac b/configure.ac
index eeda3ed3e..569b81fe1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -37,7 +37,7 @@ GTHREAD_REQUIRED=2.22.0
GDK_PIXBUF_REQUIRED=2.0.0
GDA4_REQUIRED=4.2.0
GDA5_REQUIRED=5.0.0
-GDA6_REQUIRED=5.99.0
+GDA6_REQUIRED=6.0.0
LIBXML_REQUIRED=2.4.23
GDL_REQUIRED=3.5.5
LIBWNCK_REQUIRED=2.12
diff --git a/plugins/symbol-db/symbol-db-engine-core.c b/plugins/symbol-db/symbol-db-engine-core.c
index 37d6e048a..c3f0d4f55 100644
--- a/plugins/symbol-db/symbol-db-engine-core.c
+++ b/plugins/symbol-db/symbol-db-engine-core.c
@@ -5443,7 +5443,11 @@ symbol_db_engine_update_project_symbols (SymbolDBEngine *dbe,
G_TYPE_STRING,
G_TYPE_INT,
G_TYPE_INT,
+#ifdef HAVE_GDA6
+ G_TYPE_DATE_TIME,
+#else
GDA_TYPE_TIMESTAMP,
+#endif
G_TYPE_NONE
};
data_model = gda_connection_statement_execute_select_full (priv->db_connection,
@@ -5473,7 +5477,11 @@ symbol_db_engine_update_project_symbols (SymbolDBEngine *dbe,
for (i = 0; i < num_rows; i++)
{
const GValue *value, *value1;
+#ifdef HAVE_GDA6
+ GDateTime *timestamp;
+#else
const GdaTimestamp *timestamp;
+#endif
const gchar *file_name;
gchar *file_abs_path = NULL;
struct tm filetm;
@@ -5530,17 +5538,30 @@ symbol_db_engine_update_project_symbols (SymbolDBEngine *dbe,
}
+#ifdef HAVE_GDA6
+ timestamp = g_value_get_boxed (value1);
+#else
timestamp = gda_value_get_timestamp (value1);
+#endif
/* fill a struct tm with the date retrieved by the string. */
/* string is something like '2007-04-18 23:51:39' */
memset (&filetm, 0, sizeof (struct tm));
+#ifdef HAVE_GDA6
+ filetm.tm_year = g_date_time_get_year (timestamp) - 1900;
+ filetm.tm_mon = g_date_time_get_month (timestamp) - 1;
+ filetm.tm_mday = g_date_time_get_day_of_month (timestamp);
+ filetm.tm_hour = g_date_time_get_hour (timestamp);
+ filetm.tm_min = g_date_time_get_minute (timestamp);
+ filetm.tm_sec = g_date_time_get_second (timestamp);
+#else
filetm.tm_year = timestamp->year - 1900;
filetm.tm_mon = timestamp->month - 1;
filetm.tm_mday = timestamp->day;
filetm.tm_hour = timestamp->hour;
filetm.tm_min = timestamp->minute;
filetm.tm_sec = timestamp->second;
+#endif
/* remove one hour to the db_file_time. */
db_time = mktime (&filetm) - 3600;
--
GitLab
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package gtk4-branding for openSUSE:Factory checked in at 2021-05-21 21:50:16
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gtk4-branding (Old)
and /work/SRC/openSUSE:Factory/.gtk4-branding.new.2988 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gtk4-branding"
Fri May 21 21:50:16 2021 rev:2 rq:894778 version:15.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/gtk4-branding/gtk4-branding.changes 2021-04-14 10:12:04.857605323 +0200
+++ /work/SRC/openSUSE:Factory/.gtk4-branding.new.2988/gtk4-branding.changes 2021-05-21 21:50:28.794118195 +0200
@@ -1,0 +2,6 @@
+Tue May 18 18:20:59 UTC 2021 - Michael Gorse <mgorse(a)suse.com>
+
+- Remove gtk-fallback-icon-theme from gtk4-branding-settings.ini:
+ key no longer exists in gtk 4.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ gtk4-branding.spec ++++++
--- /var/tmp/diff_new_pack.W6PPpg/_old 2021-05-21 21:50:29.534115131 +0200
+++ /var/tmp/diff_new_pack.W6PPpg/_new 2021-05-21 21:50:29.538115114 +0200
@@ -1,7 +1,7 @@
#
-# spec file for package gtk4-branding
+# spec file for package gtk4-branding%{?dash}%{branding_name}
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2021 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -12,7 +12,7 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
++++++ gtk4-branding-settings.ini ++++++
--- /var/tmp/diff_new_pack.W6PPpg/_old 2021-05-21 21:50:29.582114932 +0200
+++ /var/tmp/diff_new_pack.W6PPpg/_new 2021-05-21 21:50:29.582114932 +0200
@@ -11,5 +11,4 @@
gtk-theme-name = Adwaita
gtk-cursor-theme-name = Adwaita
gtk-icon-theme-name = Adwaita
-gtk-fallback-icon-theme = Adwaita
gtk-enable-primary-paste = true
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package gtranslator for openSUSE:Factory checked in at 2021-05-21 21:50:15
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gtranslator (Old)
and /work/SRC/openSUSE:Factory/.gtranslator.new.2988 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gtranslator"
Fri May 21 21:50:15 2021 rev:43 rq:894776 version:40.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/gtranslator/gtranslator.changes 2020-11-11 20:46:01.831624983 +0100
+++ /work/SRC/openSUSE:Factory/.gtranslator.new.2988/gtranslator.changes 2021-05-21 21:50:27.642122967 +0200
@@ -1,0 +2,12 @@
+Mon Apr 5 11:50:38 UTC 2021 - Callum Farmer <gmbr3(a)opensuse.org>
+
+- Update to version 40.0:
+ + Add libhandy widgets to improve the user interface for
+ different sizes.
+ + Add new integration with l10n.gnome.org so now it's possible
+ to reserve a file and upload using the desktop app.
+- Add pkgconfig(libhandy-1) BuildRequires: New dependency.
+- Remove gtranslator-remove-statusbar.patch: merged
+- Add libgda-6.patch: support GDA 6
+
+-------------------------------------------------------------------
Old:
----
gtranslator-3.38.0.tar.xz
gtranslator-remove-statusbar.patch
New:
----
gtranslator-40.0.tar.xz
libgda-6.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ gtranslator.spec ++++++
--- /var/tmp/diff_new_pack.kSckUR/_old 2021-05-21 21:50:28.158120830 +0200
+++ /var/tmp/diff_new_pack.kSckUR/_new 2021-05-21 21:50:28.162120813 +0200
@@ -17,16 +17,16 @@
Name: gtranslator
-Version: 3.38.0
+Version: 40.0
Release: 0
Summary: A gettext po file editor for the GNOME desktop
License: GPL-3.0-or-later
Group: Development/Tools/Other
URL: https://wiki.gnome.org/Apps/Gtranslator
-Source0: https://download.gnome.org/sources/gtranslator/3.38/%{name}-%{version}.tar.…
+Source0: https://download.gnome.org/sources/gtranslator/40/%{name}-%{version}.tar.xz
Source99: gtranslator-rpmlintrc
-#PATCH-FIX-UPSTREAM gtranslator-remove-statusbar.patch glgo#GNOME/gtranslator!70 malcolmlewis(a)opensuse.org -- Remove leftovers of statusbar.
-Patch0: gtranslator-remove-statusbar.patch
+# PATCH-FIX-UPSTREAM libgda-6.patch gmbr3(a)opensuse.org -- Require and support GDA 6
+Patch0: libgda-6.patch
BuildRequires: fdupes
BuildRequires: gettext-tools
BuildRequires: intltool
@@ -45,12 +45,13 @@
BuildRequires: pkgconfig(iso-codes)
BuildRequires: pkgconfig(json-glib-1.0) >= 1.2.0
BuildRequires: pkgconfig(libdazzle-1.0) >= 3.33.90
-BuildRequires: pkgconfig(libgda-5.0)
+BuildRequires: pkgconfig(libgda-6.0) >= 6.0.0
BuildRequires: pkgconfig(libsoup-2.4)
BuildRequires: pkgconfig(libxml-2.0) >= 2.4.12
+BuildRequires: pkgconfig(libhandy-1)
Requires: gsettings-desktop-schemas
Requires: iso-codes
-Requires: libgda-5_0-sqlite
+Requires: libgda-sqlite >= 6.0.0
Obsoletes: gtranslator-devel <= 2.91.7
%description
@@ -92,7 +93,6 @@
%{_datadir}/glib-2.0/schemas/*.gschema.xml
%{_datadir}/icons/hicolor/*/apps/org.gnome.Gtranslator*.svg
%{_datadir}/metainfo/org.gnome.Gtranslator.appdata.xml
-%{_datadir}/pixmaps/gtranslator-*.png
%files doc
%doc AUTHORS MAINTAINERS NEWS THANKS
++++++ gtranslator-3.38.0.tar.xz -> gtranslator-40.0.tar.xz ++++++
++++ 30018 lines of diff (skipped)
++++++ libgda-6.patch ++++++
From 3764a9c0c5f33ff07a3c08664f945a526d12bfa1 Mon Sep 17 00:00:00 2001
From: Callum Farmer <gmbr3(a)opensuse.org>
Date: Mon, 29 Mar 2021 16:46:10 +0100
Subject: [PATCH] Bump gda dependency to 6.0
---
build-aux/flatpak/org.gnome.Gtranslator.json | 8 ++++----
meson.build | 2 +-
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/build-aux/flatpak/org.gnome.Gtranslator.json b/build-aux/flatpak/org.gnome.Gtranslator.json
index 65cb5082..b726a69e 100644
--- a/build-aux/flatpak/org.gnome.Gtranslator.json
+++ b/build-aux/flatpak/org.gnome.Gtranslator.json
@@ -76,9 +76,9 @@
},
{
"name": "libgda",
+ "buildsystem": "meson",
"config-opts": [
- "--enable-json=yes",
- "--enable-system-sqlite=yes"
+ "-Djson=true"
],
"build-options" : {
"env" : {
@@ -89,8 +89,8 @@
"sources": [
{
"type": "archive",
- "url": "http://ftp.gnome.org/pub/GNOME/sources/libgda/5.2/libgda-5.2.9.tar.xz",
- "sha256": "59caed8ca72b1ac6437c9844f0677f8a296d52cfd1c0049116026abfb1d87d9b"
+ "url": "http://ftp.gnome.org/pub/GNOME/sources/libgda/6.0/libgda-6.0.0.tar.xz",
+ "sha256": "995f4b420e666da5c8bac9faf55e7aedbe3789c525d634720a53be3ccf27a670"
}
],
"modules": [
diff --git a/meson.build b/meson.build
index 94734ce2..021ac296 100644
--- a/meson.build
+++ b/meson.build
@@ -109,7 +109,7 @@ gtr_deps = [
gtk_dep,
libhandy_dep,
dependency('libdazzle-1.0', version: '>= 3.33.90'),
- dependency('libgda-5.0'),
+ dependency('libgda-6.0'),
dependency('gio-2.0', version: '>= 2.36.0'),
dependency('gsettings-desktop-schemas'),
dependency('gspell-1', version: '>= 1.2.0'),
--
GitLab
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package gnumeric for openSUSE:Factory checked in at 2021-05-21 21:50:14
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gnumeric (Old)
and /work/SRC/openSUSE:Factory/.gnumeric.new.2988 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gnumeric"
Fri May 21 21:50:14 2021 rev:122 rq:894775 version:1.12.49
Changes:
--------
--- /work/SRC/openSUSE:Factory/gnumeric/gnumeric.changes 2021-04-12 12:39:14.597500313 +0200
+++ /work/SRC/openSUSE:Factory/.gnumeric.new.2988/gnumeric.changes 2021-05-21 21:50:26.862126197 +0200
@@ -1,0 +2,5 @@
+Mon Apr 5 11:48:42 UTC 2021 - Callum Farmer <gmbr3(a)opensuse.org>
+
+- Add libgda-6.patch: support GDA 6
+
+-------------------------------------------------------------------
New:
----
libgda-6.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ gnumeric.spec ++++++
--- /var/tmp/diff_new_pack.uND2cA/_old 2021-05-21 21:50:27.418123895 +0200
+++ /var/tmp/diff_new_pack.uND2cA/_new 2021-05-21 21:50:27.418123895 +0200
@@ -25,6 +25,8 @@
URL: http://www.gnumeric.org/
Source0: https://download.gnome.org/sources/gnumeric/1.12/%{name}-%{version}.tar.xz
Source1: gnumeric-rpmlintrc
+# PATCH-FIX-UPSTREAM libgda-6.patch gmbr3(a)opensuse.org -- Require and support GDA 6
+Patch0: libgda-6.patch
BuildRequires: bison
BuildRequires: docbook-dtds
BuildRequires: fdupes
@@ -44,8 +46,8 @@
#BuildRequires: pkgconfig(gobject-introspection-1.0) >= 1.0.0
BuildRequires: pkgconfig(gthread-2.0) >= 2.38.0
BuildRequires: pkgconfig(gtk+-3.0) >= 3.8.7
-BuildRequires: pkgconfig(libgda-5.0) >= 5.0.0
-BuildRequires: pkgconfig(libgda-ui-5.0) >= 5.0.0
+BuildRequires: pkgconfig(libgda-6.0) >= 6.0.0
+BuildRequires: pkgconfig(libgda-ui-6.0) >= 6.0.0
BuildRequires: pkgconfig(libgoffice-0.10) >= 0.10.47
BuildRequires: pkgconfig(libgsf-1) >= 1.14.33
BuildRequires: pkgconfig(libxml-2.0) >= 2.4.12
@@ -130,7 +132,7 @@
%lang_package
%prep
-%setup -q
+%autosetup -p1
translation-update-upstream
translation-update-upstream po-functions gnumeric-functions
# remove incomplete translations caused by translation-update-upstream (global LINGUAS file, two domains)
++++++ libgda-6.patch ++++++
From 5862048949405f02819bad6a4ff3878dca7f41a9 Mon Sep 17 00:00:00 2001
From: Callum Farmer <gmbr3(a)opensuse.org>
Date: Mon, 29 Mar 2021 17:32:31 +0100
Subject: [PATCH] Bump gda dependency to 6.0.0
---
configure.ac | 2 +-
plugins/gda/plugin-gda.c | 8 ++++----
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/configure.ac b/configure.ac
index 7e87b44b5..63af2f9e8 100644
--- a/configure.ac
+++ b/configure.ac
@@ -298,7 +298,7 @@ AC_ARG_WITH(gda,
fi
)
if test "$try_gda" = true; then
- PKG_CHECK_MODULES(GDA, [libgda-5.0 >= 5.0.0, libgda-ui-5.0 >= 5.0.0],
+ PKG_CHECK_MODULES(GDA, [libgda-6.0 >= 6.0.0, libgda-ui-6.0 >= 6.0.0],
[gda_msg=yes],
[gda_msg="NO. libgda problem"])
if test "$gda_msg" = yes; then
diff --git a/plugins/gda/plugin-gda.c b/plugins/gda/plugin-gda.c
index 3f62a1f03..f8414f7e6 100644
--- a/plugins/gda/plugin-gda.c
+++ b/plugins/gda/plugin-gda.c
@@ -69,9 +69,9 @@ gnm_value_new_from_gda (GValue const *gval,
if (t == GDA_TYPE_TIME) {
GdaTime const *time = gda_value_get_time (gval);
- res = value_new_float ( (time->hour +
- (time->minute +
- time->second / 60.) / 60.) / 24.),
+ res = value_new_float ( (g_date_time_get_hour (time) +
+ (g_date_time_get_minute (time) +
+ g_date_time_get_second (time) / 60.) / 60.) / 24.),
value_set_fmt (res, go_format_default_time ());
return res;
}
@@ -527,7 +527,7 @@ view_data_sources (GnmAction const *action, WorkbookControl *wbc)
{
char *argv[2];
- argv[0] = gda_get_application_exec_path ("gda-control-center");
+ argv[0] = "/usr/bin/env gda-control-center-6.0";
argv[1] = NULL;
if (!g_spawn_async (NULL, argv, NULL, G_SPAWN_SEARCH_PATH, NULL, NULL, NULL, NULL)) {
go_gtk_notice_dialog (wbcg_toplevel (WBC_GTK (wbc)), GTK_MESSAGE_INFO,
--
GitLab
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package nextcloud for openSUSE:Factory checked in at 2021-05-21 21:50:10
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/nextcloud (Old)
and /work/SRC/openSUSE:Factory/.nextcloud.new.2988 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "nextcloud"
Fri May 21 21:50:10 2021 rev:58 rq:894766 version:21.0.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/nextcloud/nextcloud.changes 2021-04-10 15:28:39.754469170 +0200
+++ /work/SRC/openSUSE:Factory/.nextcloud.new.2988/nextcloud.changes 2021-05-21 21:50:24.822134646 +0200
@@ -1,0 +2,53 @@
+Fri May 7 05:52:51 UTC 2021 - ecsos <ecsos(a)opensuse.org>
+
+- Update to 21.0.2
+ - L10n: Add word user in FederatedShareProvider.php (server#26508)
+ - Increase subnet matcher (server#26514)
+ - Limit size of properties to 2048 characters (server#26525)
+ - Fix accessibility issues on log in screen (server#26535)
+ - Fix constraint violation detection in QB Mapper (server#26587)
+ - Bump ssri from 6.0.1 to 6.0.2 (server#26604)
+ - Add force option to app install command (server#26607)
+ - Update root.crl due to revoked news.crt (server#26616)
+ - Do not allow adding file drop shares to your own cloud (server#26621)
+ - Fix empty password check for mail shares (server#26625)
+ - Require read permissions for federated shares (server#26636)
+ - Ensure redis returns bool for hasKey (server#26639)
+ - Make lookup search explicit (server#26641)
+ - Update psalm baseline (server#26653)
+ - Fix broken Expiration test (server#26667)
+ - Do not stop directory listing when ACL is blocking access (server#26677)
+ - Mention MariaDB in MySQL support warning (server#26685)
+ - Make Testcase class compatible with phpunit-9.5 (server#26690)
+ - Explicitly check hex2bin input (server#26694)
+ - Remove undefined parameter, add description (server#26702)
+ - FIx Oracle by testing on Ubuntu 20.04 until oci8.so is available for ��� (server#26703)
+ - Update icewind/smb to 3.4.1 (server#26704)
+ - Bump @nextcloud/dialogs from 3.1.1 to 3.1.2 (server#26733)
+ - Private cannot be final (server#26752)
+ - Fix installer deprecation warnings for PHP 8 (server#26759)
+ - Validate the website field input to be a valid URL (server#26760)
+ - Respect the error level when logging (server#26766)
+ - Improve federated permission handling (server#26770)
+ - No longer add trusted servers on federated share creation (server#26778)
+ - Fix ratelimit template (server#26789)
+ - LDAP: do not bother to search after the last page (server#26797)
+ - Fail when creating new files with an empty path (server#26808)
+ - Only return display name as editable when the user backend allows it (server#26815)
+ - Do not try to contact lookup server if not needed (server#26823)
+ - Only perform login check during ownership transfer for encryption (server#26863)
+ - Fix creating vcards with multiple string values (server#26865)
+ - L10n: Spelling unification (server#26881)
+ - Remove self setting checking which can not be set anymore (activity#574)
+ - Ensure link names are unique for accessibility, thanks @nickvergessen, fix #575 (activity#578)
+ - Use PNG images in daily activity summary emails (activity#584)
+ - Fix accessibility issues in PDF pt. II (example-files#18)
+ - Fix admin notification api (notifications#929)
+ - Only push delete-push to devices that also got the notification (notifications#938)
+ - Move counting storage statistics to the background (serverinfo#298)
+ - Hide squashfs and overlay-FS from the overview (serverinfo#304)
+ - Add download button in actions menu (viewer#849)
+ - Limit scope of the icon white overwrite (viewer#858)
+ - Fixes for naughty filenames (viewer#869)
+
+-------------------------------------------------------------------
Old:
----
nextcloud-21.0.1.tar.bz2
New:
----
nextcloud-21.0.2.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ nextcloud.spec ++++++
--- /var/tmp/diff_new_pack.kP7tNA/_old 2021-05-21 21:50:26.522127605 +0200
+++ /var/tmp/diff_new_pack.kP7tNA/_new 2021-05-21 21:50:26.522127605 +0200
@@ -47,7 +47,7 @@
%endif
Name: nextcloud
-Version: 21.0.1
+Version: 21.0.2
Release: 0
Summary: File hosting service
License: AGPL-3.0-only
++++++ nextcloud-21.0.1.tar.bz2 -> nextcloud-21.0.2.tar.bz2 ++++++
/work/SRC/openSUSE:Factory/nextcloud/nextcloud-21.0.1.tar.bz2 /work/SRC/openSUSE:Factory/.nextcloud.new.2988/nextcloud-21.0.2.tar.bz2 differ: char 11, line 1
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package calibre for openSUSE:Factory checked in at 2021-05-21 21:50:09
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/calibre (Old)
and /work/SRC/openSUSE:Factory/.calibre.new.2988 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "calibre"
Fri May 21 21:50:09 2021 rev:254 rq:894763 version:5.18.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/calibre/calibre.changes 2021-05-01 00:46:44.703439616 +0200
+++ /work/SRC/openSUSE:Factory/.calibre.new.2988/calibre.changes 2021-05-21 21:50:20.802151296 +0200
@@ -1,0 +2,42 @@
+Fri May 21 10:57:36 UTC 2021 - ecsos <ecsos(a)opensuse.org>
+
+- Update to 5.18.0
+ * New Features
+ - Content server viewer: Improved search functionality
+ Searching can now be done for whole words and regular
+ expressions. And all search results are listed at once with
+ some context for easy navigation.
+ - E-book viewer: Allow fullscreening the image popup
+ - E-book viewer: Allow expanding/collapsing all items in the
+ Table of Contents at a particular level by right clicking on
+ one item of that level and choosing the option to
+ expand/collapse
+ - E-book viewer: Add shortcuts shift+home and shift+end to
+ extend current selection to start/end of line
+ - Book details: When creating rules to convert identifiers to
+ URLs allow using {id_unquoted} to avoid quoting the
+ identifier value
+ - Review downloaded metadata: Allow double clicking on a cover
+ to see it at a larger size
+ - Annotations browser: Add a Refresh button
+ * Bug Fixes
+ - Edit book: Fix ctrl-clicking on a class name jumping to the
+ wrong CSS rule if the stylesheet contains top level comments
+ - Fix search and replace on identifiers not working if the
+ replaced value has colons
+ - Annotations browser: Sort the entries in order of position in
+ book
+ - ToC editor: Dark mode: Fix colors in location selection panel
+ not dark
+ - E-book viewer: Fix right or shift-clicking to extend
+ selection not shrinking selection when the click is inside
+ the selection
+ - Avoid spurious errors on multiple simultaneous calibre
+ launches
+ - E-book viewer: Ignore mouse scroll events that would turn
+ pages when editing notes
+ - E-book viewer: Fix sorting bookmarks by title not working
+ - Windows WPD driver: Fix an error reading the filesystem on
+ some MTP based devices
+
+-------------------------------------------------------------------
@@ -4 +46 @@
-- Update to 1.17.0
+- Update to 5.17.0
@@ -51 +93 @@
-- Update to 1.16.1
+- Update to 5.16.1
Old:
----
calibre-5.17.0.tar.xz
calibre-5.17.0.tar.xz.sig
New:
----
calibre-5.18.0.tar.xz
calibre-5.18.0.tar.xz.sig
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ calibre.spec ++++++
--- /var/tmp/diff_new_pack.ivYIy2/_old 2021-05-21 21:50:23.058141953 +0200
+++ /var/tmp/diff_new_pack.ivYIy2/_new 2021-05-21 21:50:23.062141936 +0200
@@ -17,7 +17,7 @@
Name: calibre
-Version: 5.17.0
+Version: 5.18.0
Release: 0
Summary: EBook Management Application
License: GPL-3.0-only
++++++ calibre-5.17.0.tar.xz -> calibre-5.18.0.tar.xz ++++++
/work/SRC/openSUSE:Factory/calibre/calibre-5.17.0.tar.xz /work/SRC/openSUSE:Factory/.calibre.new.2988/calibre-5.18.0.tar.xz differ: char 25, line 1
1
0