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
April 2020
- 1 participants
- 3810 discussions
Hello community,
here is the log from the commit of package armnn for openSUSE:Factory checked in at 2020-04-01 19:10:51
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/armnn (Old)
and /work/SRC/openSUSE:Factory/.armnn.new.3248 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "armnn"
Wed Apr 1 19:10:51 2020 rev:7 rq:790253 version:20.02
Changes:
--------
--- /work/SRC/openSUSE:Factory/armnn/armnn.changes 2020-03-24 22:38:54.097280675 +0100
+++ /work/SRC/openSUSE:Factory/.armnn.new.3248/armnn.changes 2020-04-01 19:13:43.651406646 +0200
@@ -1,0 +2,5 @@
+Tue Mar 31 15:23:29 UTC 2020 - Guillaume GARDET <guillaume.gardet(a)opensuse.org>
+
+- Disable RPATH to fix build on Leap15.2/SLE15SP2
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ armnn.spec ++++++
--- /var/tmp/diff_new_pack.UnRdEN/_old 2020-04-01 19:13:46.575407962 +0200
+++ /var/tmp/diff_new_pack.UnRdEN/_new 2020-04-01 19:13:46.579407963 +0200
@@ -386,6 +386,7 @@
%endif
%endif
%cmake \
+ -DCMAKE_SKIP_RPATH=True \
-DSHARED_BOOST=1 \
-DCMAKE_CXX_FLAGS:STRING="%{optflags} -pthread $CXX_ADDITIONAL_FLAGS -Wno-error=implicit-fallthrough -Wno-error=unused-parameter" \
-DBOOST_LIBRARYDIR=%{_libdir} \
1
0
Hello community,
here is the log from the commit of package jag for openSUSE:Factory checked in at 2020-04-01 19:10:12
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/jag (Old)
and /work/SRC/openSUSE:Factory/.jag.new.3248 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "jag"
Wed Apr 1 19:10:12 2020 rev:2 rq:790255 version:0.3.6
Changes:
--------
--- /work/SRC/openSUSE:Factory/jag/jag.changes 2020-03-30 23:05:14.352239265 +0200
+++ /work/SRC/openSUSE:Factory/.jag.new.3248/jag.changes 2020-04-01 19:13:33.407402037 +0200
@@ -1,0 +2,8 @@
+Tue Mar 31 13:05:23 UTC 2020 - Christophe Giboudeaux <christophe(a)krop.fr>
+
+- Update to 0.3.6
+ * Project files cleanup
+ * Renamed PNG image from editor.
+ * Added manpage and desktop files
+
+-------------------------------------------------------------------
Old:
----
jag-0.3.5.tar.bz2
jag-icons.tar
New:
----
jag-upstream-0.3.6.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ jag.spec ++++++
--- /var/tmp/diff_new_pack.P8Dqin/_old 2020-04-01 19:13:36.723403529 +0200
+++ /var/tmp/diff_new_pack.P8Dqin/_new 2020-04-01 19:13:36.723403529 +0200
@@ -1,7 +1,7 @@
#
# spec file for package jag
#
-# Copyright (c) 2019 SUSE LLC
+# Copyright (c) 2020 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,15 +17,14 @@
Name: jag
-Version: 0.3.5
+Version: 0.3.6
Release: 0
Summary: Arcade and Puzzle 2D Game in which you have to break all the target pieces
+# jag.xlabsoft.com is down
License: GPL-3.0-or-later
Group: Amusements/Games/Logic
-# jag.xlabsoft.com is down
URL: https://salsa.debian.org/games-team/jag
-Source0: https://salsa.debian.org/games-team/jag/-/archive/%{version}/%{name}-%{vers…
-Source1: %{name}-icons.tar
+Source0: https://salsa.debian.org/games-team/jag/-/archive/upstream/%{version}/%{nam…
Source2: %{name}.appdata.xml
BuildRequires: gcc-c++
BuildRequires: hicolor-icon-theme
@@ -78,11 +77,11 @@
This package contains the level editor for JAG.
%prep
-%setup -q -a1
+%setup -q -n %{name}-upstream-%{version}
# qmake...
sed -i 's#target.path = %{_prefix}/games/#target.path = %{_bindir}#' game.pro
-sed -i 's#target.path = %{_prefix}/games/#target.path = %{_bindir}#' src/editor/editor.pro
+sed -i 's#target.path = %{_prefix}/games/#target.path = %{_bindir}#' src/editor/jag-editor.pro
%build
%qmake5
@@ -101,18 +100,16 @@
%qmake5_install
popd
-# install icons
-for i in 22 32 48 64 72 96 128 256 ; do
- install -Dm 0644 icons/%{name}_${i}x${i}.png %{buildroot}%{_datadir}/icons/hicolor/${i}x${i}/apps/%{name}.png
- install -Dm 0644 icons/%{name}-editor_${i}x${i}.png %{buildroot}%{_datadir}/icons/hicolor/${i}x${i}/apps/%{name}-editor.png
-done
-
-# install Desktop files
-install -Dm 0644 debian/%{name}.desktop %{buildroot}%{_datadir}/applications/%{name}.desktop
+# Install the desktop files
+install -Dm 0644 src/jag.desktop %{buildroot}%{_datadir}/applications/%{name}.desktop
%suse_update_desktop_file -c %{name}-editor "JAG Level Editor" JAG jag-editor jag-editor "Game;LogicGame;"
-# install software gallery metadata
+# Install icons for applications menus
+install -Dm 0644 src/images/jag.png %{buildroot}%{_datadir}/pixmaps/jag.png
+install -Dm 0644 src/editor/jag-editor.png %{buildroot}%{_datadir}/pixmaps/jag-editor.png
+
+# Install software gallery metadata
install -Dm 0644 %{SOURCE2} %{buildroot}%{_datadir}/appdata/%{name}.appdata.xml
%files
@@ -122,7 +119,7 @@
%{_bindir}/%{name}
%{_datadir}/appdata/%{name}.appdata.xml
%{_datadir}/applications/%{name}.desktop
-%{_datadir}/icons/hicolor/*/apps/%{name}.png
+%{_datadir}/pixmaps/jag.png
%files data
%license LICENSE
@@ -135,6 +132,6 @@
%{_bindir}/jag-editor
%{_datadir}/applications/jag-editor.desktop
%{_datadir}/games/%{name}/editor/
-%{_datadir}/icons/hicolor/*/apps/%{name}-editor.png
+%{_datadir}/pixmaps/jag-editor.png
%changelog
1
0
Hello community,
here is the log from the commit of package gnuhealth for openSUSE:Factory checked in at 2020-04-01 19:09:51
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gnuhealth (Old)
and /work/SRC/openSUSE:Factory/.gnuhealth.new.3248 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gnuhealth"
Wed Apr 1 19:09:51 2020 rev:37 rq:790258 version:3.6.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/gnuhealth/gnuhealth.changes 2020-02-29 21:25:17.662609101 +0100
+++ /work/SRC/openSUSE:Factory/.gnuhealth.new.3248/gnuhealth.changes 2020-04-01 19:13:04.327388954 +0200
@@ -1,0 +2,21 @@
+Tue Mar 31 16:09:25 UTC 2020 - Axel Braun <axel.braun(a)gmx.de>
+
+- update for boo#1167126, 1167128
+
+-------------------------------------------------------------------
+Tue Mar 17 13:32:03 UTC 2020 - Axel Braun <axel.braun(a)gmx.de>
+
+- clean up of spec file to get rid of warnings
+ added gnuhealth-rpmlintrc
+
+-------------------------------------------------------------------
+Sat Mar 14 15:24:49 UTC 2020 - Axel Braun <axel.braun(a)gmx.de>
+
+- gnuhealth-control 3.6.3 - added chmod after getlang command
+
+-------------------------------------------------------------------
+Mon Mar 2 19:25:36 UTC 2020 - Axel Braun <axel.braun(a)gmx.de>
+
+- modified getlang to exclude 2 directories (otherwise initialization fails after language installation)
+
+-------------------------------------------------------------------
New:
----
gnuhealth-rpmlintrc
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ gnuhealth.spec ++++++
--- /var/tmp/diff_new_pack.MYNloc/_old 2020-04-01 19:13:06.219389805 +0200
+++ /var/tmp/diff_new_pack.MYNloc/_new 2020-04-01 19:13:06.223389807 +0200
@@ -33,14 +33,15 @@
BuildRequires: trytond
URL: http://health.gnu.org
-##ource0: http://ftp.gnu.org/gnu/health/%{name}-%{version}.tar.gz
-Source: %{name}-%{version}.tar.gz
+Source0: %{name}-%{version}.tar.gz
+###http://ftp.gnu.org/gnu/health/%{name}-%{version}.tar.gz
Source1: GNUHealth.README.SUSE
Source2: gnuhealth-control
Source3: gnuhealth.service
Source4: gnuhealth-webdav@.service
Source5: openSUSE-gnuhealth-setup
Source6: gnuhealth
+Source7: gnuhealth-rpmlintrc
Patch0: shebang.diff
##atch1: xmlfix.diff
##atch2: demo.diff
@@ -135,11 +136,19 @@
#delete empty demo directory
rm -rf scripts/demo
-mkdir -p $RPM_BUILD_ROOT%{_unitdir}
-install -p -m 644 %{SOURCE3} $RPM_BUILD_ROOT%{_unitdir}/%{name}.service
-install -p -m 644 %{SOURCE4} $RPM_BUILD_ROOT%{_unitdir}/%{name}-webdav@.service
-
-mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/tryton
+mkdir -p %{buildroot}%{_unitdir}
+install -p -m 644 %{SOURCE3} %{buildroot}%{_unitdir}/%{name}.service
+install -p -m 644 %{SOURCE4} %{buildroot}%{_unitdir}/%{name}-webdav@.service
+
+mkdir -p %{buildroot}%{_sysconfdir}/tryton
+
+#remove double license file:
+rm backend/fhir/client/COPYING
+
+#Move FHIR serer to examples directory
+mkdir -p -m 755 %{buildroot}%{_docdir}/%{name}/examples/
+mv backend/fhir* %{buildroot}%{_docdir}/%{name}/examples/.
+rmdir backend
%python_expand %fdupes %{buildroot}%{$python_sitelib}
@@ -169,23 +178,25 @@
%preun
%service_del_preun gnuhealth.service
+%service_del_preun gnuhealth-webdav@.service
%postun
%service_del_postun gnuhealth.service
+%service_del_postun gnuhealth-webdav@.service
%files -n %{name}-orthanc
%{python3_sitelib}/%{name}_orthanc*
%{python3_sitelib}/trytond/modules/health_orthanc*
%files
-%defattr(744,root,root)
%{_bindir}/gnuhealth-control
%{_bindir}/openSUSE-gnuhealth-setup
%{_bindir}/install_demo_database.sh
%{_unitdir}/%{name}.service
%{_unitdir}/%{name}-webdav@.service
-%defattr(-,root,root)
-%doc README Changelog gnuhealth-setup version gnuhealthrc GNUHealth.README.SUSE scripts/* backend/* config/* doc/*
+%doc README Changelog gnuhealth-setup version gnuhealthrc GNUHealth.README.SUSE scripts/* config/* doc/*
+%{_docdir}/%{name}/examples*
+%dir %{_sysconfdir}/tryton
%license COPYING
%exclude %{python3_sitelib}/%{name}_orthanc*
%exclude %{python3_sitelib}/trytond/modules/health_orthanc*
++++++ gnuhealth-3.6.3.tar.gz ++++++
/work/SRC/openSUSE:Factory/gnuhealth/gnuhealth-3.6.3.tar.gz /work/SRC/openSUSE:Factory/.gnuhealth.new.3248/gnuhealth-3.6.3.tar.gz differ: char 5, line 1
++++++ gnuhealth-control ++++++
--- /var/tmp/diff_new_pack.MYNloc/_old 2020-04-01 19:13:06.299389841 +0200
+++ /var/tmp/diff_new_pack.MYNloc/_new 2020-04-01 19:13:06.299389841 +0200
@@ -1,13 +1,13 @@
#!/bin/bash
# gnuhealth-control
-# The GNU Health control center
+# The GNU Health control center for openSUSE Installations
##############################################################################
#
# GNU Health: The Free Health and Hospital Information System
# Copyright (C) 2008-2015 Luis Falcon <falcon(a)gnu.org>
-# Adaption to openSUSE Axel Braun <axel.braun(a)gmx.de>
+# Adaption to openSUSE Axel Braun <axel.braun(a)gnuhealth.org>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -24,14 +24,12 @@
#
##############################################################################
-VERSION="3.6.2-openSUSE"
+VERSION="3.6.3.1-openSUSE"
-TRYTON_URL="http://downloads.tryton.org"
-GNUHEALTH_URL="http://ftp.gnu.org/gnu/health"
-TRANSLATE_URL="http://translate.gnusolidario.org"
-GNUHEALTH_DIR=$(ls -d /usr/lib/python3.* )/site-packages/trytond/modules
+TRANSLATE_URL="https://translate.gnusolidario.org"
+GNUHEALTH_DIR=$(rpm -ql gnuhealth | egrep '^/usr/lib/python.\..{1,2}/site-packages$')
-UPDATE_DOWNLOAD_DIR="/tmp/gnuhealth_update"
+UPDATE_DOWNLOAD_DIR=$(mktemp -d)
usage()
{
@@ -93,31 +91,8 @@
get_current_values()
{
- # Bail out if no GNU Health profile exists
- #if [ ! -e $HOME/.gnuhealthrc ]
- #then
- # cli_msg "ERROR" "No GNU Health profile found !"
- # exit 1
- #fi
-
- # Stop if it can't find the GNU Health version
- #if [ -z "$GNUHEALTH_VERSION" ]
- #then
- # cli_msg "ERROR" "Could not find the GNU Health version env. variable"
- # exit 1
- #fi
-
- # Stop if current GNU Health version < 2.8.0
- #local raw_ver=`echo $GNUHEALTH_VERSION | tr -d '.'`
- #if [ $raw_ver -lt 280 ]
- #then
- # cli_msg "ERROR" "GNU Health version must be at least 2.8"
- # exit 1
- #fi
cli_msg "INFO" "Environment variables"
- #cli_msg "INFO" "GNUHEALTH_VERSION = ${GNUHEALTH_VERSION}"
- #cli_msg "INFO" "TRYTON VERSION = ${TRYTON_VERSION}"
cli_msg "INFO" "PYTHONPATH = $PYTHONPATH"
}
@@ -129,8 +104,10 @@
local COMMAND=$1
local BACKDATE=`date -u +%Y-%m-%d_%H%M%S`
- local LOCKFILE="/tmp/.gnuhealth_backup.lock"
- local INFOFILE="/tmp/gnuhealth_backup.log"
+# lockfile is moved to a location not writeable/predictable by user
+ local LOCKFILE="/var/run/gnuhealth_backup.lock"
+# Infofile is moved to a location not writeable by user
+ local INFOFILE="/var/log/gnuhealth_backup.log"
local BACKDIR=""
local DB=""
@@ -164,7 +141,7 @@
exit 1
fi
- touch $LOCKFILE
+ echo $$ > $LOCKFILE
# Backup start
@@ -190,21 +167,14 @@
cli_msg "INFO" "Backup successfully written to ${BACKDIR}/${BACKUP_NAME}" | tee -a $INFOFILE
#AB - END
- #Remove lock file
+#Remove lock file
rm $LOCKFILE
}
check_status()
{
-# TRYTOND_PIDS=`pgrep -f "^.*python.*trytond.*$"`
-# if [ $? = 0 ]
-# then
-# cli_msg "INFO" "GNU Health / Tryton instance(s) with PID(s) :"
-# echo $TRYTOND_PIDS
-# else
-# cli_msg "INFO" "No GNU Health instance seems to be running"
-# fi
+
systemctl status gnuhealth
}
@@ -219,163 +189,27 @@
check_updates()
{
-# source $HOME/.gnuhealthrc
- zypper lu | grep "trytond , gnuhealth"
-
-# local TRYTOND_PATCHLEVEL=`echo ${TRYTON_VERSION} | cut -d'.' -f3`
+ cli_msg "INFO" "Running zypper to check for updates"
+ zypper lu | grep "trytond , gnuhealth"
-# local TRYTON_MODULES=`cd ${GNUHEALTH_DIR}; ls -1d trytond*`
-# TRYTON_MAJOR_MINOR=`echo $TRYTON_VERSION | cut -d'.' -f1-2`
-
-# NEED_UPDATE_TRYTOND=0
-# NEED_UPDATE_MODULES=0
-# NEED_UPDATE_PATCHSETS=0
-# MOD_UPDATES=""
-# NEED_DELETE=0
-# TO_DELETE=""
-
-# cli_msg "INFO" "TRYTON SERVER : Checking latest patchlevel"
-
-# LATEST_TRYTOND=`wget --quiet -O - ${TRYTON_URL}/${TRYTON_MAJOR_MINOR} | egrep -o trytond-${TRYTON_MAJOR_MINOR}.[0-9\.]+.tar.gz | sort -V | tail -1`
-# local LATEST_TRYTOND_PATCHLEVEL=`echo ${LATEST_TRYTOND} | cut -d'.' -f3`
-
- # Check latest tryton server against local version
-# if (( ${TRYTOND_PATCHLEVEL} < ${LATEST_TRYTOND_PATCHLEVEL} )); then
-# cli_msg "WARNING" "TRYTON SERVER patchlevel ${TRYTOND_PATCHLEVEL} is outdated ! A newer version is available (${LATEST_TRYTOND})"
-# NEED_DELETE=1
-# TO_DELETE="${TO_DELETE} ${GNUHEALTH_DIR}/tryton/server/trytond-${TRYTON_MAJOR_MINOR}.${TRYTOND_PATCHLEVEL}"
-# NEED_UPDATE_TRYTOND=1
-# else
-# cli_msg "INFO" "TRYTON SERVER patchlevel ${TRYTOND_PATCHLEVEL} is at the latest version"
-# fi
-
- # Check latest tryton modules against local version
-# for MODULE in ${TRYTON_MODULES}; do
-# MODNAME=`echo $MODULE | cut -d'-' -f1`
-# MODULE_PATCHLEVEL=`echo $MODULE | sed 's/^.*\.\([[:digit:]]*\)$/\1/'`
-# LATEST_MODULE=`wget --quiet -O - ${TRYTON_URL}/${TRYTON_MAJOR_MINOR} | egrep -o ${MODNAME}-${TRYTON_MAJOR_MINOR}.[0-9\.]+.tar.gz | sort -V | tail -1`
-# LATEST_MODULE_PATCHLEVEL=`echo ${LATEST_MODULE} | cut -d'.' -f3`
-# if (( ${MODULE_PATCHLEVEL} < ${LATEST_MODULE_PATCHLEVEL} )); then
-# cli_msg "WARNING" "${MODNAME} patchlevel ${MODULE_PATCHLEVEL} is outdated ! A newer version is available (${LATEST_MODULE})"
-# NEED_UPDATE_MODULES=1
-# MOD_UPDATES="${MOD_UPDATES} ${LATEST_MODULE}"
-# NEED_DELETE=1
-# TO_DELETE="${TO_DELETE} ${GNUHEALTH_DIR}/tryton/server/modules/${MODNAME}-${TRYTON_MAJOR_MINOR}.${MODULE_PATCHLEVEL}"
-# else
-# cli_msg "INFO" "${MODNAME} patchlevel ${MODULE_PATCHLEVEL} is at the latest version"
-# fi
-# done
-
- # Check latest GNU HEALTH PATCHSETS against local version
-# cli_msg "INFO" "GNU HEALTH KERNEL : Checking latest PATCHSETS"
-
-# GNUHEALTH_MAJOR_MINOR=`echo $GNUHEALTH_VERSION | cut -d'.' -f1-2`
-# GNUHEALTH_PATCHSET=`echo $GNUHEALTH_VERSION | cut -d'.' -f3`
-
-# PATCHSETS_NUM=`wget --quiet -O - ${GNUHEALTH_URL}/ | egrep -o gnuhealth_patchset-${GNUHEALTH_MAJOR_MINOR}\.[0-9\.]+.tar.gz | uniq | wc -l | tr -d ' '`
-
-# if (( ${PATCHSETS_NUM} > 0 )); then
-# cli_msg "INFO" "Number of Patchsets for this version : ${PATCHSETS_NUM}"
-
-# LATEST_GNUHEALTH=`wget --quiet -O - ${GNUHEALTH_URL}/ | egrep -o gnuhealth_patchset-${GNUHEALTH_MAJOR_MINOR}\.[0-9\.]+.tar.gz | sort -V | tail -1`
-# LATEST_GNUHEALTH_PATCHSET=`echo ${LATEST_GNUHEALTH} | cut -d'.' -f3`
-
-# if (( ${GNUHEALTH_PATCHSET} < ${LATEST_GNUHEALTH_PATCHSET} )); then
-# cli_msg "WARNING" "GNU HEALTH patchset ${GNUHEALTH_PATCHSET} is outdated ! A newer version is available (${LATEST_GNUHEALTH})"
-# NEED_UPDATE_PATCHSETS=1
-# let PSET=GNUHEALTH_PATCHSET+1
-# for n in `seq $PSET $LATEST_GNUHEALTH_PATCHSET`
-# do
-# PATCHSETS="$PATCHSETS gnuhealth_patchset-${GNUHEALTH_MAJOR_MINOR}.$n.tar.gz"
-# done
-
-# else
-# cli_msg "INFO" "GNU HEALTH patchset ${GNUHEALTH_PATCHSET} is at the latest version"
-# fi
-
-# else
-# cli_msg "INFO" "** NO GNU HEALTH PATCHSETS FOUND FOR THIS VERSION **"
-# fi
-
}
install_updates()
{
-#if [ $NEED_UPDATE_TRYTOND -eq 1 ]; then
-# cli_msg "INFO" "Downloading TRYTON SERVER $LATEST_TRYTOND"
-# wget --quiet --directory-prefix=${UPDATE_DOWNLOAD_DIR}/trytond ${TRYTON_URL}/${TRYTON_MAJOR_MINOR}/${LATEST_TRYTOND} || exit 1
-# cli_msg "INFO" "--> Uncompressing TRYTON SERVER $LATEST_TRYTOND"
-# tar -xzf ${UPDATE_DOWNLOAD_DIR}/trytond/${LATEST_TRYTOND} --directory ${GNUHEALTH_DIR}/tryton/server || exit 1
-# fi
-
-# if [ $NEED_UPDATE_MODULES -eq 1 ]; then
-# for mod in ${MOD_UPDATES}
-# do
-# cli_msg "INFO" "Downloading $mod"
-# wget --quiet --directory-prefix=${UPDATE_DOWNLOAD_DIR}/modules ${TRYTON_URL}/${TRYTON_MAJOR_MINOR}/${mod} || exit 1
-# cli_msg "INFO" "--> Uncompressing ${mod}"
-# tar -xzf ${UPDATE_DOWNLOAD_DIR}/modules/${mod} --directory ${GNUHEALTH_DIR}/tryton/server/modules || exit 1
-# done
-# fi
-
-# if [ $NEED_UPDATE_PATCHSETS -eq 1 ]; then
-# for patchset in ${PATCHSETS}
-# do
-# cli_msg "INFO" "Downloading $patchset"
-# wget --quiet --directory-prefix=${UPDATE_DOWNLOAD_DIR}/patchsets ${GNUHEALTH_URL}/${patchset} || exit 1
-# cli_msg "INFO" "--> Applying PATCHSET $patchset"
-# tar -xzf ${UPDATE_DOWNLOAD_DIR}/patchsets/${patchset} --directory ${HOME} || exit 1
-# done
-# fi
-
if [ $2 == "--dry-run" ];then
- sudo zypper up -D trytond* gnuhealth
+ zypper up -D -- "trytond*" "gnuhealth*"
exit 0
fi
- sudo zypper up trytond* gnuhealth
+ sudo zypper up -- "trytond*" "gnuhealth*"
}
-#remove_old()
-#{
-# if [ ${NEED_DELETE} -eq 1 ]; then
-# cli_msg "WARNING" "Removing obsolete kernel and/or modules : ${TO_DELETE}"
-# rm -rf ${TO_DELETE}
-# fi
-#}
-
relink_mods()
{
-# source $HOME/.gnuhealthrc
-
-# if [ ${NEED_DELETE} -eq 1 ]; then
-# local TRYTON_MODS=`cd ${GNUHEALTH_DIR}/tryton/server/modules; ls -1d trytond_*`
-# for mod in ${TRYTON_MODS}; do
-# local modname=`echo ${mod} | cut -d'-' -f1 | cut -d'_' -f2-`
-# cli_msg "INFO" "Relinking : ${mod}"
-# ln -sf ${GNUHEALTH_DIR}/tryton/server/modules/${mod} ${GNUHEALTH_DIR}/tryton/server/${TRYTOND}/trytond/modules/${modname} || exit 1
-# done
-# cli_msg "INFO" "Relinking GNU Health modules ..."
-# local HEALTH_MODS=`cd ${GNUHEALTH_DIR}/tryton/server/modules; ls -1d health*`
-# for mod in ${HEALTH_MODS}; do
-# cli_msg "INFO" "--> Relinking : ${mod}"
-# ln -sf ${GNUHEALTH_DIR}/tryton/server/modules/${mod} ${GNUHEALTH_DIR}/tryton/server/${TRYTOND}/trytond/modules/ || exit 1
-# done
-
-# cli_msg "INFO" "Relinking local modules and customizations ..."
-
-# local LOCAL_MODS=`cd ${GNUHEALTH_DIR}/tryton/server/modules/local; ls -A`
-# for mod in ${LOCAL_MODS}; do
-# cli_msg "INFO" "--> Relinking : ${mod}"
-# ln -sf ${GNUHEALTH_DIR}/tryton/server/modules/local/${mod} ${GNUHEALTH_DIR}/tryton/server/${TRYTOND}/trytond/modules/ || exit 1
-# done
-
-# fi
-
sudo systemctl restart gnuhealth
}
@@ -409,24 +243,26 @@
local lang_to_install=$2
local lang_file=${lang_to_install}.zip
-# source $HOME/.gnuhealthrc || exit 1
cli_msg "INFO" "Going to modules directory ${GNUHEALTH_DIR} "
cd ${GNUHEALTH_DIR} || exit 1
cli_msg "INFO" "Retrieving language pack file for ${lang_to_install}"
- wget ${TRANSLATE_URL}/export/?path=/${lang_to_install}/GNUHEALTH/ -O /tmp/${lang_file} || exit 1
+ wget ${TRANSLATE_URL}/export/?path=/${lang_to_install}/GNUHEALTH/ -O $UPDATE_DOWNLOAD_DIR/${lang_file} || exit 1
cli_msg "INFO" "Installing / Updating language files for ${lang_to_install} ..."
- bsdtar --strip-components 3 -xzf /tmp/${lang_file} || exit 1
+ bsdtar --strip-components 3 --exclude *webdav3* --exclude *caldav* -xzf $UPDATE_DOWNLOAD_DIR/${lang_file} || exit 1
cli_msg "INFO" "Language pack ${lang_to_install} sucessfully installed / updated"
+ chmod -R a+r ${GNUHEALTH_DIR}
+ cli_msg "INFO" "Read permissions set"
cli_msg "INFO" "You now need to update the database modules"
-# cd
+
}
bailout() {
cli_msg "ERROR" "Bailing out !"
cli_msg "ERROR" "Removing backup lock file"
rm -f $LOCKFILE
+ rm -rf $UPDATE_DOWNLOAD_DIR
exit 1
}
++++++ gnuhealth-rpmlintrc ++++++
# false positive: the lib dependency check is wrong here
# ignore the warning for now
addFilter("explicit-lib-dependency python3-passlib");
# ignore suse-missing-rclink
addFilter("suse-missing-rclink gnuhealth");
++++++ gnuhealth.service ++++++
--- /var/tmp/diff_new_pack.MYNloc/_old 2020-04-01 19:13:06.351389864 +0200
+++ /var/tmp/diff_new_pack.MYNloc/_new 2020-04-01 19:13:06.355389866 +0200
@@ -3,6 +3,16 @@
After=syslog.target
Requires=postgresql.service
Conflicts=trytond.service
+PrivateTmp=true
+ProtectSystem=true
+ProtectHome=true
+ProtectKernelModules=true
+ProtectKernelTunables=true
+ProtectControlGroups=true
+MountFlags=private
+NoNewPrivileges=true
+PrivateDevices=true
+MemoryDenyWriteExecute=true
[Service]
Type=simple
++++++ shebang.diff ++++++
--- /var/tmp/diff_new_pack.MYNloc/_old 2020-04-01 19:13:06.367389871 +0200
+++ /var/tmp/diff_new_pack.MYNloc/_new 2020-04-01 19:13:06.371389873 +0200
@@ -43,6 +43,15 @@
# -*- coding: utf-8 -*-
# Copyright (C) 2011-2020 Luis Falcon <falcon(a)gnuhealth.org>
# Copyright (C) 2011 Cédric Krier
+diff -U 3 -dHrN -- a/health_caldav/tests/scenario_calendar.py b/health_caldav/tests/scenario_calendar.py
+--- a/health_caldav/tests/scenario_calendar.py 2019-10-04 22:33:03.000000000 +0200
++++ b/health_caldav/tests/scenario_calendar.py 2020-03-17 14:04:47.692913921 +0100
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python3
+ # This file is part of Tryton. The COPYRIGHT file at the top level of
+ # this repository contains the full copyright notices and license terms.
+ from argparse import ArgumentParser
diff -U 3 -dHrN -- a/health_crypto/setup.py b/health_crypto/setup.py
--- a/health_crypto/setup.py 2019-11-20 09:16:02.000000000 +0100
+++ b/health_crypto/setup.py 2020-01-15 16:58:43.120008340 +0100
1
0
Hello community,
here is the log from the commit of package python-msrest for openSUSE:Factory checked in at 2020-04-01 19:09:32
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-msrest (Old)
and /work/SRC/openSUSE:Factory/.python-msrest.new.3248 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-msrest"
Wed Apr 1 19:09:32 2020 rev:9 rq:790243 version:0.6.11
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-msrest/python-msrest.changes 2019-10-10 14:32:08.868373959 +0200
+++ /work/SRC/openSUSE:Factory/.python-msrest.new.3248/python-msrest.changes 2020-04-01 19:12:39.823377929 +0200
@@ -1,0 +2,8 @@
+Tue Mar 31 15:26:34 UTC 2020 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- New upstream release
+ + Version 0.6.11
+ + For detailed information about changes see the
+ README.rst file provided with this package
+
+-------------------------------------------------------------------
@@ -5 +13 @@
- + Version 0.6.20
+ + Version 0.6.10
@@ -7 +15 @@
- HISTORY.txt file provided with this package
+ README.rst file provided with this package
@@ -46 +53,0 @@
-- Install HISTORY.rst into doc directory
Old:
----
msrest-0.6.10.tar.gz
New:
----
msrest-0.6.11.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-msrest.spec ++++++
--- /var/tmp/diff_new_pack.M18d3I/_old 2020-04-01 19:12:42.187378992 +0200
+++ /var/tmp/diff_new_pack.M18d3I/_new 2020-04-01 19:12:42.191378994 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-msrest
#
-# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2020 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,12 +18,12 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-msrest
-Version: 0.6.10
+Version: 0.6.11
Release: 0
Summary: AutoRest swagger generator Python client runtime
License: MIT
Group: Development/Languages/Python
-Url: https://pypi.python.org/pypi/msrest
+URL: https://pypi.python.org/pypi/msrest
Source: https://files.pythonhosted.org/packages/source/m/msrest/msrest-%{version}.t…
Source1: LICENSE.md
BuildRequires: %{python_module setuptools}
++++++ msrest-0.6.10.tar.gz -> msrest-0.6.11.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/msrest-0.6.10/PKG-INFO new/msrest-0.6.11/PKG-INFO
--- old/msrest-0.6.10/PKG-INFO 2019-09-04 20:04:43.000000000 +0200
+++ new/msrest-0.6.11/PKG-INFO 2020-01-30 18:02:40.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: msrest
-Version: 0.6.10
+Version: 0.6.11
Summary: AutoRest swagger generator Python client runtime.
Home-page: https://github.com/Azure/msrest-for-python
Author: Microsoft Corporation
@@ -27,6 +27,22 @@
Release History
---------------
+ 2019-01-30 Version 0.6.11
+ +++++++++++++++++++++++++
+
+ **Features**
+
+ - XML mode can now be enabled even if the given Model has no XML metadata #184
+ - Add Kerberos Authentication #186
+ - Improve error message if expected type is dictionnary and something else is provided #188
+
+ **Bugfixes**
+
+ - Fix comma separated serialization of array in query #186
+ - Fix validation of basic types in some complex scenario #189
+
+ Thanks to catatonicprime for the contribution
+
2019-09-04 Version 0.6.10
+++++++++++++++++++++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/msrest-0.6.10/README.rst new/msrest-0.6.11/README.rst
--- old/msrest-0.6.10/README.rst 2019-09-04 20:03:33.000000000 +0200
+++ new/msrest-0.6.11/README.rst 2020-01-30 18:02:00.000000000 +0100
@@ -20,6 +20,22 @@
Release History
---------------
+2019-01-30 Version 0.6.11
++++++++++++++++++++++++++
+
+**Features**
+
+- XML mode can now be enabled even if the given Model has no XML metadata #184
+- Add Kerberos Authentication #186
+- Improve error message if expected type is dictionnary and something else is provided #188
+
+**Bugfixes**
+
+- Fix comma separated serialization of array in query #186
+- Fix validation of basic types in some complex scenario #189
+
+Thanks to catatonicprime for the contribution
+
2019-09-04 Version 0.6.10
+++++++++++++++++++++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/msrest-0.6.10/msrest/authentication.py new/msrest-0.6.11/msrest/authentication.py
--- old/msrest-0.6.10/msrest/authentication.py 2019-09-04 20:03:33.000000000 +0200
+++ new/msrest-0.6.11/msrest/authentication.py 2020-01-30 18:02:00.000000000 +0100
@@ -172,6 +172,39 @@
session.auth = oauth.OAuth2(self.id, token=self.token)
return session
+
+class KerberosAuthentication(Authentication):
+ """Kerberos Authentication
+ Kerberos Single Sign On (SSO); requires requests_kerberos is installed.
+
+ :param mutual_authentication: whether to require mutual authentication. Use values from requests_kerberos import REQUIRED, OPTIONAL, or DISABLED
+ """
+ def __init__(self, mutual_authentication=None):
+ super(KerberosAuthentication, self).__init__()
+ self.mutual_authentication = mutual_authentication
+
+ def signed_session(self, session=None):
+ """Create requests session with Negotiate (SPNEGO) headers applied.
+
+ If a session object is provided, configure it directly. Otherwise,
+ create a new session and return it.
+
+ :param session: The session to configure for authentication
+ :type session: requests.Session
+ :rtype: requests.Session
+ """
+ session = super(KerberosAuthentication, self).signed_session(session)
+ try:
+ from requests_kerberos import HTTPKerberosAuth
+ except ImportError:
+ raise ImportError("In order to use KerberosAuthentication please do 'pip install requests_kerberos' first")
+ if self.mutual_authentication:
+ session.auth = HTTPKerberosAuth(mutual_authentication=self.mutual_authentication)
+ else:
+ session.auth = HTTPKerberosAuth()
+ return session
+
+
class ApiKeyCredentials(Authentication):
"""Represent the ApiKey feature of Swagger.
@@ -209,11 +242,12 @@
session.headers.update(self.in_headers)
try:
# params is actually Union[bytes, MutableMapping[Text, Text]]
- session.params.update(self.in_query) # type: ignore
+ session.params.update(self.in_query) # type: ignore
except AttributeError: # requests.params can be bytes
raise ValueError("session.params must be a dict to be used in ApiKeyCredentials")
return session
+
class CognitiveServicesCredentials(ApiKeyCredentials):
"""Cognitive Services authentication.
@@ -233,6 +267,7 @@
}
)
+
class TopicCredentials(ApiKeyCredentials):
"""Event Grid authentication.
@@ -251,6 +286,7 @@
}
)
+
class DomainCredentials(ApiKeyCredentials):
"""Event Grid domain authentication.
@@ -268,4 +304,3 @@
self._domain_key_header: domain_key,
}
)
-
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/msrest-0.6.10/msrest/exceptions.py new/msrest-0.6.11/msrest/exceptions.py
--- old/msrest-0.6.10/msrest/exceptions.py 2019-09-04 20:03:33.000000000 +0200
+++ new/msrest-0.6.11/msrest/exceptions.py 2020-01-30 18:02:00.000000000 +0100
@@ -107,6 +107,13 @@
"type": "must be of type {!r}"
}
+ @staticmethod
+ def _format_message(rule, reason, value):
+ if rule == "type" and value.startswith(r"{"):
+ internal_type = value.strip(r"{}")
+ value = "dict[str, {}]".format(internal_type)
+ return reason.format(value)
+
def __init__(self, rule, target, value, *args, **kwargs):
# type: (str, str, str, str, str) -> None
self.rule = rule
@@ -114,7 +121,7 @@
message = "Parameter {!r} ".format(target)
reason = self._messages.get(
rule, "failed to meet validation requirement.")
- message += reason.format(value)
+ message += self._format_message(rule, reason, value)
super(ValidationError, self).__init__(message, *args, **kwargs)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/msrest-0.6.10/msrest/pipeline/__init__.py new/msrest-0.6.11/msrest/pipeline/__init__.py
--- old/msrest-0.6.10/msrest/pipeline/__init__.py 2019-09-04 20:03:33.000000000 +0200
+++ new/msrest-0.6.11/msrest/pipeline/__init__.py 2020-01-30 18:02:00.000000000 +0100
@@ -268,8 +268,10 @@
for example deserialized headers.
It also allows the raw response object to be passed back to the user.
- :param output: Deserialized response object.
- :param response: Raw response object.
+ :param output: Deserialized response object. This is the type that would have been returned
+ directly by the main operation without raw=True.
+ :param response: Raw response object (by default requests.Response instance)
+ :type response: ~requests.Response
"""
def __init__(self, output, response):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/msrest-0.6.10/msrest/serialization.py new/msrest-0.6.11/msrest/serialization.py
--- old/msrest-0.6.10/msrest/serialization.py 2019-09-04 20:03:33.000000000 +0200
+++ new/msrest-0.6.11/msrest/serialization.py 2020-01-30 18:02:00.000000000 +0100
@@ -188,12 +188,12 @@
@classmethod
def _create_xml_node(cls):
- """Create XML node from "_xml_map".
+ """Create XML node.
"""
try:
xml_map = cls._xml_map
except AttributeError:
- raise ValueError("This model has no XML definition")
+ xml_map = {}
return _create_xml_node(
xml_map.get('name', cls.__name__),
@@ -217,6 +217,9 @@
try:
debug_name = "{}.{}".format(self.__class__.__name__, attr_name)
+ # https://github.com/Azure/msrest-for-python/issues/85
+ if value is not None and attr_type in Serializer.basic_types.values():
+ value = Serializer.serialize_basic(value, attr_type)
Serializer.validate(value, debug_name, **self._validation.get(attr_name, {}))
except ValidationError as validation_error:
validation_result.append(validation_error)
@@ -224,19 +227,21 @@
validation_result += _recursive_validate(attr_name, attr_type, value)
return validation_result
- def serialize(self, keep_readonly=False):
+ def serialize(self, keep_readonly=False, **kwargs):
"""Return the JSON that would be sent to azure from this model.
This is an alias to `as_dict(full_restapi_key_transformer, keep_readonly=False)`.
+ If you want XML serialization, you can pass the kwargs is_xml=True.
+
:param bool keep_readonly: If you want to serialize the readonly attributes
:returns: A dict JSON compatible object
:rtype: dict
"""
serializer = Serializer(self._infer_class_models())
- return serializer._serialize(self, keep_readonly=keep_readonly)
+ return serializer._serialize(self, keep_readonly=keep_readonly, **kwargs)
- def as_dict(self, keep_readonly=True, key_transformer=attribute_transformer):
+ def as_dict(self, keep_readonly=True, key_transformer=attribute_transformer, **kwargs):
"""Return a dict that can be JSONify using json.dump.
Advanced usage might optionaly use a callback as parameter:
@@ -261,12 +266,14 @@
- full_restapi_key_transformer
- last_restapi_key_transformer
+ If you want XML serialization, you can pass the kwargs is_xml=True.
+
:param function key_transformer: A key transformer function.
:returns: A dict JSON compatible object
:rtype: dict
"""
serializer = Serializer(self._infer_class_models())
- return serializer._serialize(self, key_transformer=key_transformer, keep_readonly=keep_readonly)
+ return serializer._serialize(self, key_transformer=key_transformer, keep_readonly=keep_readonly, **kwargs)
@classmethod
def _infer_class_models(cls):
@@ -482,9 +489,9 @@
### Incorporate this data in the right place ###
if is_xml_model_serialization:
- xml_desc = attr_desc['xml']
- xml_name = xml_desc['name']
- if "attr" in xml_desc and xml_desc["attr"]:
+ xml_desc = attr_desc.get('xml', {})
+ xml_name = xml_desc.get('name', attr_desc['key'])
+ if xml_desc.get("attr", False):
serialized.set(xml_name, new_attr)
continue
if isinstance(new_attr, list):
@@ -578,6 +585,14 @@
raise errors[0]
return self._serialize(data, data_type, **kwargs)
+ def _http_component_validation(self, data, data_type, name, **kwargs):
+ if self.client_side_validation:
+ # https://github.com/Azure/msrest-for-python/issues/85
+ if data is not None and data_type in self.basic_types.values():
+ data = self.serialize_basic(data, data_type, **kwargs)
+ data = self.validate(data, name, required=True, **kwargs)
+ return data
+
def url(self, name, data, data_type, **kwargs):
"""Serialize data intended for a URL path.
@@ -587,8 +602,7 @@
:raises: TypeError if serialization fails.
:raises: ValueError if data is None
"""
- if self.client_side_validation:
- data = self.validate(data, name, required=True, **kwargs)
+ data = self._http_component_validation(data, data_type, name, **kwargs)
try:
output = self.serialize_data(data, data_type, **kwargs)
if data_type == 'bool':
@@ -612,12 +626,25 @@
:raises: TypeError if serialization fails.
:raises: ValueError if data is None
"""
- if self.client_side_validation:
- data = self.validate(data, name, required=True, **kwargs)
+ data = self._http_component_validation(data, data_type, name, **kwargs)
try:
- if data_type in ['[str]']:
- data = ["" if d is None else d for d in data]
+ # Treat the list aside, since we don't want to encode the div separator
+ if data_type.startswith("["):
+ internal_data_type = data_type[1:-1]
+ data = [
+ self.serialize_data(d, internal_data_type, **kwargs) if d is not None else ""
+ for d
+ in data
+ ]
+ if not kwargs.get('skip_quote', False):
+ data = [
+ quote(str(d), safe='')
+ for d
+ in data
+ ]
+ return str(self.serialize_iter(data, internal_data_type, **kwargs))
+ # Not a list, regular serialization
output = self.serialize_data(data, data_type, **kwargs)
if data_type == 'bool':
output = json.dumps(output)
@@ -639,8 +666,7 @@
:raises: TypeError if serialization fails.
:raises: ValueError if data is None
"""
- if self.client_side_validation:
- data = self.validate(data, name, required=True, **kwargs)
+ data = self._http_component_validation(data, data_type, name, **kwargs)
try:
if data_type in ['[str]']:
data = ["" if d is None else d for d in data]
@@ -713,14 +739,16 @@
else:
return self._serialize(data, **kwargs)
- def _get_custom_serializers(self, data_type, **kwargs):
+ @classmethod
+ def _get_custom_serializers(cls, data_type, **kwargs):
custom_serializer = kwargs.get("basic_types_serializers", {}).get(data_type)
if custom_serializer:
return custom_serializer
if kwargs.get("is_xml", False):
- return self._xml_basic_types_serializers.get(data_type)
+ return cls._xml_basic_types_serializers.get(data_type)
- def serialize_basic(self, data, data_type, **kwargs):
+ @classmethod
+ def serialize_basic(cls, data, data_type, **kwargs):
"""Serialize basic builting data type.
Serializes objects to str, int, float or bool.
@@ -731,14 +759,15 @@
:param data: Object to be serialized.
:param str data_type: Type of object in the iterable.
"""
- custom_serializer = self._get_custom_serializers(data_type, **kwargs)
+ custom_serializer = cls._get_custom_serializers(data_type, **kwargs)
if custom_serializer:
return custom_serializer(data)
if data_type == 'str':
- return self.serialize_unicode(data)
+ return cls.serialize_unicode(data)
return eval(data_type)(data)
- def serialize_unicode(self, data):
+ @classmethod
+ def serialize_unicode(cls, data):
"""Special handling for serializing unicode strings in Py2.
Encode to UTF-8 if unicode, otherwise handle as a str.
@@ -764,7 +793,9 @@
"""Serialize iterable.
Supported kwargs:
- serialization_ctxt dict : The current entry of _attribute_map, or same format. serialization_ctxt['type'] should be same as data_type.
+ - serialization_ctxt dict : The current entry of _attribute_map, or same format.
+ serialization_ctxt['type'] should be same as data_type.
+ - is_xml bool : If set, serialize as XML
:param list attr: Object to be serialized.
:param str iter_type: Type of object in the iterable.
@@ -778,6 +809,7 @@
raise SerializationError("Refuse str type as a valid iter type.")
serialization_ctxt = kwargs.get("serialization_ctxt", {})
+ is_xml = kwargs.get("is_xml", False)
serialized = []
for d in data:
@@ -790,13 +822,15 @@
serialized = ['' if s is None else str(s) for s in serialized]
serialized = div.join(serialized)
- if 'xml' in serialization_ctxt:
+ if 'xml' in serialization_ctxt or is_xml:
# XML serialization is more complicated
- xml_desc = serialization_ctxt['xml']
- xml_name = xml_desc['name']
+ xml_desc = serialization_ctxt.get('xml', {})
+ xml_name = xml_desc.get('name')
+ if not xml_name:
+ xml_name = serialization_ctxt['key']
# Create a wrap node if necessary (use the fact that Element and list have "append")
- is_wrapped = "wrapped" in xml_desc and xml_desc["wrapped"]
+ is_wrapped = xml_desc.get("wrapped", False)
node_name = xml_desc.get("itemsName", xml_name)
if is_wrapped:
final_result = _create_xml_node(
@@ -1103,19 +1137,19 @@
return data.get(found_key)
def xml_key_extractor(attr, attr_desc, data):
- # Test if this model is XML ready first
- if 'xml' not in attr_desc:
+ if isinstance(data, dict):
return None
- if isinstance(data, dict):
+ # Test if this model is XML ready first
+ if not isinstance(data, ET.Element):
return None
- xml_desc = attr_desc['xml']
- xml_name = xml_desc['name']
+ xml_desc = attr_desc.get('xml', {})
+ xml_name = xml_desc.get('name', attr_desc['key'])
xml_ns = xml_desc.get('ns', None)
# If it's an attribute, that's simple
- if "attr" in xml_desc and xml_desc["attr"]:
+ if xml_desc.get("attr", False):
return data.get(xml_name)
# Integrate namespace if necessary
@@ -1127,25 +1161,26 @@
# Look for a children
is_iter_type = attr_desc['type'].startswith("[")
- is_wrapped = "wrapped" in xml_desc and xml_desc["wrapped"]
+ is_wrapped = xml_desc.get("wrapped", False)
internal_type = attr_desc.get("internalType", None)
# Scenario where I take the local name:
# - Wrapped node
# - Internal type is an enum (considered basic types)
# - Internal type has no XML/Name node
- if is_wrapped or (internal_type and (issubclass(internal_type, Enum) or 'name' not in internal_type._xml_map)):
+ internal_type_xml_map = getattr(internal_type, "_xml_map", {})
+ if is_wrapped or (internal_type and (issubclass(internal_type, Enum) or 'name' not in internal_type_xml_map)):
children = data.findall(xml_name, ns)
# If internal type has a local name and it's not a list, I use that name
- elif not is_iter_type and internal_type and 'name' in internal_type._xml_map:
- xml_name = internal_type._xml_map["name"]
- ns = internal_type._xml_map.get("ns", None)
+ elif not is_iter_type and internal_type and 'name' in internal_type_xml_map:
+ xml_name = internal_type_xml_map["name"]
+ ns = internal_type_xml_map.get("ns", None)
children = data.findall(xml_name, ns)
# That's an array
else:
if internal_type: # Complex type, ignore itemsName and use the complex type name
- items_name = internal_type._xml_map["name"]
- ns = internal_type._xml_map.get("ns", None)
+ items_name = internal_type_xml_map.get('name', internal_type.__name__)
+ ns = internal_type_xml_map.get("ns", None)
else:
items_name = xml_desc.get("itemsName", xml_name)
children = data.findall(items_name, ns)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/msrest-0.6.10/msrest/version.py new/msrest-0.6.11/msrest/version.py
--- old/msrest-0.6.10/msrest/version.py 2019-09-04 20:03:33.000000000 +0200
+++ new/msrest-0.6.11/msrest/version.py 2020-01-30 18:02:00.000000000 +0100
@@ -25,4 +25,4 @@
# --------------------------------------------------------------------------
#: version of this package. Use msrest.__version__ instead
-msrest_version = "0.6.10"
+msrest_version = "0.6.11"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/msrest-0.6.10/msrest.egg-info/PKG-INFO new/msrest-0.6.11/msrest.egg-info/PKG-INFO
--- old/msrest-0.6.10/msrest.egg-info/PKG-INFO 2019-09-04 20:04:43.000000000 +0200
+++ new/msrest-0.6.11/msrest.egg-info/PKG-INFO 2020-01-30 18:02:40.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: msrest
-Version: 0.6.10
+Version: 0.6.11
Summary: AutoRest swagger generator Python client runtime.
Home-page: https://github.com/Azure/msrest-for-python
Author: Microsoft Corporation
@@ -27,6 +27,22 @@
Release History
---------------
+ 2019-01-30 Version 0.6.11
+ +++++++++++++++++++++++++
+
+ **Features**
+
+ - XML mode can now be enabled even if the given Model has no XML metadata #184
+ - Add Kerberos Authentication #186
+ - Improve error message if expected type is dictionnary and something else is provided #188
+
+ **Bugfixes**
+
+ - Fix comma separated serialization of array in query #186
+ - Fix validation of basic types in some complex scenario #189
+
+ Thanks to catatonicprime for the contribution
+
2019-09-04 Version 0.6.10
+++++++++++++++++++++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/msrest-0.6.10/setup.py new/msrest-0.6.11/setup.py
--- old/msrest-0.6.10/setup.py 2019-09-04 20:03:33.000000000 +0200
+++ new/msrest-0.6.11/setup.py 2020-01-30 18:02:00.000000000 +0100
@@ -28,7 +28,7 @@
setup(
name='msrest',
- version='0.6.10',
+ version='0.6.11',
author='Microsoft Corporation',
packages=find_packages(exclude=["tests", "tests.*"]),
url=("https://github.com/Azure/msrest-for-python"),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/msrest-0.6.10/tests/test_serialization.py new/msrest-0.6.11/tests/test_serialization.py
--- old/msrest-0.6.10/tests/test_serialization.py 2019-09-04 20:03:33.000000000 +0200
+++ new/msrest-0.6.11/tests/test_serialization.py 2020-01-30 18:02:00.000000000 +0100
@@ -245,6 +245,32 @@
self.s = Serializer({'TestObj': self.TestObj})
return super(TestRuntimeSerialized, self).setUp()
+ def test_validation_type(self):
+ # https://github.com/Azure/msrest-for-python/issues/85
+ s = Serializer()
+
+ s.query("filter", 186, "int", maximum=666)
+ s.query("filter", "186", "int", maximum=666)
+
+ class TestValidationObj(Model):
+
+ _attribute_map = {
+ 'attr_a': {'key':'id', 'type':'int'},
+ }
+ _validation = {
+ 'attr_a': {'maximum': 4294967295, 'minimum': 1},
+ }
+
+
+ test_obj = TestValidationObj()
+ test_obj.attr_a = 186
+ errors_found = test_obj.validate()
+ assert not errors_found
+
+ test_obj.attr_a = '186'
+ errors_found = test_obj.validate()
+ assert not errors_found
+
def test_validation_flag(self):
s = Serializer()
s.client_side_validation = True
@@ -271,6 +297,20 @@
s.header("filter", "", "str", min_length=666)
s.body(test_obj, 'TestObj')
+ def test_serialize_query(self):
+ s = Serializer()
+
+ assert s.query("filter", "boo", "str") == "boo"
+ assert s.query("filter", "boo,bar", "str", skip_quote=True) == "boo,bar"
+ assert s.query("filter", 12, "int") == "12"
+
+ assert s.query("filter", [1, 2, 3], "[int]", div=",") == "1,2,3"
+
+ assert s.query("filter", ['a', 'b', 'c'], "[str]", div=",") == "a,b,c"
+ assert s.query("filter", ['a', None, 'c'], "[str]", div=",") == "a,,c"
+ assert s.query("filter", [',', ',', ','], "[str]", div=",") == "%2C,%2C,%2C"
+ assert s.query("filter", [',', ',', ','], "[str]", div="|", skip_quote=True) == ",|,|,"
+
def test_serialize_direct_model(self):
testobj = self.TestObj()
testobj.attr_a = "myid"
@@ -709,6 +749,10 @@
with self.assertRaises(SerializationError):
self.s._serialize(test_obj)
+ with pytest.raises(ValidationError) as err:
+ test_obj.validate()
+ assert "Parameter 'attr_e' must be of type 'dict[str, float]'" in str(err.value)
+
test_obj.attr_e = {"value": "NotAFloat"}
with self.assertRaises(SerializationError):
@@ -1290,7 +1334,7 @@
long_type = long
except NameError:
long_type = int
-
+
class TestModel(Model):
_attribute_map = {'data': {'key': 'data', 'type': 'object'}}
1
0
Hello community,
here is the log from the commit of package python-moviepy for openSUSE:Factory checked in at 2020-04-01 19:09:06
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-moviepy (Old)
and /work/SRC/openSUSE:Factory/.python-moviepy.new.3248 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-moviepy"
Wed Apr 1 19:09:06 2020 rev:7 rq:790164 version:1.0.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-moviepy/python-moviepy.changes 2019-05-22 15:38:48.126585539 +0200
+++ /work/SRC/openSUSE:Factory/.python-moviepy.new.3248/python-moviepy.changes 2020-04-01 19:11:47.771354509 +0200
@@ -1,0 +2,7 @@
+Tue Mar 31 12:29:28 UTC 2020 - pgajdos(a)suse.com
+
+- version update to 1.0.2
+ * lot of changes, see
+ https://github.com/Zulko/moviepy/blob/master/CHANGELOG.md
+
+-------------------------------------------------------------------
Old:
----
moviepy-1.0.0.tar.gz
New:
----
moviepy-1.0.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-moviepy.spec ++++++
--- /var/tmp/diff_new_pack.m3hQqz/_old 2020-04-01 19:11:53.575357120 +0200
+++ /var/tmp/diff_new_pack.m3hQqz/_new 2020-04-01 19:11:53.575357120 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-moviepy
#
-# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2020 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,19 +17,34 @@
%define modname moviepy
-
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-moviepy
-Version: 1.0.0
+Version: 1.0.2
Release: 0
Summary: Video editing with Python
License: MIT
Group: Development/Languages/Python
-Url: https://github.com/Zulko/moviepy
+URL: https://github.com/Zulko/moviepy
Source: https://files.pythonhosted.org/packages/source/m/moviepy/moviepy-%{version}…
BuildRequires: %{python_module setuptools}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
+Requires: python-decorator >= 4.0.2
+Requires: python-numpy
+Requires: python-proglog
+Requires: python-requests >= 2.8.1
+Requires: python-tqdm >= 4.11.2
+Recommends: ImageMagick
+Recommends: ffmpeg
+Recommends: python-Pillow
+Recommends: python-matplotlib >= 2.0.0
+Recommends: python-opencv >= 3.0
+Recommends: python-pygame >= 1.9.3
+Recommends: python-scikit-image >= 0.13.0
+Recommends: python-scikit-learn
+Recommends: python-scipy >= 0.19.0
+Recommends: python-youtube_dl
+BuildArch: noarch
# SECTION test requirements
BuildRequires: %{python_module Pillow}
BuildRequires: %{python_module coveralls >= 1.1}
@@ -45,16 +60,11 @@
BuildRequires: %{python_module tqdm >= 4.11.2}
BuildRequires: ImageMagick
BuildRequires: ffmpeg
-BuildRequires: python-ipaddress
BuildRequires: python-imageio >= 2.0
+BuildRequires: python-ipaddress
BuildRequires: python3-imageio >= 2.5
BuildRequires: python3-imageio-ffmpeg >= 0.2.0
# /SECTION
-Requires: python-decorator >= 4.0.2
-Requires: python-numpy
-Requires: python-proglog
-Requires: python-requests >= 2.8.1
-Requires: python-tqdm >= 4.11.2
%ifpython2
Requires: python-imageio >= 2.1.2
%endif
@@ -62,18 +72,6 @@
Requires: python-imageio >= 2.5
Requires: python-imageio-ffmpeg >= 0.2.0
%endif
-Recommends: ImageMagick
-Recommends: ffmpeg
-Recommends: python-Pillow
-Recommends: python-matplotlib >= 2.0.0
-Recommends: python-opencv >= 3.0
-Recommends: python-pygame >= 1.9.3
-Recommends: python-scikit-image >= 0.13.0
-Recommends: python-scikit-learn
-Recommends: python-scipy >= 0.19.0
-Recommends: python-youtube_dl
-BuildArch: noarch
-
%python_subpackages
%description
++++++ moviepy-1.0.0.tar.gz -> moviepy-1.0.2.tar.gz ++++++
/work/SRC/openSUSE:Factory/python-moviepy/moviepy-1.0.0.tar.gz /work/SRC/openSUSE:Factory/.python-moviepy.new.3248/moviepy-1.0.2.tar.gz differ: char 5, line 1
1
0
Hello community,
here is the log from the commit of package python-happybase for openSUSE:Factory checked in at 2020-04-01 19:08:57
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-happybase (Old)
and /work/SRC/openSUSE:Factory/.python-happybase.new.3248 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-happybase"
Wed Apr 1 19:08:57 2020 rev:15 rq:790163 version:1.2.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-happybase/python-happybase.changes 2019-09-27 14:45:57.253153911 +0200
+++ /work/SRC/openSUSE:Factory/.python-happybase.new.3248/python-happybase.changes 2020-04-01 19:11:23.383343537 +0200
@@ -1,0 +2,6 @@
+Tue Mar 31 12:03:26 UTC 2020 - Paolo Stivanin <info(a)paolostivanin.com>
+
+- Switch from nose to pytest
+- Add use_pytest.patch
+
+-------------------------------------------------------------------
New:
----
use_pytest.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-happybase.spec ++++++
--- /var/tmp/diff_new_pack.lVvAXC/_old 2020-04-01 19:11:27.667345464 +0200
+++ /var/tmp/diff_new_pack.lVvAXC/_new 2020-04-01 19:11:27.671345466 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-happybase
#
-# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2020 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -25,7 +25,9 @@
Group: Development/Languages/Python
URL: https://github.com/wbolster/happybase
Source: https://github.com/wbolster/happybase/archive/%{version}.tar.gz
-BuildRequires: %{python_module nose}
+# https://github.com/python-happybase/happybase/pull/238
+Patch0: use_pytest.patch
+BuildRequires: %{python_module pytest}
BuildRequires: %{python_module setuptools}
BuildRequires: %{python_module thriftpy2}
BuildRequires: fdupes
@@ -51,6 +53,7 @@
%prep
%setup -q -n happybase-%{version}
+%patch0 -p1
%build
%python_build
@@ -63,7 +66,7 @@
%check
# the api tests need running thrift server
-%python_expand nosetests-%{$python_bin_suffix} -v tests/test_util.py
+%pytest tests/test_util.py
%files %{python_files}
%license LICENSE.rst
++++++ use_pytest.patch ++++++
Only in happybase: .idea
diff -ru happybase-orig/Makefile happybase/Makefile
--- happybase-orig/Makefile 2020-03-31 14:01:25.374555626 +0200
+++ happybase/Makefile 2020-03-31 14:00:45.834479691 +0200
@@ -10,7 +10,7 @@
test:
-find coverage/ -mindepth 1 -delete
- python $$(which nosetests) $${TESTS}
+ pytest $${TESTS}
clean:
find . -name '*.py[co]' -delete
diff -ru happybase-orig/setup.cfg happybase/setup.cfg
--- happybase-orig/setup.cfg 2020-03-31 14:01:25.374555626 +0200
+++ happybase/setup.cfg 2020-03-31 14:00:15.882422171 +0200
@@ -1,16 +1,6 @@
-[nosetests]
-stop = 1
-verbosity = 2
-with-coverage = 1
-cover-erase = 1
-cover-package=happybase.connection,happybase.table,happybase.batch,happybase.pool,happybase.util,tests
-cover-tests = 1
-cover-html = 1
-cover-html-dir = coverage/
-
[build_sphinx]
source-dir = doc/
build-dir = doc/build/
[wheel]
-universal = 1
\ No newline at end of file
+universal = 1
diff -ru happybase-orig/tests/test_api.py happybase/tests/test_api.py
--- happybase-orig/tests/test_api.py 2020-03-31 14:01:25.374555626 +0200
+++ happybase/tests/test_api.py 2020-03-31 14:05:45.535055247 +0200
@@ -10,19 +10,6 @@
import six
from six.moves import range
-from nose.tools import (
- assert_dict_equal,
- assert_equal,
- assert_false,
- assert_in,
- assert_is_instance,
- assert_is_not_none,
- assert_list_equal,
- assert_not_in,
- assert_raises,
- assert_true,
-)
-
from happybase import Connection, ConnectionPool, NoConnectionsAvailable
HAPPYBASE_HOST = os.environ.get('HAPPYBASE_HOST')
@@ -60,7 +47,7 @@
global connection, table
connection = Connection(**connection_kwargs)
- assert_is_not_none(connection)
+ assert connection is not None
maybe_delete_table()
cfs = {
@@ -71,7 +58,7 @@
connection.create_table(TEST_TABLE_NAME, families=cfs)
table = connection.table(TEST_TABLE_NAME)
- assert_is_not_none(table)
+ assert table is not None
def teardown_module():
@@ -92,11 +79,11 @@
def test_enabling():
- assert_true(connection.is_table_enabled(TEST_TABLE_NAME))
+ assert connection.is_table_enabled(TEST_TABLE_NAME)
connection.disable_table(TEST_TABLE_NAME)
- assert_false(connection.is_table_enabled(TEST_TABLE_NAME))
+ assert not connection.is_table_enabled(TEST_TABLE_NAME)
connection.enable_table(TEST_TABLE_NAME)
- assert_true(connection.is_table_enabled(TEST_TABLE_NAME))
+ assert connection.is_table_enabled(TEST_TABLE_NAME)
def test_compaction():
@@ -105,14 +92,14 @@
def test_prefix():
- assert_equal(TABLE_PREFIX + b'_', connection._table_name(''))
- assert_equal(TABLE_PREFIX + b'_foo', connection._table_name('foo'))
+ assert TABLE_PREFIX + b'_' == connection._table_name('')
+ assert TABLE_PREFIX + b'_foo' == connection._table_name('foo')
- assert_equal(connection.table('foobar').name, TABLE_PREFIX + b'_foobar')
- assert_equal(connection.table('foobar', use_prefix=False).name, b'foobar')
+ assert connection.table('foobar').name == TABLE_PREFIX + b'_foobar'
+ assert connection.table('foobar', use_prefix=False).name == b'foobar'
c = Connection(autoconnect=False)
- assert_equal(b'foo', c._table_name('foo'))
+ assert b'foo' == c._table_name('foo')
with assert_raises(TypeError):
Connection(autoconnect=False, table_prefix=123)
@@ -130,13 +117,13 @@
def test_table_listing():
names = connection.tables()
- assert_is_instance(names, list)
- assert_in(TEST_TABLE_NAME, names)
+ assert isinstance(names, list)
+ assert TEST_TABLE_NAME in names
def test_table_regions():
regions = table.regions()
- assert_is_instance(regions, list)
+ assert isinstance(regions, list)
def test_invalid_table_create():
@@ -151,11 +138,11 @@
def test_families():
families = table.families()
for name, fdesc in six.iteritems(families):
- assert_is_instance(name, bytes)
- assert_is_instance(fdesc, dict)
- assert_in('name', fdesc)
- assert_is_instance(fdesc['name'], six.binary_type)
- assert_in('max_versions', fdesc)
+ assert isinstance(name, bytes)
+ assert isinstance(fdesc, dict)
+ assert 'name' in fdesc
+ assert isinstance(fdesc['name'], six.binary_type)
+ assert 'max_versions' in fdesc
def test_put():
@@ -168,23 +155,23 @@
row = b'row-with-counter'
column = 'cf1:counter'
- assert_equal(0, table.counter_get(row, column))
+ assert 0 == table.counter_get(row, column)
- assert_equal(10, table.counter_inc(row, column, 10))
- assert_equal(10, table.counter_get(row, column))
+ assert 10 == table.counter_inc(row, column, 10)
+ assert 10 == table.counter_get(row, column)
table.counter_set(row, column, 0)
- assert_equal(1, table.counter_inc(row, column))
- assert_equal(4, table.counter_inc(row, column, 3))
- assert_equal(4, table.counter_get(row, column))
+ assert 1 == table.counter_inc(row, column)
+ assert 4 == table.counter_inc(row, column, 3)
+ assert 4 == table.counter_get(row, column)
table.counter_set(row, column, 3)
- assert_equal(3, table.counter_get(row, column))
- assert_equal(8, table.counter_inc(row, column, 5))
- assert_equal(6, table.counter_inc(row, column, -2))
- assert_equal(5, table.counter_dec(row, column))
- assert_equal(3, table.counter_dec(row, column, 2))
- assert_equal(10, table.counter_dec(row, column, -7))
+ assert 3 == table.counter_get(row, column)
+ assert 8 == table.counter_inc(row, column, 5)
+ assert 6 == table.counter_inc(row, column, -2)
+ assert 5 == table.counter_dec(row, column)
+ assert 3 == table.counter_dec(row, column, 2)
+ assert 10 == table.counter_dec(row, column, -7)
def test_batch():
@@ -229,13 +216,13 @@
with table.batch(transaction=True) as b:
b.put(b'fooz', {b'cf1:bar': b'baz'})
raise ValueError
- assert_dict_equal({}, table.row(b'fooz', [b'cf1:bar']))
+ assert {} == table.row(b'fooz', [b'cf1:bar'])
with assert_raises(ValueError):
with table.batch(transaction=False) as b:
b.put(b'fooz', {b'cf1:bar': b'baz'})
raise ValueError
- assert_dict_equal({b'cf1:bar': b'baz'}, table.row(b'fooz', [b'cf1:bar']))
+ assert {b'cf1:bar': b'baz'} == table.row(b'fooz', [b'cf1:bar'])
with table.batch(batch_size=5) as b:
for i in range(10):
@@ -246,12 +233,12 @@
for i in range(95):
b.put(('row-batch2-%03d' % i).encode('ascii'),
{b'cf1:': str(i).encode('ascii')})
- assert_equal(95, len(list(table.scan(row_prefix=b'row-batch2-'))))
+ assert 95 == len(list(table.scan(row_prefix=b'row-batch2-')))
with table.batch(batch_size=20) as b:
for i in range(95):
b.delete(('row-batch2-%03d' % i).encode('ascii'))
- assert_equal(0, len(list(table.scan(row_prefix=b'row-batch2-'))))
+ assert 0 == len(list(table.scan(row_prefix=b'row-batch2-')))
def test_row():
@@ -275,26 +262,26 @@
b'cf1:col2': b'v2',
b'cf2:col1': b'v3',
b'cf2:col2': b'v4'}
- assert_dict_equal(exp, row(row_key))
+ assert exp == row(row_key)
exp = {b'cf1:col1': b'v1new',
b'cf1:col2': b'v2'}
- assert_dict_equal(exp, row(row_key, [b'cf1']))
+ assert exp == row(row_key, [b'cf1'])
exp = {b'cf1:col1': b'v1new',
b'cf2:col2': b'v4'}
- assert_dict_equal(exp, row(row_key, [b'cf1:col1', b'cf2:col2']))
+ assert exp == row(row_key, [b'cf1:col1', b'cf2:col2'])
exp = {b'cf1:col1': b'v1old',
b'cf2:col2': b'v4'}
- assert_dict_equal(exp, row(row_key, timestamp=2345))
+ assert exp == row(row_key, timestamp=2345)
- assert_dict_equal({}, row(row_key, timestamp=123))
+ assert {} == row(row_key, timestamp=123)
res = row(row_key, include_timestamp=True)
- assert_equal(len(res), 4)
- assert_equal(b'v1new', res[b'cf1:col1'][0])
- assert_is_instance(res[b'cf1:col1'][1], int)
+ assert len(res) == 4
+ assert b'v1new' == res[b'cf1:col1'][0]
+ assert isinstance(res[b'cf1:col1'][1], int)
def test_rows():
@@ -314,17 +301,17 @@
for row_key in row_keys:
table.put(row_key, data_new)
- assert_dict_equal({}, table.rows([]))
+ assert {} == table.rows([])
rows = dict(table.rows(row_keys))
for row_key in row_keys:
- assert_in(row_key, rows)
- assert_dict_equal(data_new, rows[row_key])
+ assert row_key in rows
+ assert data_new == rows[row_key]
rows = dict(table.rows(row_keys, timestamp=5000))
for row_key in row_keys:
- assert_in(row_key, rows)
- assert_dict_equal(data_old, rows[row_key])
+ assert row_key in rows
+ assert data_old == rows[row_key]
def test_cells():
@@ -344,18 +331,18 @@
table.cells(row_key, col, versions=0)
results = table.cells(row_key, col, versions=1)
- assert_equal(len(results), 1)
- assert_equal(b'new', results[0])
+ assert len(results) == 1
+ assert b'new' == results[0]
results = table.cells(row_key, col)
- assert_equal(len(results), 2)
- assert_equal(b'new', results[0])
- assert_equal(b'old', results[1])
+ assert len(results) == 2
+ assert b'new' == results[0]
+ assert b'old' == results[1]
results = table.cells(row_key, col, timestamp=2345, include_timestamp=True)
- assert_equal(len(results), 1)
- assert_equal(b'old', results[0][0])
- assert_equal(1234, results[0][1])
+ assert len(results) == 1
+ assert b'old' == results[0][0]
+ assert 1234 == results[0][1]
def test_scan():
@@ -389,36 +376,36 @@
scanner = table.scan(row_start=b'row-scan-a00012',
row_stop=b'row-scan-a00022')
- assert_equal(10, calc_len(scanner))
+ assert 10 == calc_len(scanner)
scanner = table.scan(row_start=b'xyz')
- assert_equal(0, calc_len(scanner))
+ assert 0 == calc_len(scanner)
scanner = table.scan(row_start=b'xyz', row_stop=b'zyx')
- assert_equal(0, calc_len(scanner))
+ assert 0 == calc_len(scanner)
scanner = table.scan(row_start=b'row-scan-', row_stop=b'row-scan-a999',
columns=[b'cf1:col1', b'cf2:col2'])
row_key, row = next(scanner)
- assert_equal(row_key, b'row-scan-a00000')
- assert_dict_equal(row, {b'cf1:col1': b'v1',
- b'cf2:col2': b'v2'})
- assert_equal(2000 - 1, calc_len(scanner))
+ assert row_key == b'row-scan-a00000'
+ assert row == {b'cf1:col1': b'v1',
+ b'cf2:col2': b'v2'}
+ assert 2000 - 1 == calc_len(scanner)
scanner = table.scan(row_prefix=b'row-scan-a', batch_size=499, limit=1000)
- assert_equal(1000, calc_len(scanner))
+ assert 1000 == calc_len(scanner)
scanner = table.scan(row_prefix=b'row-scan-b', batch_size=1, limit=10)
- assert_equal(10, calc_len(scanner))
+ assert 10 == calc_len(scanner)
scanner = table.scan(row_prefix=b'row-scan-b', batch_size=5, limit=10)
- assert_equal(10, calc_len(scanner))
+ assert 10 == calc_len(scanner)
scanner = table.scan(timestamp=123)
- assert_equal(0, calc_len(scanner))
+ assert 0 == calc_len(scanner)
scanner = table.scan(row_prefix=b'row', timestamp=123)
- assert_equal(0, calc_len(scanner))
+ assert 0 == calc_len(scanner)
scanner = table.scan(batch_size=20)
next(scanner)
@@ -440,9 +427,9 @@
scan = table.scan(row_start=input_key, sorted_columns=True)
key, row = next(scan)
- assert_equal(key, input_key)
- assert_list_equal(
- sorted(input_row.items()),
+ assert key == input_key
+ assert (
+ sorted(input_row.items()) ==
list(row.items()))
@@ -460,18 +447,18 @@
b'cf1:col2': b'v2'})
scan = table.scan(row_prefix=b'row-scan-reverse', reverse=True)
- assert_equal(2000, len(list(scan)))
+ assert 2000 == len(list(scan))
scan = table.scan(limit=10, reverse=True)
- assert_equal(10, len(list(scan)))
+ assert 10 == len(list(scan))
scan = table.scan(row_start=b'row-scan-reverse-1999',
row_stop=b'row-scan-reverse-0000', reverse=True)
key, data = next(scan)
- assert_equal(b'row-scan-reverse-1999', key)
+ assert b'row-scan-reverse-1999' == key
key, data = list(scan)[-1]
- assert_equal(b'row-scan-reverse-0001', key)
+ assert b'row-scan-reverse-0001' == key
def test_scan_filter_and_batch_size():
@@ -490,22 +477,22 @@
table.put(row_key, data)
table.delete(row_key, [b'cf1:col2'], timestamp=2345)
- assert_equal(1, len(table.cells(row_key, b'cf1:col2', versions=2)))
- assert_dict_equal(data, table.row(row_key))
+ assert 1 == len(table.cells(row_key, b'cf1:col2', versions=2))
+ assert data == table.row(row_key)
table.delete(row_key, [b'cf1:col1'])
res = table.row(row_key)
- assert_not_in(b'cf1:col1', res)
- assert_in(b'cf1:col2', res)
- assert_in(b'cf1:col3', res)
+ assert b'cf1:col1' not in res
+ assert b'cf1:col2' in res
+ assert b'cf1:col3' in res
table.delete(row_key, timestamp=12345)
res = table.row(row_key)
- assert_in(b'cf1:col2', res)
- assert_in(b'cf1:col3', res)
+ assert b'cf1:col2' in res
+ assert b'cf1:col3' in res
table.delete(row_key)
- assert_dict_equal({}, table.row(row_key))
+ assert {} == table.row(row_key)
def test_connection_pool_construction():
diff -ru happybase-orig/tests/test_util.py happybase/tests/test_util.py
--- happybase-orig/tests/test_util.py 2020-03-31 14:01:25.374555626 +0200
+++ happybase/tests/test_util.py 2020-03-31 14:16:46.128321257 +0200
@@ -4,8 +4,6 @@
from codecs import decode, encode
-from nose.tools import assert_equal, assert_less
-
import happybase.util as util
@@ -14,13 +12,13 @@
x1 = util.camel_case_to_pep8(lower_cc)
x2 = util.camel_case_to_pep8(upper_cc)
- assert_equal(correct, x1)
- assert_equal(correct, x2)
+ assert correct == x1
+ assert correct == x2
y1 = util.pep8_to_camel_case(x1, True)
y2 = util.pep8_to_camel_case(x2, False)
- assert_equal(upper_cc, y1)
- assert_equal(lower_cc, y2)
+ assert upper_cc == y1
+ assert lower_cc == y2
examples = [('foo', 'Foo', 'foo'),
('fooBar', 'FooBar', 'foo_bar'),
@@ -28,7 +26,7 @@
('fOO', 'FOO', 'f_o_o')]
for a, b, c in examples:
- yield check, a, b, c
+ check(a, b, c)
def test_bytes_increment():
@@ -36,8 +34,8 @@
s = decode(s_hex, 'hex')
v = util.bytes_increment(s)
v_hex = encode(v, 'hex')
- assert_equal(expected, v_hex)
- assert_less(s, v)
+ assert expected == v_hex
+ assert s < v
test_values = [
(b'00', b'01'),
@@ -53,4 +51,4 @@
assert util.bytes_increment(b'\xff\xff\xff') is None
for s, expected in test_values:
- yield check, s, expected
+ check(s, expected)
diff -ru happybase-orig/tox.ini happybase/tox.ini
--- happybase-orig/tox.ini 2020-03-31 14:01:25.374555626 +0200
+++ happybase/tox.ini 2020-03-31 14:00:26.874443280 +0200
@@ -3,6 +3,6 @@
[testenv]
deps=
- nose
+ pytest
coverage
-commands=nosetests
+commands=pytest
Only in happybase: venv
1
0
Hello community,
here is the log from the commit of package python-dash for openSUSE:Factory checked in at 2020-04-01 19:08:38
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-dash (Old)
and /work/SRC/openSUSE:Factory/.python-dash.new.3248 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-dash"
Wed Apr 1 19:08:38 2020 rev:7 rq:790028 version:1.9.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-dash/python-dash.changes 2020-03-16 10:20:10.375632072 +0100
+++ /work/SRC/openSUSE:Factory/.python-dash.new.3248/python-dash.changes 2020-04-01 19:10:11.987311414 +0200
@@ -1,0 +2,5 @@
+Tue Mar 31 07:22:22 UTC 2020 - Tomáš Chvátal <tchvatal(a)suse.com>
+
+- Fix all the runtime dependencies
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-dash.spec ++++++
--- /var/tmp/diff_new_pack.iBe8FX/_old 2020-04-01 19:10:15.679313076 +0200
+++ /var/tmp/diff_new_pack.iBe8FX/_new 2020-04-01 19:10:15.679313076 +0200
@@ -23,19 +23,34 @@
Release: 0
Summary: Python framework for building reactive web-apps
License: MIT
-Group: Development/Languages/Python
URL: https://github.com/plotly/dash
Source: https://files.pythonhosted.org/packages/source/d/dash/dash-%{version}.tar.gz
BuildRequires: %{python_module setuptools}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
-Requires: python-Flask >= 0.12
+Requires: python-Flask >= 1.0.2
Requires: python-Flask-Compress
+# dash/testing/dash_page.py
+Requires: python-beautifulsoup4
+Requires: python-dash-core-components >= 1.8.1
+Requires: python-dash-html-components >= 1.0.2
+Requires: python-dash-renderer >= 1.2.4
+Requires: python-dash-table >= 4.6.1
+Requires: python-future
+# needed for dash/testing/browser.py
+Requires: python-percy
Requires: python-plotly
BuildArch: noarch
# SECTION test requirements
-BuildRequires: %{python_module Flask >= 0.12}
+BuildRequires: %{python_module Flask >= 1.0.2}
BuildRequires: %{python_module Flask-Compress}
+BuildRequires: %{python_module beautifulsoup4}
+BuildRequires: %{python_module dash-core-components >= 1.8.1}
+BuildRequires: %{python_module dash-html-components >= 1.0.2}
+BuildRequires: %{python_module dash-renderer >= 1.2.4}
+BuildRequires: %{python_module dash-table >= 4.6.1}
+BuildRequires: %{python_module future}
+BuildRequires: %{python_module percy}
BuildRequires: %{python_module plotly}
# /SECTION
%python_subpackages
@@ -51,6 +66,8 @@
%prep
%setup -q -n dash-%{version}
sed -i -e '/^#!\//, 1d' dash/extract-meta.js
+# no hardcoded versions
+sed -i -e 's:==:>=:g' requires-*txt
%build
%python_build
1
0
Hello community,
here is the log from the commit of package lutris for openSUSE:Factory checked in at 2020-04-01 19:08:10
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/lutris (Old)
and /work/SRC/openSUSE:Factory/.lutris.new.3248 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "lutris"
Wed Apr 1 19:08:10 2020 rev:3 rq:789981 version:0.5.5
Changes:
--------
--- /work/SRC/openSUSE:Factory/lutris/lutris.changes 2020-03-03 10:20:50.815222225 +0100
+++ /work/SRC/openSUSE:Factory/.lutris.new.3248/lutris.changes 2020-04-01 19:08:57.923278091 +0200
@@ -1,0 +2,23 @@
+Mon Mar 30 11:32:25 UTC 2020 - Michael Vetter <mvetter(a)suse.com>
+
+- Update to 0.5.5:
+ * Initial support for Humble Bundle
+ * Add resolution switching support for Wayland (Mutter only)
+ * Add option to enable ACO shader compiler on Mesa >= 19.3
+ * DXVK is enabled by default
+ * Add initial support for VKD3D
+ * Migrate D9VK configs to use DXVK
+ * Remove d3d10 and d3d10_1 from dlls handled by DXVK
+ * Fix an API breakage occuring with a Gtk update
+ * Add a System info tab in Preferences
+ * Better handle authentication failure for GOG
+ * Fix case issue with key lookup in Steam VDF files
+ * Add Yuzu runner
+ * Add bsnes-hd beta and smsplus libretro cores
+ * Add sound device option for Mednafen
+ * Remove bundled winetricks
+ * Remove xboxdrv integration
+- Remove lutris-0.5.4-boo1161650-remove-polkit.patch: upstreamed
+- Remove lutris-0.5.4-sort_new_with_model_fix.patch: upstreamed
+
+-------------------------------------------------------------------
Old:
----
lutris-0.5.4-boo1161650-remove-polkit.patch
lutris-0.5.4-sort_new_with_model_fix.patch
lutris_0.5.4.tar.xz
New:
----
lutris_0.5.5.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ lutris.spec ++++++
--- /var/tmp/diff_new_pack.QphYfc/_old 2020-04-01 19:08:59.359278738 +0200
+++ /var/tmp/diff_new_pack.QphYfc/_new 2020-04-01 19:08:59.359278738 +0200
@@ -18,15 +18,12 @@
%global appid net.lutris.Lutris
Name: lutris
-Version: 0.5.4
+Version: 0.5.5
Release: 0
Summary: Manager for game installation and execution
License: GPL-3.0-or-later
URL: https://lutris.net
Source0: https://lutris.net/releases/lutris_%{version}.tar.xz
-# boo#1161650: Remove xboxdrv and polkit
-Patch0: lutris-0.5.4-boo1161650-remove-polkit.patch
-Patch1: lutris-0.5.4-sort_new_with_model_fix.patch
BuildRequires: fdupes
BuildRequires: gobject-introspection
BuildRequires: hicolor-icon-theme
@@ -60,16 +57,13 @@
%prep
%setup -q -n %{name}
-# boo#1161650
-%patch0 -p1
-%patch1 -p1
-rm -rf share/polkit-1/
+sed -i "s|!/usr/bin/env python3|!/usr/bin/python3|" share/lutris/bin/lutris-wrapper
%build
-CFLAGS="%{optflags}" python3 setup.py build
+%py3_build
%install
-python3 setup.py install --prefix=%{_prefix} --root=%{buildroot}
+%py3_install
%suse_update_desktop_file -r -i %{appid} Network FileTransfer
%fdupes %{buildroot}%{_prefix}
@@ -87,7 +81,6 @@
%doc README.rst CONTRIBUTING.md AUTHORS
%license LICENSE
%{_bindir}/%{name}
-%{_bindir}/lutris-wrapper
%{_datadir}/%{name}/
%{_datadir}/applications/%{appid}.desktop
%{_datadir}/icons/hicolor/scalable/apps/%{name}.svg
++++++ lutris_0.5.4.tar.xz -> lutris_0.5.5.tar.xz ++++++
++++ 32462 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package 4pane for openSUSE:Factory checked in at 2020-04-01 19:08:06
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/4pane (Old)
and /work/SRC/openSUSE:Factory/.4pane.new.3248 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "4pane"
Wed Apr 1 19:08:06 2020 rev:5 rq:789332 version:6.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/4pane/4pane.changes 2019-11-06 13:50:16.231776871 +0100
+++ /work/SRC/openSUSE:Factory/.4pane.new.3248/4pane.changes 2020-04-01 19:08:51.815275343 +0200
@@ -1,0 +2,18 @@
+Sat Mar 28 15:10:58 UTC 2020 - Luigi Baldoni <aloisio(a)gmx.com>
+
+- Update to version 6.0
+ * 4Pane no longer builds with wxWidgets 2.8; it now requires
+ 3.0 or higher.
+ * There's a faster way to reach the File OpenWith menu.
+ Ctrl-Alt-doubleclick will now directly show the menu.
+ * When moving or pasting files, optionally retain their
+ previous modification date.
+ * Support extracting/verifying 'rar' archives, if 'unrar' is
+ installed, but not 'rar' creation. 'unrar' is freely
+ available (though with a licence restriction) but the 'rar'
+ licence is too restricted.
+ * Previewing images now supports svg files too.
+ * Add support for the LXQt DE by recognising its default
+ editor, terminal and image viewer.
+
+-------------------------------------------------------------------
Old:
----
4pane-5.0.tar.gz
New:
----
4pane-6.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ 4pane.spec ++++++
--- /var/tmp/diff_new_pack.FhNGBH/_old 2020-04-01 19:08:52.463275635 +0200
+++ /var/tmp/diff_new_pack.FhNGBH/_new 2020-04-01 19:08:52.463275635 +0200
@@ -1,7 +1,7 @@
#
# spec file for package 4pane
#
-# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2020 SUSE LLC
# Copyright (c) 2016 Packman Team <packman(a)links2linux.de>
#
# All modifications and additions to the file contributed by third parties
@@ -18,17 +18,16 @@
Name: 4pane
-Version: 5.0
+Version: 6.0
Release: 0
Summary: A multi-pane detailed-list file manager
License: GPL-3.0-only
-Url: http://www.4pane.co.uk/
+URL: http://www.4pane.co.uk/
Source0: https://sourceforge.net/projects/fourpane/files/%{version}/%{name}-%{versio…
%if 0%{?is_opensuse}
BuildRequires: wxWidgets-devel >= 3
%else
-# SLE_12 lacks wxWidgets_3.0-devel
-BuildRequires: wxWidgets-devel < 3
+BuildRequires: wxWidgets_3.0-devel
%define _use_internal_dependency_generator 0
%define __find_requires %wx_requires
%endif
@@ -36,7 +35,6 @@
BuildRequires: fdupes
BuildRequires: gcc-c++
BuildRequires: xz-devel
-Recommends: %{name}-lang
%description
4Pane is a multi-pane detailed-list file manager.
@@ -61,7 +59,6 @@
make %{?_smp_mflags} DESTDIR=%{buildroot} install
%find_lang 4Pane
mkdir -vp %{buildroot}/%{_datadir}/applications
-mkdir -vp %{buildroot}/%{_datadir}/appdata
cd %{buildroot}/%{_datadir}/applications
ln -s ../4Pane/rc/4Pane.desktop 4Pane.desktop
pushd %{buildroot}%{_datadir}/icons/hicolor/48x48/apps
@@ -70,21 +67,19 @@
%fdupes -s %{buildroot}/%{_datadir}
%files
-%defattr(-,root,root,-)
%doc LICENCE
%{_bindir}/%{name}
%{_bindir}/4Pane
%dir %{_datadir}/4Pane
%dir %{_datadir}/4Pane/bitmaps
%{_datadir}/4Pane/bitmaps/*
-%{_datadir}/appdata
-%{_datadir}/icons/hicolor/*
%{_datadir}/4Pane/rc
%{_datadir}/applications/4Pane.desktop
+%{_datadir}/icons/hicolor/*
+%{_datadir}/metainfo/4Pane.appdata.xml
%dir %{_docdir}/4Pane
%{_docdir}/4Pane/*
%files lang -f 4Pane.lang
-%defattr(-,root,root,-)
%changelog
++++++ 4pane-5.0.tar.gz -> 4pane-6.0.tar.gz ++++++
++++ 54240 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package raspberrypi-firmware-dt for openSUSE:Factory checked in at 2020-04-01 19:07:59
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/raspberrypi-firmware-dt (Old)
and /work/SRC/openSUSE:Factory/.raspberrypi-firmware-dt.new.3248 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "raspberrypi-firmware-dt"
Wed Apr 1 19:07:59 2020 rev:21 rq:790469 version:2020.02.03
Changes:
--------
--- /work/SRC/openSUSE:Factory/raspberrypi-firmware-dt/raspberrypi-firmware-dt.changes 2020-03-24 22:33:55.397135509 +0100
+++ /work/SRC/openSUSE:Factory/.raspberrypi-firmware-dt.new.3248/raspberrypi-firmware-dt.changes 2020-04-01 19:08:41.307270615 +0200
@@ -1,0 +2,20 @@
+Tue Mar 31 21:34:26 UTC 2020 - Petr Tesařík <ptesarik(a)suse.com>
+
+- Use proper quoting for the modalias Supplements (see also
+ https://github.com/openSUSE/libzypp/issues/216)
+
+-------------------------------------------------------------------
+Fri Mar 27 12:30:54 UTC 2020 - Petr Tesařík <ptesarik(a)suse.com>
+
+- Add a modalias Supplements, so the package gets selected
+ automatically on a Raspberry Pi.
+
+-------------------------------------------------------------------
+Thu Mar 26 10:35:55 UTC 2020 - Nicolas Patricio Saenz Julienne <nsaenzjulienne(a)suse.com>
+
+- Add upstream-cma.patch unifying CMA handling on all RPis (bsc#1167761)
+- Remove rpi4-cma-overlay.dts since not needed anymore (bsc#1167761)
+- Rename emmc2bus.patch to upstream-emmc2bus.patch to mark this is a reality upstream
+- Rename pcie-dma-ranges.patch to upstream-pcie-dma-ranges.patch to mark this is a reality upstream
+
+-------------------------------------------------------------------
Old:
----
emmc2bus.patch
pcie-dma-ranges.patch
rpi4-cma-overlay.dts
New:
----
upstream-cma.patch
upstream-emmc2bus.patch
upstream-pcie-dma-ranges.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ raspberrypi-firmware-dt.spec ++++++
--- /var/tmp/diff_new_pack.PNaCq4/_old 2020-04-01 19:08:50.535274767 +0200
+++ /var/tmp/diff_new_pack.PNaCq4/_new 2020-04-01 19:08:50.539274769 +0200
@@ -25,19 +25,20 @@
URL: https://github.com/raspberrypi/linux/
Source: raspberrypi-firmware-dt-%{version}.tar.xz
Source1: disable-vc4-overlay.dts
-Source2: rpi4-cma-overlay.dts
-Source3: rpi4-thermal.dts
-Source4: rpi4-gpio-names-overlay.dts
-Source5: uboot-bcm2835-pl011-overlay.dts
-Source6: rpi4-firmware-dma-ranges-overlay.dts
+Source2: rpi4-thermal.dts
+Source3: rpi4-gpio-names-overlay.dts
+Source4: uboot-bcm2835-pl011-overlay.dts
+Source5: rpi4-firmware-dma-ranges-overlay.dts
Source100: get-from-git.sh
-Patch0: pcie-dma-ranges.patch
-Patch1: emmc2bus.patch
+Patch0: upstream-pcie-dma-ranges.patch
+Patch1: upstream-emmc2bus.patch
+Patch2: upstream-cma.patch
Requires: raspberrypi-firmware
BuildRequires: dtc
BuildRequires: raspberrypi-firmware
BuildArch: noarch
Conflicts: kernel < 4.12.14
+Supplements: modalias(of:NfirmwareT*Craspberrypi%2Cbcm2835-firmwareC*)
%description
This package provides additional device tree base files as well as overlays
@@ -47,6 +48,7 @@
%setup
%patch0 -p1
%patch1 -p1
+%patch2 -p1
%build
SRCDIR=`pwd`
@@ -61,7 +63,7 @@
done
export DTC_FLAGS="-R 0 -p 0 -@ -H epapr"
-for dts in arch/arm/boot/dts/overlays/*dts %{SOURCE1} %{SOURCE2} %{SOURCE3} %{SOURCE4} %{SOURCE5} %{SOURCE6}; do
+for dts in arch/arm/boot/dts/overlays/*dts %{SOURCE1} %{SOURCE2} %{SOURCE3} %{SOURCE4} %{SOURCE5}; do
target=$(basename ${dts%*.dts})
target=${target%*-overlay}
mkdir -p $PPDIR/overlays
++++++ upstream-cma.patch ++++++
>From d857f139e84b419d8a68bcaf3ce7ad3bf3d0fc11 Mon Sep 17 00:00:00 2001
From: Nicolas Saenz Julienne <nsaenzjulienne(a)suse.de>
Date: Thu, 26 Mar 2020 11:30:30 +0100
Subject: [PATCH] ARM: dts: bcm283x: Unify CMA configuration
With the introduction of the Raspberry Pi 4 we were forced to explicitly
configure CMA's location, since arm64 defaults it into the ZONE_DMA32
memory area, which is not good enough to perform DMA operations on that
device. To bypass this limitation a dedicated CMA DT node was created,
explicitly indicating the acceptable memory range and size.
That said, compatibility between boards is a must on the Raspberry Pi
ecosystem so this creates a common CMA DT node so as for DT overlays to
be able to update CMA's properties regardless of the board being used.
Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne(a)suse.de>
Reviewed-by: Phil Elwell <phil(a)raspberrypi.org>
Signed-off-by: Florian Fainelli <f.fainelli(a)gmail.com>
---
arch/arm/boot/dts/bcm2711-rpi-4-b.dts | 4 ----
arch/arm/boot/dts/bcm2711.dtsi | 33 +++++++++++----------------
arch/arm/boot/dts/bcm283x.dtsi | 13 +++++++++++
3 files changed, 26 insertions(+), 24 deletions(-)
diff --git a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts
index b42e23beacc9..8eb8abdf98ac 100644
--- a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts
+++ b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts
@@ -167,10 +167,6 @@ aliases {
};
/delete-node/ wifi-pwrseq;
-
- reserved-memory {
- /delete-node/ linux,cma;
- };
};
&mmcnr {
diff --git a/arch/arm/boot/dts/bcm2711.dtsi b/arch/arm/boot/dts/bcm2711.dtsi
index b56388ce1216..3fcfd3480c17 100644
--- a/arch/arm/boot/dts/bcm2711.dtsi
+++ b/arch/arm/boot/dts/bcm2711.dtsi
@@ -12,26 +12,6 @@ / {
interrupt-parent = <&gicv2>;
- reserved-memory {
- #address-cells = <2>;
- #size-cells = <1>;
- ranges;
-
- /*
- * arm64 reserves the CMA by default somewhere in ZONE_DMA32,
- * that's not good enough for the BCM2711 as some devices can
- * only address the lower 1G of memory (ZONE_DMA).
- */
- linux,cma {
- compatible = "shared-dma-pool";
- size = <0x2000000>; /* 32MB */
- alloc-ranges = <0x0 0x00000000 0x40000000>;
- reusable;
- linux,cma-default;
- };
- };
-
-
soc {
/*
* Defined ranges:
@@ -857,6 +837,19 @@ pin-rts {
};
};
+&rmem {
+ #address-cells = <2>;
+};
+
+&cma {
+ /*
+ * arm64 reserves the CMA by default somewhere in ZONE_DMA32,
+ * that's not good enough for the BCM2711 as some devices can
+ * only address the lower 1G of memory (ZONE_DMA).
+ */
+ alloc-ranges = <0x0 0x00000000 0x40000000>;
+};
+
&i2c0 {
compatible = "brcm,bcm2711-i2c", "brcm,bcm2835-i2c";
interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
diff --git a/arch/arm/boot/dts/bcm283x.dtsi b/arch/arm/boot/dts/bcm283x.dtsi
index 839491628e87..6128baed83c2 100644
--- a/arch/arm/boot/dts/bcm283x.dtsi
+++ b/arch/arm/boot/dts/bcm283x.dtsi
@@ -30,6 +30,19 @@ chosen {
stdout-path = "serial0:115200n8";
};
+ rmem: reserved-memory {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;
+
+ cma: linux,cma {
+ compatible = "shared-dma-pool";
+ size = <0x4000000>; /* 64MB */
+ reusable;
+ linux,cma-default;
+ };
+ };
+
thermal-zones {
cpu_thermal: cpu-thermal {
polling-delay-passive = <0>;
--
2.25.1
++++++ upstream-emmc2bus.patch ++++++
>From ef4aaff92087fa708c47fa4df44caee77a7c3508 Mon Sep 17 00:00:00 2001
From: Nicolas Saenz Julienne <nsaenzjulienne(a)suse.de>
Date: Wed, 4 Mar 2020 18:47:55 +0100
Subject: [PATCH] ARM: dts: bcm2711: Move emmc2 into its own bus
Depending on bcm2711's revision its emmc2 controller might have
different DMA constraints. Raspberry Pi 4's firmware will take care of
updating those, but only if a certain alias is found in the device tree.
So, move emmc2 into its own bus, so as not to pollute other devices with
dma-ranges changes and create the emmc2bus alias.
Based in Phil ELwell's downstream implementation.
Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne(a)suse.de>
---
arch/arm/boot/dts/bcm2711-rpi-4-b.dts | 1 +
arch/arm/boot/dts/bcm2711.dtsi | 25 ++++++++++++++++++++-----
2 files changed, 21 insertions(+), 5 deletions(-)
diff --git a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts
index e5978243aa9c..2814c0904e6b 100644
--- a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts
+++ b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts
@@ -19,6 +19,7 @@ memory@0 {
};
aliases {
+ emmc2bus = &emmc2bus;
ethernet0 = &genet;
};
diff --git a/arch/arm/boot/dts/bcm2711.dtsi b/arch/arm/boot/dts/bcm2711.dtsi
index e2f6ffb00aa9..3dd55936819b 100644
--- a/arch/arm/boot/dts/bcm2711.dtsi
+++ b/arch/arm/boot/dts/bcm2711.dtsi
@@ -252,17 +252,32 @@ pwm1: pwm@7e20c800 {
status = "disabled";
};
+ hvs@7e400000 {
+ interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
+ };
+ };
+
+ /*
+ * emmc2 has different DMA constraints based on SoC revisions. It was
+ * moved into its own bus, so as for RPi4's firmware to update them.
+ * The firmware will find whether the emmc2bus alias is defined, and if
+ * so, it'll edit the dma-ranges property below accordingly.
+ */
+ emmc2bus: emmc2bus {
+ compatible = "simple-bus";
+ #address-cells = <2>;
+ #size-cells = <1>;
+
+ ranges = <0x0 0x7e000000 0x0 0xfe000000 0x01800000>;
+ dma-ranges = <0x0 0xc0000000 0x0 0x00000000 0x40000000>;
+
emmc2: emmc2@7e340000 {
compatible = "brcm,bcm2711-emmc2";
- reg = <0x7e340000 0x100>;
+ reg = <0x0 0x7e340000 0x100>;
interrupts = <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clocks BCM2711_CLOCK_EMMC2>;
status = "disabled";
};
-
- hvs@7e400000 {
- interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
- };
};
arm-pmu {
--
2.25.1
++++++ upstream-pcie-dma-ranges.patch ++++++
>From f517c7f214d438b63092d397a9f944c1e3f1dcc2 Mon Sep 17 00:00:00 2001
From: Nicolas Saenz Julienne <nsaenzjulienne(a)suse.de>
Date: Thu, 27 Feb 2020 12:23:35 +0100
Subject: [PATCH] ARM: dts: bcm2711: Fix pci-brcmstb's dma-ranges
The B0 revision of boards can only DMA to the lower 3GB of memory. Honor
that limitation and let the firmware update it when relevant.
Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne(a)suse.de>
---
arch/arm/boot/dts/bcm2711-rpi.dtsi | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm/boot/dts/bcm2711-rpi.dtsi b/arch/arm/boot/dts/bcm2711-rpi.dtsi
index 8011cb6361d3..7b2ddf36d32c 100644
--- a/arch/arm/boot/dts/bcm2711-rpi.dtsi
+++ b/arch/arm/boot/dts/bcm2711-rpi.dtsi
@@ -102,7 +102,7 @@ IRQ_TYPE_LEVEL_HIGH
* to scb:0x0_00000000-ffffffff
*/
dma-ranges = <0x02000000 0x0 0x00000000 0x0 0x00000000
- 0x1 0x00000000>;
+ 0x0 0xc0000000>;
status = "okay";
};
--
2.25.1
1
0