File: generate_packages.sh

package info (click to toggle)
libjodycode 4.1.2-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 3,676 kB
  • sloc: ansic: 2,820; makefile: 372; sh: 160; xml: 37
file content (95 lines) | stat: -rwxr-xr-x 2,873 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
#!/bin/bash

# Generate package folders with variant builds

# Number of parallel make processes
test -z "$PM" && PM=12

NAME="libjodycode"

VER="$(grep '#define\s\s*LIBJODYCODE_VER .*"' < libjodycode.h | cut -d\" -f2)"
echo "Program version: $VER"

TA=__NONE__
ITYPE=flat
PKGTYPE=gz
EXT1=.so; EXT2=.a

UNAME_S="$(uname -s | tr '[:upper:]' '[:lower:]')"
UNAME_P="$(uname -p)"
UNAME_M="$(uname -m)"

# Detect macOS
if [ "$UNAME_S" = "darwin" ]
	then
	PKGTYPE=zip
	TA=mac32
	test "$UNAME_M" = "x86_64" && TA=mac64
fi

# Detect Power Macs under macOS
if [[ "$UNAME_P" = "Power Macintosh" || "$UNAME_P" = "powerpc" ]]
	then
	PKGTYPE=zip
	TA=macppc32
	test "$(sysctl hw.cpu64bit_capable)" = "hw.cpu64bit_capable: 1" && TA=macppc64
fi

# Detect Linux
if [ "$UNAME_S" = "linux" ]
	then
	TA="linux-$UNAME_M"
	ITYPE=inst
	[ ! -z "$ARCH" ] && TA="linux-$ARCH"
	PKGTYPE=xz
fi

# Fall through - assume Windows
if [ "$TA" = "__NONE__" ]
	then
	PKGTYPE=zip
	TGT=$(gcc -v 2>&1 | grep Target | cut -d\  -f2- | cut -d- -f1)
	test "$TGT" = "i686" && TA=win32
	test "$TGT" = "x86_64" && TA=win64
	test "$UNAME_S" = "MINGW32_NT-5.1" && TA=winxp
	EXT1=".dll"
fi

echo "Target architecture: $TA"
test "$TA" = "__NONE__" && echo "Failed to detect system type" && exit 1
PKGNAME="${NAME}-${VER}-$TA"

echo "Generating package for: $PKGNAME"
rm -r "$PKGNAME"
mkdir -p "$PKGNAME"
test ! -d "$PKGNAME" && echo "Can't create directory for package" && exit 1

[ "$ITYPE" = "flat" ] && cp CHANGES.txt README.md LICENSE.txt libjodycode.h $PKGNAME/

E1=2
make clean && make -j$PM stripped && E1=$((E1 - 1))
[ "$ITYPE" = "flat" ] && cp -R $NAME${EXT1}* $NAME$EXT2 $PKGNAME/ && E1=$((E1 - 1))
[ "$ITYPE" = "inst" ] && make PREFIX=/usr DESTDIR=$(pwd)/$PKGNAME/ install && E1=$((E1 - 1))

[ $E1 -gt 0 ] && echo "Error building packages; aborting." && exit 1

#make clean
# Make a fat binary on macOS x86_64 if possible
#if [ "$TA" = "mac64" ] && ld -v 2>&1 | grep -q 'archs:.*i386'
#	then
#	ERR=0
#	TYPE=-i386; CE=-m32
#	# On macOS Big Sur (Darwin 20) or higher, try to build a x86_64 + arm64 binary
#	[ $(uname -r | cut -d. -f1) -ge 20 ] && TYPE=-arm64 && CE="-target arm64-apple-macos11"
#	make clean && make -j$PM CFLAGS_EXTRA="$CE" stripped && cp $NAME$EXT1 $PKGNAME/$NAME$EXT$TYPE || ERR=1
#	[ $ERR -eq 0 ] && lipo -create -output $PKGNAME/libjodycode_temp $PKGNAME/$NAME$EXT$TYPE $PKGNAME/$NAME$EXT && mv $PKGNAME/libjodycode_temp $PKGNAME/$NAME$EXT
#	make clean
#	test $ERR -gt 0 && echo "Error building packages; aborting." && exit 1
#	rm -f $PKGNAME/$NAME$EXT$TYPE
#fi
TARDIR="$PKGNAME"
[ "$ITYPE" = "inst" ] && cd "$PKGNAME" && PFX="../" && TARDIR=usr
[ "$PKGTYPE" = "zip" ] && zip -9r $PFX$PKGNAME.zip $TARDIR
[ "$PKGTYPE" = "gz" ]  && tar -c $TARDIR | gzip -9 > $PFX$PKGNAME.pkg.tar.gz
[ "$PKGTYPE" = "xz" ]  && tar -c $TARDIR | xz -e > $PFX$PKGNAME.pkg.tar.xz
echo "Package generation complete."