Оффтопик-канал. Обсуждение вопросов, не связанных с Rust. Модерируется по тем же правилам, что и основной канал. Основной канал - тут: https://gitter.im/ruRust/general .
sectator
у нас для этого ищут C/C++ и переучивают
а вообще был где-то чат
Долго переобучение длиться?
sectator
время от времени люди интересуются — как собрать приложение под линукс для старых дистрибутивов вроде убунты или дебиана. Дабы люди могли подсказать и знали сами, пишу сюда, способ испытанный для arch → (arch chroot) → ubuntu
идея состоит в установке rolling-release дистрибутива archlinux (с помощью pacstrap из arch-install-scripts в любой системе, смотрите арчвики для подробностей, очень похоже на debootstrap) в chroot (в самом арче есть специальный скрипт arch-chroot, пробрасывающий нужные ресурсы). Этот дистрибутив имеет специальный архив пакетов, который можно подключить к пакетному менеджеру (в /etc/pacman.d/mirrorlist нужно отключить все зеркала и добавить архив Server = https://archive.archlinux.org/repos/2018/05/30/$repo/os/$arch дату выставлять по потребностям).
В самом арче нужно установить rustup (есть нужный пакет, не нужно тянуть общий установщик). Все нужные ресурсы нужно забиндить с помощью mount --bind -o ro <что> /mnt/<куда> (.ssh для приватных репозиториев, например). Сам проект я рекомендую тоже пробрасывать из основной системы (в отдельной папке) с флагом -o rw.
для приведения базы данных к указанной в mirrorlist дате нужно сделать pacman -Syy, для установки пакетов -Suu, можно какие-то не очень значительные пакеты ставить отдельно, смотрите подробнее на арчвики инструкцию к пакману, даты пакетов достаточно старые есть в архиве, но списка пакетов нету, нужно переключать, Syy, затем искать Ss / Si, даты пакетов примерно соответствуют датам выпуска самой программы/библиотеки, иногда ещё до релиза пакеты повяляются.
внутри системы просто собираете пакеты, предварительно поставив нужные версии пактов, сколь угодно древние. Для каких-то современных библиотек нужно в конечной системе устанавливать LD_LIBRARY_PATH (она имеет приоритет), стянув их из chroot арча.
есть одна особенность, связанная с компиляцией раста — нужно установить в ~/.cargo/config ссылки на clang, а при смене версии glibc + gcc + binutils всегда нужно делать cargo clean, иначе линкер не сможет собрать конечный файл
sectator
* время от времени люди интересуются — как собрать приложение под линукс для старых дистрибутивов вроде убунты или дебиана. Дабы люди могли подсказать и знали сами, пишу сюда, способ испытанный для arch → (arch chroot) → ubuntu
идея состоит в установке rolling-release дистрибутива archlinux (с помощью pacstrap из arch-install-scripts в любой системе, смотрите арчвики для подробностей, очень похоже на debootstrap) в chroot (в самом арче есть специальный скрипт arch-chroot, пробрасывающий нужные ресурсы). Этот дистрибутив имеет специальный архив пакетов, который можно подключить к пакетному менеджеру (в /etc/pacman.d/mirrorlist нужно отключить все зеркала и добавить архив Server = https://archive.archlinux.org/repos/2018/05/30/$repo/os/$arch дату выставлять по потребностям).
В самом арче нужно установить rustup (есть нужный пакет, не нужно тянуть общий установщик). Все нужные ресурсы нужно забиндить с помощью mount --bind -o ro <что> /mnt/<куда> (.ssh для приватных репозиториев, например). Сам проект я рекомендую тоже пробрасывать из основной системы (в отдельной папке) с флагом -o rw.
для приведения базы данных к указанной в mirrorlist дате нужно сделать pacman -Syy, для установки пакетов -Suu, можно какие-то не очень значительные пакеты ставить отдельно, смотрите подробнее на арчвики инструкцию к пакману, даты пакетов достаточно старые есть в архиве, но списка пакетов нету, нужно переключать, Syy, затем искать Ss / Si, даты пакетов примерно соответствуют датам выпуска самой программы/библиотеки, иногда ещё до релиза пакеты повяляются.
внутри системы просто собираете пакеты, предварительно поставив нужные версии пактов, сколь угодно древние. Для каких-то современных библиотек нужно в конечной системе устанавливать LD_LIBRARY_PATH (она имеет приоритет), стянув их из chroot арча.
есть одна особенность, связанная с компиляцией раста — нужно установить в ~/.cargo/config ссылки на clang, а при смене версии glibc + gcc + binutils всегда нужно делать cargo clean, иначе линкер не сможет собрать конечный файл
пакеты из арча можно собирать с помощью пакета dpkg для deb-based или makepkg для pacman-based, хотя у вас не должно быть проблем и со сборкой из основной системы
sectator
* время от времени люди интересуются — как собрать приложение под линукс для старых дистрибутивов вроде убунты или дебиана. Дабы люди могли подсказать и знали сами, пишу сюда, способ испытанный для arch → (arch chroot) → ubuntu
идея состоит в установке rolling-release дистрибутива archlinux (с помощью pacstrap из arch-install-scripts в любой системе, смотрите арчвики для подробностей, очень похоже на debootstrap) в chroot (в самом арче есть специальный скрипт arch-chroot, пробрасывающий нужные ресурсы). Этот дистрибутив имеет специальный архив пакетов, который можно подключить к пакетному менеджеру (в /etc/pacman.d/mirrorlist нужно отключить все зеркала и добавить архив Server = https://archive.archlinux.org/repos/2018/05/30/$repo/os/$arch дату выставлять по потребностям).
В самом арче нужно установить rustup (есть нужный пакет, не нужно тянуть общий установщик). Все нужные ресурсы нужно забиндить с помощью mount --bind -o ro <что> /mnt/<куда> (.ssh для приватных репозиториев, например). Сам проект я рекомендую тоже пробрасывать из основной системы (в отдельной папке) с флагом -o rw.
для приведения базы данных к указанной в mirrorlist дате нужно сделать pacman -Syy, для установки пакетов -Suu, можно какие-то не очень значительные пакеты ставить отдельно, смотрите подробнее на арчвики инструкцию к пакману, даты пакетов достаточно старые есть в архиве, но списка пакетов нету, нужно переключать, Syy, затем искать Ss / Si, даты пакетов примерно соответствуют датам выпуска самой программы/библиотеки, иногда ещё до релиза пакеты повяляются. Для ещё более новых/редких пакетов есть pacaur, среди пользовательских репозиториев можно поискать bin-пакеты из аура (в т.ч. кросс-компилятор mingw актуальный), но у них нет архивных версий. Сами PKGBUILD — всего лишь инструкция по сборке, при необходимости её можно переделать на другую версию, внутри почти bash скрипт.
внутри системы просто собираете пакеты, предварительно поставив нужные версии пактов, сколь угодно древние. Для каких-то современных библиотек нужно в конечной системе устанавливать LD_LIBRARY_PATH (она имеет приоритет), стянув их из chroot арча.
есть одна особенность, связанная с компиляцией раста — нужно установить в ~/.cargo/config ссылки на clang, а при смене версии glibc + gcc + binutils всегда нужно делать cargo clean, иначе линкер не сможет собрать конечный файл
пакеты из арча можно собирать с помощью пакета dpkg для deb-based или makepkg для pacman-based, хотя у вас не должно быть проблем и со сборкой из основной системы
suhr
Хаха, наконец-то.
sectator
по крайней мере это звучит не слишком угрожающе, трейты наверное каким-нибудь расширающим наследованием можно заменить частично. Переход C → Rust достаточно болезненен был в моей памяти из-за передачи объектов во владение вместо передачи указателей и в целом отсутствием привычной работы с «сырой» памятью, чем вроде жава на страдаетsectator
спасибо за мнение
sectator
раст в этом деле тоже не безграничен — нельзя реализовать чужой трейт для чужого типа (вполне обоснованно), не прибегая к struct MyWrapper(TargetType); impl NotMyButStillCoolTrait for MyWrapper, а в ООП вроде бы можно наследоваться безгранично (в java вроде наложили опциональный запрет в виде final), хотя я не уверен, что это сильно поможет, я старался всегда избегать продвинутого ООП.
sectator
* раст в этом деле тоже не безграничен — нельзя реализовать чужой трейт для чужого типа (вполне обоснованно), не прибегая к struct MyWrapper(TargetType); impl NotMyButStillCoolTrait for MyWrapper, а в ООП вроде бы можно наследоваться безгранично (в java вроде наложили опциональный запрет в виде final), хотя я не уверен, что это сильно поможет, я старался всегда избегать продвинутого ООП (в С++, Delphi ничего не умел в то время, когда я с ним работал, а на всех остальных, с чем я работал — ООП был фикцией)