Contents of /trunk/mage/usr/lib/mage/meta-generator.sh
Parent Directory | Revision Log
Revision 2287 -
(show annotations)
(download)
(as text)
Fri Dec 6 09:08:31 2013 UTC (10 years, 6 months ago) by niro
File MIME type: application/x-sh
File size: 4202 byte(s)
Fri Dec 6 09:08:31 2013 UTC (10 years, 6 months ago) by niro
File MIME type: application/x-sh
File size: 4202 byte(s)
-initial release
1 | #!/bin/bash |
2 | # meta generator |
3 | |
4 | # metafile matrix |
5 | |
6 | # Common infos -> meta |
7 | # ---------------------------- |
8 | # lineno description example |
9 | # 01 PNAME glibc-nptl |
10 | # 02 PCATEGORIE sys-libs |
11 | # 03 PVER 2.5.0 |
12 | # 04 PBUILD 7 |
13 | # 05 STATE unstable |
14 | # 06 DESCRIPTION GNU libc6 (also called glibc2) C library with NPTL Threads. |
15 | # 07 HOMEPAGE http://www.gnu.org/software/libc/libc.html |
16 | # 08 PKGTYPE |
17 | # 09 SPLIT_PACKAGE_BASE |
18 | # 10 INHERITS mtools |
19 | # |
20 | # # Arch specific -> ${arch}/desc |
21 | # ---------------------------- |
22 | # lineno description example |
23 | # 1 MD5 7ba206976e312a456dc29cea4bb283ea |
24 | # 2 SIZE |
25 | # 3 MTIME 1187714117 |
26 | # |
27 | # Dependencies |
28 | # --------------------------------- |
29 | # DEPEND -> ${ARCH}/depend |
30 | # SDEPEND -> ${ARCH}/sdepend |
31 | # PROVIDE -> ${ARCH}/provide |
32 | # |
33 | # # Content |
34 | # --------------------------------- |
35 | # CHAR -> ${ARCH}/char |
36 | # DIRS -> ${ARCH}/dirs |
37 | # FILES -> ${ARCH}/files |
38 | # PIPES -> ${ARCH}/pipes |
39 | # SYMLINKS -> ${ARCH}/symlinks |
40 | |
41 | # --extract -> extract info from given package |
42 | # no params given/smage2, it uses the current build environment |
43 | |
44 | |
45 | # default die function |
46 | die() |
47 | { |
48 | echo -e ${COLRED}"Exited ${BASH_SOURCE} at line no ${BASH_LINENO}."${COLDEFAULT} |
49 | echo -e ${COLRED}"$@"${COLDEFAULT} |
50 | exit 1 |
51 | } |
52 | |
53 | add2meta() |
54 | { |
55 | local var="$1" |
56 | local value="$2" |
57 | |
58 | echo "${var}=\"${value}\"" >> ${METAFILE} |
59 | } |
60 | |
61 | ## only for tests -> normally in /etc/rc.d/init.d/functions |
62 | COLRED="\033[1;6m\033[31m" |
63 | COLGREEN="\033[1;6m\033[32m" |
64 | COLYELLOW="\033[1;6m\033[33m" |
65 | COLBLUE="\033[1;6m\033[34m" |
66 | COLMAGENTA="\033[1;6m\033[35m" |
67 | COLWHITE="\033[1;6m\033[37m" |
68 | COLGRAY="\033[0;6m\033[37m" |
69 | COLBOLD="\033[1m" |
70 | COLDEFAULT="\033[0m" |
71 | |
72 | # get mage environment |
73 | [ -f /etc/mage.rc.global ] && source /etc/mage.rc.global || die "/etc/mage.rc.global missing" |
74 | [ -f ${MAGERC} ] && source ${MAGERC} || die "Your ${MAGERC} is missing. Aborting." |
75 | [ -f ${MLIBDIR}/mage4.functions.sh ] && source ${MLIBDIR}/mage4.functions.sh || die "mage functions missing" |
76 | |
77 | # default variables |
78 | PKGTARBALL="" |
79 | SMAGEFILE="" |
80 | METADIR="${PKGDIR}/meta" |
81 | METASUFFIX="meta" |
82 | METAFILE="" |
83 | |
84 | # very basic getops |
85 | for i in $* |
86 | do |
87 | case $1 in |
88 | --extract|-c) shift; PKGTARBALL="$1" ;; |
89 | esac |
90 | # shift |
91 | done |
92 | |
93 | SMAGEFILE="$1" |
94 | |
95 | if [[ -n ${PKGTARBALL} ]] |
96 | then |
97 | # abort if given file is not a pkg |
98 | [[ ${PKGTARBALL##*.} != ${PKGSUFFIX} ]] && die "${PKGTARBALL} is not a valid pkg file." |
99 | |
100 | [[ ! -d ${SOURCEDIR} ]] && install -d ${SOURCEDIR} |
101 | |
102 | # unpack srctarball |
103 | [[ ! -f ${PKGTARBALL} ]] && die "Error: ${PKGTARBALL} does not exist. Aborting." |
104 | |
105 | # set correct SMAGENAME; use the one that the src_pkg provide |
106 | # /path/to/SOURCEDIR/PNAME/SMAGENAME |
107 | SMAGEFILE="${SOURCEDIR}/$(basename ${PKGTARBALL%-*-*})/$(basename ${PKGTARBALL} .${PKGSUFFIX}).${SMAGESUFFIX}" |
108 | |
109 | tar xvjf ${SRCPKGTARBALL} -C ${SOURCEDIR} || die "Error unpackung src-tarball ${SRCPKGTARBALL}" |
110 | fi |
111 | |
112 | # get generic package information from smage file |
113 | source ${SMAGEFILE} |
114 | |
115 | # set the right meta-location |
116 | [[ ! -d ${METADIR} ]] && install -d ${METADIR} |
117 | METAFILE="${METADIR}/${PNAME}-${PVER}-${ARCH}-${PBUILD}.${METASUFFIX}" |
118 | |
119 | # create a clean metafile |
120 | :> ${METAFILE} |
121 | |
122 | # basic packages information |
123 | add2meta PNAME "${PNAME}" |
124 | add2meta PCATEGORIE "${PCATEGORIE}" |
125 | add2meta PVER "${PVER}" |
126 | add2meta PBUILD "${PBUILD}" |
127 | #add2meta STATE "${STATE}" |
128 | add2meta DESCRIPTION "${DESCRIPTION}" |
129 | add2meta HOMEPAGE "${HOMEPAGE}" |
130 | add2meta PKGTYPE "${PKGTYPE}" |
131 | #add2meta SPLIT_PACKAGE_BASE "${SPLIT_PACKAGE_BASE}" |
132 | #add2meta INHERITS "${INHERITS}" |
133 | |
134 | # arch specific |
135 | add2meta ARCH "${ARCH}" |
136 | add2meta SIZE "$(du -Ds ${BUILDDIR}/${PNAME}-${PVER}-${ARCH}-${PBUILD}/binfiles | sed 's/^\(.*\)\t.*/\1/')" |
137 | add2meta MTIME "$(< ${BUILDDIR}/${PNAME}-${PVER}-${ARCH}-${PBUILD}/.mtime)" |
138 | |
139 | # provided binfiles |
140 | SEARCH_DIRS="bin,sbin,usr/bin,usr/sbin" |
141 | SEARCH_DIRS+=",usr/*/bin,usr/*/sbin" |
142 | SEARCH_DIRS+=",opt/bin,opt/*/bin,opt/*/sbin" |
143 | SEARCH_DIRS+=",opt/*/jre/bin" |
144 | # at last add braces |
145 | SEARCH_DIRS="{${SEARCH_DIRS}}" |
146 | # search them |
147 | add2meta PROVIDED_BINARIES "$(find $(eval echo ${BUILDDIR}/${PNAME}-${PVER}-${ARCH}-${PBUILD}/binfiles/${SEARCH_DIRS}) -type f -printf '%f ' 2> /dev/null)" |
148 | |
149 | # generate MD5SUM (get it with tail -n1) |
150 | echo >> ${METAFILE} |
151 | echo '# MD5 CHECKSUM:' >> ${METAFILE} |
152 | ( cd ${PKGDIR}; md5sum ${PNAME}-${PVER}-${ARCH}-${PBUILD}.${PKGSUFFIX} >> ${METAFILE} ) |