summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/apt/apt/0001-typecast-time_t-and-suseconds_t-from-std-chrono.patch
blob: fc3509d3368ace37960a2d401d9c9b1fa9df86df (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
From b7a1a4d3259557f2587f7d5d47502691d94c21c2 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Fri, 16 Sep 2022 20:00:30 -0700
Subject: [PATCH 1/2] typecast time_t and suseconds_t from std::chrono

This fixes build on some architectures like mips
progress.cc:125:31: error: non-constant-expression cannot be narrowed from type 'std::chrono::duration<long long>::rep' (aka 'long long') to '__time_t' (aka 'long') in initializer list [-Wc++11-narrowing]
   struct timeval NowTime = { Now_sec.count(), Now_usec.count() };

Upstream-Status: Submitted [https://salsa.debian.org/apt-team/apt/-/merge_requests/259]
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
 apt-pkg/acquire.cc           | 4 ++--
 apt-pkg/contrib/progress.cc  | 2 +-
 ftparchive/apt-ftparchive.cc | 2 +-
 3 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/apt-pkg/acquire.cc b/apt-pkg/acquire.cc
index 100ccde..dd0624a 100644
--- a/apt-pkg/acquire.cc
+++ b/apt-pkg/acquire.cc
@@ -53,11 +53,11 @@
 using namespace std;
 
 // helper to convert time_point to a timeval
-static struct timeval SteadyDurationToTimeVal(std::chrono::steady_clock::duration Time)
+constexpr struct timeval SteadyDurationToTimeVal(std::chrono::steady_clock::duration Time)
 {
    auto const Time_sec = std::chrono::duration_cast<std::chrono::seconds>(Time);
    auto const Time_usec = std::chrono::duration_cast<std::chrono::microseconds>(Time - Time_sec);
-   return {Time_sec.count(), Time_usec.count()};
+   return timeval{static_cast<time_t>(Time_sec.count()), static_cast<suseconds_t>(Time_usec.count())};
 }
 
 std::string pkgAcquire::URIEncode(std::string const &part)		/*{{{*/
diff --git a/apt-pkg/contrib/progress.cc b/apt-pkg/contrib/progress.cc
index 03f88d4..eb688b9 100644
--- a/apt-pkg/contrib/progress.cc
+++ b/apt-pkg/contrib/progress.cc
@@ -122,7 +122,7 @@ bool OpProgress::CheckChange(float Interval)
    auto const Now = std::chrono::steady_clock::now().time_since_epoch();
    auto const Now_sec = std::chrono::duration_cast<std::chrono::seconds>(Now);
    auto const Now_usec = std::chrono::duration_cast<std::chrono::microseconds>(Now - Now_sec);
-   struct timeval NowTime = { Now_sec.count(), Now_usec.count() };
+   struct timeval NowTime = { static_cast<time_t>(Now_sec.count()), static_cast<suseconds_t>(Now_usec.count()) };
 
    std::chrono::duration<decltype(Interval)> Delta =
       std::chrono::seconds(NowTime.tv_sec - LastTime.tv_sec) +
diff --git a/ftparchive/apt-ftparchive.cc b/ftparchive/apt-ftparchive.cc
index 56fdc22..0a253b1 100644
--- a/ftparchive/apt-ftparchive.cc
+++ b/ftparchive/apt-ftparchive.cc
@@ -58,7 +58,7 @@ static struct timeval GetTimevalFromSteadyClock()			/*{{{*/
    auto const Time = std::chrono::steady_clock::now().time_since_epoch();
    auto const Time_sec = std::chrono::duration_cast<std::chrono::seconds>(Time);
    auto const Time_usec = std::chrono::duration_cast<std::chrono::microseconds>(Time - Time_sec);
-   return { Time_sec.count(), Time_usec.count() };
+   return { static_cast<time_t>(Time_sec.count()), static_cast<suseconds_t>(Time_usec.count()) };
 }
 									/*}}}*/
 static auto GetTimeDeltaSince(struct timeval StartTime)			/*{{{*/
-- 
2.37.3