Size: a a a

2021 March 24

IZ

Ilia Zviagin in pro.cxx
Vadim Volodin
Всем привет!
Хотелось бы сделать релиз для линукса в виде архивчика, который можно скачать и сразу запустить программу, возможно с некоторой установкой, но без использования sudo, то есть не может быть установлен в дефолтные директории (/usr/bin и т.д.). В частности, архивчик должен включать в себя такие пакеты, как build-essential, python3, cmake и другие.
Вот пример проблемы, которая возникает:
Можно устанавливать binutils так (часть build-essential):
apt source binutils && cd binutils-2.34
./configure --prefix=/path/to/predefined/directory
make && make install
Но в таком случае архивчик нужно будет скачивать только в определенную директорию.
Есть у кого-то опыт в таком? Как сделать такой архивчик?
Собирай пакет, ставь в хоум дир, и всё ...
источник

VV

Vadim Volodin in pro.cxx
Ilia Zviagin
Собирай пакет, ставь в хоум дир, и всё ...
Имеете ввиду ./configure --prefix=/home/current_user? В таком случае он не подойдёт другому юзеру
источник

CD

Constantine Drozdov in pro.cxx
Pavel Zhigulin
Это не я :) Там выше по переписке уже привели пример библиотеки, которая решают эту задачу (плохо и некрасиво решает, но решает). В моей работе я не припомню, чтобы мне уж очень сильно нужен был strong typedef
Очень хочется стронг тайпдефы, но не очень понятно чего конкретно хочется. Стронг тайпдефы позволяют не складывать абсолютные пути и не делить киловатты на часы. При этом, когда начинаешь разбирать детали - сразу непонятно, скажем, можно ли сложить абсолютные пути как строки, если очень хочется
источник

IZ

Ilia Zviagin in pro.cxx
Vadim Volodin
Имеете ввиду ./configure --prefix=/home/current_user? В таком случае он не подойдёт другому юзеру
Вроде наверное я неправ, не рекомендуют вроде это делать
источник

VV

Vadim Volodin in pro.cxx
Ilia Zviagin
Вроде наверное я неправ, не рекомендуют вроде это делать
Не рекомендуют устанавливать binutils куда-либо кроме /usr/bin?
источник

IZ

Ilia Zviagin in pro.cxx
Vadim Volodin
Не рекомендуют устанавливать binutils куда-либо кроме /usr/bin?
Ага.
источник

VV

Vadim Volodin in pro.cxx
А кто не рекомендует? Что может быть не так?
источник

IZ

Ilia Zviagin in pro.cxx
Vadim Volodin
А кто не рекомендует? Что может быть не так?
Не знаю, поищи сам, как поставить пакет не в систему а в домашний каталог, Скажем
источник

ПК

Побитый Кирпич... in pro.cxx
Constantine Drozdov
Очень хочется стронг тайпдефы, но не очень понятно чего конкретно хочется. Стронг тайпдефы позволяют не складывать абсолютные пути и не делить киловатты на часы. При этом, когда начинаешь разбирать детали - сразу непонятно, скажем, можно ли сложить абсолютные пути как строки, если очень хочется
Нужно дать возможность в любой момент откатиться к основному типу.
источник

CD

Constantine Drozdov in pro.cxx
Побитый Кирпич
Нужно дать возможность в любой момент откатиться к основному типу.
В каком смысле откатиться, например, в таком можно?
std::string foo(abs_path const& a, abs_path const& b) {
   return static_cast<std::string const&>(a) + static_cast<std::string const&>(b);
}
источник

ПК

Побитый Кирпич... in pro.cxx
Constantine Drozdov
В каком смысле откатиться, например, в таком можно?
std::string foo(abs_path const& a, abs_path const& b) {
   return static_cast<std::string const&>(a) + static_cast<std::string const&>(b);
}
Да в любом - хоть функцию библиотечную std::to_underlying как у енумов
источник

ПК

Побитый Кирпич... in pro.cxx
Constantine Drozdov
В каком смысле откатиться, например, в таком можно?
std::string foo(abs_path const& a, abs_path const& b) {
   return static_cast<std::string const&>(a) + static_cast<std::string const&>(b);
}
В таком можно, да
источник

CD

Constantine Drozdov in pro.cxx
Побитый Кирпич
Да в любом - хоть функцию библиотечную std::to_underlying как у енумов
А в таком?
std::string foo(abs_path const& a, abs_path const& b) {
   return static_cast<std::string const&>(a) + b;
}
источник

ПК

Побитый Кирпич... in pro.cxx
Constantine Drozdov
А в таком?
std::string foo(abs_path const& a, abs_path const& b) {
   return static_cast<std::string const&>(a) + b;
}
Это уже зависит от того как мы сделаем наследование операторов. Я пока не могу сформулоировать как я бы хотел.
источник

CD

Constantine Drozdov in pro.cxx
Побитый Кирпич
Это уже зависит от того как мы сделаем наследование операторов. Я пока не могу сформулоировать как я бы хотел.
А в таком? Ковариантен или нет?
struct i_some {
 virtual ~some() = default;
 virtual std::string foo() = 0;
};

struct some : i_some {
 abs_path foo() override;
}
источник

ПК

Побитый Кирпич... in pro.cxx
Constantine Drozdov
А в таком? Ковариантен или нет?
struct i_some {
 virtual ~some() = default;
 virtual std::string foo() = 0;
};

struct some : i_some {
 abs_path foo() override;
}
Ковариантность вообще только для указателей вроде работает, так что вряд ли
источник

CD

Constantine Drozdov in pro.cxx
Побитый Кирпич
Ковариантность вообще только для указателей вроде работает, так что вряд ли
Если ссылки можно кастовать, почему он не ковариантен?
источник

АК

Александр Караев... in pro.cxx
Constantine Drozdov
А в таком? Ковариантен или нет?
struct i_some {
 virtual ~some() = default;
 virtual std::string foo() = 0;
};

struct some : i_some {
 abs_path foo() override;
}
Я знал, что ты придёшь и покажешь много замечательных примеров :)
источник

ПК

Побитый Кирпич... in pro.cxx
Constantine Drozdov
Если ссылки можно кастовать, почему он не ковариантен?
Ну такой код просто для наследования будет работать?
источник

ПК

Побитый Кирпич... in pro.cxx
ЕМНИП там надо указатели возвращать
источник