From 43ac1ce1df152753d9c92360942d99add81bd4ca Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Sat, 17 Sep 2022 08:14:02 -0700 Subject: apt: Fix type mismatches and ptest builds These issues are found with clang15 Signed-off-by: Khem Raj Signed-off-by: Richard Purdie --- ...st-time_t-and-suseconds_t-from-std-chrono.patch | 64 ++++++++++++++++++++++ ...teractive-helper-Undefine-_FORTIFY_SOURCE.patch | 27 +++++++++ meta/recipes-devtools/apt/apt_2.4.5.bb | 2 + 3 files changed, 93 insertions(+) create mode 100644 meta/recipes-devtools/apt/apt/0001-typecast-time_t-and-suseconds_t-from-std-chrono.patch create mode 100644 meta/recipes-devtools/apt/apt/0002-interactive-helper-Undefine-_FORTIFY_SOURCE.patch diff --git a/meta/recipes-devtools/apt/apt/0001-typecast-time_t-and-suseconds_t-from-std-chrono.patch b/meta/recipes-devtools/apt/apt/0001-typecast-time_t-and-suseconds_t-from-std-chrono.patch new file mode 100644 index 0000000000..fc3509d336 --- /dev/null +++ b/meta/recipes-devtools/apt/apt/0001-typecast-time_t-and-suseconds_t-from-std-chrono.patch @@ -0,0 +1,64 @@ +From b7a1a4d3259557f2587f7d5d47502691d94c21c2 Mon Sep 17 00:00:00 2001 +From: Khem Raj +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::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 +--- + 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(Time); + auto const Time_usec = std::chrono::duration_cast(Time - Time_sec); +- return {Time_sec.count(), Time_usec.count()}; ++ return timeval{static_cast(Time_sec.count()), static_cast(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(Now); + auto const Now_usec = std::chrono::duration_cast(Now - Now_sec); +- struct timeval NowTime = { Now_sec.count(), Now_usec.count() }; ++ struct timeval NowTime = { static_cast(Now_sec.count()), static_cast(Now_usec.count()) }; + + std::chrono::duration 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(Time); + auto const Time_usec = std::chrono::duration_cast(Time - Time_sec); +- return { Time_sec.count(), Time_usec.count() }; ++ return { static_cast(Time_sec.count()), static_cast(Time_usec.count()) }; + } + /*}}}*/ + static auto GetTimeDeltaSince(struct timeval StartTime) /*{{{*/ +-- +2.37.3 + diff --git a/meta/recipes-devtools/apt/apt/0002-interactive-helper-Undefine-_FORTIFY_SOURCE.patch b/meta/recipes-devtools/apt/apt/0002-interactive-helper-Undefine-_FORTIFY_SOURCE.patch new file mode 100644 index 0000000000..18c4641b22 --- /dev/null +++ b/meta/recipes-devtools/apt/apt/0002-interactive-helper-Undefine-_FORTIFY_SOURCE.patch @@ -0,0 +1,27 @@ +From 891076c2cf4298b5d587545497f4831f0d21caa1 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Fri, 16 Sep 2022 20:04:43 -0700 +Subject: [PATCH 2/2] interactive-helper: Undefine _FORTIFY_SOURCE + +This ensures that it compiles when clang compiler is passing +-DFORTIFY_SOURCES=2 + +Upstream-Status: Submitted [https://salsa.debian.org/apt-team/apt/-/merge_requests/259] +Signed-off-by: Khem Raj +--- + test/interactive-helper/libnoprofile.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/test/interactive-helper/libnoprofile.c b/test/interactive-helper/libnoprofile.c +index f11b898..b26ec2a 100644 +--- a/test/interactive-helper/libnoprofile.c ++++ b/test/interactive-helper/libnoprofile.c +@@ -1,4 +1,5 @@ + #define _GNU_SOURCE ++#undef _FORTIFY_SOURCE + #include + #include + #include +-- +2.37.3 + diff --git a/meta/recipes-devtools/apt/apt_2.4.5.bb b/meta/recipes-devtools/apt/apt_2.4.5.bb index 564bdeec41..4b9f804039 100644 --- a/meta/recipes-devtools/apt/apt_2.4.5.bb +++ b/meta/recipes-devtools/apt/apt_2.4.5.bb @@ -14,6 +14,8 @@ SRC_URI = "${DEBIAN_MIRROR}/main/a/apt/${BPN}_${PV}.tar.xz \ file://0001-Hide-fstatat64-and-prlimit64-defines-on-musl.patch \ file://0001-aptwebserver.cc-Include-array.patch \ file://0001-Remove-using-std-binary_function.patch \ + file://0001-typecast-time_t-and-suseconds_t-from-std-chrono.patch \ + file://0002-interactive-helper-Undefine-_FORTIFY_SOURCE.patch \ " SRC_URI:append:class-native = " \ -- cgit 1.2.3-korg