Compare commits
9 Commits
2147d00dd4
...
70b49b96d2
Author | SHA1 | Date |
---|---|---|
Jason Volk | 70b49b96d2 | |
Jason Volk | ac8889b74c | |
Jason Volk | e7089e8e7f | |
Jason Volk | 7e28a27549 | |
Jason Volk | fb9f2b0bcc | |
Jason Volk | 8ebd2089f2 | |
Jason Volk | 96119166fa | |
Jason Volk | 527af013f7 | |
Jason Volk | cefcc75943 |
|
@ -9,7 +9,7 @@ environment:
|
|||
|
||||
matrix:
|
||||
- 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
|
||||
DOCKER_IMAGE: jevolk/construct:ubuntu-22.04-base-build-gcc-12-amd64
|
||||
|
|
|
@ -49,6 +49,7 @@ ARGS="$ARGS --build-arg extra_packages_dev1=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-test-gcc-amd64 $BASEDIR/alpine/3.16/test
|
||||
docker push $ACCT/$REPO:alpine-3.16-base-built-gcc-amd64
|
||||
|
||||
ARGS="$ARGS_"
|
||||
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++"
|
||||
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 push $ACCT/$REPO:alpine-3.16-base-built-clang-amd64
|
||||
|
||||
ARGS="$ARGS_"
|
||||
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++"
|
||||
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 push $ACCT/$REPO:alpine-3.16-full-built-gcc-amd64
|
||||
|
||||
ARGS="$ARGS_"
|
||||
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++"
|
||||
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
|
||||
|
||||
#
|
||||
# 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
|
||||
|
||||
###############################################################################
|
||||
|
@ -117,12 +111,14 @@ docker build $ARGS -t $ACCT/$REPO:ubuntu-22.04-full-amd64 $BASEDIR/ubuntu/22.04/
|
|||
ARGS="$ARGS_"
|
||||
ARGS="$ARGS --platform linux/amd64"
|
||||
ARGS="$ARGS --build-arg feature=base"
|
||||
ARGS="$ARGS --build-arg extra_packages_dev=gcc-9"
|
||||
ARGS="$ARGS --build-arg extra_packages_dev1=g++-9"
|
||||
ARGS="$ARGS --build-arg cc=gcc-9 --build-arg cxx=g++-9"
|
||||
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-built-gcc-9-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
|
||||
ARGS="$ARGS --build-arg extra_packages_dev=gcc-10"
|
||||
ARGS="$ARGS --build-arg extra_packages_dev1=g++-10"
|
||||
ARGS="$ARGS --build-arg cc=gcc-10 --build-arg cxx=g++-10"
|
||||
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-10-amd64 $BASEDIR/ubuntu/22.04/built
|
||||
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 --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-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 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 --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-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
|
||||
|
||||
#
|
||||
# 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-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
|
||||
|
|
|
@ -60,17 +60,18 @@ template<class T>
|
|||
struct ircd::json::keys<T>::include
|
||||
:selection
|
||||
{
|
||||
constexpr include(const vector_view<const string_view> list)
|
||||
include(const vector_view<const string_view> &keys)
|
||||
:selection{0}
|
||||
{
|
||||
for(const auto key : list)
|
||||
for(const auto &key : keys)
|
||||
selection::set(key, true);
|
||||
}
|
||||
|
||||
constexpr include(const std::initializer_list<const string_view> list)
|
||||
template<class... list>
|
||||
consteval include(list&&... keys)
|
||||
:selection{0}
|
||||
{
|
||||
for(const auto key : list)
|
||||
for(auto&& key : {keys...})
|
||||
selection::set(key, true);
|
||||
}
|
||||
|
||||
|
@ -86,17 +87,19 @@ template<class T>
|
|||
struct ircd::json::keys<T>::exclude
|
||||
:selection
|
||||
{
|
||||
constexpr exclude(const vector_view<const string_view> list)
|
||||
exclude(const vector_view<const string_view> &keys)
|
||||
:selection{}
|
||||
{
|
||||
for(const auto key : list)
|
||||
for(const auto &key : keys)
|
||||
selection::set(key, false);
|
||||
}
|
||||
|
||||
constexpr exclude(const std::initializer_list<const string_view> list)
|
||||
|
||||
template<class... list>
|
||||
consteval exclude(list&&... keys)
|
||||
:selection{}
|
||||
{
|
||||
for(const auto key : list)
|
||||
for(auto&& key : {keys...})
|
||||
selection::set(key, false);
|
||||
}
|
||||
|
||||
|
|
|
@ -33,7 +33,7 @@ namespace ircd::m::media::file
|
|||
room::id::buf room_id(const mxc &);
|
||||
|
||||
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
|
||||
download(const mxc &,
|
||||
|
|
|
@ -16,13 +16,13 @@ namespace ircd
|
|||
struct string_view;
|
||||
|
||||
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, 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;
|
||||
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 size_t size(const string_view &) noexcept;
|
||||
|
@ -327,7 +327,7 @@ noexcept
|
|||
|
||||
template<size_t N0,
|
||||
size_t N1>
|
||||
constexpr bool
|
||||
consteval bool
|
||||
ircd::_constexpr_equal(const char (&a)[N0],
|
||||
const char (&b)[N1])
|
||||
noexcept
|
||||
|
@ -347,7 +347,10 @@ ircd::_constexpr_equal(const string_view &a,
|
|||
const string_view &b)
|
||||
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
|
||||
|
@ -378,7 +381,7 @@ noexcept
|
|||
}
|
||||
|
||||
template<size_t N>
|
||||
constexpr size_t
|
||||
consteval size_t
|
||||
ircd::_constexpr_strlen(const char (&a)[N])
|
||||
noexcept
|
||||
{
|
||||
|
|
|
@ -152,7 +152,9 @@ const
|
|||
{
|
||||
constexpr auto max(words - 1);
|
||||
const auto off(pos / 8);
|
||||
assert(off <= max);
|
||||
if(!__builtin_is_constant_evaluated())
|
||||
assert(off <= max);
|
||||
|
||||
return std::min(off, max);
|
||||
}
|
||||
|
||||
|
|
|
@ -221,7 +221,8 @@ size_t
|
|||
ircd::m::media::file::write(const m::room &room,
|
||||
const m::user::id &user_id,
|
||||
const const_buffer &content,
|
||||
const string_view &content_type)
|
||||
const string_view &content_type,
|
||||
const string_view &name)
|
||||
try
|
||||
{
|
||||
static const size_t BLK_SZ
|
||||
|
@ -256,6 +257,12 @@ try
|
|||
{ "mime_type", content_type }
|
||||
});
|
||||
|
||||
if(name)
|
||||
send(room, user_id, "ircd.file.stat.name", "", json::members
|
||||
{
|
||||
{ "name", name }
|
||||
});
|
||||
|
||||
size_t off{0}, wrote{0};
|
||||
while(off < size(content))
|
||||
{
|
||||
|
|
|
@ -1156,7 +1156,7 @@ ircd::m::push::rules::defaults{R"(
|
|||
],
|
||||
"actions":
|
||||
[
|
||||
"notify",
|
||||
"dont_notify",
|
||||
{
|
||||
"set_tweak": "highlight",
|
||||
"value": false
|
||||
|
@ -1177,7 +1177,7 @@ ircd::m::push::rules::defaults{R"(
|
|||
],
|
||||
"actions":
|
||||
[
|
||||
"notify",
|
||||
"dont_notify",
|
||||
{
|
||||
"set_tweak": "highlight",
|
||||
"value": false
|
||||
|
|
|
@ -183,12 +183,6 @@ ircd::m::sync::rooms_polylog(data &data)
|
|||
if(data.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)
|
||||
ret |= _rooms_polylog(data, "join", phase);
|
||||
|
||||
|
@ -207,6 +201,12 @@ ircd::m::sync::rooms_polylog(data &data)
|
|||
if(data.phased && ret)
|
||||
return ret;
|
||||
|
||||
if(rooms_polylog_ban)
|
||||
ret |= _rooms_polylog(data, "ban", phase);
|
||||
|
||||
if(data.phased && ret)
|
||||
return ret;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
|
@ -12358,7 +12358,7 @@ console_cmd__room__auth(opt &out, const string_view &line)
|
|||
{
|
||||
const params param{line, " ",
|
||||
{
|
||||
"event_id|room_id", "event_id"
|
||||
"event_id|room_id", "event_id", "type"
|
||||
}};
|
||||
|
||||
const string_view &p0
|
||||
|
@ -12395,18 +12395,27 @@ console_cmd__room__auth(opt &out, const string_view &line)
|
|||
p0
|
||||
};
|
||||
|
||||
const auto type
|
||||
{
|
||||
param["type"]
|
||||
};
|
||||
|
||||
const m::room::auth::chain ac
|
||||
{
|
||||
m::index(event_id)
|
||||
};
|
||||
|
||||
ac.for_each([&out](const auto &idx)
|
||||
ac.for_each([&out, &type]
|
||||
(const auto &idx)
|
||||
{
|
||||
const m::event::fetch event
|
||||
{
|
||||
std::nothrow, idx
|
||||
};
|
||||
|
||||
if(type && json::get<"type"_>(event) != type)
|
||||
return true;
|
||||
|
||||
out << idx;
|
||||
if(event.valid)
|
||||
out << " " << pretty_oneline(event);
|
||||
|
@ -14886,7 +14895,7 @@ console_cmd__feds__auth(opt &out, const string_view &line)
|
|||
{
|
||||
const params param{line, " ",
|
||||
{
|
||||
"room_id", "event_id"
|
||||
"room_id", "event_id", "type"
|
||||
}};
|
||||
|
||||
const auto &room_id
|
||||
|
@ -14899,30 +14908,73 @@ console_cmd__feds__auth(opt &out, const string_view &line)
|
|||
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;
|
||||
opts.op = m::feds::op::auth;
|
||||
opts.room_id = room_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)
|
||||
return true;
|
||||
|
||||
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)
|
||||
{
|
||||
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;
|
||||
});
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -16553,7 +16605,13 @@ console_cmd__fed__auth(opt &out, const string_view &line)
|
|||
|
||||
std::sort(begin(events), end(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;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -75,7 +75,7 @@ post__upload(client &client,
|
|||
|
||||
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];
|
||||
|
|
Loading…
Reference in New Issue