0
0
Fork 0
mirror of https://github.com/matrix-construct/construct synced 2024-05-20 03:43:47 +02:00

Compare commits

...

9 commits

11 changed files with 121 additions and 83 deletions

View file

@ -9,7 +9,7 @@ environment:
matrix: matrix:
- APPVEYOR_BUILD_WORKER_IMAGE: Ubuntu1804 - APPVEYOR_BUILD_WORKER_IMAGE: Ubuntu1804
DOCKER_IMAGE: jevolk/construct:ubuntu-22.04-base-build-gcc-9-amd64 DOCKER_IMAGE: jevolk/construct:ubuntu-22.04-base-build-gcc-10-amd64
- APPVEYOR_BUILD_WORKER_IMAGE: Ubuntu1804 - APPVEYOR_BUILD_WORKER_IMAGE: Ubuntu1804
DOCKER_IMAGE: jevolk/construct:ubuntu-22.04-base-build-gcc-12-amd64 DOCKER_IMAGE: jevolk/construct:ubuntu-22.04-base-build-gcc-12-amd64

View file

@ -49,6 +49,7 @@ ARGS="$ARGS --build-arg extra_packages_dev1=g++"
ARGS="$ARGS --build-arg cc=gcc --build-arg cxx=g++" ARGS="$ARGS --build-arg cc=gcc --build-arg cxx=g++"
docker build $ARGS -t $ACCT/$REPO:alpine-3.16-base-built-gcc-amd64 $BASEDIR/alpine/3.16/built docker build $ARGS -t $ACCT/$REPO:alpine-3.16-base-built-gcc-amd64 $BASEDIR/alpine/3.16/built
docker build $ARGS -t $ACCT/$REPO:alpine-3.16-base-test-gcc-amd64 $BASEDIR/alpine/3.16/test docker build $ARGS -t $ACCT/$REPO:alpine-3.16-base-test-gcc-amd64 $BASEDIR/alpine/3.16/test
docker push $ACCT/$REPO:alpine-3.16-base-built-gcc-amd64
ARGS="$ARGS_" ARGS="$ARGS_"
ARGS="$ARGS --platform linux/amd64" ARGS="$ARGS --platform linux/amd64"
@ -59,6 +60,7 @@ ARGS="$ARGS --build-arg extra_packages_dev2=llvm-dev"
ARGS="$ARGS --build-arg cc=clang --build-arg cxx=clang++" ARGS="$ARGS --build-arg cc=clang --build-arg cxx=clang++"
docker build $ARGS -t $ACCT/$REPO:alpine-3.16-base-built-clang-amd64 $BASEDIR/alpine/3.16/built docker build $ARGS -t $ACCT/$REPO:alpine-3.16-base-built-clang-amd64 $BASEDIR/alpine/3.16/built
docker build $ARGS -t $ACCT/$REPO:alpine-3.16-base-test-clang-amd64 $BASEDIR/alpine/3.16/test docker build $ARGS -t $ACCT/$REPO:alpine-3.16-base-test-clang-amd64 $BASEDIR/alpine/3.16/test
docker push $ACCT/$REPO:alpine-3.16-base-built-clang-amd64
ARGS="$ARGS_" ARGS="$ARGS_"
ARGS="$ARGS --platform linux/amd64" ARGS="$ARGS --platform linux/amd64"
@ -68,6 +70,7 @@ ARGS="$ARGS --build-arg extra_packages_dev1=g++"
ARGS="$ARGS --build-arg cc=gcc --build-arg cxx=g++" ARGS="$ARGS --build-arg cc=gcc --build-arg cxx=g++"
docker build $ARGS -t $ACCT/$REPO:alpine-3.16-full-built-gcc-amd64 $BASEDIR/alpine/3.16/built docker build $ARGS -t $ACCT/$REPO:alpine-3.16-full-built-gcc-amd64 $BASEDIR/alpine/3.16/built
docker build $ARGS -t $ACCT/$REPO:alpine-3.16-full-test-gcc-amd64 $BASEDIR/alpine/3.16/test docker build $ARGS -t $ACCT/$REPO:alpine-3.16-full-test-gcc-amd64 $BASEDIR/alpine/3.16/test
docker push $ACCT/$REPO:alpine-3.16-full-built-gcc-amd64
ARGS="$ARGS_" ARGS="$ARGS_"
ARGS="$ARGS --platform linux/amd64" ARGS="$ARGS --platform linux/amd64"
@ -78,15 +81,6 @@ ARGS="$ARGS --build-arg extra_packages_dev2=llvm-dev"
ARGS="$ARGS --build-arg cc=clang --build-arg cxx=clang++" ARGS="$ARGS --build-arg cc=clang --build-arg cxx=clang++"
docker build $ARGS -t $ACCT/$REPO:alpine-3.16-full-built-clang-amd64 $BASEDIR/alpine/3.16/built docker build $ARGS -t $ACCT/$REPO:alpine-3.16-full-built-clang-amd64 $BASEDIR/alpine/3.16/built
docker build $ARGS -t $ACCT/$REPO:alpine-3.16-full-test-clang-amd64 $BASEDIR/alpine/3.16/test docker build $ARGS -t $ACCT/$REPO:alpine-3.16-full-test-clang-amd64 $BASEDIR/alpine/3.16/test
#
# Pushed images
#
docker push $ACCT/$REPO:alpine-3.16-base-built-gcc-amd64
docker push $ACCT/$REPO:alpine-3.16-base-built-clang-amd64
docker push $ACCT/$REPO:alpine-3.16-full-built-gcc-amd64
docker push $ACCT/$REPO:alpine-3.16-full-built-clang-amd64 docker push $ACCT/$REPO:alpine-3.16-full-built-clang-amd64
############################################################################### ###############################################################################
@ -117,12 +111,14 @@ docker build $ARGS -t $ACCT/$REPO:ubuntu-22.04-full-amd64 $BASEDIR/ubuntu/22.04/
ARGS="$ARGS_" ARGS="$ARGS_"
ARGS="$ARGS --platform linux/amd64" ARGS="$ARGS --platform linux/amd64"
ARGS="$ARGS --build-arg feature=base" ARGS="$ARGS --build-arg feature=base"
ARGS="$ARGS --build-arg extra_packages_dev=gcc-9" ARGS="$ARGS --build-arg extra_packages_dev=gcc-10"
ARGS="$ARGS --build-arg extra_packages_dev1=g++-9" ARGS="$ARGS --build-arg extra_packages_dev1=g++-10"
ARGS="$ARGS --build-arg cc=gcc-9 --build-arg cxx=g++-9" ARGS="$ARGS --build-arg cc=gcc-10 --build-arg cxx=g++-10"
docker build $ARGS -t $ACCT/$REPO:ubuntu-22.04-base-build-gcc-9-amd64 $BASEDIR/ubuntu/22.04/build docker build $ARGS -t $ACCT/$REPO:ubuntu-22.04-base-build-gcc-10-amd64 $BASEDIR/ubuntu/22.04/build
docker build $ARGS -t $ACCT/$REPO:ubuntu-22.04-base-built-gcc-9-amd64 $BASEDIR/ubuntu/22.04/built docker build $ARGS -t $ACCT/$REPO:ubuntu-22.04-base-built-gcc-10-amd64 $BASEDIR/ubuntu/22.04/built
docker build $ARGS -t $ACCT/$REPO:ubuntu-22.04-base-test-gcc-9-amd64 $BASEDIR/ubuntu/22.04/test docker build $ARGS -t $ACCT/$REPO:ubuntu-22.04-base-test-gcc-10-amd64 $BASEDIR/ubuntu/22.04/test
docker push $ACCT/$REPO:ubuntu-22.04-base-build-gcc-10-amd64
docker push $ACCT/$REPO:ubuntu-22.04-base-built-gcc-10-amd64
ARGS="$ARGS_" ARGS="$ARGS_"
ARGS="$ARGS --platform linux/amd64" ARGS="$ARGS --platform linux/amd64"
@ -133,6 +129,8 @@ ARGS="$ARGS --build-arg cc=gcc-12 --build-arg cxx=g++-12"
docker build $ARGS -t $ACCT/$REPO:ubuntu-22.04-base-build-gcc-12-amd64 $BASEDIR/ubuntu/22.04/build docker build $ARGS -t $ACCT/$REPO:ubuntu-22.04-base-build-gcc-12-amd64 $BASEDIR/ubuntu/22.04/build
docker build $ARGS -t $ACCT/$REPO:ubuntu-22.04-base-built-gcc-12-amd64 $BASEDIR/ubuntu/22.04/built docker build $ARGS -t $ACCT/$REPO:ubuntu-22.04-base-built-gcc-12-amd64 $BASEDIR/ubuntu/22.04/built
docker build $ARGS -t $ACCT/$REPO:ubuntu-22.04-base-test-gcc-12-amd64 $BASEDIR/ubuntu/22.04/test docker build $ARGS -t $ACCT/$REPO:ubuntu-22.04-base-test-gcc-12-amd64 $BASEDIR/ubuntu/22.04/test
docker push $ACCT/$REPO:ubuntu-22.04-base-build-gcc-12-amd64
docker push $ACCT/$REPO:ubuntu-22.04-base-built-gcc-12-amd64
ARGS="$ARGS_" ARGS="$ARGS_"
ARGS="$ARGS --platform linux/amd64" ARGS="$ARGS --platform linux/amd64"
@ -144,38 +142,5 @@ ARGS="$ARGS --build-arg cc=clang-15 --build-arg cxx=clang++-15"
docker build $ARGS -t $ACCT/$REPO:ubuntu-22.04-full-build-clang-15-amd64 $BASEDIR/ubuntu/22.04/build docker build $ARGS -t $ACCT/$REPO:ubuntu-22.04-full-build-clang-15-amd64 $BASEDIR/ubuntu/22.04/build
docker build $ARGS -t $ACCT/$REPO:ubuntu-22.04-full-built-clang-15-amd64 $BASEDIR/ubuntu/22.04/built docker build $ARGS -t $ACCT/$REPO:ubuntu-22.04-full-built-clang-15-amd64 $BASEDIR/ubuntu/22.04/built
docker build $ARGS -t $ACCT/$REPO:ubuntu-22.04-full-test-clang-15-amd64 $BASEDIR/ubuntu/22.04/test docker build $ARGS -t $ACCT/$REPO:ubuntu-22.04-full-test-clang-15-amd64 $BASEDIR/ubuntu/22.04/test
#
# Pushed images
#
docker push $ACCT/$REPO:ubuntu-22.04-base-build-gcc-9-amd64
docker push $ACCT/$REPO:ubuntu-22.04-base-built-gcc-9-amd64
docker push $ACCT/$REPO:ubuntu-22.04-base-build-gcc-12-amd64
docker push $ACCT/$REPO:ubuntu-22.04-base-built-gcc-12-amd64
docker push $ACCT/$REPO:ubuntu-22.04-full-build-clang-15-amd64 docker push $ACCT/$REPO:ubuntu-22.04-full-build-clang-15-amd64
docker push $ACCT/$REPO:ubuntu-22.04-full-built-clang-15-amd64 docker push $ACCT/$REPO:ubuntu-22.04-full-built-clang-15-amd64
###############################################################################
#
# Ubuntu 20.04
#
#docker build -t $ACCT/$REPO:ubuntu-20.04 $BASEDIR/ubuntu/20.04/base
#docker build -t $ACCT/$REPO:ubuntu-20.04-gcc-8 $BASEDIR/ubuntu/20.04/gcc-8
#docker build -t $ACCT/$REPO:ubuntu-20.04-gcc-9 $BASEDIR/ubuntu/20.04/gcc-9
#docker build -t $ACCT/$REPO:ubuntu-20.04-gcc-10 $BASEDIR/ubuntu/20.04/gcc-10
#docker build -t $ACCT/$REPO:ubuntu-20.04-clang-9 $BASEDIR/ubuntu/20.04/clang-9
#docker build -t $ACCT/$REPO:ubuntu-20.04-clang-10 $BASEDIR/ubuntu/20.04/clang-10
#docker build -t $ACCT/$REPO:ubuntu-20.04-clang-11 $BASEDIR/ubuntu/20.04/clang-11
#docker build -t $ACCT/$REPO:ubuntu-20.04-clang-12 $BASEDIR/ubuntu/20.04/clang-12
#docker push $ACCT/$REPO:ubuntu-20.04-gcc-8
#docker push $ACCT/$REPO:ubuntu-20.04-gcc-9
#docker push $ACCT/$REPO:ubuntu-20.04-gcc-10
#docker push $ACCT/$REPO:ubuntu-20.04-clang-9
#docker push $ACCT/$REPO:ubuntu-20.04-clang-10
#docker push $ACCT/$REPO:ubuntu-20.04-clang-11
#docker push $ACCT/$REPO:ubuntu-20.04-clang-12

View file

@ -60,17 +60,18 @@ template<class T>
struct ircd::json::keys<T>::include struct ircd::json::keys<T>::include
:selection :selection
{ {
constexpr include(const vector_view<const string_view> list) include(const vector_view<const string_view> &keys)
:selection{0} :selection{0}
{ {
for(const auto key : list) for(const auto &key : keys)
selection::set(key, true); selection::set(key, true);
} }
constexpr include(const std::initializer_list<const string_view> list) template<class... list>
consteval include(list&&... keys)
:selection{0} :selection{0}
{ {
for(const auto key : list) for(auto&& key : {keys...})
selection::set(key, true); selection::set(key, true);
} }
@ -86,17 +87,19 @@ template<class T>
struct ircd::json::keys<T>::exclude struct ircd::json::keys<T>::exclude
:selection :selection
{ {
constexpr exclude(const vector_view<const string_view> list) exclude(const vector_view<const string_view> &keys)
:selection{} :selection{}
{ {
for(const auto key : list) for(const auto &key : keys)
selection::set(key, false); selection::set(key, false);
} }
constexpr exclude(const std::initializer_list<const string_view> list)
template<class... list>
consteval exclude(list&&... keys)
:selection{} :selection{}
{ {
for(const auto key : list) for(auto&& key : {keys...})
selection::set(key, false); selection::set(key, false);
} }

View file

@ -33,7 +33,7 @@ namespace ircd::m::media::file
room::id::buf room_id(const mxc &); room::id::buf room_id(const mxc &);
size_t read(const room &, const closure &); size_t read(const room &, const closure &);
size_t write(const room &, const user::id &, const const_buffer &content, const string_view &content_type); size_t write(const room &, const user::id &, const const_buffer &content, const string_view &content_type, const string_view &name = {});
room::id::buf room::id::buf
download(const mxc &, download(const mxc &,

View file

@ -16,13 +16,13 @@ namespace ircd
struct string_view; struct string_view;
constexpr size_t _constexpr_strlen(const char *) noexcept; constexpr size_t _constexpr_strlen(const char *) noexcept;
template<size_t N> constexpr size_t _constexpr_strlen(const char (&)[N]) noexcept; template<size_t N> consteval size_t _constexpr_strlen(const char (&)[N]) noexcept;
constexpr bool _constexpr_equal(const char *a, const char *b) noexcept; constexpr bool _constexpr_equal(const char *a, const char *b) noexcept;
constexpr bool _constexpr_equal(const char *a, const char *b, size_t) noexcept; constexpr bool _constexpr_equal(const char *a, const char *b, size_t) noexcept;
constexpr bool _constexpr_equal(const char *a, const size_t, const char *b, const size_t) noexcept; constexpr bool _constexpr_equal(const char *a, const size_t, const char *b, const size_t) noexcept;
constexpr bool _constexpr_equal(const string_view &, const string_view &) noexcept; constexpr bool _constexpr_equal(const string_view &, const string_view &) noexcept;
template<size_t N0, size_t N1> constexpr bool _constexpr_equal(const char (&)[N0], const char (&)[N1]) noexcept; template<size_t N0, size_t N1> consteval bool _constexpr_equal(const char (&)[N0], const char (&)[N1]) noexcept;
constexpr const char *data(const string_view &) noexcept; constexpr const char *data(const string_view &) noexcept;
constexpr size_t size(const string_view &) noexcept; constexpr size_t size(const string_view &) noexcept;
@ -327,7 +327,7 @@ noexcept
template<size_t N0, template<size_t N0,
size_t N1> size_t N1>
constexpr bool consteval bool
ircd::_constexpr_equal(const char (&a)[N0], ircd::_constexpr_equal(const char (&a)[N0],
const char (&b)[N1]) const char (&b)[N1])
noexcept noexcept
@ -347,7 +347,10 @@ ircd::_constexpr_equal(const string_view &a,
const string_view &b) const string_view &b)
noexcept noexcept
{ {
return _constexpr_equal(data(a), size(a), data(b), size(b)); if constexpr(__cplusplus >= 202002L)
return a == b;
else
return _constexpr_equal(data(a), size(a), data(b), size(b));
} }
constexpr bool constexpr bool
@ -378,7 +381,7 @@ noexcept
} }
template<size_t N> template<size_t N>
constexpr size_t consteval size_t
ircd::_constexpr_strlen(const char (&a)[N]) ircd::_constexpr_strlen(const char (&a)[N])
noexcept noexcept
{ {

View file

@ -152,7 +152,9 @@ const
{ {
constexpr auto max(words - 1); constexpr auto max(words - 1);
const auto off(pos / 8); const auto off(pos / 8);
assert(off <= max); if(!__builtin_is_constant_evaluated())
assert(off <= max);
return std::min(off, max); return std::min(off, max);
} }

View file

@ -221,7 +221,8 @@ size_t
ircd::m::media::file::write(const m::room &room, ircd::m::media::file::write(const m::room &room,
const m::user::id &user_id, const m::user::id &user_id,
const const_buffer &content, const const_buffer &content,
const string_view &content_type) const string_view &content_type,
const string_view &name)
try try
{ {
static const size_t BLK_SZ static const size_t BLK_SZ
@ -256,6 +257,12 @@ try
{ "mime_type", content_type } { "mime_type", content_type }
}); });
if(name)
send(room, user_id, "ircd.file.stat.name", "", json::members
{
{ "name", name }
});
size_t off{0}, wrote{0}; size_t off{0}, wrote{0};
while(off < size(content)) while(off < size(content))
{ {

View file

@ -1156,7 +1156,7 @@ ircd::m::push::rules::defaults{R"(
], ],
"actions": "actions":
[ [
"notify", "dont_notify",
{ {
"set_tweak": "highlight", "set_tweak": "highlight",
"value": false "value": false
@ -1177,7 +1177,7 @@ ircd::m::push::rules::defaults{R"(
], ],
"actions": "actions":
[ [
"notify", "dont_notify",
{ {
"set_tweak": "highlight", "set_tweak": "highlight",
"value": false "value": false

View file

@ -183,12 +183,6 @@ ircd::m::sync::rooms_polylog(data &data)
if(data.prefetch) if(data.prefetch)
data.user_rooms.prefetch(); data.user_rooms.prefetch();
if(rooms_polylog_ban)
ret |= _rooms_polylog(data, "ban", phase);
if(data.phased && ret)
return ret;
if(rooms_polylog_join) if(rooms_polylog_join)
ret |= _rooms_polylog(data, "join", phase); ret |= _rooms_polylog(data, "join", phase);
@ -207,6 +201,12 @@ ircd::m::sync::rooms_polylog(data &data)
if(data.phased && ret) if(data.phased && ret)
return ret; return ret;
if(rooms_polylog_ban)
ret |= _rooms_polylog(data, "ban", phase);
if(data.phased && ret)
return ret;
return ret; return ret;
} }

View file

@ -12358,7 +12358,7 @@ console_cmd__room__auth(opt &out, const string_view &line)
{ {
const params param{line, " ", const params param{line, " ",
{ {
"event_id|room_id", "event_id" "event_id|room_id", "event_id", "type"
}}; }};
const string_view &p0 const string_view &p0
@ -12395,18 +12395,27 @@ console_cmd__room__auth(opt &out, const string_view &line)
p0 p0
}; };
const auto type
{
param["type"]
};
const m::room::auth::chain ac const m::room::auth::chain ac
{ {
m::index(event_id) m::index(event_id)
}; };
ac.for_each([&out](const auto &idx) ac.for_each([&out, &type]
(const auto &idx)
{ {
const m::event::fetch event const m::event::fetch event
{ {
std::nothrow, idx std::nothrow, idx
}; };
if(type && json::get<"type"_>(event) != type)
return true;
out << idx; out << idx;
if(event.valid) if(event.valid)
out << " " << pretty_oneline(event); out << " " << pretty_oneline(event);
@ -14886,7 +14895,7 @@ console_cmd__feds__auth(opt &out, const string_view &line)
{ {
const params param{line, " ", const params param{line, " ",
{ {
"room_id", "event_id" "room_id", "event_id", "type"
}}; }};
const auto &room_id const auto &room_id
@ -14899,30 +14908,73 @@ console_cmd__feds__auth(opt &out, const string_view &line)
param.at("event_id") param.at("event_id")
}; };
const auto type
{
param["type"]
};
size_t count[2] {0};
std::set<string_view> origins;
std::map<std::string, std::set<std::string>, std::less<>> grid;
m::feds::opts opts; m::feds::opts opts;
opts.op = m::feds::op::auth; opts.op = m::feds::op::auth;
opts.room_id = room_id; opts.room_id = room_id;
opts.event_id = event_id; opts.event_id = event_id;
m::feds::execute(opts, [&out](const auto &result) m::feds::execute(opts, [&]
(const auto &result)
{ {
count[bool(result.eptr)]++;
if(result.eptr) if(result.eptr)
return true; return true;
const json::array auth_chain const json::array auth_chain
{ {
result.object.at("auth_chain") result.object["auth_chain"]
}; };
out << "+ " << std::setw(40) << std::left << result.origin;
for(const json::object auth_event : auth_chain) for(const json::object auth_event : auth_chain)
{ {
out << " " << unquote(auth_event.at("event_id")); if(type && json::string(auth_event["type"]) != type)
}; continue;
const json::string event_id
{
auth_event.at("event_id")
};
auto it(grid.lower_bound(event_id));
if(it == end(grid) || it->first != event_id)
it = grid.emplace_hint(it, event_id, std::set<std::string>{});
auto &set(it->second);
const auto iit(set.emplace(result.origin));
origins.emplace(*iit.first);
}
out << std::endl;
return true; return true;
}); });
size_t i(0);
for(const auto &p : grid)
out << i++ << " " << p.first << std::endl;
for(size_t j(0); j < i; ++j)
out << "| " << std::left << std::setw(2) << j;
out << "|" << std::endl;
for(const auto &origin : origins)
{
for(const auto &p : grid)
out << "| " << (p.second.count(origin)? '+' : ' ') << " ";
out << "| " << origin << std::endl;
}
out
<< '\n'
<< count[0] << ':' << count[1]
<< std::endl;
return true; return true;
} }
@ -16553,7 +16605,13 @@ console_cmd__fed__auth(opt &out, const string_view &line)
std::sort(begin(events), end(events)); std::sort(begin(events), end(events));
for(const auto &event : events) for(const auto &event : events)
{
if(startswith(param["op"], "m.room."))
if(json::get<"type"_>(event) != param["op"])
continue;
out << pretty_oneline(event) << std::endl; out << pretty_oneline(event) << std::endl;
}
return true; return true;
} }

View file

@ -75,7 +75,7 @@ post__upload(client &client,
const size_t written const size_t written
{ {
m::media::file::write(room, request.user_id, buf, content_type) m::media::file::write(room, request.user_id, buf, content_type, filename)
}; };
char uribuf[256]; char uribuf[256];