File: libimport

package info (click to toggle)
mol 0.9.70-17
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 6,436 kB
  • ctags: 11,008
  • sloc: ansic: 60,495; asm: 3,306; makefile: 716; yacc: 706; sh: 546; lex: 501; cpp: 370; perl: 228; pascal: 18
file content (171 lines) | stat: -rwxr-xr-x 4,508 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
#!/bin/bash
####################################################################
# Targets for downloading binary files (the BitKeeper tree does
# not contain MacOS binaries etc.)
####################################################################

RSYNC_MODULE=rsync.penguinppc.org::libmol
#ALT_RSYNC_MODULE=zorn.theophys.kth.se::libmol
ALT_RSYNC_MODULE=master.penguinppc.org::libmol

RSYNC_MODULE_R=master.penguinppc.org::libmol
RSYNC_MODULE_RW=samuel@master.penguinppc.org::libmol-rw

EXTRA_BIN_FILES="drivers/*.nw drivers/*.ow drivers/*.x drivers/bootx \
		drivers/of drivers/*.mkext graphics/*.raw graphics/*.png \
		nvram/nvram.dist startboing images/*.dmg VERSION"


###################################
# copybinfiles srcdir destdir
###################################

function copybinfiles()
{
    echo "=========================================================="
    echo " Copying binary files from $1 to $2"
    echo "=========================================================="

    set -f
    for x in $EXTRA_BIN_FILES ; do
	V1=`find $1 -path $1/$x`
	for X in $V1 ; do
	    Y=`echo $X | sed -e s/$1/$2/`
	    echo " $X -> $Y"
	    ln -f $X $Y || exit 1
	done
    done
    set +f
}

function do_populate() 
{
    [ ! -f libimport/drivers/video.nw ] && {
	echo "====== This tree does not contain any binary files! ===="
	exit 1
    }

    for x in graphics drivers images nvram ; do
	test -d mollib/$x || mkdir mollib/$x
    done

    copybinfiles libimport mollib
    echo "======================== DONE ============================"
}

function do_import() 
{
    echo "=========================================================="
    echo " Downloading binaries from $RSYNC_MODULE"
    echo "=========================================================="

    rsync -avz --delete $RSYNC_MODULE/ libimport/ || {
	echo "An error occurred, retrying..."
	rsync -avz --delete $RSYNC_MODULE/ libimport/ || {
	    echo "An error ocurred, trying secondary rsync server ($ALT_RSYNC_MODULE)."
	    rsync -avz --delete $ALT_RSYNC_MODULE/ libimport/ || exit 1;
	}
    }

    [ ! -f libimport/drivers/video.nw ] && {
	echo "====== This tree does not contain any binary files! ===="
	exit 1
    }
}


function do_export()
{
    [ ! -f mollib/drivers/video.nw ] && {
	echo "===== This tree does not contain any binary files! ===="
	exit 1;
    }
    rm -rf libimport.BAK libimport
    rsync -avz --delete $RSYNC_MODULE_R/ libimport.BAK/ || exit 1;

    mkdir libimport libimport/drivers libimport/nvram libimport/images libimport/graphics
    copybinfiles mollib libimport

    echo
    echo "======================= CHANGES =========================="
    set -f
    ORG=`find libimport.BAK -type f`
    for x in $ORG ; do
	y=`echo $x | sed -e s/libimport.BAK/libimport/`
	[ ! -f $y ] && {
	    echo
	    echo "    WARNING: File '$x' will be removed"
	    echo "    `ls -l $x`"
	    echo
	}
	[ -f $y ] && {
	    cmp $x $y >& /dev/null && {
		echo "    Unmodified: `echo $y | sed -e s/libimport//`"
	    } || {
		echo
		echo "    MODIFIED FILE: '$x'"
		echo "    Old: `ls -l $x`"
		q=`echo $x | sed -e s/.BAK//`
		echo "    New: `ls -l $q`"
	    }
	}
    done
    NEW=`find libimport -type f`
    for x in $NEW ; do
	y=`echo $x | sed -e s/libimport/libimport.BAK/`
	[ ! -f $y ] && {
	    echo
	    echo "    NEW file: '$x'"
	    echo "    `ls -l $x`"
	}
    done

    set +f
    echo
    echo "=========================================================="
    echo "Next step is upload to $RSYNC_MODULE_RW" 
    read -n 1 -p "Proceed [y/N]? " flag
    echo
    [ "$flag" == "y" -o "$flag" == "Y" ] && {
	rsync -avz --delete --delete-excluded libimport/ $RSYNC_MODULE_RW
    } || {
	echo --- Aborted ---
    }
}

function do_delete()
{
    set -f
    echo "=========================================================="
    echo " Deleting binaries files"
    echo "=========================================================="

    for X in $EXTRA_BIN_FILES ; do
	find mollib -path mollib/$X -print -exec rm -f {} ';'
    done
    echo "==================== DONE ================================"
    exit 0
}


###################################
# Main
###################################

[ $# == 0 ] && {
    echo "Usage: libimport import|export|delete"
    exit 1
}

case $1 in
    delete)	do_delete ;;
    export)	do_export ;;
    import)	do_import ; do_populate ;;
    populate)	do_populate ;;
    import_dist)
		RSYNC_MODULE=$RSYNC_MODULE_R
		do_import ;;
    *)		echo "bad command $1" ; exit 1 ;;
esac

exit 0