LINUX.ORG.RU

Правильная сборка rustc

 


0

3

Хочется собрать rust из git'а, но это занимает приличное количество времени (емнип, больше часа). Как я понимаю, он собирает вместе с rustc и llvm. Можно ли его не собирать?

Как вообще можно ускорить сборку? Есть ли смысл собирать в RAM и как это сделать?

P.S. Вот список опций для configure:

Options:

    --enable-valgrind                run tests with valgrind (memcheck by default)
    --enable-helgrind                run tests with helgrind instead of memcheck
    --disable-valgrind-rpass         don't run rpass-valgrind tests with valgrind
    --disable-docs                   don't build documentation
    --disable-optimize               don't build optimized rust code
    --disable-optimize-cxx           don't build optimized C++ code
    --disable-optimize-llvm          don't build optimized LLVM
    --disable-optimize-tests         don't build tests with optimizations
    --disable-libcpp                 don't build with llvm with libc++ instead of libstdc++ when using clang
    --disable-llvm-assertions        don't build LLVM with assertions
    --disable-debug                  don't build with extra debug fun
    --enable-ratchet-bench           ratchet benchmarks
    --enable-fast-make               use .gitmodules as timestamp for submodule deps
    --enable-ccache                  invoke gcc/clang via ccache to reuse object files between builds
    --enable-local-rust              use an installed rustc rather than downloading a snapshot
    --enable-llvm-static-stdcpp      statically link to libstdc++ for LLVM
    --enable-rpath                   build rpaths into rustc itself
    --enable-nightly                 build nightly packages
    --disable-verify-install         don't verify installed binaries work
    --enable-dist-host-only          only install bins for the host architecture
    --disable-inject-std-version     don't inject the current compiler version of libstd into programs
    --disable-jemalloc               don't build liballoc with jemalloc
    --localstatedir=[/var/lib]       local state directory
    --sysconfdir=[/etc]              install system configuration files
    --datadir=[/share]               install data
    --infodir=[/share/info]          install additional info
    --llvm-root=[<none>]             set LLVM root
    --jemalloc-root=[<none>]         set directory where libjemalloc_pic.a is located
    --build=[x86_64-unknown-linux-gnu] GNUs ./configure syntax LLVM build triple
    --android-cross-path=[/opt/ndk_standalone] Android NDK standalone path
    --disable-manage-submodules      don't let the build manage the git submodules
    --enable-clang                   prefer clang to gcc for building the runtime
    --prefix=[/usr/local]            set installation prefix
    --local-rust-root=[/usr/local]   set prefix for local rust binary
    --host=[<none>]                  GNUs ./configure syntax LLVM host triples
    --target=[<none>]                GNUs ./configure syntax LLVM target triples
    --mandir=[/share/man]            install man pages in PATH
    --release-channel=[dev]          the name of the release channel to build
configure: CFG_BUILD            :=  
    --libdir=[/lib]                  install libraries (do not set it on windows platform)

P.P.S. Есть ли смысл ставить бинарный rustc из реп арча и указывать его как local?

sudo cast ozkriff


А зачем тебе собирать из гита? Ночные сборки точно не подходят?

Я собираю из исходников, потому что мне нужна поддержка android/arm, этого в ночных сборках нету. Меня не очень парит огромное время на сборку - ставлю «make -j 1», что бы систему сильно не грузило, и оно там варится. Часа два точно занимает, но в это время мне ничто не мешает использовать старую версию.

.. Как я понимаю, он собирает вместе с rustc и llvm. Можно ли его не собирать? ...

Там, вроде как, используется форк llvm с какими-то патчами, которые пока не вошли в llvm, так что не думаю, что можно можно отдельно.

Про ржавчину в арче ничего не могу подсказать.

В /r/rust видел какой-то пост про ускорение сборки, сейчас попробую его найти, может там чего полезное говорили.

ozkriff ()

P.P.S. Есть ли смысл ставить бинарный rustc из реп арча и указывать его как local?

А чем тебя этот вариант изначально не устраивает?

m0rph ★★★★★ ()
Ответ на: комментарий от m0rph

Его тоже не каждый день собирают — поэтому есть шанс нарваться на несовместимое отсутвие фич. Не думаю, что это кретично, но интересно, как можно ускорить загрузку.

vanzef ()
Ответ на: комментарий от vanzef

Да там не такие уж крутые советы, сильно не один время не срежет. К сожалению, ржавчина очень медленно собирается и пока с этим ничего особо не поделать. Надеюсь, когда-нибудь хоть llvm не надо будет собирать.

Вообще, тема медленной компиляции время от времени всплывает и разработчики обещали через какое-то время всерьез этим заняться, но в данный момент им не до этого - все заняты стабилизацией.

ozkriff ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.