af38003af84338511ab18a4012ad3843c2adb4f7
[shellsnippets/shellsnippets.git] / mksh / debian-dev / c
1 #!/bin/mksh
2 #-
3 # Copyright © 2013, 2014
4 #       Thorsten “mirabilos” Glaser <t.glaser@tarent.de>
5 #
6 # Provided that these terms and disclaimer and all copyright notices
7 # are retained or reproduced in an accompanying document, permission
8 # is granted to deal in this work without restriction, including un‐
9 # limited rights to use, publicly perform, distribute, sell, modify,
10 # merge, give away, or sublicence.
11 #
12 # This work is provided “AS IS” and WITHOUT WARRANTY of any kind, to
13 # the utmost extent permitted by applicable law, neither express nor
14 # implied; without malicious intent or gross negligence. In no event
15 # may a licensor, author or contributor be held liable for indirect,
16 # direct, other damage, loss, or other issues arising in any way out
17 # of dealing in the work, even if advised of the possibility of such
18 # damage or existence of a defect, except proven that it results out
19 # of said person’s immediate fault when using the work as intended.
20 #-
21 # Simple-to-use wrapper around eatmydata plus cowbuilder to use with
22 # https://www.mirbsd.org/cvs.cgi/contrib/hosted/tg/deb/pbuilderrc to
23 # select the proper build chroot.
24 #
25 # Example:
26 # c lenny/i386 DEB_BUILD_OPTIONS=parallel=4 linux32 --build foo*.dsc
27
28 unset LANGUAGE
29 DIST=$1
30 eatmydata=eatmydata
31 case $DIST {
32 (sarge|sarge/i386|etch|etch/i386|etch/amd64)
33         eatmydata=
34         ;;
35 }
36 eatmydata= #765579
37 set -A cmd env "DIST=$DIST" LANG=C LC_CTYPE=C LC_NUMERIC=C \
38     LC_TIME=C LC_COLLATE=C LC_MONETARY=C LC_MESSAGES=C LC_PAPER=C \
39     LC_NAME=C LC_ADDRESS=C LC_TELEPHONE=C LC_MEASUREMENT=C \
40     LC_IDENTIFICATION=C LC_ALL=C $eatmydata
41 shift
42 while [[ $1 = *=* ]]; do
43         cmd[${#cmd[@]}]=$1
44         shift
45 done
46 setarch_seen=0
47 case $1 {
48 (--)
49         shift
50         ;;
51 (linux32|linux64)
52         cmd[${#cmd[@]}]=$1
53         shift
54         if [[ $1 = --uname-2.6 ]]; then
55                 cmd[${#cmd[@]}]=$1
56                 shift
57         fi
58         setarch_seen=1
59         ;;
60 }
61 #XXX add more architectures
62 (( setarch_seen )) || case $DIST {
63 (*/amd64) cmd[${#cmd[@]}]=linux64 ;;
64 (*/i386) cmd[${#cmd[@]}]=linux32 ;;
65 (*/x32) cmd[${#cmd[@]}]=linux64 ;;
66 (*) setarch_seen=2 ;;
67 }
68 (( setarch_seen )) || case ${DIST%/*} {
69 (sarge|sarge-*) cmd[${#cmd[@]}]=--uname-2.6 ;;
70 (etch|etch-*) cmd[${#cmd[@]}]=--uname-2.6 ;;
71 (lenny|lenny-*) cmd[${#cmd[@]}]=--uname-2.6 ;;
72 (squeeze|squeeze-*) cmd[${#cmd[@]}]=--uname-2.6 ;;
73 (dapper|dapper-*) cmd[${#cmd[@]}]=--uname-2.6 ;;
74 (hardy|hardy-*) cmd[${#cmd[@]}]=--uname-2.6 ;;
75 (jaunty|jaunty-*) cmd[${#cmd[@]}]=--uname-2.6 ;;
76 (karmic|karmic-*) cmd[${#cmd[@]}]=--uname-2.6 ;;
77 (lucid|lucid-*) cmd[${#cmd[@]}]=--uname-2.6 ;;
78 (maverick|maverick-*) cmd[${#cmd[@]}]=--uname-2.6 ;;
79 (natty|natty-*) cmd[${#cmd[@]}]=--uname-2.6 ;;
80 }
81
82 set -x
83 exec sudo "${cmd[@]}" cowbuilder "$@"