[telegram-desktop/f31] Updated to version 2.0.0.
by Vitaly Zaitsev
commit c352c71d34db7ef946c248e2bbe5525c14af3d6c
Author: Vitaly Zaitsev <vitaly(a)easycoding.org>
Date: Mon Mar 30 18:52:05 2020 +0200
Updated to version 2.0.0.
.gitignore | 1 +
sources | 2 +-
telegram-desktop-13e8b60.patch | 24 ----------
telegram-desktop-6c46194.patch | 21 ---------
telegram-desktop-d2291f5.patch | 99 ------------------------------------------
telegram-desktop-ea854e5.patch | 28 ------------
telegram-desktop.spec | 43 ++++++++----------
7 files changed, 20 insertions(+), 198 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index a24b2c0..3610b6b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -131,3 +131,4 @@
/tdesktop-1.9.13-full.tar.gz
/tdesktop-1.9.14-full.tar.gz
/tdesktop-1.9.21-full.tar.gz
+/tdesktop-2.0.0-full.tar.gz
diff --git a/sources b/sources
index 6407555..ae07128 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (tdesktop-1.9.21-full.tar.gz) = ea02fc69e88ed6244ed420516bb7a93827cb85efaa0a7e9af7562aa1bc29184c5a2102caca8693c976b25d374832e0deb2ccbf00144d5340b5ffacbdc9dcebf1
+SHA512 (tdesktop-2.0.0-full.tar.gz) = 53ea3bb0e1d7cb1fc9d8c8725801295e89f8765b6560f046065dde89aef501d7ddb8aa268aa82f33e3674164a825506c4276cd07c0b59c242dd78ab59d659508
diff --git a/telegram-desktop.spec b/telegram-desktop.spec
index 3b46040..062abca 100644
--- a/telegram-desktop.spec
+++ b/telegram-desktop.spec
@@ -5,17 +5,17 @@
%bcond_without spellcheck
%bcond_without fonts
%bcond_without mindbg
+%ifarch x86_64
%bcond_without ipo
+%else
+%bcond_with ipo
+%endif
# Telegram Desktop's constants...
%global appname tdesktop
%global launcher telegramdesktop
%global tarsuffix -full
-# Telegram API tokens...
-%global apiid 208164
-%global apihash dfbe1bc42dc9d20507e17d1814cc2f0a
-
# Applying workaround to RHBZ#1559007...
%if %{with clang}
%global optflags %(echo %{optflags} | sed -e 's/-mcet//g' -e 's/-fcf-protection//g' -e 's/-fstack-clash-protection//g' -e 's/$/-Qunused-arguments -Wno-unknown-warning-option/')
@@ -23,12 +23,16 @@
# Decrease debuginfo verbosity to reduce memory consumption...
%if %{with mindbg}
+%ifarch x86_64
%global optflags %(echo %{optflags} | sed 's/-g /-g1 /')
+%else
+%global optflags %(echo %{optflags} | sed 's/-g /-g2 /')
+%endif
%endif
Name: telegram-desktop
-Version: 1.9.21
-Release: 4%{?dist}
+Version: 2.0.0
+Release: 1%{?dist}
# Application and 3rd-party modules licensing:
# * Telegram Desktop - GPLv3+ with OpenSSL exception -- main tarball;
@@ -42,18 +46,6 @@ ExclusiveArch: x86_64
# Source files...
Source0: %{url}/releases/download/v%{version}/%{appname}-%{version}%{tarsuffix}.tar.gz
-# https://github.com/telegramdesktop/tdesktop/commit/d2291f5b17e0c169083a34...
-Patch100: %{name}-d2291f5.patch
-
-# https://github.com/telegramdesktop/tdesktop/commit/ea854e5be3c89157c282f7...
-Patch101: %{name}-ea854e5.patch
-
-# https://github.com/telegramdesktop/tdesktop/commit/6c46194009a0bf26c1f383...
-Patch102: %{name}-6c46194.patch
-
-# https://github.com/telegramdesktop/tdesktop/commit/13e8b60d6c396b128cfd73...
-Patch103: %{name}-13e8b60.patch
-
# Telegram Desktop require exact version of Qt due to Qt private API usage.
%{?_qt5:Requires: %{_qt5}%{?_isa} = %{_qt5_version}}
Requires: qt5-qtimageformats%{?_isa}
@@ -172,8 +164,8 @@ pushd %{_target_platform}
-DDESKTOP_APP_USE_PACKAGED_RLOTTIE:BOOL=OFF \
%endif
%if %{with clang}
- -DCMAKE_C_COMPILER=clang \
- -DCMAKE_CXX_COMPILER=clang++ \
+ -DCMAKE_C_COMPILER=%{_bindir}/clang \
+ -DCMAKE_CXX_COMPILER=%{_bindir}/clang++ \
-DCMAKE_AR=%{_bindir}/llvm-ar \
-DCMAKE_RANLIB=%{_bindir}/llvm-ranlib \
-DCMAKE_LINKER=%{_bindir}/llvm-ld \
@@ -184,8 +176,8 @@ pushd %{_target_platform}
-DCMAKE_RANLIB=%{_bindir}/gcc-ranlib \
-DCMAKE_NM=%{_bindir}/gcc-nm \
%endif
- -DTDESKTOP_API_ID=%{apiid} \
- -DTDESKTOP_API_HASH=%{apihash} \
+ -DTDESKTOP_API_ID=611335 \
+ -DTDESKTOP_API_HASH=d524b414d21f4d37f08684c1df41ac9c \
-DDESKTOP_APP_USE_PACKAGED:BOOL=ON \
-DDESKTOP_APP_USE_PACKAGED_GSL:BOOL=ON \
-DDESKTOP_APP_USE_PACKAGED_EXPECTED:BOOL=ON \
@@ -196,6 +188,7 @@ pushd %{_target_platform}
-DTDESKTOP_USE_PACKAGED_TGVOIP:BOOL=ON \
-DTDESKTOP_DISABLE_REGISTER_CUSTOM_SCHEME:BOOL=ON \
-DTDESKTOP_DISABLE_DESKTOP_FILE_GENERATION:BOOL=ON \
+ -DTDESKTOP_USE_FONTCONFIG_FALLBACK:BOOL=OFF \
-DTDESKTOP_LAUNCHER_BASENAME=%{launcher} \
..
popd
@@ -217,11 +210,11 @@ desktop-file-validate %{buildroot}%{_datadir}/applications/%{launcher}.desktop
%{_metainfodir}/%{launcher}.appdata.xml
%changelog
+* Mon Mar 30 2020 Vitaly Zaitsev <vitaly(a)easycoding.org> - 2.0.0-1
+- Updated to version 2.0.0.
+
* Thu Mar 26 2020 Vitaly Zaitsev <vitaly(a)easycoding.org> - 1.9.21-4
- Backported upstream patches with different fixes.
* Mon Mar 23 2020 Vitaly Zaitsev <vitaly(a)easycoding.org> - 1.9.21-3
- Disabled aarch64 and ppc64le again due to not enough RAM on builders.
-
-* Mon Mar 23 2020 Vitaly Zaitsev <vitaly(a)easycoding.org> - 1.9.21-2
-- Enabled aarch64 and ppc64le architectures.
4 years, 7 months
[qt5-qtwebengine-freeworld] 5.14.1
by Rex Dieter
commit 9b7e0788ecc59dd99bdbcc65afab090bb6b1c38c
Author: Rex Dieter <rdieter(a)gmail.com>
Date: Mon Mar 30 10:23:20 2020 -0500
5.14.1
sync changes/patches from fedora
.gitignore | 1 +
qt5-qtwebengine-freeworld.spec | 41 +-
qtwebengine-5.14-1-QT_DEPRECATED_VERSION.patch | 17 +
...d-clock_nanosleep-in-Linux-sandbox-manual.patch | 129 -----
...ne-everywhere-5.13.2-fix-chromium-headers.patch | 539 ---------------------
...rywhere-5.13.2-missing-semicolon-in-blink.patch | 13 -
qtwebengine-everywhere-5.14.1-gcc10.patch | 35 ++
qtwebengine-everywhere-src-5.10.0-linux-pri.patch | 6 +-
...ne-opensource-src-5.12.4-fix-extractcflag.patch | 6 +-
qtwebengine-opensource-src-5.9.0-no-neon.patch | 6 +-
sources | 2 +-
11 files changed, 87 insertions(+), 708 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index 0ae7a17..2a6e8e7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,3 +3,4 @@
/qtwebengine-everywhere-src-5.12.5.tar.xz
/qtwebengine-everywhere-src-5.12.6.tar.xz
/qtwebengine-everywhere-src-5.13.2.tar.xz
+/qtwebengine-everywhere-src-5.14.1.tar.xz
diff --git a/qt5-qtwebengine-freeworld.spec b/qt5-qtwebengine-freeworld.spec
index 460e68c..3f0b2bc 100644
--- a/qt5-qtwebengine-freeworld.spec
+++ b/qt5-qtwebengine-freeworld.spec
@@ -19,6 +19,11 @@
%global use_system_ffmpeg 1
%endif
+%if 0%{?fedora} > 31
+# need libicu >= 64, only currently available on f32+
+%global use_system_libicu 1
+%endif
+
# NEON support on ARM (detected at runtime) - disable this if you are hitting
# FTBFS due to e.g. GCC bug https://bugzilla.redhat.com/show_bug.cgi?id=1282495
#global arm_neon 1
@@ -41,8 +46,8 @@
Summary: Qt5 - QtWebEngine components (freeworld version)
Name: qt5-qtwebengine-freeworld
-Version: 5.13.2
-Release: 3%{?dist}
+Version: 5.14.1
+Release: 1%{?dist}
%global major_minor %(echo %{version} | cut -d. -f-2)
%global major %(echo %{version} | cut -d. -f1)
@@ -72,25 +77,20 @@ Patch2: qtwebengine-opensource-src-5.12.4-fix-extractcflag.patch
Patch3: qtwebengine-opensource-src-5.9.0-no-neon.patch
# workaround FTBFS against kernel-headers-5.2.0+
Patch4: qtwebengine-SIOCGSTAMP.patch
+# fix build when using qt < 5.14
+Patch5: qtwebengine-5.14-1-QT_DEPRECATED_VERSION.patch
# remove Android dependencies from openmax_dl ARM NEON detection (detect.c)
Patch10: qtwebengine-opensource-src-5.9.0-openmax-dl-neon.patch
# Force verbose output from the GN bootstrap process
Patch21: qtwebengine-everywhere-src-5.12.0-gn-bootstrap-verbose.patch
# Fix/workaround FTBFS on aarch64 with newer glibc
Patch24: qtwebengine-everywhere-src-5.11.3-aarch64-new-stat.patch
-# Fix missing semicolon in Blink
-Patch25: qtwebengine-everywhere-5.13.2-missing-semicolon-in-blink.patch
# Use Python2
Patch26: qtwebengine-everywhere-5.13.2-use-python2.patch
# Fix missing include in chromium
Patch27: qtwebengine-everywhere-5.13.2-fix-chromium-headers.patch
-# Fix for clock_nanosleep
-# https://bugreports.qt.io/browse/QTBUG-81313
-# https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/292352
-# Qt: https://codereview.qt-project.org/gitweb?p=qt/qtwebengine-chromium.git;a=...
-# Chromium: https://chromium.googlesource.com/chromium/src/+/54407b422a9cbf775a68c1d5...
-# Didn't apply cleanly, manually ported
-Patch28: qtwebengine-everywhere-5.13.2-allow-restricted-clock_nanosleep-in-Linux-sandbox-manual.patch
+# Fix gcc10 FTBFS
+Patch29: qtwebengine-everywhere-5.14.1-gcc10.patch
## Upstream patches:
# qtwebengine-chromium
@@ -124,7 +124,9 @@ BuildRequires: libstdc++-static
BuildRequires: git-core
BuildRequires: gperf
BuildRequires: krb5-devel
-BuildRequires: libicu-devel
+%if 0%{?use_system_libicu}
+BuildRequires: libicu-devel >= 64
+%endif
BuildRequires: libjpeg-devel
BuildRequires: re2-devel
BuildRequires: snappy-devel
@@ -336,25 +338,25 @@ pushd src/3rdparty/chromium
popd
%patch0 -p1 -b .linux-pri
+%if 0%{?use_system_libicu}
%patch1 -p1 -b .no-icudtl-dat
+%endif
%patch2 -p1 -b .fix-extractcflag
%if !0%{?arm_neon}
%patch3 -p1 -b .no-neon
%endif
%patch4 -p1 -b .SIOCGSTAMP
+%patch5 -p1 -b .QT_DEPRECATED_VERSION
## upstream patches
-%patch10 -p1 -b .openmax-dl-neon
+#patch10 -p1 -b .openmax-dl-neon
## NEEDSWORK
#patch21 -p1 -b .gn-bootstrap-verbose
%patch24 -p1 -b .aarch64-new-stat
-%patch25 -p1 -b .missing-semicolon-in-blink
%patch26 -p1 -b .use-python2
%patch27 -p1 -b .fix-chromium
-%patch28 -p0 -b .allow-clock_nanosleep
-
# the xkbcommon config/feature was renamed in 5.12, so need to adjust QT_CONFIG references
# when building on older Qt releases
%if "%{_qt5_version}" < "5.12.0"
@@ -415,7 +417,7 @@ export NINJA_PATH=%{__ninja}
CONFIG+="link_pulseaudio" \
%{?system_ffmpeg_flag:QMAKE_EXTRA_ARGS+="%{?system_ffmpeg_flag}"} \
QMAKE_EXTRA_ARGS+="-proprietary-codecs" \
- QMAKE_EXTRA_ARGS+="-system-webengine-icu" \
+ %{?use_system_libicu:QMAKE_EXTRA_ARGS+="-system-webengine-icu"} \
QMAKE_EXTRA_ARGS+="-webengine-kerberos" \
.
@@ -438,6 +440,7 @@ mkdir -p %{buildroot}%{_sysconfdir}/ld.so.conf.d
echo "%{_libdir}/%{name}" \
>%{buildroot}%{_sysconfdir}/ld.so.conf.d/%{name}-%{_arch}.conf
+
%ldconfig_scriptlets
%files
@@ -445,7 +448,11 @@ echo "%{_libdir}/%{name}" \
%{_libdir}/%{name}/
%config(noreplace) %{_sysconfdir}/ld.so.conf.d/%{name}-%{_arch}.conf
+
%changelog
+* Mon Mar 30 2020 Rex Dieter <rdieter(a)fedoraproject.org> - 5.14.1-1
+- 5.14.1
+
* Wed Mar 25 2020 Rex Dieter <rdieter(a)fedoraproject.org> - 5.13.2-3
- sync patches from fedora
diff --git a/qtwebengine-5.14-1-QT_DEPRECATED_VERSION.patch b/qtwebengine-5.14-1-QT_DEPRECATED_VERSION.patch
new file mode 100644
index 0000000..69b1bbf
--- /dev/null
+++ b/qtwebengine-5.14-1-QT_DEPRECATED_VERSION.patch
@@ -0,0 +1,17 @@
+diff -up qtwebengine-everywhere-src-5.14.1.orig/src/webenginewidgets/api/qwebenginedownloaditem.h.QT_DEPRECATED qtwebengine-everywhere-src-5.14.1.orig/src/webenginewidgets/api/qwebenginedownloaditem.h
+--- qtwebengine-everywhere-src-5.14.1.orig/src/webenginewidgets/api/qwebenginedownloaditem.h.QT_DEPRECATED 2020-01-20 05:17:16.000000000 -0600
++++ qtwebengine-everywhere-src-5.14.1.orig/src/webenginewidgets/api/qwebenginedownloaditem.h 2020-03-24 15:42:03.558394148 -0500
+@@ -119,9 +119,13 @@ public:
+ QUrl url() const;
+ QString mimeType() const;
+ #if QT_DEPRECATED_SINCE(5, 14)
++#if QT_VERSION >= QT_VERSION_CHECK(5,14,0)
+ QT_DEPRECATED_VERSION_X(5, 14, "Use downloadDirectory() and downloadFileName() instead")
++#endif
+ QString path() const;
++#if QT_VERSION >= QT_VERSION_CHECK(5,14,0)
+ QT_DEPRECATED_VERSION_X(5, 14, "Use setDownloadDirectory() and setDownloadFileName() instead")
++#endif
+ void setPath(QString path);
+ #endif
+ bool isFinished() const;
diff --git a/qtwebengine-everywhere-5.13.2-fix-chromium-headers.patch b/qtwebengine-everywhere-5.13.2-fix-chromium-headers.patch
index d14f1e0..e887fa3 100644
--- a/qtwebengine-everywhere-5.13.2-fix-chromium-headers.patch
+++ b/qtwebengine-everywhere-5.13.2-fix-chromium-headers.patch
@@ -10,545 +10,6 @@ Subject: [PATCH] fix chromium headers
.../modules/video_coding/decoding_state.h | 1 +
4 files changed, 256 insertions(+), 250 deletions(-)
-diff --git a/src/3rdparty/chromium/cc/base/list_container_helper.cc b/src/3rdparty/chromium/cc/base/list_container_helper.cc
-index 380ad3dd1..c4a9245d9 100644
---- a/src/3rdparty/chromium/cc/base/list_container_helper.cc
-+++ b/src/3rdparty/chromium/cc/base/list_container_helper.cc
-@@ -13,258 +13,8 @@
- #include "base/macros.h"
- #include "base/memory/aligned_memory.h"
-
--namespace {
--const size_t kDefaultNumElementTypesToReserve = 32;
--} // namespace
--
- namespace cc {
-
--// CharAllocator
--////////////////////////////////////////////////////
--// This class deals only with char* and void*. It does allocation and passing
--// out raw pointers, as well as memory deallocation when being destroyed.
--class ListContainerHelper::CharAllocator {
-- public:
-- // CharAllocator::InnerList
-- /////////////////////////////////////////////
-- // This class holds the raw memory chunk, as well as information about its
-- // size and availability.
-- struct InnerList {
-- std::unique_ptr<char[], base::AlignedFreeDeleter> data;
-- // The number of elements in total the memory can hold. The difference
-- // between capacity and size is the how many more elements this list can
-- // hold.
-- size_t capacity;
-- // The number of elements have been put into this list.
-- size_t size;
-- // The size of each element is in bytes. This is used to move from between
-- // elements' memory locations.
-- size_t step;
--
-- InnerList() : capacity(0), size(0), step(0) {}
--
-- void Erase(char* position) {
-- // Confident that destructor is called by caller of this function. Since
-- // CharAllocator does not handle construction after
-- // allocation, it doesn't handle desctrution before deallocation.
-- DCHECK_LE(position, LastElement());
-- DCHECK_GE(position, Begin());
-- char* start = position + step;
-- std::copy(start, End(), position);
--
-- --size;
-- // Decrease capacity to avoid creating not full not last InnerList.
-- --capacity;
-- }
--
-- void InsertBefore(size_t alignment, char** position, size_t count) {
-- DCHECK_LE(*position, LastElement() + step);
-- DCHECK_GE(*position, Begin());
--
-- // Adjust the size and capacity
-- size_t old_size = size;
-- size += count;
-- capacity = size;
--
-- // Allocate the new data and update the iterator's pointer.
-- std::unique_ptr<char[], base::AlignedFreeDeleter> new_data(
-- static_cast<char*>(base::AlignedAlloc(size * step, alignment)));
-- size_t position_offset = *position - Begin();
-- *position = new_data.get() + position_offset;
--
-- // Copy the data before the inserted segment
-- memcpy(new_data.get(), data.get(), position_offset);
-- // Copy the data after the inserted segment.
-- memcpy(new_data.get() + position_offset + count * step,
-- data.get() + position_offset, old_size * step - position_offset);
-- data = std::move(new_data);
-- }
--
-- bool IsEmpty() const { return !size; }
-- bool IsFull() { return capacity == size; }
-- size_t NumElementsAvailable() const { return capacity - size; }
--
-- void* AddElement() {
-- DCHECK_LT(size, capacity);
-- ++size;
-- return LastElement();
-- }
--
-- void RemoveLast() {
-- DCHECK(!IsEmpty());
-- --size;
-- }
--
-- char* Begin() const { return data.get(); }
-- char* End() const { return data.get() + size * step; }
-- char* LastElement() const { return data.get() + (size - 1) * step; }
-- char* ElementAt(size_t index) const { return data.get() + index * step; }
--
-- private:
-- DISALLOW_COPY_AND_ASSIGN(InnerList);
-- };
--
-- CharAllocator(size_t alignment, size_t element_size, size_t element_count)
-- // base::AlignedAlloc does not accept alignment less than sizeof(void*).
-- : alignment_(std::max(sizeof(void*), alignment)),
-- element_size_(element_size),
-- size_(0),
-- last_list_index_(0),
-- last_list_(nullptr) {
-- // If this fails, then alignment of elements after the first could be wrong,
-- // and we need to pad sizes to fix that.
-- DCHECK_EQ(element_size % alignment, 0u);
-- AllocateNewList(element_count > 0 ? element_count
-- : kDefaultNumElementTypesToReserve);
-- last_list_ = storage_[last_list_index_].get();
-- }
--
-- ~CharAllocator() = default;
--
-- void* Allocate() {
-- if (last_list_->IsFull()) {
-- // Only allocate a new list if there isn't a spare one still there from
-- // previous usage.
-- if (last_list_index_ + 1 >= storage_.size())
-- AllocateNewList(last_list_->capacity * 2);
--
-- ++last_list_index_;
-- last_list_ = storage_[last_list_index_].get();
-- }
--
-- ++size_;
-- return last_list_->AddElement();
-- }
--
-- size_t alignment() const { return alignment_; }
-- size_t element_size() const { return element_size_; }
-- size_t list_count() const { return storage_.size(); }
-- size_t size() const { return size_; }
-- bool IsEmpty() const { return size() == 0; }
--
-- size_t Capacity() const {
-- size_t capacity_sum = 0;
-- for (const auto& inner_list : storage_)
-- capacity_sum += inner_list->capacity;
-- return capacity_sum;
-- }
--
-- void Clear() {
-- // Remove all except for the first InnerList.
-- DCHECK(!storage_.empty());
-- storage_.erase(storage_.begin() + 1, storage_.end());
-- last_list_index_ = 0;
-- last_list_ = storage_[0].get();
-- last_list_->size = 0;
-- size_ = 0;
-- }
--
-- void RemoveLast() {
-- DCHECK(!IsEmpty());
-- last_list_->RemoveLast();
-- if (last_list_->IsEmpty() && last_list_index_ > 0) {
-- --last_list_index_;
-- last_list_ = storage_[last_list_index_].get();
--
-- // If there are now two empty inner lists, free one of them.
-- if (last_list_index_ + 2 < storage_.size())
-- storage_.pop_back();
-- }
-- --size_;
-- }
--
-- void Erase(PositionInCharAllocator* position) {
-- DCHECK_EQ(this, position->ptr_to_container);
--
-- // Update |position| to point to the element after the erased element.
-- InnerList* list = storage_[position->vector_index].get();
-- char* item_iterator = position->item_iterator;
-- if (item_iterator == list->LastElement())
-- position->Increment();
--
-- list->Erase(item_iterator);
-- // TODO(weiliangc): Free the InnerList if it is empty.
-- --size_;
-- }
--
-- void InsertBefore(ListContainerHelper::Iterator* position, size_t count) {
-- if (!count)
-- return;
--
-- // If |position| is End(), then append |count| elements at the end. This
-- // will happen to not invalidate any iterators or memory.
-- if (!position->item_iterator) {
-- // Set |position| to be the first inserted element.
-- Allocate();
-- position->vector_index = storage_.size() - 1;
-- position->item_iterator = storage_[position->vector_index]->LastElement();
-- // Allocate the rest.
-- for (size_t i = 1; i < count; ++i)
-- Allocate();
-- } else {
-- storage_[position->vector_index]->InsertBefore(
-- alignment_, &position->item_iterator, count);
-- size_ += count;
-- }
-- }
--
-- InnerList* InnerListById(size_t id) const {
-- DCHECK_LT(id, storage_.size());
-- return storage_[id].get();
-- }
--
-- size_t FirstInnerListId() const {
-- // |size_| > 0 means that at least one vector in |storage_| will be
-- // non-empty.
-- DCHECK_GT(size_, 0u);
-- size_t id = 0;
-- while (storage_[id]->size == 0)
-- ++id;
-- return id;
-- }
--
-- size_t LastInnerListId() const {
-- // |size_| > 0 means that at least one vector in |storage_| will be
-- // non-empty.
-- DCHECK_GT(size_, 0u);
-- size_t id = storage_.size() - 1;
-- while (storage_[id]->size == 0)
-- --id;
-- return id;
-- }
--
-- size_t NumAvailableElementsInLastList() const {
-- return last_list_->NumElementsAvailable();
-- }
--
-- private:
-- void AllocateNewList(size_t list_size) {
-- std::unique_ptr<InnerList> new_list(new InnerList);
-- new_list->capacity = list_size;
-- new_list->size = 0;
-- new_list->step = element_size_;
-- new_list->data.reset(static_cast<char*>(
-- base::AlignedAlloc(list_size * element_size_, alignment_)));
-- storage_.push_back(std::move(new_list));
-- }
--
-- std::vector<std::unique_ptr<InnerList>> storage_;
-- const size_t alignment_;
-- const size_t element_size_;
--
-- // The number of elements in the list.
-- size_t size_;
--
-- // The index of the last list to have had elements added to it, or the only
-- // list if the container has not had elements added since being cleared.
-- size_t last_list_index_;
--
-- // This is equivalent to |storage_[last_list_index_]|.
-- InnerList* last_list_;
--
-- DISALLOW_COPY_AND_ASSIGN(CharAllocator);
--};
--
- // PositionInCharAllocator
- //////////////////////////////////////////////////////
- ListContainerHelper::PositionInCharAllocator::PositionInCharAllocator(
-diff --git a/src/3rdparty/chromium/cc/base/list_container_helper.h b/src/3rdparty/chromium/cc/base/list_container_helper.h
-index c79cf1f18..a44ecb4de 100644
---- a/src/3rdparty/chromium/cc/base/list_container_helper.h
-+++ b/src/3rdparty/chromium/cc/base/list_container_helper.h
-@@ -8,10 +8,18 @@
- #include <stddef.h>
-
- #include <memory>
-+#include <algorithm>
-+#include <vector>
-
-+#include "base/logging.h"
- #include "base/macros.h"
-+#include "base/memory/aligned_memory.h"
- #include "cc/base/base_export.h"
-
-+namespace {
-+const size_t kDefaultNumElementTypesToReserve = 32;
-+} // namespace
-+
- namespace cc {
-
- // Helper class for ListContainer non-templated logic. All methods are private,
-@@ -174,6 +182,252 @@ class CC_BASE_EXPORT ListContainerHelper final {
- DISALLOW_COPY_AND_ASSIGN(ListContainerHelper);
- };
-
-+// CharAllocator
-+////////////////////////////////////////////////////
-+// This class deals only with char* and void*. It does allocation and passing
-+// out raw pointers, as well as memory deallocation when being destroyed.
-+class ListContainerHelper::CharAllocator {
-+ public:
-+ // CharAllocator::InnerList
-+ /////////////////////////////////////////////
-+ // This class holds the raw memory chunk, as well as information about its
-+ // size and availability.
-+ struct InnerList {
-+ std::unique_ptr<char[], base::AlignedFreeDeleter> data;
-+ // The number of elements in total the memory can hold. The difference
-+ // between capacity and size is the how many more elements this list can
-+ // hold.
-+ size_t capacity;
-+ // The number of elements have been put into this list.
-+ size_t size;
-+ // The size of each element is in bytes. This is used to move from between
-+ // elements' memory locations.
-+ size_t step;
-+
-+ InnerList() : capacity(0), size(0), step(0) {}
-+
-+ void Erase(char* position) {
-+ // Confident that destructor is called by caller of this function. Since
-+ // CharAllocator does not handle construction after
-+ // allocation, it doesn't handle desctrution before deallocation.
-+ DCHECK_LE(position, LastElement());
-+ DCHECK_GE(position, Begin());
-+ char* start = position + step;
-+ std::copy(start, End(), position);
-+
-+ --size;
-+ // Decrease capacity to avoid creating not full not last InnerList.
-+ --capacity;
-+ }
-+
-+ void InsertBefore(size_t alignment, char** position, size_t count) {
-+ DCHECK_LE(*position, LastElement() + step);
-+ DCHECK_GE(*position, Begin());
-+
-+ // Adjust the size and capacity
-+ size_t old_size = size;
-+ size += count;
-+ capacity = size;
-+
-+ // Allocate the new data and update the iterator's pointer.
-+ std::unique_ptr<char[], base::AlignedFreeDeleter> new_data(
-+ static_cast<char*>(base::AlignedAlloc(size * step, alignment)));
-+ size_t position_offset = *position - Begin();
-+ *position = new_data.get() + position_offset;
-+
-+ // Copy the data before the inserted segment
-+ memcpy(new_data.get(), data.get(), position_offset);
-+ // Copy the data after the inserted segment.
-+ memcpy(new_data.get() + position_offset + count * step,
-+ data.get() + position_offset, old_size * step - position_offset);
-+ data = std::move(new_data);
-+ }
-+
-+ bool IsEmpty() const { return !size; }
-+ bool IsFull() { return capacity == size; }
-+ size_t NumElementsAvailable() const { return capacity - size; }
-+
-+ void* AddElement() {
-+ DCHECK_LT(size, capacity);
-+ ++size;
-+ return LastElement();
-+ }
-+
-+ void RemoveLast() {
-+ DCHECK(!IsEmpty());
-+ --size;
-+ }
-+
-+ char* Begin() const { return data.get(); }
-+ char* End() const { return data.get() + size * step; }
-+ char* LastElement() const { return data.get() + (size - 1) * step; }
-+ char* ElementAt(size_t index) const { return data.get() + index * step; }
-+
-+ private:
-+ DISALLOW_COPY_AND_ASSIGN(InnerList);
-+ };
-+
-+ CharAllocator(size_t alignment, size_t element_size, size_t element_count)
-+ // base::AlignedAlloc does not accept alignment less than sizeof(void*).
-+ : alignment_(std::max(sizeof(void*), alignment)),
-+ element_size_(element_size),
-+ size_(0),
-+ last_list_index_(0),
-+ last_list_(nullptr) {
-+ // If this fails, then alignment of elements after the first could be wrong,
-+ // and we need to pad sizes to fix that.
-+ DCHECK_EQ(element_size % alignment, 0u);
-+ AllocateNewList(element_count > 0 ? element_count
-+ : kDefaultNumElementTypesToReserve);
-+ last_list_ = storage_[last_list_index_].get();
-+ }
-+
-+ ~CharAllocator() = default;
-+
-+ void* Allocate() {
-+ if (last_list_->IsFull()) {
-+ // Only allocate a new list if there isn't a spare one still there from
-+ // previous usage.
-+ if (last_list_index_ + 1 >= storage_.size())
-+ AllocateNewList(last_list_->capacity * 2);
-+
-+ ++last_list_index_;
-+ last_list_ = storage_[last_list_index_].get();
-+ }
-+
-+ ++size_;
-+ return last_list_->AddElement();
-+ }
-+
-+ size_t alignment() const { return alignment_; }
-+ size_t element_size() const { return element_size_; }
-+ size_t list_count() const { return storage_.size(); }
-+ size_t size() const { return size_; }
-+ bool IsEmpty() const { return size() == 0; }
-+
-+ size_t Capacity() const {
-+ size_t capacity_sum = 0;
-+ for (const auto& inner_list : storage_)
-+ capacity_sum += inner_list->capacity;
-+ return capacity_sum;
-+ }
-+
-+ void Clear() {
-+ // Remove all except for the first InnerList.
-+ DCHECK(!storage_.empty());
-+ storage_.erase(storage_.begin() + 1, storage_.end());
-+ last_list_index_ = 0;
-+ last_list_ = storage_[0].get();
-+ last_list_->size = 0;
-+ size_ = 0;
-+ }
-+
-+ void RemoveLast() {
-+ DCHECK(!IsEmpty());
-+ last_list_->RemoveLast();
-+ if (last_list_->IsEmpty() && last_list_index_ > 0) {
-+ --last_list_index_;
-+ last_list_ = storage_[last_list_index_].get();
-+
-+ // If there are now two empty inner lists, free one of them.
-+ if (last_list_index_ + 2 < storage_.size())
-+ storage_.pop_back();
-+ }
-+ --size_;
-+ }
-+
-+ void Erase(PositionInCharAllocator* position) {
-+ DCHECK_EQ(this, position->ptr_to_container);
-+
-+ // Update |position| to point to the element after the erased element.
-+ InnerList* list = storage_[position->vector_index].get();
-+ char* item_iterator = position->item_iterator;
-+ if (item_iterator == list->LastElement())
-+ position->Increment();
-+
-+ list->Erase(item_iterator);
-+ // TODO(weiliangc): Free the InnerList if it is empty.
-+ --size_;
-+ }
-+
-+ void InsertBefore(ListContainerHelper::Iterator* position, size_t count) {
-+ if (!count)
-+ return;
-+
-+ // If |position| is End(), then append |count| elements at the end. This
-+ // will happen to not invalidate any iterators or memory.
-+ if (!position->item_iterator) {
-+ // Set |position| to be the first inserted element.
-+ Allocate();
-+ position->vector_index = storage_.size() - 1;
-+ position->item_iterator = storage_[position->vector_index]->LastElement();
-+ // Allocate the rest.
-+ for (size_t i = 1; i < count; ++i)
-+ Allocate();
-+ } else {
-+ storage_[position->vector_index]->InsertBefore(
-+ alignment_, &position->item_iterator, count);
-+ size_ += count;
-+ }
-+ }
-+
-+ InnerList* InnerListById(size_t id) const {
-+ DCHECK_LT(id, storage_.size());
-+ return storage_[id].get();
-+ }
-+
-+ size_t FirstInnerListId() const {
-+ // |size_| > 0 means that at least one vector in |storage_| will be
-+ // non-empty.
-+ DCHECK_GT(size_, 0u);
-+ size_t id = 0;
-+ while (storage_[id]->size == 0)
-+ ++id;
-+ return id;
-+ }
-+
-+ size_t LastInnerListId() const {
-+ // |size_| > 0 means that at least one vector in |storage_| will be
-+ // non-empty.
-+ DCHECK_GT(size_, 0u);
-+ size_t id = storage_.size() - 1;
-+ while (storage_[id]->size == 0)
-+ --id;
-+ return id;
-+ }
-+
-+ size_t NumAvailableElementsInLastList() const {
-+ return last_list_->NumElementsAvailable();
-+ }
-+
-+ private:
-+ void AllocateNewList(size_t list_size) {
-+ std::unique_ptr<InnerList> new_list(new InnerList);
-+ new_list->capacity = list_size;
-+ new_list->size = 0;
-+ new_list->step = element_size_;
-+ new_list->data.reset(static_cast<char*>(
-+ base::AlignedAlloc(list_size * element_size_, alignment_)));
-+ storage_.push_back(std::move(new_list));
-+ }
-+
-+ std::vector<std::unique_ptr<InnerList>> storage_;
-+ const size_t alignment_;
-+ const size_t element_size_;
-+
-+ // The number of elements in the list.
-+ size_t size_;
-+
-+ // The index of the last list to have had elements added to it, or the only
-+ // list if the container has not had elements added since being cleared.
-+ size_t last_list_index_;
-+
-+ // This is equivalent to |storage_[last_list_index_]|.
-+ InnerList* last_list_;
-+
-+ DISALLOW_COPY_AND_ASSIGN(CharAllocator);
-+};
-+
- } // namespace cc
-
- #endif // CC_BASE_LIST_CONTAINER_HELPER_H_
diff --git a/src/3rdparty/chromium/third_party/webrtc/modules/audio_processing/aec3/clockdrift_detector.h b/src/3rdparty/chromium/third_party/webrtc/modules/audio_processing/aec3/clockdrift_detector.h
index 22528c948..69e624e8b 100644
--- a/src/3rdparty/chromium/third_party/webrtc/modules/audio_processing/aec3/clockdrift_detector.h
diff --git a/qtwebengine-everywhere-5.14.1-gcc10.patch b/qtwebengine-everywhere-5.14.1-gcc10.patch
new file mode 100644
index 0000000..be17f15
--- /dev/null
+++ b/qtwebengine-everywhere-5.14.1-gcc10.patch
@@ -0,0 +1,35 @@
+diff -up qtwebengine-everywhere-src-5.14.1.orig/src/3rdparty/chromium/media/cdm/supported_cdm_versions.cc.gcc10 qtwebengine-everywhere-src-5.14.1.orig/src/3rdparty/chromium/media/cdm/supported_cdm_versions.cc
+diff -up qtwebengine-everywhere-src-5.14.1.orig/src/3rdparty/chromium/media/cdm/supported_cdm_versions.h.gcc10 qtwebengine-everywhere-src-5.14.1.orig/src/3rdparty/chromium/media/cdm/supported_cdm_versions.h
+--- qtwebengine-everywhere-src-5.14.1.orig/src/3rdparty/chromium/media/cdm/supported_cdm_versions.h.gcc10 2020-01-20 04:37:42.000000000 -0600
++++ qtwebengine-everywhere-src-5.14.1.orig/src/3rdparty/chromium/media/cdm/supported_cdm_versions.h 2020-03-25 08:19:35.628534572 -0500
+@@ -6,6 +6,7 @@
+ #define MEDIA_CDM_SUPPORTED_CDM_VERSIONS_H_
+
+ #include <array>
++#include <cstdlib>
+
+ #include "media/base/media_export.h"
+ #include "media/cdm/api/content_decryption_module.h"
+diff -up qtwebengine-everywhere-src-5.14.1.orig/src/3rdparty/chromium/third_party/perfetto/include/perfetto/base/task_runner.h.gcc10 qtwebengine-everywhere-src-5.14.1.orig/src/3rdparty/chromium/third_party/perfetto/include/perfetto/base/task_runner.h
+--- qtwebengine-everywhere-src-5.14.1.orig/src/3rdparty/chromium/third_party/perfetto/include/perfetto/base/task_runner.h.gcc10 2020-01-20 04:37:42.000000000 -0600
++++ qtwebengine-everywhere-src-5.14.1.orig/src/3rdparty/chromium/third_party/perfetto/include/perfetto/base/task_runner.h 2020-03-17 16:59:11.432193734 -0500
+@@ -18,6 +18,7 @@
+ #define INCLUDE_PERFETTO_BASE_TASK_RUNNER_H_
+
+ #include <functional>
++#include <cstdint>
+
+ #include "perfetto/base/export.h"
+
+diff -up qtwebengine-everywhere-src-5.14.1.orig/src/3rdparty/chromium/third_party/webrtc/call/rtx_receive_stream.h.gcc10 qtwebengine-everywhere-src-5.14.1.orig/src/3rdparty/chromium/third_party/webrtc/call/rtx_receive_stream.h
+--- qtwebengine-everywhere-src-5.14.1.orig/src/3rdparty/chromium/third_party/webrtc/call/rtx_receive_stream.h.gcc10 2020-01-20 04:37:42.000000000 -0600
++++ qtwebengine-everywhere-src-5.14.1.orig/src/3rdparty/chromium/third_party/webrtc/call/rtx_receive_stream.h 2020-03-25 09:37:13.373280961 -0500
+@@ -11,6 +11,8 @@
+ #ifndef CALL_RTX_RECEIVE_STREAM_H_
+ #define CALL_RTX_RECEIVE_STREAM_H_
+
++#include <cstdlib>
++#include <cstdint>
+ #include <map>
+
+ #include "call/rtp_packet_sink_interface.h"
diff --git a/qtwebengine-everywhere-src-5.10.0-linux-pri.patch b/qtwebengine-everywhere-src-5.10.0-linux-pri.patch
index 4bcd376..995db84 100644
--- a/qtwebengine-everywhere-src-5.10.0-linux-pri.patch
+++ b/qtwebengine-everywhere-src-5.10.0-linux-pri.patch
@@ -1,6 +1,6 @@
-diff -ur qtwebengine-everywhere-src-5.10.0/src/core/config/linux.pri qtwebengine-everywhere-src-5.10.0-linux-pri/src/core/config/linux.pri
---- qtwebengine-everywhere-src-5.10.0/src/core/config/linux.pri 2017-11-29 09:42:29.000000000 +0100
-+++ qtwebengine-everywhere-src-5.10.0-linux-pri/src/core/config/linux.pri 2017-12-25 12:07:40.262411459 +0100
+diff -ur qtwebengine-everywhere-src-5.10.0/src/buildtools/config/linux.pri qtwebengine-everywhere-src-5.10.0-linux-pri/src/buildtools/config/linux.pri
+--- qtwebengine-everywhere-src-5.10.0/src/buildtools/config/linux.pri 2017-11-29 09:42:29.000000000 +0100
++++ qtwebengine-everywhere-src-5.10.0-linux-pri/src/buildtools/config/linux.pri 2017-12-25 12:07:40.262411459 +0100
@@ -157,3 +157,19 @@
#qtConfig(webengine-system-jsoncpp): gn_args += use_system_jsoncpp=true
#qtConfig(webengine-system-libsrtp: gn_args += use_system_libsrtp=true
diff --git a/qtwebengine-opensource-src-5.12.4-fix-extractcflag.patch b/qtwebengine-opensource-src-5.12.4-fix-extractcflag.patch
index fbbf6fc..fcbc6b5 100644
--- a/qtwebengine-opensource-src-5.12.4-fix-extractcflag.patch
+++ b/qtwebengine-opensource-src-5.12.4-fix-extractcflag.patch
@@ -1,7 +1,7 @@
-diff --git a/src/core/config/functions.pri b/src/core/config/functions.pri
+diff --git a/src/buildtools/config/functions.pri b/src/buildtools/config/functions.pri
index 8c11faa16..191d3d623 100644
---- a/src/core/config/functions.pri
-+++ b/src/core/config/functions.pri
+--- a/src/buildtools/config/functions.pri
++++ b/src/buildrools/config/functions.pri
@@ -1,5 +1,5 @@
defineReplace(qtwebengine_extractCFlag) {
- CFLAGS = $$QMAKE_CC $$QMAKE_CFLAGS
diff --git a/qtwebengine-opensource-src-5.9.0-no-neon.patch b/qtwebengine-opensource-src-5.9.0-no-neon.patch
index dd24ee2..308c5bc 100644
--- a/qtwebengine-opensource-src-5.9.0-no-neon.patch
+++ b/qtwebengine-opensource-src-5.9.0-no-neon.patch
@@ -1,7 +1,7 @@
-diff --git a/src/core/config/linux.pri b/src/core/config/linux.pri
+diff --git a/src/buildtools/config/linux.pri b/src/buildtools/config/linux.pri
index f45c418fe..f6c7b714e 100644
---- a/src/core/config/linux.pri
-+++ b/src/core/config/linux.pri
+--- a/src/buildtools/config/linux.pri
++++ b/src/buildtools/config/linux.pri
@@ -87,7 +87,9 @@ contains(QT_ARCH, "arm") {
gn_args += arm_use_neon=false
# If the toolchain does not explicitly specify to use NEON instructions
diff --git a/sources b/sources
index 62bfd1e..898c5fc 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
-SHA512 (qtwebengine-everywhere-src-5.13.2.tar.xz) = 10ae5cca36230069ef117cae15b84e29124c43e4864dbfa7a1f99879764b871355281edcb1942e86ec3a4cac12bbfd2749577745c8c7e736eb6a9909876554d0
SHA512 (pulseaudio-12.2-headers.tar.gz) = a5a9bcbb16030b3bc83cc0cc8f5e7f90e0723d3e83258a5c77eacb32eaa267118a73fa7814fbcc99a24e4907916a2b371ebb6dedc4f45541c3acf6c834fd35be
+SHA512 (qtwebengine-everywhere-src-5.14.1.tar.xz) = fafa2fbc789941e837e35945857a6da00e73bd2abe512290674b9957719b998d8b8b95a35c709a171c9d0d111e6f418cec630dfcdbe47ecbae25a3b94e4c99f9
4 years, 7 months
[plex-media-player] Update to 2.53.0
by Leigh Scott
commit f0ae2fd331c3e60b3f85247e341434856b048528
Author: Leigh Scott <leigh123linux(a)gmail.com>
Date: Sun Mar 29 23:37:49 2020 +0100
Update to 2.53.0
...3-17d1db2ca0ff70.cmake => buildid-176-21c9724ca0ff70.cmake | 2 +-
plex-media-player.spec | 11 +++++++----
sources | 6 +++---
web-client-desktop-4.26.1-ca0ff70.tar.xz.sha1 | 2 +-
web-client-tv-4.27.1-17d1db2.tar.xz.sha1 | 1 -
web-client-tv-4.29.1-21c9724.tar.xz.sha1 | 1 +
6 files changed, 13 insertions(+), 10 deletions(-)
---
diff --git a/buildid-173-17d1db2ca0ff70.cmake b/buildid-176-21c9724ca0ff70.cmake
similarity index 69%
rename from buildid-173-17d1db2ca0ff70.cmake
rename to buildid-176-21c9724ca0ff70.cmake
index 6a24fb1..1fdd112 100644
--- a/buildid-173-17d1db2ca0ff70.cmake
+++ b/buildid-176-21c9724ca0ff70.cmake
@@ -1,3 +1,3 @@
set(DESKTOP_VERSION 4.26.1-ca0ff70)
-set(TV_VERSION 4.27.1-17d1db2)
set(TV-OLD_VERSION 3.13.3-5401c32)
+set(TV_VERSION 4.29.1-21c9724)
diff --git a/plex-media-player.spec b/plex-media-player.spec
index 6a4140c..1704873 100644
--- a/plex-media-player.spec
+++ b/plex-media-player.spec
@@ -1,11 +1,11 @@
-%global plex_hash 2.52.2.1056-29c49026
-%global clients_hash 173-17d1db2ca0ff70
+%global plex_hash 2.53.0.1063-4c40422c
+%global clients_hash 176-21c9724ca0ff70
%global web_client_desktop 4.26.1-ca0ff70
-%global web_client_tv 4.27.1-17d1db2
+%global web_client_tv 4.29.1-21c9724
%global arti_url https://artifacts.plex.tv/web-client-pmp
Name: plex-media-player
-Version: 2.52.2
+Version: 2.53.0
Release: 1%{?dist}
Summary: Plex Media Player
@@ -207,6 +207,9 @@ exit 0
%{_unitdir}/%{name}.target
%changelog
+* Sun Mar 29 2020 Leigh Scott <leigh123linux(a)gmail.com> - 2.53.0-1
+- Update to 2.53.0
+
* Mon Mar 09 2020 Leigh Scott <leigh123linux(a)gmail.com> - 2.52.2-1
- Update to 2.52.2
diff --git a/sources b/sources
index b80c333..9f32b68 100644
--- a/sources
+++ b/sources
@@ -1,3 +1,3 @@
-SHA512 (plex-media-player-2.52.2.1056-29c49026.tar.gz) = da5de57dbe21c01a7cef5d64f507075b1ca5d3d97fe1dcaaf18f6fcda4b63a8886ff4456101a2e032b00640b5b1a0ec82224a27f50680aa34003e89ff412f547
-SHA512 (web-client-desktop-4.26.1-ca0ff70.tar.xz) = 954c1a30c071b9f30f15e0a9180705d49f0f3d876c49947ea80fab1f01402fe639477c733836d3de8a190c7130fe285105023047f5527b1af486e0063ca2e762
-SHA512 (web-client-tv-4.27.1-17d1db2.tar.xz) = 074663aa6efa1065a020e816760218338775def155578e680f69870f361210ab9c7af334fc8bca68f09b9945e225f7ccfbc64e003175310c1dcc42468b9b9731
+SHA512 (plex-media-player-2.53.0.1063-4c40422c.tar.gz) = a7bf1b78d1192e82c5d3b392904d989cb59b0136c76505c9a3973599d973db9eda7f56c3f48d81437669e7e12a05702c04dd0c67a8a136c72f78f24e0b05a1e0
+SHA512 (web-client-desktop-4.26.1-ca0ff70.tar.xz) = 346b8d276bbd27a550884e231ad7debd2da6a3f8a328d7e0df6dc96d4a658e89c2b6fea86dea721b9432aa9b36d09304de3f03a7cd00e296b730401cf913b8c5
+SHA512 (web-client-tv-4.29.1-21c9724.tar.xz) = ad5d153edaa1b2d1e9df7bec54c325b569925766caf4e8a4c0be546fef61bfe20f96f92d8238287e28e920e3848f98ace1011f5994d3fa7d12a7f78aa6c317d8
diff --git a/web-client-desktop-4.26.1-ca0ff70.tar.xz.sha1 b/web-client-desktop-4.26.1-ca0ff70.tar.xz.sha1
index 8668375..c8bb2a7 100644
--- a/web-client-desktop-4.26.1-ca0ff70.tar.xz.sha1
+++ b/web-client-desktop-4.26.1-ca0ff70.tar.xz.sha1
@@ -1 +1 @@
-da744383f2283a92438e7a48833b7e4c3041d498
\ No newline at end of file
+a3a1151b76d747c058d68064d5f162b4e5313bcd
\ No newline at end of file
diff --git a/web-client-tv-4.29.1-21c9724.tar.xz.sha1 b/web-client-tv-4.29.1-21c9724.tar.xz.sha1
new file mode 100644
index 0000000..7b34333
--- /dev/null
+++ b/web-client-tv-4.29.1-21c9724.tar.xz.sha1
@@ -0,0 +1 @@
+72e965bff09135db4def4bcfdd581f56d388f27c
\ No newline at end of file
4 years, 7 months
[zoneminder/el7: 2/2] Merge branch 'master' into el7
by Andrew Bauer
commit 33732e5be7e9c73be1d3e05c9567be7e811d7dad
Merge: ab930f7 b3f9ff1
Author: Andrew Bauer <zonexpertconsulting(a)outlook.com>
Date: Sat Mar 28 14:27:41 2020 -0500
Merge branch 'master' into el7
.gitignore | 1 +
sources | 3 +--
zoneminder.spec | 5 ++++-
3 files changed, 6 insertions(+), 3 deletions(-)
---
4 years, 7 months