Skip to content

Commit

Permalink
fix: support homebrew/linuxbrew
Browse files Browse the repository at this point in the history
Signed-off-by: Henry Schreiner <[email protected]>
  • Loading branch information
henryiii committed Nov 18, 2024
1 parent da2824b commit c6848ac
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 51 deletions.
1 change: 1 addition & 0 deletions libmamba/ext/solv-cpp/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ find_package(Libsolv REQUIRED)

if(BUILD_SHARED)
set(LIBSOLV_DEPS solv::libsolv solv::libsolvext)
set_target_properties(solv-cpp PROPERTIES POSITION_INDEPENDENT_CODE ON)
else()
set(LIBSOLV_DEPS solv::libsolv_static solv::libsolvext_static)
endif()
Expand Down
101 changes: 51 additions & 50 deletions libmamba/include/mamba/specs/channel.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,61 +22,15 @@

namespace mamba::specs
{
class Channel;

struct ChannelResolveParams
{
/**
* The weakener for @ref ResolveParams::custom_channels.
*/
struct NameWeakener
{
/**
* Return the key unchanged.
*/
[[nodiscard]] auto make_first_key(std::string_view key) const -> std::string_view;

/**
* Remove the last element of the '/'-separated name.
*/
[[nodiscard]] auto weaken_key(std::string_view key) const
-> std::optional<std::string_view>;
};

template <typename Key, typename Value>
using name_map = util::weakening_map<std::unordered_map<Key, Value>, NameWeakener>;

using platform_list = util::flat_set<std::string>;
using channel_list = std::vector<Channel>;
using channel_map = name_map<std::string, Channel>;
using multichannel_map = name_map<std::string, channel_list>;

platform_list platforms = {};
CondaURL channel_alias = {};
channel_map custom_channels = {};
multichannel_map custom_multichannels = {};
AuthenticationDataBase authentication_db = {};
std::string home_dir = {};
std::string current_working_dir = {};
};

struct ChannelResolveParamsView
{
const ChannelResolveParams::platform_list& platforms = {};
const CondaURL& channel_alias = {};
const ChannelResolveParams::channel_map& custom_channels = {};
const ChannelResolveParams::multichannel_map& custom_multichannels = {};
const AuthenticationDataBase& authentication_db = {};
std::string_view home_dir = {};
std::string_view current_working_dir = {};
};
struct ChannelResolveParams;
struct ChannelResolveParamsView;

class Channel
{
public:

using platform_list = ChannelResolveParams::platform_list;
using channel_list = ChannelResolveParams::channel_list;
using platform_list = util::flat_set<std::string>;
using channel_list = std::vector<Channel>;

[[nodiscard]] static auto resolve( //
UnresolvedChannel uc,
Expand Down Expand Up @@ -145,6 +99,53 @@ namespace mamba::specs
util::flat_set<std::string> m_platforms;
};

struct ChannelResolveParams
{
/**
* The weakener for @ref ResolveParams::custom_channels.
*/
struct NameWeakener
{
/**
* Return the key unchanged.
*/
[[nodiscard]] auto make_first_key(std::string_view key) const -> std::string_view;

/**
* Remove the last element of the '/'-separated name.
*/
[[nodiscard]] auto weaken_key(std::string_view key) const
-> std::optional<std::string_view>;
};

template <typename Key, typename Value>
using name_map = util::weakening_map<std::unordered_map<Key, Value>, NameWeakener>;

using platform_list = util::flat_set<std::string>;
using channel_list = std::vector<Channel>;
using channel_map = name_map<std::string, Channel>;
using multichannel_map = name_map<std::string, channel_list>;

platform_list platforms = {};
CondaURL channel_alias = {};
channel_map custom_channels = {};
multichannel_map custom_multichannels = {};
AuthenticationDataBase authentication_db = {};
std::string home_dir = {};
std::string current_working_dir = {};
};

struct ChannelResolveParamsView
{
const ChannelResolveParams::platform_list& platforms = {};
const CondaURL& channel_alias = {};
const ChannelResolveParams::channel_map& custom_channels = {};
const ChannelResolveParams::multichannel_map& custom_multichannels = {};
const AuthenticationDataBase& authentication_db = {};
std::string_view home_dir = {};
std::string_view current_working_dir = {};
};

/** Tuple-like equality of all observable members */
auto operator==(const Channel& a, const Channel& b) -> bool;
auto operator!=(const Channel& a, const Channel& b) -> bool;
Expand Down
3 changes: 2 additions & 1 deletion libmamba/src/core/transaction.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -698,7 +698,8 @@ namespace mamba
it != extract_tasks.end();
++it)
{
std::packaged_task task{ [=] { return it->run(); } };
std::packaged_task<mamba::PackageExtractTask::Result()> task{ [=]
{ return it->run(); } };
extract_trackers.push_back(task.get_future());
MainExecutor::instance().schedule(std::move(task));
}
Expand Down

0 comments on commit c6848ac

Please sign in to comment.