User:Sam/ebuild wrapper
From Gentoo Wiki
< User:Sam
Jump to:navigation
Jump to:search
I use a small wrapper for ebuild(1)
inspired by slyfox's e. It also makes use of gitify in /etc/portage/bashrc.
I create the following files and add ~/bin to PATH. I also have ~/bin/ebuild as a symlink to ~/bin/e.
FILE
~/bin/ebuild
#!/usr/bin/env bash # Originally based on https://github.com/trofi/home/blob/ff297b2b6fe51fd0ab226f92c19b5717598b568d/bin%2Fe # Note that this is used with https://github.com/gentoo-haskell/gentoo-haskell/blob/master/projects/doc/hacking-tips.rst#gitify-your-ebuilds-in-prepare-phase # WARNING: Note that there's some weird unicode characters around '!=' which I can't remove from mediawiki, please retype the if statement if copy/pasting! if [[ $0 == *@(ebuild|/home/sam/bin/ebuild) ]] ; then # Only gitify ${WORKDIR} if invoked as 'e', not 'ebuild' export GITIFY=no fi # ln -s ~/bin/e ~/bin/e-{asan,ubsan,lto} && chmod +x ~/bin/e-{asan,ubsan,lto} if [[ $0 == *@(e-asan|/home/sam/bin/e-asan) ]] ; then export FEATURES="-sandbox -usersandbox nostrip -splitdebug" export CFLAGS="$(portageq envvar CFLAGS) ${CFLAGS} -ggdb3 -fsanitize=address" export CXXFLAGS="$(portageq envvar CXXFLAGS) ${CXXFLAGS} -ggdb3 -fsanitize=address" export LDFLAGS="$(portageq envvar LDFLAGS) ${LDFLAGS} -fsanitize=address" elif [[ $0 == *@(e-uban|/home/sam/bin/e-ubsan) ]] ; then #export UBSAN_OPTIONS=print_stacktrace=1 export UBSAN_OPTIONS=print_stacktrace=1:halt_on_error=1 export FEATURES="-sandbox -usersandbox nostrip -splitdebug" export CFLAGS="$(portageq envvar CFLAGS) ${CFLAGS} -ggdb3 -fsanitize=undefined" export CXXFLAGS="$(portageq envvar CXXFLAGS) ${CXXFLAGS} -ggdb3 -fsanitize=undefined" export LDFLAGS="$(portageq envvar LDFLAGS) ${LDFLAGS} -fsanitize=undefined" elif [[ $0 == *@(e-lto|/home/sam/bin/e-lto) ]] ; then export CFLAGS="$(portageq envvar CFLAGS) ${CFLAGS} -ggdb3 -flto -Werror=strict-aliasing -Werror=lto-type-mismatch" export CXXFLAGS="$(portageq envvar CXXFLAGS) ${CXXFLAGS} -ggdb3 -flto -Werror=odr -Werror=strict-aliasing -Werror=lto-type-mismatch" export LDFLAGS="$(portageq envvar LDFLAGS) ${LDFLAGS} -flto -Werror=odr -Werror=strict-aliasing -Werror=lto-type-mismatch" fi # https://sourceware.org/bugzilla/show_bug.cgi?id=28728 if [[ ${CC} == clang* ]] ; then export E_DFLAGS="-ggdb3 -fdebug-default-version=4 -gdwarf-4 ${E_DFLAGS}" fi RUSTC_WRAPPER=/usr/bin/sccache \ SCCACHE_DIR=/var/cache/sccache \ SCCACHE_MAX_FRAME_LENGTH=104857600 \ PORTAGE_NICENESS=0 \ PORTAGE_IONICE_COMMAND="true" \ CCACHE_DIR="/var/cache/ccache" \ FEATURES="ccache -test-fail-continue splitdebug compressdebug installsources -nostrip ${FEATURES}" \ CFLAGS="$(portageq envvar CFLAGS) ${CFLAGS} ${E_DFLAGS--ggdb3}" \ CXXFLAGS="$(portageq envvar CXXFLAGS) ${CXXFLAGS} ${E_DFLAGS--ggdb3}" \ FFLAGS="$(portageq envvar FFLAGS) ${FFLAGS} ${E_DFLAGS--ggdb3}" \ FCFLAGS="$(portageq envvar FCFLAGS) ${FCFLAGS} ${E_DFLAGS--ggdb3}" \ LDFLAGS="$(portageq envvar LDFLAGS) ${LDFLAGS} ${E_DFLAGS--ggdb3}" \ GITIFY=${GITIFY-yes} \ PORTAGE_TMPDIR=${PORTAGE_TMPDIR:-/var/tmp} \ exec sudo --preserve-env ebuild "$@"
FILE
/etc/portage/bashrc
# From iwdevtools source /usr/share/iwdevtools/bashrc # gitify # https://github.com/gentoo-haskell/gentoo-haskell/blob/master/projects/doc/hacking-tips.rst#gitify-your-ebuilds-in-prepare-phase git_commit_current_state() { [[ -z ${GITIFY} || ${GITIFY} == "no" ]] && return pushd "${S}" &> /dev/null rm -f .gitignore &> /dev/null git init -q . &> /dev/null git config --add safe.directory ${PWD} &> /dev/null git config user.name "Sam James" &> /dev/null git config user.email "sam@gentoo.org" &> /dev/null git add . &> /dev/null git commit -q -a -s -m "$@" &> /dev/null popd &> /dev/null } post_src_unpack() { git_commit_current_state "state after src_unpack()" } post_src_prepare() { git_commit_current_state "state after src_prepare()" }