Мой первый ебилд
Oct. 26th, 2018 07:33 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Со скуки написал-таки свой первый ебилд — для моей смотрелки фитсов (по-хорошему, ее надо довести до логического конца, но это потребует полного рефакторинга, чтобы с GTK на чистый OpenGL перейти + кучу ошибок исправить).
Несмотря на то, что сама по себе смотрелка — простейшая штукенция, ебилд писал долго. Вот что вышло:
Для простоты не использовал синхронизацию с гитом (а то есть у меня любовь делать пуллы на недообследованном коде). А еще пришлось CMakeLists.txt подправить с учетом того, что я не придумал, как возводить флаги (вроде -DNO_CUDA=1), если данного юза нет. Теперь возводится стандартный флаг (вроде -DUSE_CUDA=yes/no).
Теперь остается написать подобное для большинства своих поделок, которые я обычно после каждого обновления вручную пересобираю (т.к. используют слишком много внешних библиотек). Я перед наблюдениями на БТА поэтому генту и не обновляю: мало ли, компьютер повешу, а там что-нибудь "не взлетит", и придется во время наблюдений отладкой заниматься, а не наблюдениями... Обновляю после (если не забуду), заодно потом вручную пересобирая все, что не работает.
Теоретически, если правильно проставлю все зависимости и ничего не забуду, после их обновления все будет хорошо. Нужно лишь у Тимура взять FindCfitsio.cmake (или свой написать), т.к. cfitsio уже давно стал после обновления кидать в /usr/lib64/pkgconfig/cfitsio.pc битые данные, что не дает pkg-config'у определить, что эта шняга в системе есть!
Несмотря на то, что сама по себе смотрелка — простейшая штукенция, ебилд писал долго. Вот что вышло:
# Copyright 1999-2018 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
EAPI=6
inherit cmake-utils
DESCRIPTION="Very simple FITS visualisation tool"
HOMEPAGE="https://github.com/eddyem/fits_filter"
SRC_URI=""
LICENSE="GPL-3"
SLOT="0"
KEYWORDS="~amd64 ~x86"
IUSE="cuda leptonica gsl"
DEPEND="
virtual/opengl
x11-libs/gtkglext
sci-libs/cfitsio
sci-libs/fftw
cuda? ( dev-util/nvidia-cuda-toolkit )
leptonica? ( media-libs/leptonica )
gsl? ( sci-libs/gsl )
"
RDEPEND="${DEPEND}"
S="${WORKDIR}"
src_unpack() {
cp -r /home/eddy/C-files/fitsview/* ${S} || die
}
CMAKE_USE_DIR="${S}"
BUILD_DIR=${S}
src_configure() {
local mycmakeargs=(
"-DCMAKE_INSTALL_PREFIX=/usr/local"
"-DUSE_CUDA=$(usex cuda)"
"-DUSE_LEPTONICA=$(usex leptonica)"
"-DUSE_GSL=$(usex gsl)"
)
cmake-utils_src_configure
}
Для простоты не использовал синхронизацию с гитом (а то есть у меня любовь делать пуллы на недообследованном коде). А еще пришлось CMakeLists.txt подправить с учетом того, что я не придумал, как возводить флаги (вроде -DNO_CUDA=1), если данного юза нет. Теперь возводится стандартный флаг (вроде -DUSE_CUDA=yes/no).
Теперь остается написать подобное для большинства своих поделок, которые я обычно после каждого обновления вручную пересобираю (т.к. используют слишком много внешних библиотек). Я перед наблюдениями на БТА поэтому генту и не обновляю: мало ли, компьютер повешу, а там что-нибудь "не взлетит", и придется во время наблюдений отладкой заниматься, а не наблюдениями... Обновляю после (если не забуду), заодно потом вручную пересобирая все, что не работает.
Теоретически, если правильно проставлю все зависимости и ничего не забуду, после их обновления все будет хорошо. Нужно лишь у Тимура взять FindCfitsio.cmake (или свой написать), т.к. cfitsio уже давно стал после обновления кидать в /usr/lib64/pkgconfig/cfitsio.pc битые данные, что не дает pkg-config'у определить, что эта шняга в системе есть!