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
March 2018
- 1 participants
- 2685 discussions
Hello community,
here is the log from the commit of package patterns-hpc for openSUSE:Factory checked in at 2018-03-28 10:33:30
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/patterns-hpc (Old)
and /work/SRC/openSUSE:Factory/.patterns-hpc.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "patterns-hpc"
Wed Mar 28 10:33:30 2018 rev:3 rq:591620 version:20180226
Changes:
--------
--- /work/SRC/openSUSE:Factory/patterns-hpc/patterns-hpc.changes 2018-03-09 10:42:31.203486416 +0100
+++ /work/SRC/openSUSE:Factory/.patterns-hpc.new/patterns-hpc.changes 2018-03-28 10:33:32.940368109 +0200
@@ -1,0 +2,20 @@
+Tue Mar 27 11:23:58 UTC 2018 - cgoll(a)suse.com
+
+- removed mvapich-psm package as requires for hpc_library and
+ mvapich2-psm2 is only recommended for x86_64 (bsc#1087038)
+- removed tau libraries and parallel netcdf-devel libraries
+
+-------------------------------------------------------------------
+Mon Mar 26 16:51:36 UTC 2018 - eich(a)suse.com
+
+- Prepended HPC to 'Summary' tags to make sure
+ entries are nicely sorted on YaST.
+- Made sure entries were brief (bsc1086828).
+
+-------------------------------------------------------------------
+Mon Mar 26 10:11:06 UTC 2018 - cgoll(a)suse.com
+
+- made compute node pattern visible (bsc#1086828)
+- fixed typos
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ patterns-hpc.spec ++++++
--- /var/tmp/diff_new_pack.2JuQvR/_old 2018-03-28 10:33:33.456349551 +0200
+++ /var/tmp/diff_new_pack.2JuQvR/_new 2018-03-28 10:33:33.460349406 +0200
@@ -19,7 +19,7 @@
Name: patterns-hpc
Version: 20180226
Release: 0
-Summary: Patterns for Installation (HPC patterns)
+Summary: Source Package for HPC Patterns
License: MIT
Group: Metapackages
Url: https://github.com/openSUSE/patterns
@@ -31,20 +31,21 @@
ExclusiveArch: x86_64 aarch64
%description
-This is an internal package that is used to create the patterns as part
-of the installation source setup. Installation of this package does
-not make sense.
-
-This particular package contains all the HPC related patterns
+This is an internal package that is used to create the patterns as part of
+the installation source setup. Installation of this package does not make
+sense.
+This particular package contains all the HPC related patterns.
################################################################################
%package compute_node
%pattern_serverfunctions
-Summary: HPC compute node
+Summary: HPC Basic Compute Node
Group: Metapackages
Provides: pattern() = hpc_compute_node
Provides: pattern-icon() = pattern-generic
+Provides: pattern-visible()
+
Requires: nfs-client
Requires: openssh
@@ -65,17 +66,18 @@
Recommends: perl-genders
%description compute_node
-A compute node has a minmal software image and mainly runs simultion programs. Services on this node should be reduced to a bare minimum and the node *must* be installed in a automatic manner. A basset of numerical libraries should also be installed.
+A compute node has a minimal software image and mainly runs simulation programs. Services on this node should be reduced to a bare minimum and the node *must* be installed in a automatic manner.
+The pattern HPC libraries should also be installed.
%files compute_node
%dir %{_defaultdocdir}/patterns
-%{_defaultdocdir}/patterns/patterns-hpc-compute-node.txt
+%{_defaultdocdir}/patterns/patterns-hpc-compute_node.txt
################################################################################
%package libraries
%pattern_serverfunctions
-Summary: HPC modularized libraries
+Summary: HPC modularized Libraries
Group: Metapackages
Provides: pattern() = hpc_libraries
Provides: pattern-icon() = pattern-generic
@@ -87,7 +89,8 @@
%include %{SOURCE1}
%description libraries
-This package provides all the modularized libraries so that they can be used in a hpc environment. Especially these libariries allows you to install a mpi enabled libarary for different mpi libraries.
+This package provides all the modularized libraries so that they can be used in an HPC environment. Especially these libraries allows you to install several MPI flavors in parallel.
+In order to use this libraries you have them to load first via the module command.
%files libraries
%dir %{_defaultdocdir}/patterns
@@ -95,8 +98,8 @@
################################################################################
%package development_node
-%pattern_serverfunctions
-Summary: Packages needed to be able to develop HPC Apps
+%pattern_development
+Summary: HPC Development Packages
Group: Metapackages
Provides: pattern() = hpc_development_node
Provides: pattern-icon() = pattern-basis-devel
@@ -134,11 +137,12 @@
%include %{SOURCE2}
%description development_node
-This package provides all the relevant packages for developing HPC applications. It depends on the hpc-compute node and adds additionally the compilers and includes also the relevant managment packages.
+This package provides all the relevant packages for developing HPC applications.
+It depends on the HPC libraries and adds additionally the compilers and includes also the relevant management packages.
%files development_node
%dir %{_defaultdocdir}/patterns
-%{_defaultdocdir}/patterns/patterns-hpc-development-node.txt
+%{_defaultdocdir}/patterns/patterns-hpc-development_node.txt
%prep
@@ -146,7 +150,7 @@
%install
mkdir -p "%{buildroot}%{_defaultdocdir}/patterns"
-for pack in patterns-hpc-compute-node patterns-hpc-libraries patterns-hpc-development-node; do
+for pack in patterns-hpc-compute_node patterns-hpc-libraries patterns-hpc-development_node; do
echo "This file marks the pattern $pack in version %{version} to be installed." \
>"%{buildroot}%{_defaultdocdir}/patterns/${pack}.txt"
done
++++++ devel-inc.txt ++++++
--- /var/tmp/diff_new_pack.2JuQvR/_old 2018-03-28 10:33:33.492348256 +0200
+++ /var/tmp/diff_new_pack.2JuQvR/_new 2018-03-28 10:33:33.492348256 +0200
@@ -1,8 +1,11 @@
Requires: mpich-gnu-hpc-devel
Requires: mpich-ofi-gnu-hpc-devel
Requires: mvapich2-gnu-hpc-devel
-Requires: mvapich2-psm2-gnu-hpc-devel
Requires: openmpi2-gnu-hpc-devel
+%ifarch x86_64
+Recommends: mvapich2-psm2-gnu-hpc-devel
+Recommends: mvapich2-psm2-gnu-hpc-doc
+%endif
Recommends: gsl_serial-devel
Recommends: metis_serial-devel
Recommends: python3-numpy-devel
@@ -19,22 +22,19 @@
Recommends: netcdf-gnu-mpich-hpc-devel
Recommends: netcdf-gnu-mvapich2-hpc-devel
Recommends: netcdf-gnu-openmpi2-hpc-devel
-Recommends: netcdf-gnu-fortran-gnu-gnu-mpic
Recommends: libopenblas-gnu-hpc-devel
Recommends: libopenblas-pthreads-gnu-hpc-devel
Recommends: libblacs2-gnu-mpich-hpc-devel
Recommends: libblacs2-gnu-mvapich2-hpc-devel
Recommends: libblacs2-gnu-openmpi2-hpc-devel
-Recommends: libnetcdf-gnu-mvapich2-hpc-devel
+Recommends: libnetcdf-cxx4-gnu-hpc-devel
Recommends: petsc-gnu-mpich-hpc-devel
Recommends: petsc-gnu-mvapich2-hpc-devel
Recommends: petsc-gnu-openmpi2-hpc-devel
+Recommends: petsc-doc
Recommends: libscalapack2-gnu-mpich-hpc-devel
Recommends: libscalapack2-gnu-mvapich2-hpc-devel
Recommends: libscalapack2-gnu-openmpi2-hpc-devel
-Recommends: tau-gnu-mvapich2-hpc-devel
-Recommends: tau-gnu-openmpi2-hpc-devel
-Recommends: mvapich2-psm-gnu-hpc-devel
Recommends: python3-numpy-gnu-hpc-devel
Recommends: mpiP-gnu-mpich-hpc
Recommends: mpiP-gnu-mvapich2-hpc
@@ -43,7 +43,4 @@
Recommends: lua-lmod-doc
Recommends: hwloc-doc
Recommends: luaposix-doc
-Recommends: petsc-doc
Recommends: mvapich2-gnu-hpc-doc
-Recommends: mvapich2-psm-gnu-hpc-doc
-Recommends: mvapich2-psm2-gnu-hpc-doc
++++++ library-inc.txt ++++++
--- /var/tmp/diff_new_pack.2JuQvR/_old 2018-03-28 10:33:33.516347393 +0200
+++ /var/tmp/diff_new_pack.2JuQvR/_new 2018-03-28 10:33:33.516347393 +0200
@@ -5,7 +5,6 @@
Recommends: superlu-gnu
Recommends: libfftw3-gnu-hpc
Recommends: libhdf5-gnu-hpc
-Recommends: libhdf5hl_fortran100-hpc
Recommends: libhdf5_cpp-gnu-hpc
Recommends: libhdf5_fortran-gnu-hpc
Recommends: libhdf5_hl-gnu-hpc
@@ -17,8 +16,12 @@
Requires: mpich-gnu-hpc
Requires: mpich-ofi-gnu-hpc
Requires: mvapich2-gnu-hpc
-Requires: mvapich2-psm2-gnu-hpc
Requires: openmpi2-gnu-hpc
+# Just have this two transport on x86_64, to besure to breack anything
+# only recommend them
+%ifarch x86_64
+Recommends: mvapich2-psm2-gnu-hpc
+%endif
# Now the mpi dependend recommends
Recommends: libblacs2-gnu-mpich-hpc
Recommends: libblacs2-gnu-mvapich2-hpc
@@ -51,10 +54,7 @@
Recommends: libscalapack2-gnu-mpich-hpc
Recommends: libscalapack2-gnu-mvapich2-hpc
Recommends: libscalapack2-gnu-openmpi2-hpc
-Recommends: tau-gnu-mvapich2-hpc
-Recommends: tau-gnu-openmpi2-hpc
Recommends: libnetcdf-cxx4-gnu-hpc
-Recommends: mvapich2-psm-gnu-hpc
Recommends: python3-numpy-gnu-hpc
Recommends: papi-hpc
1
0
Hello community,
here is the log from the commit of package gsequencer for openSUSE:Factory checked in at 2018-03-28 10:33:28
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gsequencer (Old)
and /work/SRC/openSUSE:Factory/.gsequencer.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gsequencer"
Wed Mar 28 10:33:28 2018 rev:10 rq:591613 version:1.4.24
Changes:
--------
--- /work/SRC/openSUSE:Factory/gsequencer/gsequencer.changes 2018-03-12 12:13:52.802852414 +0100
+++ /work/SRC/openSUSE:Factory/.gsequencer.new/gsequencer.changes 2018-03-28 10:33:29.872478450 +0200
@@ -1,0 +2,6 @@
+Mon Mar 26 20:44:49 UTC 2018 - jkraehemann(a)gmail.com
+
+- New upstream v1.4.24 minor improvements. Refactored startup
+ process and improved thread-safety.
+
+-------------------------------------------------------------------
Old:
----
gsequencer-1.4.21.tar.gz
New:
----
gsequencer-1.4.24.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ gsequencer.spec ++++++
--- /var/tmp/diff_new_pack.CGQAzz/_old 2018-03-28 10:33:30.640450829 +0200
+++ /var/tmp/diff_new_pack.CGQAzz/_new 2018-03-28 10:33:30.640450829 +0200
@@ -18,7 +18,7 @@
%define libagssonumber 1
%define libgsequencersonumber 0
Name: gsequencer
-Version: 1.4.21
+Version: 1.4.24
Release: 0
Summary: Audio processing engine
License: GPL-3.0+ AND AGPL-3.0+ AND GFDL-1.3
++++++ gsequencer-1.4.21.tar.gz -> gsequencer-1.4.24.tar.gz ++++++
++++ 6675 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package python-tabulate for openSUSE:Factory checked in at 2018-03-28 10:33:25
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-tabulate (Old)
and /work/SRC/openSUSE:Factory/.python-tabulate.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-tabulate"
Wed Mar 28 10:33:25 2018 rev:2 rq:591612 version:0.8.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-tabulate/python-tabulate.changes 2017-04-24 09:49:38.708647708 +0200
+++ /work/SRC/openSUSE:Factory/.python-tabulate.new/python-tabulate.changes 2018-03-28 10:33:27.264572248 +0200
@@ -1,0 +2,17 @@
+Tue Mar 27 13:01:43 UTC 2018 - tchvatal(a)suse.com
+
+- Add python-setuptools to Requires
+
+-------------------------------------------------------------------
+Mon Mar 26 21:24:24 UTC 2018 - matthias.eliasson(a)gmail.com
+
+- Update to 0.8.2
+ * Bugfix release
+- Changes from 0.8.1
+ * Multiline data in several output formats. New latex_raw format.
+ * Column-specific floating point formatting.
+ * Python 3.5 & 3.6 support.
+ * Drop support for Python 2.6, 3.2, 3.3 (should still work).
+- Run spec-cleaner
+
+-------------------------------------------------------------------
Old:
----
tabulate-0.7.7.tar.gz
New:
----
tabulate-0.8.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-tabulate.spec ++++++
--- /var/tmp/diff_new_pack.3H43Cc/_old 2018-03-28 10:33:28.436530096 +0200
+++ /var/tmp/diff_new_pack.3H43Cc/_new 2018-03-28 10:33:28.444529809 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-tabulate
#
-# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,19 +18,20 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-tabulate
-Version: 0.7.7
+Version: 0.8.2
Release: 0
Summary: Pretty-print tabular data in Python
License: MIT
Group: Development/Languages/Python
-Url: https://bitbucket.org/astanin/python-tabulate
-Source: ttps://pypi.io/packages/source/t/tabulate/tabulate-%{version}.tar.gz
-BuildRoot: %{_tmppath}/%{name}-%{version}-build
-BuildRequires: %{python_module devel}
+URL: https://bitbucket.org/astanin/python-tabulate
+Source: https://files.pythonhosted.org/packages/source/t/tabulate/tabulate-%{versio…
+BuildRequires: %{python_module nose}
+BuildRequires: %{python_module setuptools}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
+Requires: python-setuptools
+Suggests: python-wcwidth
BuildArch: noarch
-
%python_subpackages
%description
@@ -38,26 +39,31 @@
The main use cases of the library are:
- * printing small tables without hassle: just one function call, formatting is
- guided by the data itself
- * authoring tabular data for lightweight plain-text markup: multiple output
- formats suitable for further editing or transformation
- * readable presentation of mixed textual and numeric data: smart column
- alignment, configurable number formatting, alignment by a decimal point
+ * printing small tables without hassle: just one function call,
+ formatting is guided by the data itself
+ * authoring tabular data for lightweight plain-text markup: multiple
+ output formats suitable for further editing or transformation
+ * readable presentation of mixed textual and numeric data: smart
+ column alignment, configurable number formatting, alignment by a
+ decimal point
%prep
-%setup -q -n tabulate-%{version}
+%autosetup -n tabulate-%{version}
+
%build
%python_build
%install
%python_install
+%python_expand %fdupes %{buildroot}%{$python_sitelib}
-%python_expand %fdupes -s %{buildroot}%{$python_sitelib}
+%check
+%python_exec setup.py test
%files %{python_files}
-%defattr(-,root,root,-)
-%doc LICENSE README
+%license LICENSE
+%doc README README.rst
+%python3_only %{_bindir}/tabulate
%{python_sitelib}/*
%changelog
++++++ tabulate-0.7.7.tar.gz -> tabulate-0.8.2.tar.gz ++++++
++++ 2807 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package python-oauthlib for openSUSE:Factory checked in at 2018-03-28 10:33:23
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-oauthlib (Old)
and /work/SRC/openSUSE:Factory/.python-oauthlib.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-oauthlib"
Wed Mar 28 10:33:23 2018 rev:20 rq:591610 version:2.0.7
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-oauthlib/python-oauthlib.changes 2017-11-08 15:10:05.454141702 +0100
+++ /work/SRC/openSUSE:Factory/.python-oauthlib.new/python-oauthlib.changes 2018-03-28 10:33:24.732663311 +0200
@@ -1,0 +2,30 @@
+Mon Mar 26 16:17:21 UTC 2018 - arun(a)gmx.de
+
+- specfile:
+ * ran spec-cleaner
+
+-------------------------------------------------------------------
+Sat Mar 24 18:50:04 UTC 2018 - arun(a)gmx.de
+
+- specfile:
+ * update copyright year
+ * updated url
+
+- update to version 2.0.7:
+ * Moved oauthlib into new organization on GitHub.
+ * Include license file in the generated wheel package. (#494)
+ * When deploying a release to PyPI, include the wheel
+ distribution. (#496)
+ * Check access token in self.token dict. (#500)
+ * Added bottle-oauthlib to docs. (#509)
+ * Update repository location in Travis. (#514)
+ * Updated docs for organization change. (#515)
+ * Replace G+ with Gitter. (#517)
+ * Update requirements. (#518)
+ * Add shields for Python versions, license and RTD. (#520)
+ * Fix ReadTheDocs build (#521).
+ * Fixed "make" command to test upstream with local oauthlib. (#522)
+ * Replace IRC notification with Gitter Hook. (#523)
+ * Added Github Releases deploy provider. (#523)
+
+-------------------------------------------------------------------
Old:
----
oauthlib-2.0.6.tar.gz
New:
----
oauthlib-2.0.7.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-oauthlib.spec ++++++
--- /var/tmp/diff_new_pack.RWqtko/_old 2018-03-28 10:33:25.372640294 +0200
+++ /var/tmp/diff_new_pack.RWqtko/_new 2018-03-28 10:33:25.372640294 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-oauthlib
#
-# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,14 +18,13 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-oauthlib
-Version: 2.0.6
+Version: 2.0.7
Release: 0
-Url: https://github.com/idangazit/oauthlib
Summary: A Generic Implementation of the OAuth Request-Signing Logic
License: BSD-3-Clause
Group: Development/Languages/Python
-Source: https://pypi.io/packages/source/o/oauthlib/oauthlib-%{version}.tar.gz
-BuildRoot: %{_tmppath}/%{name}-%{version}-build
+Url: https://github.com/oauthlib/oauthlib
+Source: https://files.pythonhosted.org/packages/source/o/oauthlib/oauthlib-%{versio…
BuildRequires: %{python_module PyJWT}
BuildRequires: %{python_module blinker}
BuildRequires: %{python_module cryptography}
@@ -41,7 +40,6 @@
Requires: python-blinker
Requires: python-cryptography
BuildArch: noarch
-
%python_subpackages
%description
@@ -76,9 +74,9 @@
%check
%python_exec setup.py test
-%files %python_files
-%defattr(-,root,root,-)
-%doc LICENSE README.rst CHANGELOG.rst
+%files %{python_files}
+%license LICENSE
+%doc README.rst CHANGELOG.rst
%{python_sitelib}/*
%changelog
++++++ oauthlib-2.0.6.tar.gz -> oauthlib-2.0.7.tar.gz ++++++
++++ 1617 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package trojita for openSUSE:Factory checked in at 2018-03-28 10:33:21
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/trojita (Old)
and /work/SRC/openSUSE:Factory/.trojita.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "trojita"
Wed Mar 28 10:33:21 2018 rev:9 rq:591601 version:0.7
Changes:
--------
--- /work/SRC/openSUSE:Factory/trojita/trojita.changes 2016-07-18 21:25:08.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.trojita.new/trojita.changes 2018-03-28 10:33:22.864730495 +0200
@@ -1,0 +2,7 @@
+Tue Mar 27 09:28:15 UTC 2018 - wbauer(a)tmo.at
+
+- Add Skip-QtWebKit-tests.patch to fix build on Tumbleweed and Leap
+ 15, the tests fail currently with the latest QtWebKit 5.212
+ alpha2 but trojita works fine
+
+-------------------------------------------------------------------
New:
----
Skip-QtWebKit-tests.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ trojita.spec ++++++
--- /var/tmp/diff_new_pack.4rVYGX/_old 2018-03-28 10:33:23.584704600 +0200
+++ /var/tmp/diff_new_pack.4rVYGX/_new 2018-03-28 10:33:23.588704455 +0200
@@ -33,6 +33,8 @@
Url: http://trojita.flaska.net/
Source: http://sourceforge.net/projects/trojita/files/src/%{name}-%{version}.tar.xz
Source1: http://sourceforge.net/projects/trojita/files/src/%{name}-%{version}.tar.xz…
+# PATCH-FIX-OPENSUSE
+Patch: Skip-QtWebKit-tests.patch
BuildRequires: cmake >= 2.8.7
BuildRequires: git
BuildRequires: gpgmepp5-devel
@@ -67,6 +69,7 @@
%prep
%setup -q
+%patch -p1
%build
export CXXFLAGS="%{optflags} -fPIC"
++++++ Skip-QtWebKit-tests.patch ++++++
>From 14879cc510e819ea43d3e09ede679bc309188327 Mon Sep 17 00:00:00 2001
From: Wolfgang Bauer <wbauer(a)tmo.at>
Date: Tue, 27 Mar 2018 11:23:37 +0200
Subject: [PATCH] tests: Skip QtWebKit tests
Based on upstream commit 73a7b085, but disable the QtWebKit tests
unconditionally to fix build in Tumbleweed and Leap 15.
Those tests fail currently with the latest QtWebKit 5.212 alpha2.
---
tests/Composer/test_Html_formatting.cpp | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/tests/Composer/test_Html_formatting.cpp b/tests/Composer/test_Html_formatting.cpp
index 4653a26a..7359214f 100644
--- a/tests/Composer/test_Html_formatting.cpp
+++ b/tests/Composer/test_Html_formatting.cpp
@@ -31,6 +31,9 @@
#include "Composer/SenderIdentitiesModel.h"
#include "Composer/SubjectMangling.h"
+#define SKIP_WEBKIT_TESTS
+
+
Q_DECLARE_METATYPE(QList<QUrl>)
static QString visualizeWhitespace(QString s)
@@ -303,6 +306,9 @@ void HtmlFormattingTest::testPlainTextFormattingViaPaste()
if (expandedFlowed.isEmpty())
expandedFlowed = formattedFlowed;
+#ifdef SKIP_WEBKIT_TESTS
+ QSKIP("ASAN build -- QtWebKit is known to be broken, skipping");
+#else
{
WebRenderingTester tester;
LONG_STR_QCOMPARE(visualizeWhitespace(tester.asPlainText(source, UiUtils::FlowedFormat::FLOWED)),
@@ -320,6 +326,7 @@ void HtmlFormattingTest::testPlainTextFormattingViaPaste()
LONG_STR_QCOMPARE(visualizeWhitespace(tester.asPlainText(source, UiUtils::FlowedFormat::FLOWED, WebRenderingTester::RenderExpandEverythingCollapsed)),
visualizeWhitespace(expandedFlowed));
}
+#endif
}
void HtmlFormattingTest::testPlainTextFormattingViaPaste_data()
@@ -584,6 +591,9 @@ void HtmlFormattingTest::testPlainTextFormattingViaPasteDelSp()
QFETCH(QString, expandedFlowed);
QFETCH(QString, expandedFlowedDelSp);
+#ifdef SKIP_WEBKIT_TESTS
+ QSKIP("ASAN build -- QtWebKit is known to be broken, skipping");
+#else
{
WebRenderingTester tester;
LONG_STR_QCOMPARE(visualizeWhitespace(tester.asPlainText(source, UiUtils::FlowedFormat::FLOWED, WebRenderingTester::RenderExpandEverythingCollapsed)),
@@ -594,6 +604,7 @@ void HtmlFormattingTest::testPlainTextFormattingViaPasteDelSp()
LONG_STR_QCOMPARE(visualizeWhitespace(tester.asPlainText(source, UiUtils::FlowedFormat::FLOWED_DELSP, WebRenderingTester::RenderExpandEverythingCollapsed)),
visualizeWhitespace(expandedFlowedDelSp));
}
+#endif
}
--
2.13.6
1
0
Hello community,
here is the log from the commit of package pam_yubico for openSUSE:Factory checked in at 2018-03-28 10:33:18
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/pam_yubico (Old)
and /work/SRC/openSUSE:Factory/.pam_yubico.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "pam_yubico"
Wed Mar 28 10:33:18 2018 rev:5 rq:591599 version:2.25
Changes:
--------
--- /work/SRC/openSUSE:Factory/pam_yubico/pam_yubico.changes 2017-11-29 10:53:45.842246848 +0100
+++ /work/SRC/openSUSE:Factory/.pam_yubico.new/pam_yubico.changes 2018-03-28 10:33:20.640810481 +0200
@@ -1,0 +2,12 @@
+Tue Mar 27 11:27:03 UTC 2018 - kbabioch(a)suse.com
+
+- Version 2.25 (released 2018-03-27):
+ - Security: Storage of challenges in path with restricted permissions
+ - Perform OTP validation only if token is authorized
+ - Return early if the user has no authorized tokens
+ - Compare OTP IDs against `yubi_attr` only
+ - Add nullok support to challenge-response mode
+ - Several improvements to the documentation
+ - Improved debugging output and test cases
+
+-------------------------------------------------------------------
Old:
----
pam_yubico-2.24.tar.gz
pam_yubico-2.24.tar.gz.sig
New:
----
pam_yubico-2.25.tar.gz
pam_yubico-2.25.tar.gz.sig
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ pam_yubico.spec ++++++
--- /var/tmp/diff_new_pack.bZ3wOk/_old 2018-03-28 10:33:21.724771494 +0200
+++ /var/tmp/diff_new_pack.bZ3wOk/_new 2018-03-28 10:33:21.732771207 +0200
@@ -1,7 +1,7 @@
#
# spec file for package pam_yubico
#
-# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: pam_yubico
-Version: 2.24
+Version: 2.25
Release: 0
Summary: Yubico Pluggable Authentication Module (PAM)
License: BSD-2-Clause
@@ -30,9 +30,8 @@
BuildRequires: libyubikey-devel
BuildRequires: openldap2-devel
BuildRequires: pam-devel
-BuildRequires: pkg-config
+BuildRequires: pkgconfig
BuildRequires: pkgconfig(ykpers-1) >= 1.11
-BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
@@ -46,11 +45,10 @@
make %{?_smp_mflags}
%install
-make DESTDIR=%{buildroot} install %{?_smp_mflags}
+%make_install
find %{buildroot} -type f -name "*.la" -delete -print
%files
-%defattr(-,root,root)
%doc README COPYING AUTHORS NEWS doc/*
%{_bindir}/ykpamcfg
/%{_lib}/security/pam_yubico.so
++++++ pam_yubico-2.24.tar.gz -> pam_yubico-2.25.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pam_yubico-2.24/ChangeLog new/pam_yubico-2.25/ChangeLog
--- old/pam_yubico-2.24/ChangeLog 2016-11-25 10:15:53.000000000 +0100
+++ new/pam_yubico-2.25/ChangeLog 2018-03-27 12:41:18.000000000 +0200
@@ -1,3 +1,137 @@
+2018-03-27 Klas Lindfors <klas(a)yubico.com>
+
+ * NEWS: NEWS for 2.25
+
+2018-03-20 Klas Lindfors <klas(a)yubico.com>
+
+ * : commit 8db623de5dfe81c4b62379fcf91e7908342afa10 Author: Karol
+ Babioch <kbabioch(a)suse.de> Date: Tue Mar 20 13:55:21 2018 +0100
+
+2018-03-20 Karol Babioch <kbabioch(a)suse.de>
+
+ * pam_yubico.c: Print out nullok parameter in debug mode This prints out the nullok parameter in debug mode, which was
+ introduced previously.
+
+2017-12-15 Klas Lindfors <klas(a)yubico.com>
+
+ * : commit 504c838b5af4ff1341eb27217ea9358eac986dd0 Author: Robert
+ Giles <rgtx(a)users.noreply.github.com> Date: Thu Dec 14 11:51:20
+ 2017 -0600
+
+2017-12-14 Robert Giles <rgtx(a)users.noreply.github.com>
+
+ * README: Typo in asciidoc syntax.
+
+2017-12-14 Robert Giles <rgtx(a)users.noreply.github.com>
+
+ * README: Clarify documentation; this example configuration is also
+ useful for just regular pam_yubico configuration elsewhere against
+ AD, too.
+
+2017-11-20 Klas Lindfors <klas(a)yubico.com>
+
+ * : commit 5003f3974d2b57985cd453e0f8547ac495a6305d Author: Andy
+ Neff <andyneff(a)users.noreply.github.com> Date: Wed Nov 15 15:46:46
+ 2017 -0500
+
+2017-10-10 Klas Lindfors <klas(a)yubico.com>
+
+ * doc/YubiKey_and_OpenVPN_via_PAM.adoc: drop more text with
+ unnecessary old version deps
+
+2017-10-06 Klas Lindfors <klas(a)yubico.com>
+
+ * doc/YubiKey_and_OpenVPN_via_PAM.adoc: drop outdated version
+ recommendations
+
+2017-08-30 Klas Lindfors <klas(a)yubico.com>
+
+ * pam_yubico.c: improved debug messages when getpwnam_r() doesn't
+ return a user
+
+2017-08-07 Klas Lindfors <klas(a)yubico.com>
+
+ * README, pam_yubico.8.txt: doc: fixup which proxy schemes are
+ supported, add http and https fixes #127
+
+2017-06-26 Klas Lindfors <klas(a)yubico.com>
+
+ * : commit 42e8a06bfe1b53df9f11118222d7f36c55cf7d58 Author: Larhard
+ <larhard(a)gmail.com> Date: Sat Jun 24 08:30:40 2017 +0000
+
+2017-06-23 Larhard <larhard(a)gmail.com>
+
+ * util.c: clear check_user_challenge_file
+
+2017-06-16 Alessio Di Mauro <alessio(a)yubico.com>
+
+ * README: Add message about project rewrite to README
+
+2017-04-09 Larhard <larhard(a)gmail.com>
+
+ * util.c: code cleanup
+
+2017-04-08 Larhard <larhard(a)gmail.com>
+
+ * pam_yubico.c, util.c, util.h: add nullok support to
+ challenge-response mode
+
+2017-03-06 Klas Lindfors <klas(a)yubico.com>
+
+ * tests/pam_test.c: add tests for use_first_pass
+
+2017-03-06 Klas Lindfors <klas(a)yubico.com>
+
+ * : commit d048a4a6e2fbe55982c5fc819ab2016b89ca136b Author: Mickaël
+ Thomas <mickael9(a)gmail.com> Date: Sun Feb 26 20:38:33 2017 +0100
+
+2017-02-26 Micka�l Thomas <mickael9(a)gmail.com>
+
+ * pam_yubico.c: Compare OTP IDs against `yubi_attr` only Currently we trust the LDAP server to only return the `yubi_attr`
+ attribute, yet we loop over all possible attributes when there
+ should only be one. Since the bundled test LDAP server ignores the requested attributes
+ list, we must make sure to only match against the `yubi_attr`
+ attibute as opposed to "all of them". This also fixes an issue where AUTH_NOT_FOUND was returned instead
+ of AUTH_NO_TOKENS when there were no values returned for `yubi_attr`
+ but another attribute's value was considered as a candidate token.
+
+2017-02-26 Micka�l Thomas <mickael9(a)gmail.com>
+
+ * README, pam_yubico.c, tests/util_test.c, util.c, util.h: Return
+ early if the user has no authorized tokens Currently, if a user has no associated tokens, we still prompt for
+ an OTP challenge and attempt to verify it. This adds a check earlier to avoid the useless prompt in that case. The `nullok` option is also added. It changes the return value from
+ PAM_USER_UNKNOWN to PAM_IGNORE. (fixes #97) Finally, some constants have been turned to symbolic form for
+ clarity and debugging output is improved.
+
+2017-02-26 Micka�l Thomas <mickael9(a)gmail.com>
+
+ * pam_yubico.c: Perform OTP validation only if token is authorized When using `try_first_pass` or `use_first_pass`, the password we
+ inherit from PAM might not actually be an OTP challenge. Currently, we happily leak it to the validation server without first
+ checking if it matches an authorized token ID. This postpones sending the actual request until we know the token ID
+ is authorized.
+
+2017-02-23 Klas Lindfors <klas(a)yubico.com>
+
+ * : commit 0d61b263ca3ce5a912fbf4895830b93b64c52fb7 Author: Thomas
+ Patzke <thomas(a)patzke.org> Date: Thu Feb 23 09:01:27 2017 +0100
+
+2017-01-03 Klas Lindfors <klas(a)yubico.com>
+
+ * ykpamcfg.1.txt: doc: fix typo
+
+2016-11-25 Klas Lindfors <klas(a)yubico.com>
+
+ * tests/aux/build-and-test.sh: more stuff to make a2x work properly
+ on mac for tests
+
+2016-11-25 Klas Lindfors <klas(a)yubico.com>
+
+ * tests/aux/build-and-test.sh: install docbook-xsl on mac for tests will hopefully make the tests run smoother
+
+2016-11-25 Klas Lindfors <klas(a)yubico.com>
+
+ * NEWS, configure.ac: bump versions
+
2016-11-25 Klas Lindfors <klas(a)yubico.com>
* NEWS: NEWS for 2.24
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pam_yubico-2.24/NEWS new/pam_yubico-2.25/NEWS
--- old/pam_yubico-2.24/NEWS 2016-11-25 10:15:17.000000000 +0100
+++ new/pam_yubico-2.25/NEWS 2018-03-27 12:37:14.000000000 +0200
@@ -1,5 +1,17 @@
pam_yubico NEWS -- History of user-visible changes. -*- outline -*-
+* Version 2.25 (released 2018-03-27)
+
+** Documentation updates.
+
+** Only do OTP validation if it's a token that might be valid.
+
+** Return early in case user has no valid tokens.
+
+** Ldap, compare values only with yubi_attr attributes.
+
+** Add nullok parameter.
+
* Version 2.24 (released 2016-11-25)
** Debug mode changed, allows file output with debug_file.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pam_yubico-2.24/README new/pam_yubico-2.25/README
--- old/pam_yubico-2.24/README 2016-09-08 10:38:24.000000000 +0200
+++ new/pam_yubico-2.25/README 2017-12-15 08:08:55.000000000 +0100
@@ -5,6 +5,7 @@
GNU/Linux, Solaris and Mac OS X for user authentication, and by other
specialized applications such as NCSA MyProxy.
+IMPORTANT: This project is being rewritten and will only receive security updates.
Status and Roadmap
------------------
@@ -171,6 +172,12 @@
password is available or the password is not appropriate, the user
will be denied access.
+nullok::
+If set, don't fail when there are no tokens declared for the user
+in the authorization mapping files or in LDAP.
+This can be used to make YubiKey authentication optional unless
+the user has associated tokens.
+
urllist::
List of URL templates to be used. This is set by calling
ykclient_set_url_bases. The list should be in the format :
@@ -193,9 +200,9 @@
proxy::
specify a proxy to connect to the validation server. Valid schemes are
-socks4://, socks4a://, socks5:// or socks5h://. Socks5h asks the proxy
-to do the dns resolving. If no scheme or port is specified HTTP proxy
-port 1080 will be used.
+http://, https://, socks4://, socks4a://, socks5:// or socks5h://.
+Socks5h asks the proxy to do the dns resolving. If no scheme or port is
+specified HTTP proxy port 1080 will be used.
verbose_otp::
This argument is used to show the OTP (One-Time Password) when it
@@ -351,13 +358,14 @@
OpenVPN and ActiveDirectory
---------------------------
+See Michael Ludvig's sample Active Directory schema extensions for YubiKey public ID attribute storage / association with a particular user account: https://github.com/mludvig/yubikey-ldap/tree/master/microsoft-schema
create file '/etc/pam.d/openvpn':
- auth required pam_yubico.so ldap_uri=ldap://ldap-srv debug id=[Your API Client ID] yubi_attr=pager
- ldapdn=dc=ad,dc=next-audience,dc=net
- ldap_filter=(&(sAMAccountName=%u)(memberOf=CN=mygroup,OU=DefaultUser,DC=adivser,DC=net))
- ldap_bind_user=bind_user ldap_bind_password=bind_password try_first_pass
+ auth required pam_yubico.so ldap_uri=ldap://contoso.com debug id=[Your API ID] yubi_attr=yubiKeyId
+ ldapdn=DC=contoso,DC=com
+ ldap_filter=(&(sAMAccountName=%u)(objectClass=user)(memberOf=CN=somegroup,DC=contoso,DC=com))
+ [ldap_bind_user=CN=binduser,OU=Service Accounts,DC=contoso,DC=com] ldap_bind_password=bind_password try_first_pass
account required pam_yubico.so
create file 'openvpn.conf'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pam_yubico-2.24/configure new/pam_yubico-2.25/configure
--- old/pam_yubico-2.24/configure 2016-11-07 12:11:59.000000000 +0100
+++ new/pam_yubico-2.25/configure 2017-08-30 08:31:49.000000000 +0200
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for pam_yubico 2.24.
+# Generated by GNU Autoconf 2.69 for pam_yubico 2.25.
#
#
# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
@@ -587,8 +587,8 @@
# Identity of this package.
PACKAGE_NAME='pam_yubico'
PACKAGE_TARNAME='pam_yubico'
-PACKAGE_VERSION='2.24'
-PACKAGE_STRING='pam_yubico 2.24'
+PACKAGE_VERSION='2.25'
+PACKAGE_STRING='pam_yubico 2.25'
PACKAGE_BUGREPORT=''
PACKAGE_URL=''
@@ -1357,7 +1357,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 pam_yubico 2.24 to adapt to many kinds of systems.
+\`configure' configures pam_yubico 2.25 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1428,7 +1428,7 @@
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of pam_yubico 2.24:";;
+ short | recursive ) echo "Configuration of pam_yubico 2.25:";;
esac
cat <<\_ACEOF
@@ -1553,7 +1553,7 @@
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-pam_yubico configure 2.24
+pam_yubico configure 2.25
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1918,7 +1918,7 @@
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by pam_yubico $as_me 2.24, which was
+It was created by pam_yubico $as_me 2.25, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -2782,7 +2782,7 @@
# Define the identity of the package.
PACKAGE='pam_yubico'
- VERSION='2.24'
+ VERSION='2.25'
cat >>confdefs.h <<_ACEOF
@@ -14750,7 +14750,7 @@
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by pam_yubico $as_me 2.24, which was
+This file was extended by pam_yubico $as_me 2.25, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -14807,7 +14807,7 @@
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-pam_yubico config.status 2.24
+pam_yubico config.status 2.25
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/pam_yubico-2.24/configure.ac new/pam_yubico-2.25/configure.ac
--- old/pam_yubico-2.24/configure.ac 2016-09-08 10:38:24.000000000 +0200
+++ new/pam_yubico-2.25/configure.ac 2017-08-30 08:24:30.000000000 +0200
@@ -26,7 +26,7 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-AC_INIT([pam_yubico], [2.24])
+AC_INIT([pam_yubico], [2.25])
AC_CONFIG_AUX_DIR([build-aux])
AC_CONFIG_MACRO_DIR([m4])
AM_INIT_AUTOMAKE([1.11 foreign -Wall -Werror])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pam_yubico-2.24/doc/Authentication_Using_Challenge-Response.adoc new/pam_yubico-2.25/doc/Authentication_Using_Challenge-Response.adoc
--- old/pam_yubico-2.24/doc/Authentication_Using_Challenge-Response.adoc 2016-02-26 09:35:14.000000000 +0100
+++ new/pam_yubico-2.25/doc/Authentication_Using_Challenge-Response.adoc 2017-08-30 08:24:30.000000000 +0200
@@ -68,16 +68,18 @@
Stored initial challenge and expected response in '/home/alice/.yubico/challenge-123456'.
$
------
-If your /home/user folder is encrypted you should move the challenge file in a different path (i.e. /var/yubico) and then set the right permission for the user to create the files. To do this do as follow:
+From security perspective, it is generally a good idea to move the challenge file in a system-wide path that is only read- and writable by root. To do this do as follow:
----
-$ mkdir /var/yubico
-$ chmod +t /var/yubico
-$ chmod 777 /var/yubico
-$ ykpamcfg -2 -v -p /var/yubico
+$ sudo mkdir /var/yubico
+$ sudo chown root.root /var/yubico
+$ sudo chmod 700 /var/yubico
+$ ykpamcfg -2 -v
...
-Stored initial challenge and expected response in '/var/yubico/alice-123456'.
-$
+Stored initial challenge and expected response in '$HOME/.yubico/challenge-123456'.
+$ sudo mv ~/.yubico/challenge-123456 /var/yubico/alice-123456
+$ sudo chown root.root /var/yubico/alice-123456
+$ sudo chmod 600 /var/yubico/alice-123456
----
It is important that the file is named with the name of the user that is going to be authenticated by this YubiKey.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pam_yubico-2.24/doc/YubiKey_and_OpenVPN_via_PAM.adoc new/pam_yubico-2.25/doc/YubiKey_and_OpenVPN_via_PAM.adoc
--- old/pam_yubico-2.24/doc/YubiKey_and_OpenVPN_via_PAM.adoc 2015-03-13 21:20:24.000000000 +0100
+++ new/pam_yubico-2.25/doc/YubiKey_and_OpenVPN_via_PAM.adoc 2017-10-10 09:37:44.000000000 +0200
@@ -7,14 +7,14 @@
Successful configuration of the Yubico PAM module to support two factor authentication for OpenVPN has the following prerequisites:
-Operating System::
-Any Unix operating system which supports
+Operating System:: Any Unix operating system which supports
http://www.kernel.org/pub/linux/libs/pam[PAM] (Pluggable Authentication Module)
Complier:: http://gcc.gnu.org[GNU GCC complier]
-https://developers.yubico.com/yubico-pam[Yubico PAM Module]:: Version 1.8
-http://openvpn.net/index.php/downloads.html[OpenVPN]:: Version 2.0.9.
-http://freeradius.org/download.html[FreeRADIUS]: Version 1.1.7 or later.
-Pam_Radius:: Version 1.3.17.
+Software::
+https://developers.yubico.com/yubico-pam[Yubico PAM Module] +
+http://openvpn.net/index.php/downloads.html[OpenVPN] +
+http://freeradius.org/download.html[FreeRADIUS] +
+Pam_Radius
== Configuration
@@ -249,11 +249,7 @@
Our test environment is as follows:
-i) Operating System: Fedora release 8 (Werewolf)
-ii) FreeRADIUS Server : FreeRADIUS Version 1.1.7
-iii) Pam_Radius: pam_radius_auth 1.3.17
-iv) Yubico PAM: pam_yubico Version 1.8
-v) `/etc/pam.d/openvpn` file:
+* `/etc/pam.d/openvpn` file:
------
account required pam_radius_auth.so
@@ -265,19 +261,8 @@
We have tested the pam_yubico configuration on following Linux sever platforms:
-===== Fedora 8
-Operating system:: Fedora release 8 (Werewolf)
-OpenVPN Server:: OpenVPN Version 2.0.9
-Yubico PAM:: pam_yubico Version 1.8
-FreeRADIUS Server:: FreeRADIUS Server Version 1.1.7
-Pam_radius:: pam_radius_auth Version 1.3.17
-
-===== Fedora 6
-Operating system:: Fedora Core release 6 (Zod)
-OpenVPN Server:: OpenVPN Version 2.0.9
-Yubico PAM:: pam_yubico version 1.8
-FreeRADIUS Server:: FreeRADIUS Server Version 1.1.7
-Pam_radius:: pam_radius_auth Version 1.3.17
+* Fedora 8
+* Fedora 6
To test the configuration, first create a couple of test users
on the system where FreeRADIUS server is running and configure
@@ -292,6 +277,3 @@
OpenVPN client will first prompt for username, enter the username.
After that OpenVPN client will prompt for password, enter user’s
password immediately followed by an OTP generated by a YubiKey.
-
-
-NOTE: Please use OpenVPN server Version 2.0.9 (Latest Stable Version), as older and newer beta versions have problems with PAM libraries. RADIUS authentication will fail if it is configured with older or latest beta versions of OpenVPN Server.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pam_yubico-2.24/doc/Yubikey_and_SELinux_on_Fedora_18_and_up.adoc new/pam_yubico-2.25/doc/Yubikey_and_SELinux_on_Fedora_18_and_up.adoc
--- old/pam_yubico-2.24/doc/Yubikey_and_SELinux_on_Fedora_18_and_up.adoc 2014-11-03 11:23:32.000000000 +0100
+++ new/pam_yubico-2.25/doc/Yubikey_and_SELinux_on_Fedora_18_and_up.adoc 2017-11-20 10:16:40.000000000 +0100
@@ -5,3 +5,7 @@
To make a long story short, if you want to use a Yubikey on a system running Fedora 18 or higher (and probably RHEL7, eventually), you'll need to toggle the 'authlogin_yubikey' SELinux boolean, like so:
setsebool -P authlogin_yubikey 1
+
+If you are using your own server via `urllist`/`url` in the pam conf file and using a non-standard http port, you will need to add that port to the `http_port_t` port list. For example, port `12345`:
+
+ semanage port -a -t http_port_t -p tcp 12345
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pam_yubico-2.24/pam_yubico.8 new/pam_yubico-2.25/pam_yubico.8
--- old/pam_yubico-2.24/pam_yubico.8 2016-06-22 10:20:35.000000000 +0200
+++ new/pam_yubico-2.25/pam_yubico.8 2018-03-27 12:41:18.000000000 +0200
@@ -1,13 +1,13 @@
'\" t
.\" Title: pam_yubico
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
-.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
-.\" Date: Version 2.24
+.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
+.\" Date: Version 2.25
.\" Manual: Yubico PAM Module Manual
.\" Source: yubico-pam
.\" Language: English
.\"
-.TH "PAM_YUBICO" "8" "Version 2\&.24" "yubico\-pam" "Yubico PAM Module Manual"
+.TH "PAM_YUBICO" "8" "Version 2\&.25" "yubico\-pam" "Yubico PAM Module Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
@@ -83,6 +83,11 @@
The argument use_first_pass forces the module to use a previous stacked modules password and will never prompt the user \- if no password is available or the password is not appropriate, the user will be denied access\&.
.RE
.PP
+\fBnullok\fR
+.RS 4
+If set, don\(cqt fail when there are no tokens declared for the user in the authorization mapping files or in LDAP\&. This can be used to make YubiKey authentication optional unless the user has associated tokens\&.
+.RE
+.PP
\fBurllist\fR=\fIlist\fR
.RS 4
List of URL templates to be used\&. This is set by calling ykclient_set_url_bases\&. The list should be in the format:
@@ -110,7 +115,7 @@
.PP
\fBproxy\fR=\fIproxy\fR
.RS 4
-Specify a proxy to connect to the validation server\&. Valid schemes are socks4://, socks4a://, socks5:// or socks5h://\&. Socks5h asks the proxy to do the dns resolving\&. If no scheme or port is specified HTTP proxy port 1080 will be used\&. E\&.g\&. socks5h://user:pass@10\&.10\&.0\&.1:1080
+Specify a proxy to connect to the validation server\&. Valid schemes are http://, https://, socks4://, socks4a://, socks5:// or socks5h://\&. Socks5h asks the proxy to do the dns resolving\&. If no scheme or port is specified HTTP proxy port 1080 will be used\&. E\&.g\&. socks5h://user:pass@10\&.10\&.0\&.1:1080
.RE
.PP
\fBverbose_otp\fR
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pam_yubico-2.24/pam_yubico.8.txt new/pam_yubico-2.25/pam_yubico.8.txt
--- old/pam_yubico-2.24/pam_yubico.8.txt 2016-06-22 10:17:14.000000000 +0200
+++ new/pam_yubico-2.25/pam_yubico.8.txt 2018-03-20 14:09:06.000000000 +0100
@@ -41,6 +41,9 @@
*use_first_pass*::
The argument use_first_pass forces the module to use a previous stacked modules password and will never prompt the user - if no password is available or the password is not appropriate, the user will be denied access.
+*nullok*::
+If set, don’t fail when there are no tokens declared for the user in the authorization mapping files or in LDAP. This can be used to make YubiKey authentication optional unless the user has associated tokens.
+
*urllist*=_list_::
List of URL templates to be used. This is set by calling ykclient_set_url_bases.
The list should be in the format:
@@ -54,7 +57,7 @@
Specify the path where X509 certificates are stored. This is required if 'https' or 'ldaps' are used in 'url' and 'ldap_uri' respectively.
*proxy*=_proxy_::
-Specify a proxy to connect to the validation server. Valid schemes are socks4://, socks4a://, socks5:// or socks5h://. Socks5h asks the proxy to do the dns resolving. If no scheme or port is specified HTTP proxy port 1080 will be used. E.g. socks5h://user:pass@10.10.0.1:1080
+Specify a proxy to connect to the validation server. Valid schemes are http://, https://, socks4://, socks4a://, socks5:// or socks5h://. Socks5h asks the proxy to do the dns resolving. If no scheme or port is specified HTTP proxy port 1080 will be used. E.g. socks5h://user:pass@10.10.0.1:1080
*verbose_otp*::
This argument is used to show the OTP (One Time Password) when it is entered, i.e. to enable terminal echo of entered characters. You are advised to not use this, if you are using two factor authentication because that will display your password on the screen. This requires the service using the PAM module to display custom fields. This option can not be used with OpenSSH.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pam_yubico-2.24/pam_yubico.c new/pam_yubico-2.25/pam_yubico.c
--- old/pam_yubico-2.24/pam_yubico.c 2016-09-08 10:38:03.000000000 +0200
+++ new/pam_yubico-2.25/pam_yubico.c 2018-03-20 14:09:06.000000000 +0100
@@ -108,6 +108,7 @@
int verbose_otp;
int try_first_pass;
int use_first_pass;
+ int nullok;
const char *auth_file;
const char *capath;
const char *cainfo;
@@ -136,8 +137,9 @@
#define DBG(x...) if (cfg->debug) { D(cfg->debug_file, x); }
/*
- * Authorize authenticated OTP_ID for login as USERNAME using
- * AUTHFILE. Return -2 if the user is unknown, -1 if the OTP_ID does not match, 0 on internal failures, otherwise success.
+ * Authorize authenticated OTP_ID for login as USERNAME using AUTHFILE.
+ *
+ * Returns one of AUTH_FOUND, AUTH_NOT_FOUND, AUTH_NO_TOKENS, AUTH_ERROR.
*/
static int
authorize_user_token (struct cfg *cfg,
@@ -145,7 +147,7 @@
const char *otp_id,
pam_handle_t *pamh)
{
- int retval;
+ int retval = AUTH_ERROR;
if (cfg->auth_file)
{
@@ -166,8 +168,12 @@
pwres = getpwnam_r (username, &pass, buf, buflen, &p);
if (p == NULL) {
- DBG ("getpwnam_r: %s", strerror(pwres));
- return 0;
+ if (pwres == 0) {
+ DBG ("User '%s' not found", username);
+ } else {
+ DBG ("getpwnam_r: %s", strerror(pwres));
+ }
+ return AUTH_ERROR;
}
/* Getting file from user home directory
@@ -175,21 +181,19 @@
*/
if (! get_user_cfgfile_path (NULL, "authorized_yubikeys", p, &userfile)) {
DBG ("Failed figuring out per-user cfgfile");
- return 0;
+ return AUTH_ERROR;
}
DBG ("Dropping privileges");
if(pam_modutil_drop_priv(pamh, &privs, p)) {
DBG ("could not drop privileges");
- retval = 0;
- goto free_out;
+ goto free_out;
}
retval = check_user_token (userfile, username, otp_id, cfg->debug, cfg->debug_file);
if(pam_modutil_regain_priv(pamh, &privs)) {
- DBG (("could not restore privileges"));
- retval = 0;
+ DBG ("could not restore privileges");
goto free_out;
}
@@ -202,7 +206,7 @@
/*
* This function will look in ldap id the token correspond to the
- * requested user. It will returns 0 for failure and 1 for success.
+ * requested user.
*
* ldaps is only supported for ldap_uri based connections.
* ldap_cacertfile usually needs to be set for this to work.
@@ -218,13 +222,15 @@
* If using ldap_uri, you can specify multiple failover hosts
* eg.
* ldap_uri=ldaps://host1.fqdn.example.com,ldaps://host2.fqdn.example.com
+ *
+ * Returns one of AUTH_FOUND, AUTH_NOT_FOUND, AUTH_NO_TOKENS, AUTH_ERROR.
*/
static int
authorize_user_token_ldap (struct cfg *cfg,
const char *user,
const char *token_id)
{
- int retval = 0;
+ int retval = AUTH_ERROR;
#ifdef HAVE_LIBLDAP
/* LDAPv2 is historical -- RFC3494. */
int protocol = LDAP_VERSION3;
@@ -232,7 +238,7 @@
LDAP *ld = NULL;
LDAPMessage *result = NULL, *e;
BerElement *ber;
- char *a;
+ char *attr_name;
char *attrs[2] = {NULL, NULL};
struct berval **vals;
@@ -261,7 +267,6 @@
if (rc != LDAP_SUCCESS)
{
DBG ("ldap_initialize: %s", ldap_err2string (rc));
- retval = 0;
goto done;
}
}
@@ -270,7 +275,6 @@
if ((ld = ldap_init (cfg->ldapserver, PORT_NUMBER)) == NULL)
{
DBG ("ldap_init");
- retval = 0;
goto done;
}
}
@@ -301,7 +305,6 @@
i = (strlen(cfg->user_attr) + strlen(cfg->ldapdn) + strlen(user) + 3) * sizeof(char);
if ((find = malloc(i)) == NULL) {
DBG ("Failed allocating %zu bytes", i);
- retval = 0;
goto done;
}
sprintf (find, "%s=%s,%s", cfg->user_attr, user, cfg->ldapdn);
@@ -325,48 +328,63 @@
{
DBG ("ldap_search_ext_s: %s", ldap_err2string (rc));
- retval = 0;
goto done;
}
+ /* Start looing for tokens */
+ retval = AUTH_NO_TOKENS;
+
e = ldap_first_entry (ld, result);
if (e == NULL)
{
DBG (("No result from LDAP search"));
- retval = -2;
}
else
{
- retval = -1;
/* Iterate through each returned attribute. */
- for (a = ldap_first_attribute (ld, e, &ber);
- a != NULL; a = ldap_next_attribute (ld, e, ber))
+ for (attr_name = ldap_first_attribute (ld, e, &ber);
+ attr_name != NULL; attr_name = ldap_next_attribute (ld, e, ber))
{
- if ((vals = ldap_get_values_len (ld, e, a)) != NULL)
+ if (strcmp(attr_name, cfg->yubi_attr) != 0) {
+ DBG("Ignored non-requested attribute: %s", attr_name);
+ continue;
+ }
+ if ((vals = ldap_get_values_len (ld, e, attr_name)) != NULL)
{
yubi_attr_prefix_len = cfg->yubi_attr_prefix ? strlen(cfg->yubi_attr_prefix) : 0;
+ DBG("LDAP : Found %i values for %s - checking if any of them match '%s:%s'",
+ ldap_count_values_len(vals),
+ attr_name,
+ cfg->yubi_attr_prefix ? cfg->yubi_attr_prefix : "",
+ token_id ? token_id : "(null)");
+
/* Compare each value for the attribute against the token id. */
for (i = 0; vals[i] != NULL; i++)
{
- DBG("LDAP : Found %i values - checking if any of them match '%s:%s:%s'",
- ldap_count_values_len(vals),
- vals[i]->bv_val,
- cfg->yubi_attr_prefix ? cfg->yubi_attr_prefix : "", token_id);
+ DBG("LDAP : Checking value %i: %s:%s",
+ i + 1,
+ cfg->yubi_attr_prefix ? cfg->yubi_attr_prefix : "",
+ vals[i]->bv_val);
/* Only values containing this prefix are considered. */
if ((!cfg->yubi_attr_prefix || !strncmp (cfg->yubi_attr_prefix, vals[i]->bv_val, yubi_attr_prefix_len)))
{
- if(!strncmp (token_id, vals[i]->bv_val + yubi_attr_prefix_len, strlen (vals[i]->bv_val + yubi_attr_prefix_len)))
+ /* We have found at least one possible token ID so change the default return value to AUTH_NOT_FOUND */
+ if (retval == AUTH_NO_TOKENS)
+ {
+ retval = AUTH_NOT_FOUND;
+ }
+ if(token_id && !strncmp (token_id, vals[i]->bv_val + yubi_attr_prefix_len, strlen (vals[i]->bv_val + yubi_attr_prefix_len)))
{
DBG ("Token Found :: %s", vals[i]->bv_val);
- retval = 1;
+ retval = AUTH_FOUND;
}
}
}
ldap_value_free_len (vals);
}
- ldap_memfree (a);
+ ldap_memfree (attr_name);
}
if (ber != NULL)
ber_free (ber, 0);
@@ -459,6 +477,39 @@
ret = PAM_AUTH_ERR;
+ pwres = getpwnam_r (username, &pass, pwbuf, pwbuflen, &p);
+ if (p == NULL) {
+ if (pwres == 0) {
+ DBG ("User '%s' not found", username);
+ } else {
+ DBG ("getpwnam_r: %s", strerror(pwres));
+ }
+ goto out;
+ }
+
+ DBG("Checking for user challenge files");
+ switch(check_user_challenge_file(cfg->chalresp_path, p, cfg->debug_file)) {
+ case AUTH_FOUND:
+ DBG("Challenge files found");
+ break;
+ case AUTH_NOT_FOUND:
+ DBG("No challenge files found");
+ if (cfg->nullok) {
+ ret = PAM_IGNORE;
+ } else {
+ ret = PAM_USER_UNKNOWN;
+ }
+ goto out;
+ case AUTH_ERROR:
+ DBG ("Internal error while looking for user challenge files");
+ ret = PAM_AUTHINFO_UNAVAIL;
+ goto out;
+ default:
+ DBG ("Unhandled value while looking for user challenge files");
+ ret = PAM_AUTHINFO_UNAVAIL;
+ goto out;
+ }
+
if (! init_yubikey(&yk)) {
DBG("Failed initializing YubiKey");
goto out;
@@ -469,12 +520,6 @@
goto out;
}
- pwres = getpwnam_r (username, &pass, pwbuf, pwbuflen, &p);
- if (p == NULL) {
- DBG ("getpwnam_r: %s", strerror(pwres));
- goto out;
- }
-
if (! get_user_challenge_file (yk, cfg->chalresp_path, p, &userfile, cfg->debug_file)) {
DBG("Failed getting user challenge file for user %s", username);
goto out;
@@ -713,6 +758,8 @@
cfg->try_first_pass = 1;
if (strcmp (argv[i], "use_first_pass") == 0)
cfg->use_first_pass = 1;
+ if (strcmp (argv[i], "nullok") == 0)
+ cfg->nullok = 1;
if (strncmp (argv[i], "authfile=", 9) == 0)
cfg->auth_file = argv[i] + 9;
if (strncmp (argv[i], "capath=", 7) == 0)
@@ -795,6 +842,7 @@
DBG ("verbose_otp=%d", cfg->verbose_otp);
DBG ("try_first_pass=%d", cfg->try_first_pass);
DBG ("use_first_pass=%d", cfg->use_first_pass);
+ DBG ("nullok=%d", cfg->nullok);
DBG ("authfile=%s", cfg->auth_file ? cfg->auth_file : "(null)");
DBG ("ldapserver=%s", cfg->ldapserver ? cfg->ldapserver : "(null)");
DBG ("ldap_uri=%s", cfg->ldap_uri ? cfg->ldap_uri : "(null)");
@@ -962,6 +1010,37 @@
goto done;
}
}
+ /* check if the user has at least one associated token id */
+ /* we set otp_id to NULL so that no matches will ever be found
+ * but AUTH_NO_TOKENS will be returned if there are no tokens for the user */
+ if (cfg->ldapserver != NULL || cfg->ldap_uri != NULL)
+ valid_token = authorize_user_token_ldap (cfg, user, NULL);
+ else
+ valid_token = authorize_user_token (cfg, user, NULL, pamh);
+
+ switch(valid_token)
+ {
+ case AUTH_ERROR:
+ DBG ("Internal error while looking for user tokens");
+ retval = PAM_AUTHINFO_UNAVAIL;
+ goto done;
+ case AUTH_NOT_FOUND:
+ /* User has associated tokens, so continue */
+ DBG ("Tokens found for user");
+ break;
+ case AUTH_NO_TOKENS:
+ DBG ("No tokens found for user");
+ if (cfg->nullok) {
+ retval = PAM_IGNORE;
+ } else {
+ retval = PAM_USER_UNKNOWN;
+ }
+ goto done;
+ default:
+ DBG ("Unhandled value while looking for user tokens");
+ retval = PAM_AUTHINFO_UNAVAIL;
+ goto done;
+ }
if (password == NULL)
{
@@ -1058,12 +1137,6 @@
else
password = NULL;
- rc = ykclient_request (ykc, otp);
-
- DBG ("ykclient return value (%d): %s", rc,
- ykclient_strerror (rc));
- DBG ("ykclient url used: %s", ykclient_get_last_url(ykc));
-
/* authorize the user with supplied token id */
if (cfg->ldapserver != NULL || cfg->ldap_uri != NULL)
valid_token = authorize_user_token_ldap (cfg, user, otp_id);
@@ -1072,7 +1145,12 @@
switch(valid_token)
{
- case 1:
+ case AUTH_FOUND:
+ DBG ("Token is associated to the user. Validating the OTP...");
+ rc = ykclient_request (ykc, otp);
+ DBG ("ykclient return value (%d): %s", rc, ykclient_strerror (rc));
+ DBG ("ykclient url used: %s", ykclient_get_last_url(ykc));
+
switch (rc)
{
case YKCLIENT_OK:
@@ -1089,21 +1167,26 @@
break;
}
break;
- case 0:
- DBG ("Internal error while validating user");
+ case AUTH_ERROR:
+ DBG ("Internal error while looking for user tokens");
retval = PAM_AUTHINFO_UNAVAIL;
break;
- case -1:
+ case AUTH_NOT_FOUND:
DBG ("Unauthorized token for this user");
retval = PAM_AUTH_ERR;
break;
- case -2:
- DBG ("Unknown user");
- retval = PAM_USER_UNKNOWN;
+ case AUTH_NO_TOKENS:
+ DBG ("No tokens found for user");
+ if (cfg->nullok) {
+ retval = PAM_IGNORE;
+ } else {
+ retval = PAM_USER_UNKNOWN;
+ }
break;
default:
DBG ("Unhandled value for token-user validation");
retval = PAM_AUTHINFO_UNAVAIL;
+ break;
}
done:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pam_yubico-2.24/tests/aux/ldap.pl new/pam_yubico-2.25/tests/aux/ldap.pl
--- old/pam_yubico-2.24/tests/aux/ldap.pl 2015-04-07 09:06:39.000000000 +0200
+++ new/pam_yubico-2.25/tests/aux/ldap.pl 2017-08-30 08:24:30.000000000 +0200
@@ -45,6 +45,7 @@
my %objects = (
'base=uid=foo,ou=users,dc=example,dc=com' => {keys => ['vvincredible']},
'base=uid=test,ou=users,dc=example,dc=com' => {keys => ['cccccccfhcbe', 'ccccccbchvth']},
+ 'base=uid=nokeys,ou=users,dc=example,dc=com' => {keys => []},
'sub:base=:(uid=test)' => {keys => ['cccccccfhcbe', 'ccccccbchvth'], dn => 'uid=test,out=users,dc=example,dc=com'},
);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pam_yubico-2.24/tests/pam_test.c new/pam_yubico-2.25/tests/pam_test.c
--- old/pam_yubico-2.24/tests/pam_test.c 2016-11-07 12:21:53.000000000 +0100
+++ new/pam_yubico-2.25/tests/pam_test.c 2017-08-30 08:24:30.000000000 +0200
@@ -66,6 +66,10 @@
{"test", "ccccccbchvthlivuitriujjifivbvtrjkjfirllluurj"},
{"foo", ""},
{"bar", ""},
+ {"nokeys", ""},
+ {"foo", "testpasswordvvincredibletrerdegkkrkkneieultcjdghrejjbckh"},
+ {"foo", "testpassword"},
+ {"bar", "testpassword"},
};
@@ -142,11 +146,14 @@
};
int pam_get_item(const pam_handle_t *pamh, int item_type, const void **item) {
- fprintf(stderr, "in pam_get_item() %d\n", item_type);
- if(item_type == 5) {
+ fprintf(stderr, "in pam_get_item() %d for %d\n", item_type, (int)pamh);
+ if(item_type == PAM_CONV) {
pam_conversation.appdata_ptr = (void*)pamh;
*item = &pam_conversation;
}
+ if(item_type == PAM_AUTHTOK && pamh >= 8) {
+ *item = (void*)_data[(int)pamh].otp;
+ }
return PAM_SUCCESS;
}
@@ -246,6 +253,39 @@
return pam_sm_authenticate(3, 0, sizeof(cfg) / sizeof(char*), cfg);
}
+static int test_firstpass_authenticate(void) {
+ const char *cfg[] = {
+ "id=1",
+ "urllist=http://localhost:"YKVAL_PORT2"/wsapi/2/verify;http://localhost:"YKVAL_PORT1"/wsapi/2/verify",
+ "authfile="AUTHFILE,
+ "use_first_pass",
+ "debug"
+ };
+ return pam_sm_authenticate(8, 0, sizeof(cfg) / sizeof(char*), cfg);
+}
+
+static int test_firstpass_fail(void) {
+ const char *cfg[] = {
+ "id=1",
+ "urllist=http://localhost:"YKVAL_PORT2"/wsapi/2/verify;http://localhost:"YKVAL_PORT1"/wsapi/2/verify",
+ "authfile="AUTHFILE,
+ "use_first_pass",
+ "debug"
+ };
+ return pam_sm_authenticate(9, 0, sizeof(cfg) / sizeof(char*), cfg);
+}
+
+static int test_firstpass_fail2(void) {
+ const char *cfg[] = {
+ "id=1",
+ "urllist=http://localhost:"YKVAL_PORT2"/wsapi/2/verify;http://localhost:"YKVAL_PORT1"/wsapi/2/verify",
+ "authfile="AUTHFILE,
+ "use_first_pass",
+ "debug"
+ };
+ return pam_sm_authenticate(10, 0, sizeof(cfg) / sizeof(char*), cfg);
+}
+
static int test_authenticate_ldap1(void) {
return pam_sm_authenticate(0, 0, sizeof(ldap_cfg) / sizeof(char*), ldap_cfg);
}
@@ -274,6 +314,10 @@
return pam_sm_authenticate(6, 0, sizeof(ldap_cfg) / sizeof(char*), ldap_cfg);
}
+static int test_authenticate_ldap6(void) {
+ return pam_sm_authenticate(7, 0, sizeof(ldap_cfg) / sizeof(char*), ldap_cfg);
+}
+
static pid_t run_mock(const char *port, const char *type) {
pid_t pid = fork();
if(pid == 0) {
@@ -325,6 +369,18 @@
ret = 8;
goto out;
}
+ if(test_firstpass_authenticate() != PAM_SUCCESS) {
+ ret = 9;
+ goto out;
+ }
+ if(test_firstpass_fail() != PAM_AUTH_ERR) {
+ ret = 10;
+ goto out;
+ }
+ if(test_firstpass_fail2() != PAM_USER_UNKNOWN) {
+ ret = 11;
+ goto out;
+ }
#ifdef HAVE_LIBLDAP
if(test_authenticate_ldap1() != PAM_SUCCESS) {
ret = 1001;
@@ -354,6 +410,10 @@
ret = 1007;
goto out;
}
+ if(test_authenticate_ldap6() != PAM_USER_UNKNOWN) {
+ ret = 1008;
+ goto out;
+ }
#endif
out:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pam_yubico-2.24/tests/util_test.c new/pam_yubico-2.25/tests/util_test.c
--- old/pam_yubico-2.24/tests/util_test.c 2016-06-16 13:16:37.000000000 +0200
+++ new/pam_yubico-2.25/tests/util_test.c 2017-08-30 08:24:30.000000000 +0200
@@ -35,6 +35,7 @@
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
+#include <unistd.h>
#include <pwd.h>
@@ -75,27 +76,27 @@
fclose(handle);
ret = check_user_token(file, "foobar", "hhhvhvhdhbid", 1, stdout);
- assert(ret == 1);
+ assert(ret == AUTH_FOUND);
ret = check_user_token(file, "foobar", "hnhbhnhbhnhb", 1, stdout);
- assert(ret == 1);
+ assert(ret == AUTH_FOUND);
ret = check_user_token(file, "foobar", "hnhbhnhbhnhc", 1, stdout);
- assert(ret == -1);
+ assert(ret == AUTH_NOT_FOUND);
ret = check_user_token(file, "kaka", "hihbhdhrhbhj", 1, stdout);
- assert(ret == 1);
+ assert(ret == AUTH_FOUND);
ret = check_user_token(file, "bar", "hnhbhnhbhnhb", 1, stdout);
- assert(ret == 1);
+ assert(ret == AUTH_FOUND);
ret = check_user_token(file, "foo", "hdhrhbhjhvhu", 1, stdout);
- assert(ret == -2);
+ assert(ret == AUTH_NO_TOKENS);
ret = check_user_token(file, "foo2", "cccccccccccc", 1, stdout);
- assert(ret == 1);
+ assert(ret == AUTH_FOUND);
ret = check_user_token(file, "foo2", "vvvvvvvvvvvv", 1, stdout);
- assert(ret == 1);
+ assert(ret == AUTH_FOUND);
ret = check_user_token(file, "foo2", "vvvvvvvvvvcc", 1, stdout);
- assert(ret == -1);
+ assert(ret == AUTH_NOT_FOUND);
ret = check_user_token(file, "foo2", "", 1, stdout);
- assert(ret == -1);
+ assert(ret == AUTH_NOT_FOUND);
ret = check_user_token(file, "foo", "", 1, stdout);
- assert(ret == -2);
+ assert(ret == AUTH_NO_TOKENS);
remove(file);
}
@@ -144,6 +145,122 @@
fclose(file);
}
+static void test_check_user_challenge_file(void) {
+ int ret;
+ char * tmpdir_path;
+ char * buf;
+ FILE * file;
+ struct passwd user;
+
+ buf = malloc(256);
+
+#define create_tmpdir_dir(path) \
+ strcpy(buf, tmpdir_path); \
+ strcat(buf, "/"); \
+ strcat(buf, path); \
+ mkdir(buf, 0755);
+
+#define remove_tmpdir_dir(path) \
+ strcpy(buf, tmpdir_path); \
+ strcat(buf, "/"); \
+ strcat(buf, path); \
+ rmdir(buf);
+
+#define create_tmpdir_file(path) \
+ strcpy(buf, tmpdir_path); \
+ strcat(buf, "/"); \
+ strcat(buf, path); \
+ file = fopen(buf, "w"); \
+ fclose(file);
+
+#define remove_tmpdir_file(path) \
+ strcpy(buf, tmpdir_path); \
+ strcat(buf, "/"); \
+ strcat(buf, path); \
+ unlink(buf);
+
+ /* create temporary directory */
+ tmpdir_path = tempnam(NULL, "pamtest");
+ assert(tmpdir_path != NULL);
+
+ ret = mkdir(tmpdir_path, 0755);
+ assert(ret == 0);
+
+ /* set user data */
+ user.pw_name = "tester";
+ user.pw_dir = tmpdir_path;
+
+ /* execute tests */
+ /* no asserts here as we have directory to remove */
+
+ int case_001_empty_chalresp_dir;
+ case_001_empty_chalresp_dir = check_user_challenge_file(tmpdir_path, &user, stdout);
+
+ int case_002_one_challenge_file;
+ create_tmpdir_file("tester");
+ case_002_one_challenge_file = check_user_challenge_file(tmpdir_path, &user, stdout);
+ remove_tmpdir_file("tester");
+
+ int case_003_multiple_challenge_files;
+ create_tmpdir_file("tester-001");
+ create_tmpdir_file("tester-002");
+ case_003_multiple_challenge_files = check_user_challenge_file(tmpdir_path, &user, stdout);
+ remove_tmpdir_file("tester-002");
+ remove_tmpdir_file("tester-001");
+
+ int case_004_other_users_files;
+ create_tmpdir_file("tester1");
+ create_tmpdir_file("tester1-001");
+ case_004_other_users_files = check_user_challenge_file(tmpdir_path, &user, stdout);
+ remove_tmpdir_file("tester1-001");
+ remove_tmpdir_file("tester1");
+
+ int case_005_no_chalresp_no_yubico;
+ case_005_no_chalresp_no_yubico = check_user_challenge_file(NULL, &user, stdout);
+
+ int case_006_no_chalresp_empty_yubico;
+ create_tmpdir_dir(".yubico");
+ case_006_no_chalresp_empty_yubico = check_user_challenge_file(NULL, &user, stdout);
+ remove_tmpdir_dir(".yubico");
+
+ int case_007_no_chalresp_one_challenge_file;
+ create_tmpdir_dir(".yubico");
+ create_tmpdir_file(".yubico/challenge");
+ case_007_no_chalresp_one_challenge_file = check_user_challenge_file(NULL, &user, stdout);
+ remove_tmpdir_file(".yubico/challenge");
+ remove_tmpdir_dir(".yubico");
+
+ int case_008_no_chalresp_multiple_challenge_files;
+ create_tmpdir_dir(".yubico");
+ create_tmpdir_file(".yubico/challenge-001");
+ create_tmpdir_file(".yubico/challenge-002");
+ case_008_no_chalresp_multiple_challenge_files = check_user_challenge_file(NULL, &user, stdout);
+ remove_tmpdir_file(".yubico/challenge-002");
+ remove_tmpdir_file(".yubico/challenge-001");
+ remove_tmpdir_dir(".yubico");
+
+ /* remove temporary directory */
+ ret = rmdir(tmpdir_path);
+ assert(ret == 0);
+ free(tmpdir_path);
+ free(buf);
+
+ /* check test results */
+ assert(case_001_empty_chalresp_dir == AUTH_NOT_FOUND);
+ assert(case_002_one_challenge_file == AUTH_FOUND);
+ assert(case_003_multiple_challenge_files == AUTH_FOUND);
+ assert(case_004_other_users_files == AUTH_NOT_FOUND);
+ assert(case_005_no_chalresp_no_yubico == AUTH_NOT_FOUND);
+ assert(case_006_no_chalresp_empty_yubico == AUTH_NOT_FOUND);
+ assert(case_007_no_chalresp_one_challenge_file == AUTH_FOUND);
+ assert(case_008_no_chalresp_multiple_challenge_files == AUTH_FOUND);
+
+#undef create_tmpdir_dir
+#undef remove_tmpdir_dir
+#undef create_tmpdir_file
+#undef remove_tmpdir_file
+}
+
#endif /* HAVE_CR */
static void test_filter_printf(void) {
@@ -171,6 +288,7 @@
test_check_user_token();
#if HAVE_CR
test_load_chalresp_state();
+ test_check_user_challenge_file();
#endif /* HAVE_CR */
return 0;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pam_yubico-2.24/util.c new/pam_yubico-2.25/util.c
--- old/pam_yubico-2.24/util.c 2016-06-16 13:16:37.000000000 +0200
+++ new/pam_yubico-2.25/util.c 2017-08-30 08:24:30.000000000 +0200
@@ -38,6 +38,7 @@
#include <sys/stat.h>
#include <errno.h>
#include <fcntl.h>
+#include <glob.h>
#include <unistd.h>
#include "util.h"
@@ -85,8 +86,9 @@
/*
- * This function will look for users name with valid user token id. It
- * will returns -2 if the user is unknown, -1 if the token do not match the user line, 0 for internal failure and 1 for success.
+ * This function will look for users name with valid user token id.
+ *
+ * Returns one of AUTH_FOUND, AUTH_NOT_FOUND, AUTH_NO_TOKENS, AUTH_ERROR.
*
* File format is as follows:
* <user-name>:<token_id>:<token_id>
@@ -102,7 +104,7 @@
{
char buf[1024];
char *s_user, *s_token;
- int retval = 0;
+ int retval = AUTH_ERROR;
int fd;
struct stat st;
FILE *opwfile;
@@ -136,7 +138,7 @@
return retval;
}
- retval = -2;
+ retval = AUTH_NO_TOKENS;
while (fgets (buf, 1024, opwfile))
{
char *saveptr = NULL;
@@ -155,17 +157,17 @@
{
if(verbose)
D (debug_file, "Matched user: %s", s_user);
- retval = -1; //We found at least one line for the user
+ retval = AUTH_NOT_FOUND; /* We found at least one line for the user */
do
{
s_token = strtok_r (NULL, ":", &saveptr);
if(verbose)
D (debug_file, "Authorization token: %s", s_token);
- if (s_token && strcmp (otp_id, s_token) == 0)
+ if (s_token && otp_id && strcmp (otp_id, s_token) == 0)
{
if(verbose)
D (debug_file, "Match user/token as %s/%s", username, otp_id);
- return 1;
+ return AUTH_FOUND;
}
}
while (s_token != NULL);
@@ -281,6 +283,71 @@
}
int
+check_user_challenge_file(const char *chalresp_path, const struct passwd *user, FILE *debug_file)
+{
+ /*
+ * This function will look for users challenge files.
+ *
+ * Returns one of AUTH_FOUND, AUTH_NOT_FOUND, AUTH_ERROR
+ */
+ size_t len;
+ int r;
+ int ret = AUTH_NOT_FOUND;
+ char *userfile = NULL;
+ char *userfile_pattern = NULL;
+ glob_t userfile_glob;
+ const char *filename = NULL;
+
+ if (! chalresp_path) {
+ filename = "challenge";
+ } else {
+ filename = user->pw_name;
+ }
+
+ /* check for userfile challenge files */
+ r = get_user_cfgfile_path(chalresp_path, filename, user, &userfile);
+ if (!r) {
+ D (debug_file, "Failed to get user cfgfile path");
+ ret = AUTH_ERROR;
+ goto out;
+ }
+
+ if (!access(userfile, F_OK)) {
+ ret = AUTH_FOUND;
+ goto out;
+ }
+
+ /* check for userfile-* challenge files */
+ len = strlen(userfile) + 2 + 1;
+ if ((userfile_pattern = malloc(len)) == NULL) {
+ D (debug_file, "Failed to allocate memory for userfile pattern: %s", strerror(errno));
+ ret = AUTH_ERROR;
+ goto out;
+ }
+ snprintf(userfile_pattern, len, "%s-*", userfile);
+
+ r = glob(userfile_pattern, 0, NULL, &userfile_glob);
+ globfree(&userfile_glob);
+ switch (r) {
+ case GLOB_NOMATCH:
+ /* No matches found, so continue */
+ break;
+ case 0:
+ ret = AUTH_FOUND;
+ goto out;
+ default:
+ D (debug_file, "Error while checking for %s challenge files: %s", userfile_pattern, strerror(errno));
+ ret = AUTH_ERROR;
+ goto out;
+ }
+
+out:
+ free(userfile_pattern);
+ free(userfile);
+ return ret;
+}
+
+int
get_user_challenge_file(YK_KEY *yk, const char *chalresp_path, const struct passwd *user, char **fn, FILE *debug_file)
{
/* Getting file from user home directory, i.e. ~/.yubico/challenge, or
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pam_yubico-2.24/util.h new/pam_yubico-2.25/util.h
--- old/pam_yubico-2.24/util.h 2016-11-07 12:20:54.000000000 +0100
+++ new/pam_yubico-2.25/util.h 2017-08-30 08:24:30.000000000 +0200
@@ -44,6 +44,12 @@
fprintf (file, "\n"); \
} while (0)
+/* Return values for authorize_user_token and authorize_user_token_ldap */
+#define AUTH_NO_TOKENS -2 /* The user has no associated tokens */
+#define AUTH_ERROR 0 /* Internal error when looking up associated tokens */
+#define AUTH_FOUND 1 /* The requested token is associated to the user */
+#define AUTH_NOT_FOUND -1 /* The requested token is not associated to the user */
+
int get_user_cfgfile_path(const char *common_path, const char *filename, const struct passwd *user, char **fn);
int check_user_token(const char *authfile, const char *username, const char *otp_id, int verbose, FILE *debug_file);
@@ -74,6 +80,7 @@
int generate_random(void *buf, int len);
+int check_user_challenge_file(const char *chalresp_path, const struct passwd *user, FILE *debug_file);
int get_user_challenge_file(YK_KEY *yk, const char *chalresp_path, const struct passwd *user, char **fn, FILE *debug_file);
int load_chalresp_state(FILE *f, CR_STATE *state, bool verbose, FILE *debug_file);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pam_yubico-2.24/ykpamcfg.1 new/pam_yubico-2.25/ykpamcfg.1
--- old/pam_yubico-2.24/ykpamcfg.1 2016-05-23 09:44:17.000000000 +0200
+++ new/pam_yubico-2.25/ykpamcfg.1 2017-08-30 08:31:54.000000000 +0200
@@ -1,13 +1,13 @@
'\" t
.\" Title: ykpamcfg
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
-.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
-.\" Date: Version 2.22
+.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
+.\" Date: Version 2.25
.\" Manual: Yubico PAM Module Manual
.\" Source: yubico-pam
.\" Language: English
.\"
-.TH "YKPAMCFG" "1" "Version 2\&.22" "yubico\-pam" "Yubico PAM Module Manual"
+.TH "YKPAMCFG" "1" "Version 2\&.25" "yubico\-pam" "Yubico PAM Module Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
@@ -51,7 +51,7 @@
.PP
\fB\-p\fR \fIpath\fR
.RS 4
-specify output file for, default is ~/\&.yubico/challenge
+specify output file, default is ~/\&.yubico/challenge
.RE
.PP
\fB\-i\fR \fIiterations\fR
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pam_yubico-2.24/ykpamcfg.1.txt new/pam_yubico-2.25/ykpamcfg.1.txt
--- old/pam_yubico-2.24/ykpamcfg.1.txt 2016-02-18 13:11:10.000000000 +0100
+++ new/pam_yubico-2.25/ykpamcfg.1.txt 2017-08-30 08:24:30.000000000 +0200
@@ -21,7 +21,7 @@
choose action to perform. See ACTIONS below.
*-p* _path_::
-specify output file for, default is ~/.yubico/challenge
+specify output file, default is ~/.yubico/challenge
*-i* _iterations_::
number of iterations to use for pbkdf2 of expected response
1
0
Hello community,
here is the log from the commit of package opa-ff for openSUSE:Factory checked in at 2018-03-28 10:33:13
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/opa-ff (Old)
and /work/SRC/openSUSE:Factory/.opa-ff.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "opa-ff"
Wed Mar 28 10:33:13 2018 rev:8 rq:591589 version:10.6.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/opa-ff/opa-ff.changes 2018-03-04 12:51:13.946589682 +0100
+++ /work/SRC/openSUSE:Factory/.opa-ff.new/opa-ff.changes 2018-03-28 10:33:16.792948874 +0200
@@ -1,0 +2,7 @@
+Tue Mar 27 06:42:29 UTC 2018 - nmoreychaisemartin(a)suse.com
+
+- Update pseudo_opt path to %{_prefix}/lib/opa (bsc#1042721,bsc#1086934)
+- Update opasysconfdif to %{_sysconfdir}/opa/
+- Minor cleanup of sysconfig install code
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ opa-ff.spec ++++++
--- /var/tmp/diff_new_pack.rrEpLq/_old 2018-03-28 10:33:17.604919671 +0200
+++ /var/tmp/diff_new_pack.rrEpLq/_new 2018-03-28 10:33:17.608919527 +0200
@@ -20,8 +20,9 @@
%define opamgt_major 0
%define opasadb_major 1_0_0
-%define pseudo_opt %{_prefix}/lib/opa-ff/
-%define opasysconfdir %{_sysconfdir}/opa/sysconfig
+%define pseudo_opt %{_prefix}/lib/opa/
+%define opasysconfdir %{_sysconfdir}/opa/
+
Name: opa-ff
Version: 10.6.0
Release: 0
@@ -211,22 +212,15 @@
cp -t %{buildroot}%{_libdir}/ libopamgt.so.*
ln -s libopamgt.so.* %{buildroot}%{_libdir}/libopamgt.so
-ln -s /etc/opa/sysconfig/allhosts %{buildroot}/etc/sysconfig/opa/allhosts
-ln -s /etc/opa/sysconfig/chassis %{buildroot}/etc/sysconfig/opa/chassis
-ln -s /etc/opa/sysconfig/esm_chassis %{buildroot}//etc/sysconfig/opa/esm_chassis
-ln -s /etc/opa/sysconfig/hosts %{buildroot}/etc/sysconfig/opa/hosts
-ln -s /etc/opa/sysconfig/opafastfabric.conf %{buildroot}/etc/sysconfig/opa/opafastfabric.conf
-ln -s /etc/opa/sysconfig/opaff.xml %{buildroot}/etc/sysconfig/opa/opaff.xml
-ln -s /etc/opa/sysconfig/opamon.conf %{buildroot}/etc/sysconfig/opa/opamon.conf
-ln -s /etc/opa/sysconfig/opamon.si.conf %{buildroot}/etc/sysconfig/opa/opamon.si.conf
-ln -s /etc/opa/sysconfig/ports %{buildroot}/etc/sysconfig/opa/ports
-ln -s /etc/opa/sysconfig/switches %{buildroot}/etc/sysconfig/opa/switches
-
# Now that we've put everything in the buildroot, copy any default config files to their expected location for user
# to edit. To prevent nuking existing user configs, the files section of this spec file will reference these as noreplace
# config files.
cp %{buildroot}%{pseudo_opt}tools/opafastfabric.conf.def %{buildroot}/%{opasysconfdir}/opafastfabric.conf
+for file in $(ls %{buildroot}/%{opasysconfdir}); do
+ ln -s %{opasysconfdir}/$file %{buildroot}/etc/sysconfig/opa/$file
+done
+
#Now we do a bunch of work to build the file listing of what belongs to each RPM
# List for basic
@@ -317,9 +311,8 @@
%dir %{pseudo_opt}samples
%dir %{pseudo_opt}tools
-%dir %{_sysconfdir}/opa
-%dir %{opasysconfdir}
%dir %{_sysconfdir}/sysconfig/opa
+%{opasysconfdir}
/etc/sysconfig/opa/*
%config(noreplace) %{opasysconfdir}/opafastfabric.conf
1
0
Hello community,
here is the log from the commit of package nodejs6 for openSUSE:Factory checked in at 2018-03-28 10:33:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/nodejs6 (Old)
and /work/SRC/openSUSE:Factory/.nodejs6.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "nodejs6"
Wed Mar 28 10:33:08 2018 rev:23 rq:591577 version:6.13.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/nodejs6/nodejs6.changes 2018-02-20 17:58:25.239237075 +0100
+++ /work/SRC/openSUSE:Factory/.nodejs6.new/nodejs6.changes 2018-03-28 10:33:10.229184949 +0200
@@ -1,0 +2,31 @@
+Thu Mar 22 10:52:48 UTC 2018 - adam.majer(a)suse.de
+
+- New upstream LTS release 6.13.1:
+ * http,tls: better support for IPv6 addresses
+ * console: added console.count() and console.clear()
+ * crypto:
+ + expose ECDH class
+ + added cypto.randomFill() and crypto.randomFillSync()
+ + warn on invalid authentication tag length
+ * deps: upgrade libuv to 1.16.1
+ * dgram: added socket.setMulticastInterface()
+ * http: add agent.keepSocketAlive and agent.reuseSocket as to
+ allow overridable keep-alive behavior of Agent
+ * lib: return this from net.Socket.end()
+ * module: add builtinModules api that provides list of all
+ builtin modules in Node
+ * net: return this from getConnections()
+ * promises: more robust stringification for unhandled rejections
+ * repl: improve require() autocompletion
+ * src:
+ + add openssl-system-ca-path configure option
+ + add --use-bundled-ca --use-openssl-ca check
+ + add process.ppid
+ * tls: accept lookup option for tls.connect()
+ * tools,build: a new macOS installer!
+ * url: WHATWG URL api support
+ * util: add %i and %f formatting specifiers
+- remove any old manpage files in %pre from before update-alternatives
+ were used to manage symlinks to these manpages.
+
+-------------------------------------------------------------------
Old:
----
node-v6.12.3.tar.xz
New:
----
node-v6.13.1.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ nodejs6.spec ++++++
--- /var/tmp/diff_new_pack.szaeoZ/_old 2018-03-28 10:33:12.857090433 +0200
+++ /var/tmp/diff_new_pack.szaeoZ/_new 2018-03-28 10:33:12.861090289 +0200
@@ -26,7 +26,7 @@
###########################################################
Name: nodejs6
-Version: 6.12.3
+Version: 6.13.1
Release: 0
%define node_version_number 6
@@ -166,10 +166,13 @@
BuildRequires: fdupes
BuildRequires: pkg-config
BuildRequires: procps
-BuildRequires: python
-BuildRequires: python2
BuildRequires: xz
BuildRequires: zlib-devel
+%if 0%{?suse_version} >= 1500
+BuildRequires: python2
+%else
+BuildRequires: python
+%endif
%if ! %{with intree_openssl}
@@ -247,7 +250,11 @@
Obsoletes: nodejs-npm < 4.0.0
Provides: npm = %{version}
Provides: npm(npm) = 3.10.10
+%if 0%{?suse_version} >= 1500
Recommends: python2
+%else
+Recommends: python
+%endif
%description -n npm6
A package manager for Node.js that allows developers to install and
@@ -348,8 +355,11 @@
# remove .bak files, if any
find %{buildroot} -name \*.bak -print -delete
-# npm man page
+# npm/npx man page
install -D -m 644 deps/npm/man/man1/npm.1 %{buildroot}%{_mandir}/man1/npm%{node_version_number}.1
+%if %{node_version_number} >= 8
+install -D -m 644 deps/npm/man/man1/npx.1 %{buildroot}%{_mandir}/man1/npx%{node_version_number}.1
+%endif
#node-gyp needs common.gypi too
install -D -m 644 common.gypi \
@@ -443,6 +453,7 @@
%if %{node_version_number} >= 8
%{_bindir}/npx%{node_version_number}
+%{_mandir}/man1/npx%{node_version_number}.1%{ext_man}
%ghost %{_bindir}/npx-default
%ghost %{_mandir}/man1/npx.1%{ext_man}
%ghost %{_sysconfdir}/alternatives/npx-default
@@ -460,6 +471,12 @@
%defattr(-,root,root)
%doc doc/api
+%pre
+# remove files that are no longer owned but provided by update-alternatives
+if ! [ -L %{_mandir}/man1/node.1%{ext_man} ]; then
+ rm -f %{_mandir}/man1/node.1%{ext_man}
+fi
+
%post
update-alternatives \
--install %{_bindir}/node-default node-default %{_bindir}/node%{node_version_number} %{node_version_number} \
@@ -470,6 +487,12 @@
update-alternatives --remove node-default %{_bindir}/node%{node_version_number}
fi
+%pre -n npm%{node_version_number}
+# remove files that are no longer owned but provided by update-alternatives
+if ! [ -L %{_mandir}/man1/npm.1%{ext_man} ]; then
+ rm -f %{_mandir}/man1/npm.1%{ext_man}
+fi
+
%post -n npm%{node_version_number}
update-alternatives \
--install %{_bindir}/npm-default npm-default %{_bindir}/npm%{node_version_number} %{node_version_number} \
++++++ SHASUMS256.txt ++++++
--- /var/tmp/diff_new_pack.szaeoZ/_old 2018-03-28 10:33:12.893089138 +0200
+++ /var/tmp/diff_new_pack.szaeoZ/_new 2018-03-28 10:33:12.893089138 +0200
@@ -1,42 +1,42 @@
-3ca24ee434513dd4f9180ffca6d2e740255aa046ed88e665ce15bb8ee9623380 node-v6.12.3-aix-ppc64.tar.gz
-4e73157e4278f5763b176c41c0c86900031f8adc3d42f9d87d54b951c656449b node-v6.12.3-darwin-x64.tar.gz
-d26f9b3e0b429e902e53a4288e8fcc7985db4ab2b7ba4cc41d6135970fcd55b8 node-v6.12.3-darwin-x64.tar.xz
-1c756b7b2f3f5e68523e8c26f15e806fdc16608dc12305ffdb314cd61fa44418 node-v6.12.3-headers.tar.gz
-9db44b5fc7279837fd163b68c5c48e4c1f00c5c383bca922522c4639df96d66a node-v6.12.3-headers.tar.xz
-b25af85958456d64b4793dddc894701d5b0dfa74144dad444705e901d46480c1 node-v6.12.3-linux-arm64.tar.gz
-abe06525a8d6f70b93f853d385f3144120d3e857e946e534a51448c59f8e394c node-v6.12.3-linux-arm64.tar.xz
-e710bbd3aaf29cd77f4f939c6bb262f5108793d460a27d68e1d4927d023017c3 node-v6.12.3-linux-armv6l.tar.gz
-b092240b98465dfcfaff5ea7d5916128396bdf30e9e531c2f23034a3d75a700e node-v6.12.3-linux-armv6l.tar.xz
-b9bbf2571fba155f800d202dc67fac9c108969cb033da26e00c4b5d0c0443651 node-v6.12.3-linux-armv7l.tar.gz
-9dd8afb1098f44e1a23d72a04fb9c58cec5851ec8606a871f723bfe945ece6bf node-v6.12.3-linux-armv7l.tar.xz
-f90c2537163092dd6f62a0db32e911dcfcb5c2dee1f538ed27b1a7824845ce72 node-v6.12.3-linux-ppc64le.tar.gz
-b948bda8cba8e104b64df13e183d97696601027871f34c3de6bbb9d3decc81f8 node-v6.12.3-linux-ppc64le.tar.xz
-4264601e1c853caea3e53a9f91cea023d98b1181d1d08b293986da5e6f9efc79 node-v6.12.3-linux-ppc64.tar.gz
-e0c4a5834ca1b263be24d07d6b3b1ddcdf815db9ddc8312d1226d359e8a8c64a node-v6.12.3-linux-ppc64.tar.xz
-c37db70badf1e9807357e827ea1f748e93ee26a4614e6c93cdb39fdb245afe7b node-v6.12.3-linux-s390x.tar.gz
-bfbb2741047e15a7a60618d115f67d392b496005b72dc2de1e332bb19f23cf5b node-v6.12.3-linux-s390x.tar.xz
-0f8144c84c4379cb35ae409779c062a65680cf163b52c4660932eb58cfa1d065 node-v6.12.3-linux-x64.tar.gz
-94ebeb5fb0176229bc2ec8b83fe92254facb13041e147aeebad12c72e798aa29 node-v6.12.3-linux-x64.tar.xz
-a60e400b496d8e7ee219d96ea9b6c296431f2cd6d84cb1fbe70da47c2720c73c node-v6.12.3-linux-x86.tar.gz
-e3b7cd999b1f57cf836bff55bbf7709774a8a916879ecfcecf59bc3fdc4c5ab7 node-v6.12.3-linux-x86.tar.xz
-af36cecf9b3a6a6307f8fa87fd07df3532268424a43e186beeb6778a930a3ee1 node-v6.12.3.pkg
-ae17f7530951235685e64785ae9b1b8d7b94f767cb3cc93e2cb036f2a12b72e9 node-v6.12.3-sunos-x64.tar.gz
-6312406dfa391f40b4e7770d49773f20fc47faac129a6ece4edce00a127424ed node-v6.12.3-sunos-x64.tar.xz
-582bd75f79e19b08393a2d2f796c5a8b3209ec6b3cfb31f0e0d7c3be80f15ce6 node-v6.12.3-sunos-x86.tar.gz
-8748547545d66a6718367edf08d9d073e92574e113550876245cfc3890a204cf node-v6.12.3-sunos-x86.tar.xz
-088788d1c887309f8650730908dbf6f09140077a8aaf582021af4bef2a6d6b84 node-v6.12.3.tar.gz
-1a58672fa2178098c30306862cccdf02b8803dafe1d2e9f51c8c96749f3ddcdc node-v6.12.3.tar.xz
-7b04074f466af1f2e54517537958694ce166f3463ee5878749258e57732565c6 node-v6.12.3-win-x64.7z
-14ed5f40667a6ec6b80c9b1647dbebd5fcd965eec965af6725c90c00e917183b node-v6.12.3-win-x64.zip
-48b86057234fa211157aae77e971cf17729771bc9470321b9e1ea04df7b58184 node-v6.12.3-win-x86.7z
-36f6fd2acaa71c452688f62da5ae231fa3b37e5536b555ca02d6ba3f79b3f087 node-v6.12.3-win-x86.zip
-217fb0ce8b8faf24b06de1cb588b2c534555174b0438acb8b80d0d654e1f051f node-v6.12.3-x64.msi
-0a34c4fc524703592cbb6c7fb88a5a199fe5d1de5d052eb6ce32ccb020a56a63 node-v6.12.3-x86.msi
-6258bbedb697c2069cf38331bdaa32a5ece20107b0185b5d3239be40dcc38209 win-x64/node.exe
-4065fbf988bfbb6032e33b7efe09c713638037227c838224253ed47cacebac00 win-x64/node.lib
-e84586821d12f70b333198c70fcacf757a96cfd5fff9feeeb67f50de30554082 win-x64/node_pdb.7z
-622cc4828cde6df0b11521c6081ea2ea6643f67a2cca285f2967a7bd12218ee5 win-x64/node_pdb.zip
-92a90789bee3ba1a428c91b3a3752fe1c284b6324d7ad7dc678e271c34240e22 win-x86/node.exe
-0471e46fe62100a7b69aad1644223e33bf632eabbe8f348f1b381b1c2862176e win-x86/node.lib
-136eedad8c660a995402fdd4a49e56cc4cba516395170d2b7eaf220b21fed7df win-x86/node_pdb.7z
-7770a5f0dcedf815ea4279f3ee6435bdf3f34e804e827a1a376388585645005d win-x86/node_pdb.zip
+202fccebc6629de680c13ce3ec69c8ba91ddaa1eace00fa18f9d9b10775442c2 node-v6.13.1-aix-ppc64.tar.gz
+6a34a95342550e75dc8354c96ff5fd71c8401650f6bf83cfc1051b76fd44334d node-v6.13.1-darwin-x64.tar.gz
+5b5370d7dcaff65eb1509614c62f99bb70042d2f45e1d0e35edca2a8ddcfe32f node-v6.13.1-darwin-x64.tar.xz
+8f99b4f03926eceee4dc3c7a489f9c529628fac1f617a4e410dc1da1efe9b355 node-v6.13.1-headers.tar.gz
+52c948317c2e4897339d5cbeefb2f2d53ccddf4d6a2f142c8c96af19c68c02ae node-v6.13.1-headers.tar.xz
+27c9dd1c907f751f073f6d092b72a184a836aac7cac40fdf056edcc1987102b3 node-v6.13.1-linux-arm64.tar.gz
+f144ce6563b8f04b2d077df836663788a5c5a126e0375ea52b283a38fa22d9c1 node-v6.13.1-linux-arm64.tar.xz
+bb9d1aee17eed7c0777d6d7885aedad450d1fe197705c01fd9928d36d18ef5aa node-v6.13.1-linux-armv6l.tar.gz
+3965e55a412c0f587d4be981c2cfec09f86d40a3386e8d1ec0bc4e4f4b95ab6e node-v6.13.1-linux-armv6l.tar.xz
+b79921ac58b5d74c7edc012e25d4fb760be2aa5c431cc553e3077c68e8fddaf0 node-v6.13.1-linux-armv7l.tar.gz
+082082c5767b49cd4d9ae9cbef51a7625de38ac7796292eff0c433a1c7aff891 node-v6.13.1-linux-armv7l.tar.xz
+d94f1a709123b864f31c7b877e7a6a654404d8d64a6edf3ce7ebe4f50357a794 node-v6.13.1-linux-ppc64le.tar.gz
+ac6a3a975a12e17426e316c2bc5896dfd703c6bca220366897e30a1408d4d2ea node-v6.13.1-linux-ppc64le.tar.xz
+ff70ea5baa6655509cfcf4bad907849bb4c2a63fc2a03a0dcedd562fdf0fca03 node-v6.13.1-linux-ppc64.tar.gz
+66f5c48b40acc6f79b85bcf86114fd5e2e65f99d2ee4f9cc4bf979aecd9b27a2 node-v6.13.1-linux-ppc64.tar.xz
+c83cc489f427d325e21a14f24f2a5703351d50e35bfe938f57fe2250509d4bfd node-v6.13.1-linux-s390x.tar.gz
+d9528bfa42618627e4e3283ab7658efc9f688c501dcadbc9e3f1672b9cc241c7 node-v6.13.1-linux-s390x.tar.xz
+b8eb262c8a0713da7c56736a7e28533303369dae8f0cbdbe901dd3c5f6a19829 node-v6.13.1-linux-x64.tar.gz
+f82072a238bf9e290b84fbadaf0cf0e09a05d2a515d59337775342b4ef96db25 node-v6.13.1-linux-x64.tar.xz
+236b603b1c114b404cea05f5eacddc5620b4b2aa36475e841808b856efdb298a node-v6.13.1-linux-x86.tar.gz
+95f18d6814a31fcf90abcee4ed2984c0c23611791924692f348e48c4e5472401 node-v6.13.1-linux-x86.tar.xz
+aa2d67d5c481fa2b49909eef338898615e68ffb5a93cd2d83ea8566c7b7d3088 node-v6.13.1.pkg
+f3559c936654392f07d6f2f0e401d2dfd567e04fa15c2cee0c327d1e90aeb1ab node-v6.13.1-sunos-x64.tar.gz
+03a49cd7e22dcdb9b51bc737307894e57cdb59d57eefbb867f954aa434a566e0 node-v6.13.1-sunos-x64.tar.xz
+72959a90454a3f09a7caf7440bc0159b3d1d0f7edcd0cfa9d98967ffbe43be27 node-v6.13.1-sunos-x86.tar.gz
+87a6a440f8444235b41b2c9efd4755ced485507a83fa878805bba08b8d72936f node-v6.13.1-sunos-x86.tar.xz
+649374430815aaf425b7b60621a9b7b072a1584cebc676d3cbf0ee4b9bbd94ee node-v6.13.1.tar.gz
+c437350b476503a0f5605a5cc08bc41fe3bdb8ec100939ec7ea6600e44d56a46 node-v6.13.1.tar.xz
+adb9ad94f7617749ad894b477cf828264df852b68219fda90711bbc4c43729e2 node-v6.13.1-win-x64.7z
+6ef8382388d5a7e4329d9cccd87b1e048677aa1e4fb2e8d750345e194aeb69c7 node-v6.13.1-win-x64.zip
+4c89ca47e85af587b00a856249678bbf2611304704e1969ec761b68bbe4a75e4 node-v6.13.1-win-x86.7z
+2ad103c0087055c09aaba72ffb7e89d2b9e6a1d105a390d2c8f1f0df5a3df3c9 node-v6.13.1-win-x86.zip
+595e074c59ac91ef215aecfba06a9d54067322409f9963024596fa258ec6fc40 node-v6.13.1-x64.msi
+fa9efd40080163cfc2eb80bef9fa3eaca991e0de9fa8f6a958737911ddee4de2 node-v6.13.1-x86.msi
+3b46c46c1d5944eef6a93f44b0a8be1c1346232c536c93be39675bc1b9a82c7f win-x64/node.exe
+bb607fa6c69484e7ebde7827665388e7eee8d28ebcf8c93a62e9ddf13055f706 win-x64/node.lib
+91ca9a11fc7ccb2b2c140b956420d4ba0105f6eda69bb2fbde195f07411b42f1 win-x64/node_pdb.7z
+4470fb4701104e67e2aee7c8a60c30ffa99d7df902292694069ddd7ae57fe4ca win-x64/node_pdb.zip
+c58a4ca08c935ff5e5d453262220ea0a3cba81d7d1589dbb85fe8171c11375a8 win-x86/node.exe
+4a44485dcfdd1417713dbcff873e3e7987327096530731d5bc2ec5d96e67ad39 win-x86/node.lib
+a9904dbc80d83eb7503b73dc29d2f870f2400ce1bfb164860105025b586aa7bd win-x86/node_pdb.7z
+d675d03144ff62ddcc1b55215162f713320d9e8593e162d834d657a0c1723459 win-x86/node_pdb.zip
++++++ SHASUMS256.txt.sig ++++++
Binary files /var/tmp/diff_new_pack.szaeoZ/_old and /var/tmp/diff_new_pack.szaeoZ/_new differ
++++++ node-v6.12.3.tar.xz -> node-v6.13.1.tar.xz ++++++
/work/SRC/openSUSE:Factory/nodejs6/node-v6.12.3.tar.xz /work/SRC/openSUSE:Factory/.nodejs6.new/node-v6.13.1.tar.xz differ: char 26, line 1
1
0
Hello community,
here is the log from the commit of package php-composer for openSUSE:Factory checked in at 2018-03-28 10:33:06
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/php-composer (Old)
and /work/SRC/openSUSE:Factory/.php-composer.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "php-composer"
Wed Mar 28 10:33:06 2018 rev:10 rq:591576 version:1.6.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/php-composer/php-composer.changes 2017-10-29 20:24:38.394746106 +0100
+++ /work/SRC/openSUSE:Factory/.php-composer.new/php-composer.changes 2018-03-28 10:33:07.857270258 +0200
@@ -1,0 +2,57 @@
+Tue Mar 27 10:36:23 UTC 2018 - guoyunhebrave(a)gmail.com
+
+- Version 1.6.3
+ * Fixed GitLab downloads failing in some edge cases
+ * Fixed ctrl-C handling during create-project
+ * Fixed GitHub VCS repositories not prompting for a token in some conditions
+ * Fixed SPDX license identifiers being case sensitive
+ * Fixed and clarified a few dependency resolution error reporting strings
+ * Fixed SVN commit log fetching in verbose mode when using private repositories
+- Version 1.6.2
+ * Fixed more autoloader regressions
+ * Fixed support for updating dist refs in gitlab URLs
+- Version 1.6.1
+ * Fixed upgrade regression due to some autoloader cleanups
+ * Fixed some overly loose version constraints
+- Version 1.6.0
+ * Improved performance of installs and updates from git clones when checking
+ out known commits
+ * Added check-platform-reqs command that checks that your PHP and extensions
+ versions match the platform requirements of the installed packages
+ * Added support for SPDX license identifiers v3.0, deprecates GPL/LGPL/AGPL
+ identifiers, which should now have a -only or -or-later suffix added.
+ * Added --with-all-dependencies to the update and require commands which
+ updates all dependencies of the listed packages, including those that are
+ direct root requirements
+ * Added scripts-descriptions key to composer.json to customize the description
+ and document your custom commands
+ * Added support for the uppercase NO_PROXY env var
+ * Added support for COMPOSER_DEFAULT_{AUTHOR,LICENSE,EMAIL,VENDOR} env vars to
+ pre-populate init command values
+ * Added support for COMPOSER_MEMORY_LIMIT env var to make Composer set the PHP
+ memory limit explicitly
+ * Added support for simple strings for the bin
+ * Added support for local fossil repositories
+ * Added suggestions for alternative spellings when entering packages in init
+ and require commands and nothing can be found
+ * Fixed installed.json data to be sorted alphabetically by package name
+ * Fixed compatibility with Symfony 4.x components that Composer uses
+- Version 1.5.6
+ * Fixed root package version guessed when a tag is checked out
+ * Fixed support for GitLab repos hosted on non-standard ports
+ * Fixed regression in require command when requiring unstable packages, part 3
+- Version 1.5.5
+ * Fixed regression in require command when requiring unstable packages, part 2
+- Version 1.5.4
+ * Fixed regression in require command when requiring unstable packages
+- Version 1.5.3
+ * Fixed require/remove commands reverting the composer.json change when a
+ non-solver-related error occurs
+ * Fixed GitLabDriver to support installations of GitLab not at the root of the
+ domain
+ * Fixed create-project not following the optimize-autoloader flag of the root
+ package
+ * Fixed Authorization header being forwarded across domains after a redirect
+ * Improved some error messages for clarity
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ php-composer.spec ++++++
--- /var/tmp/diff_new_pack.mZ6BWO/_old 2018-03-28 10:33:08.653241630 +0200
+++ /var/tmp/diff_new_pack.mZ6BWO/_new 2018-03-28 10:33:08.653241630 +0200
@@ -1,7 +1,7 @@
#
# spec file for package php-composer
#
-# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,12 +17,12 @@
Name: php-composer
-Version: 1.5.2
+Version: 1.6.3
Release: 0
Summary: Dependency Management for PHP
License: MIT
Group: Development/Libraries/Other
-URL: http://getcomposer.org/
+Url: http://getcomposer.org/
Source0: https://getcomposer.org/download/%{version}/composer.phar
Source1: https://github.com/composer/composer/raw/%{version}/README.md
Source2: https://github.com/composer/composer/raw/%{version}/LICENSE
++++++ README.md ++++++
--- /var/tmp/diff_new_pack.mZ6BWO/_old 2018-03-28 10:33:08.705239760 +0200
+++ /var/tmp/diff_new_pack.mZ6BWO/_new 2018-03-28 10:33:08.709239616 +0200
@@ -1,7 +1,7 @@
Composer - Dependency Management for PHP
========================================
-Composer helps you declare, manage and install dependencies of PHP projects.
+Composer helps you declare, manage, and install dependencies of PHP projects.
See [https://getcomposer.org/](https://getcomposer.org/) for more information and documentation.
++++++ composer.phar ++++++
Binary files /var/tmp/diff_new_pack.mZ6BWO/_old and /var/tmp/diff_new_pack.mZ6BWO/_new differ
1
0
Hello community,
here is the log from the commit of package perl-Text-RecordParser for openSUSE:Factory checked in at 2018-03-28 10:33:02
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-Text-RecordParser (Old)
and /work/SRC/openSUSE:Factory/.perl-Text-RecordParser.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-Text-RecordParser"
Wed Mar 28 10:33:02 2018 rev:8 rq:591561 version:1.6.5
Changes:
--------
--- /work/SRC/openSUSE:Factory/perl-Text-RecordParser/perl-Text-RecordParser.changes 2015-04-23 08:05:08.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.perl-Text-RecordParser.new/perl-Text-RecordParser.changes 2018-03-28 10:33:03.917411959 +0200
@@ -1,0 +2,5 @@
+Sat Mar 17 05:22:56 UTC 2018 - bwiedemann(a)suse.com
+
+- Fix build
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ perl-Text-RecordParser.spec ++++++
--- /var/tmp/diff_new_pack.ZhQoSb/_old 2018-03-28 10:33:04.785380742 +0200
+++ /var/tmp/diff_new_pack.ZhQoSb/_new 2018-03-28 10:33:04.789380598 +0200
@@ -68,7 +68,7 @@
%setup -q -n %{cpan_name}-%{version}
%build
-%{__perl} Makefile.PL INSTALLDIRS=vendor
+PERL5LIB=. %{__perl} Makefile.PL INSTALLDIRS=vendor
%{__make} %{?_smp_mflags}
%check
1
0