#!/bin/bash # Copyright (C) 2017 by Mike Gabriel # # This is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the # Free Software Foundation, Inc., # 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. d=. ; while [ ! -d "$d/nx-X11/extras" ] && [ "$(readlink -e "$d")" != "/" ]; do d="$d/.."; done # only continue, if in nx-libs tree if [ -d "$d/nx-X11/extras" ]; then if which quilt 1>/dev/null; then echo "$(basename $0): quilt utility found, so we use it..." echo export QUILT_PATCHES="../Mesa.patches" export QUILT_PATCH_OPTS="--reject-format=unified" export QUILT_DIFF_ARGS="-p ab --no-timestamps --no-index --color=auto" export QUILT_REFRESH_ARGS="-p ab --no-timestamps --no-index" export QUILT_COLORS="diff_hdr=1;32:diff_add=1;34:diff_rem=1;31:diff_hunk=1;33:diff_ctx=35:diff_cctx=33" mkdir -p "$d/nx-X11/extras/Mesa.patches" cd "$d/nx-X11/extras/Mesa/" # "--quiltrc -" disables reading global or user-local configuration files. # These can override the environment settings if the quiltrc is not # carefully crafted. # For instance, it should set variables only if they aren't already # provided through the environment, but since the quiltrc file is # actually sourced as a shell script, there's no way to assume that # a user's quiltrc is "sane". quilt --quiltrc - "$@" cd - 1> /dev/null else echo "$(basename $0): no quilt utility found, falling back to stupidly (un)applying our patches..." echo CMDLINE_ARGS="$@" # we are really stupid here, we only understand 'push -a' and 'pop -a' # this should be sufficient for the build process... cd "$d/nx-X11/extras/Mesa/" # make sure all need dirs and files exist mkdir -p ./Mesa.patches/ touch "../Mesa.patches/series" # this file will be needed temporarily touch "../Mesa.patches/.applied-patches" if [ "$CMDLINE_ARGS" = "push -a" ]; then grep -E -v "^#.*" < "../Mesa.patches/series" | while read patchfile; do if [ -n "$patchfile" ] && [ -r "../Mesa.patches/$patchfile" ] && ! grep -q "$patchfile" < "../Mesa.patches/.applied-patches"; then echo "Applying patch ../Mesa.patches/$patchfile" patch -p1 < "../Mesa.patches/$patchfile" echo "$patchfile" >> "../Mesa.patches/.applied-patches" echo fi done elif [ "$CMDLINE_ARGS" = "pop -a" ]; then tac "../Mesa.patches/.applied-patches" | while read patchfile; do if [ -n "$patchfile" ] && [ -r "../Mesa.patches/$patchfile" ]; then echo "Removing patch ../Mesa.patches/$patchfile" patch -R -p1 < "../Mesa.patches/$patchfile" sed -e "/$patchfile/d" "../Mesa.patches/.applied-patches" > "../Mesa.patches/.applied-patches.tmp" mv "../Mesa.patches/.applied-patches.tmp" "../Mesa.patches/.applied-patches" echo fi done else echo "$(basename $0): Doing nothing! Cmdline options not understood: $CMDLINE_ARGS" fi # remove the .applied-patches file, if empty again if [ ! -s "../Mesa.patches/.applied-patches" ]; then rm -f "../Mesa.patches/.applied-patches" fi cd - 1> /dev/null fi fi