1#!/bin/bash 2# 3# NAME: 4# make-patches.sh - extract a set of linuxized patches from the 5# ACPICA git repository 6# 7# SYNOPSIS: 8# make-patches.sh [-r release] [-u] <old_commit> [new_commit] 9# 10# DESCRIPTION: 11# Creates the linuxized patch set from old_commit to new_commit in 12# ACPICA git repository. 13# Parameters: 14# old_commit The old commit ID. 15# new_commit The new commit ID. If this parameter is not specified, 16# the new commit ID is default to HEAD. 17# Options: 18# -r release Specify a release ID, it will turn out to be the name of 19# the patch files. If this option is not specified, the 20# default name of the patch files will be the current month 21# in YYYYmm date format. 22# -u Generate upstream commit IDs in the linuxized patches. 23# 24 25RELEASE=`date +%Y%m` 26 27usage() 28{ 29 echo "Usage: `basename $0` [-r release] [-u] <old_commit> [new_commit]" 30 echo "Where:" 31 echo " -r: set release ID, default is $RELEASE in YYYYmm- date format" 32 echo " -u: generate upstream commit IDs" 33 echo " old_commit: the old commit id\n"; 34 echo " new_commit: optional, the new commit id, default to HEAD"; 35 exit 0 36} 37 38SCRIPT=`(cd \`dirname $0\`; pwd)` 39. $SCRIPT/libacpica.sh 40 41ACPICA_DIR=$CURDIR/patches.acpica.$RELEASE 42LINUX_DIR=$CURDIR/patches.linux.$RELEASE 43NEW_RELEASE="HEAD" 44OLD_RELEASE="HEAD" 45ACPICA_CNT=0 46LINUX_CNT=0 47MAINTAINER="Bob Moore <robert.moore@intel.com>" 48GIT_EXTRACT="$SCRIPT/gen-patch.sh" 49RELEASE="${RELEASE}-" 50 51while getopts "dr:u" opt 52do 53 case $opt in 54 d) DRYRUN="yes";; 55 r) RELEASE=$OPTARG;; 56 u) GIT_EXTRACT="${GIT_EXTRACT} -u -m '${MAINTAINER}'";; 57 ?) echo "Invalid argument $opt" 58 usage;; 59 esac 60done 61shift $(($OPTIND - 1)) 62 63if [ -z $1 ]; then 64 echo "old_commit is not specified" 65 usage 66fi 67OLD_RELEASE=$1 68if [ ! -z $2 ]; then 69 NEW_RELEASE=$2 70fi 71 72COMMITS=`git rev-list --reverse $OLD_RELEASE..$NEW_RELEASE` 73 74for c in $COMMITS; do 75 ACPICA_CNT=`expr $ACPICA_CNT + 1` 76done 77 78generate_patch() 79{ 80 local cid aid lid 81 local COMMIT SUBJECT 82 83 cid=$1 84 aid=$2 85 lid=$3 86 87 COMMIT=`git log -1 -c $cid --format=%H | cut -c 1-8` 88 SUBJECT=`git log -1 -c $cid --format=%s` 89 90 echo "[make-patches.sh] Generating patch ($aid:$lid:$COMMIT: $SUBJECT)..." 91 ( 92 cd $SCRIPT 93 94 if [ "x$DRYRUN" = "xyes" ]; then 95 echo $GIT_EXTRACT -i $lid $COMMIT 96 else 97 eval $GIT_EXTRACT -i $lid $COMMIT 98 echo "[make-patches.sh] Copying ACPICA patch ($RELEASE$aid.patch)..." 99 mv acpica-$COMMIT.patch $ACPICA_DIR/$RELEASE$aid.patch 100 echo $RELEASE$aid.patch >> $ACPICA_DIR/series 101 fi 102 103 104 if [ -f linux-$COMMIT.patch ]; then 105 if [ "x$DRYRUN" != "xyes" ]; then 106 echo "[make-patches.sh] Copying Linux patch ($RELEASE$lid.patch)..." 107 mv linux-$COMMIT.patch $LINUX_DIR/$RELEASE$lid.patch 108 echo $RELEASE$lid.patch >> $LINUX_DIR/series 109 fi 110 fi 111 ) 112} 113 114rm -rf $ACPICA_DIR 115rm -rf $LINUX_DIR 116mkdir -p $ACPICA_DIR 117mkdir -p $LINUX_DIR 118 119ACPICA_IDX=1 120LINUX_IDX=1 121make_acpisrc $SRCDIR force > /dev/null 122 123for c in $COMMITS; do 124 generate_patch $c $ACPICA_IDX $LINUX_IDX 125 126 LINUX_TO=$LINUX_DIR/$RELEASE$LINUX_IDX.patch 127 if [ -f $LINUX_TO ]; then 128 echo "[make-patches.sh] Generated $LINUX_TO." 129 LINUX_IDX=`expr $LINUX_IDX + 1` 130 fi 131 132 ACPICA_IDX=`expr $ACPICA_IDX + 1` 133done 134 135LINUX_CNT=`expr $LINUX_IDX - 1` 136 137echo "[make-patches.sh] Generated $ACPICA_CNT raw patches and $LINUX_CNT linuxized patches." 138