source: projects/vine-rpm-helper/tags/0.4/mkrpmspec.in @ 4958

Revision 4958, 7.9 KB checked in by yasumichi, 13 years ago (diff)

msgstr の誤りを修正

Line 
1#!/bin/sh
2
3# Directory
4prefix=@prefix@
5datarootdir=@datarootdir@
6datadir=@datadir@
7exec_prefix=@exec_prefix@
8libdir=@libdir@
9pluginsdir=${libdir}/vine-rpm-helper
10
11# Enable NLS
12export TEXTDOMAIN=vine-rpm-helper
13export TEXTDOMAINDIR=@localedir@
14
15. gettext.sh
16
17#
18# remove old directory
19#
20RemoveOldDir()
21{
22        if [ -n "${PKGDIR}" ]; then
23                rm -rf ${BUILDDIR}/${PKGDIR}
24        fi
25}
26
27#
28# check documentation
29#
30CheckDocumentation()
31{
32        DOCFILES=
33        for FILE in AUTHORS COPYING ChangeLog Changes HACKING LICENSE MAINTAINERS NEWS README THANKS TODO
34        do
35                if [ -f ${BUILDDIR}/${PKGDIR}/${FILE} ]; then
36                        echo "`eval_gettext "Found documentation: \\\${FILE}"`"
37                        DOCFILES="${DOCFILES} ${FILE}"
38                fi
39        done
40}
41
42#
43# check gettextize
44#
45CheckGettexize()
46{
47        if [ -d ${BUILDDIR}/${PKGDIR}/po ];then
48                GETTEXTIZE=yes
49        else
50                GETTEXTIZE=no
51        fi
52}
53
54#
55# check license
56#
57CheckLicense()
58{
59        LICENSE=
60        if [ -f ${BUILDDIR}/${PKGDIR}/COPYING ]; then
61                MD5SUM=`md5sum ${BUILDDIR}/${PKGDIR}/COPYING`
62                LICENSE=`grep ${MD5SUM} @PKGDATADIR@/licences-md5sum.dat | cut -f2`
63        elif [ "${PKGTYPE}" = "Perl" ]; then
64                LICENSE="Artistic or GPL"
65        fi
66
67        if [ "x${LICENSE}" = "x" ]; then
68                LICENSE="FIXEME"
69        fi
70}
71
72#
73# check package type
74#
75CheckPkgType()
76{
77        if [ -f ${BUILDDIR}/${PKGDIR}/Makefile.PL ]; then
78                PKGTYPE=Perl
79                NAME="perl-%{pkgname}"
80                LINKTARGET=$(dirname `rpm -E '%_sourcedir'`)/`echo ${NAME} | sed -e "s/%{pkgname}/${PKGNAME}/"`
81                if [ ! -r ${LINKTARGET} ]; then
82                        ln -sv ${SOURCEDIR} ${LINKTARGET}
83                fi
84        elif [ -f ${BUILDDIR}/${PKGDIR}/setup.py ]; then
85                PKGTYPE=Python
86                NAME=${PKGNAME}
87        elif [ -f ${BUILDDIR}/${PKGDIR}/configure ]; then
88                PKGTYPE=autotoolize
89                NAME=${PKGNAME}
90        else
91                echo "`eval_gettext "Unknown package type."`" 1>&2
92                exit 1
93        fi
94        echo "`eval_gettext "Detect package type is \\\${PKGTYPE}."`"
95
96        # replace SOURCE
97        if [ ${NAME} = ${PKGNAME} ]; then
98                SOURCE=`echo ${SOURCE} | sed -e "s/${PKGNAME}/%{name}/g" -e "s/${PKGVERSION}/%{version}/g"`
99        else
100                SOURCE=`echo ${SOURCE} | sed -e "s/${PKGNAME}/%{pkgname}/g" -e "s/${PKGVERSION}/%{version}/g"`
101        fi
102}
103
104#
105# check package
106#
107CheckPackage()
108{
109        if [ ! -f ${PKGSOURCE} ]; then
110                echo "`eval_gettext "Can't find \\\${PKGSOURCE}"`" 1>&2
111                exit
112        fi
113
114        FIRST=`eval ${LIST_CMD} ${PKGSOURCE} ${ADD_OPT} | head -1`
115        if [ -z "${FIRST}" ]; then
116                echo "`eval_gettext "\\\${PKGSOURCE} is invalid archive."`" 1>&2
117                file ${PKGSOURCE} 1>&2
118                exit 1
119        fi
120
121        PKGDIR=`basename ${FIRST}`
122        RemoveOldDir
123        (cd ${BUILDDIR} && eval ${EXT_CMD} ${PKGSOURCE} ${ADD_OPT})
124
125        echo "`eval_gettext "Extracted package to \\\${BUILDDIR}/\\\${PKGDIR}"`"
126        CheckPkgType
127        CheckDocumentation
128        CheckGettexize
129        CheckLicense
130}
131
132#
133# check scheme
134#
135CheckScheme()
136{
137        case ${ARCHIVE} in
138                http://* | https://* | ftp://*)
139                        if wget -P $SOURCEDIR -nc ${ARCHIVE} ;then      # download
140                                SOURCE=${ARCHIVE}
141                        else
142                                exit 1                  # exit when failed download
143                        fi
144                        ;;
145                *)
146                        if [ -f ${ARCHIVE} ];then
147                                mkdir -pv $SOURCEDIR
148                                echo "move ${ARCHIVE} to $SOURCEDIR."
149                                mv ${ARCHIVE} $SOURCEDIR
150                                SOURCE=`basename ${ARCHIVE}`
151                        else
152                                echo "${ARCHIVE} is not file." 1>&2
153                                exit 1
154                        fi
155                        ;;
156        esac
157}
158
159#
160# check packing type
161#
162CheckPackType()
163{
164        case ${ARCHIVE} in
165                *.tar.bz2)
166                        BASENAME=`basename ${ARCHIVE} .tar.bz2`
167                        PACKTYPE="bzip2"
168                        ;;
169                *.tbz)
170                        BASENAME=`basename ${ARCHIVE} .tbz`
171                        PACKTYPE="bzip2"
172                        ;;
173                *.tar.gz)
174                        BASENAME=`basename ${ARCHIVE} .tar.gz`
175                        PACKTYPE="gzip"
176                        ;;
177                *.tgz)
178                        BASENAME=`basename ${ARCHIVE} .tgz`
179                        PACKTYPE="gzip"
180                        ;;
181                *.tar.lzma)
182                        BASENAME=`basename ${ARCHIVE} .tar.lzma`
183                        PACKTYPE="lzma"
184                        ;;
185                *.tlz)
186                        BASENAME=`basename ${ARCHIVE} .tlz`
187                        PACKTYPE="lzma"
188                        ;;
189                *.tar.xz)
190                        BASENAME=`basename ${ARCHIVE} .tar.xz`
191                        PACKTYPE="xz"
192                        ;;
193                *.txz)
194                        BASENAME=`basename ${ARCHIVE} .txz`
195                        PACKTYPE="xz"
196                        ;;
197                *.zip)
198                        BASENAME=`basename ${ARCHIVE} .zip`
199                        PACKTYPE="zip"
200                        ;;
201                *)
202                        echo "Unknown format." 1>&2
203                        exit 1
204                        ;;
205        esac
206
207        # load plugin
208        if [ -f ${pluginsdir}/${PACKTYPE} ]; then
209                source ${pluginsdir}/${PACKTYPE}
210        else
211                echo "`eval_gettext "Can't find \\\${pluginsdir}/\\\${PACKTYPE}"`" 1>&2
212                exit 1
213        fi
214}
215
216#
217# output basic information
218#
219OutputBasicInfo()
220{
221        if [ $NAME != ${PKGNAME} ];then
222                echo "%define   pkgname ${PKGNAME}" > ${SPECFILE}
223                echo >> ${SPECFILE}
224        else
225                echo > ${SPECFILE}
226        fi
227
228cat >> ${SPECFILE} << EOL
229# Basic Information
230Name:           ${NAME}
231Version:        ${PKGVERSION}
232Release:        1%{?_dist_release}
233EOL
234
235        echo "`eval_gettext "# Please refer to COPYING etc. and correct License."`" >> ${SPECFILE}
236        echo "License:  ${LICENSE}" >> ${SPECFILE}
237        GROUPS4VINE=/usr/share/doc/rpm-`rpm --version | awk '{ print $3 }'`/GROUPS_for_vine.txt
238        echo "`eval_gettext "# Please refer to \\\${GROUPS4VINE} and correct Group."`" >> ${SPECFILE}
239        echo "Group:            FIXME" >> ${SPECFILE}
240
241cat >> ${SPECFILE} << EOL
242Source0:        ${SOURCE}
243BuildRoot:      %{_tmppath}/%{name}-%{version}-root
244
245Vendor:         Project Vine
246Distribution:   Vine Linux
247Packager:       ${TRACKID}
248
249Summary:        FIXME
250EOL
251
252        case ${LANG} in
253        ja_JP*)
254                echo "`eval_gettext "Summary(ja):       Describe summary here in Japanese."`" >> ${SPECFILE}
255                ;;
256        esac
257        echo >> ${SPECFILE}
258
259        OutputDependency
260
261cat >> ${SPECFILE} << EOL
262%description
263FIXME
264
265EOL
266
267        case ${LANG} in
268        ja_JP*)
269                echo "%description -l ja" >> ${SPECFILE}
270                echo "`eval_gettext "describe description here in Japanese."`" >> ${SPECFILE}
271                echo >> ${SPECFILE}
272                ;;
273        esac
274}
275
276#
277# Output prep section
278#
279OutputPrep()
280{
281        echo '%prep' >> ${SPECFILE}
282
283        if [ "${NAME}-${PKGVERSION}" != "${PKGDIR}" ]; then
284                SETUPOPT=" -n ${PKGDIR}"
285        fi
286        # setup corresponding to suffix
287        case ${PACKTYPE} in
288                bzip2 | gzip | lzma | xz)
289                        echo "%setup -q${SETUPOPT}" >> ${SPECFILE}
290                        ;;
291                zip)
292                        echo "%setup -T %{name}-%{version}" >> ${SPECFILE}
293                        echo 'unzip -xq %{SOURCE0}' >> ${SPECFILE}
294                        ;;     
295        esac
296
297        echo '' >> ${SPECFILE}
298}
299
300#
301# Output clean section
302#
303OutputClean()
304{
305cat >> ${SPECFILE} << EOL
306
307%clean
308%{__rm} -rf \${RPM_BUILD_ROOT}
309
310
311EOL
312}
313
314#
315# Output file list
316#
317OutputFileList()
318{
319        if [ "${GETTEXTIZE}" = "yes" ]; then
320                echo "%files -f %{name}.lang" >> ${SPECFILE}
321        elif [ "${PKGTYPE}" = "Perl" ]; then
322                echo "%files -f %{name}.files" >> ${SPECFILE}
323        else
324                echo "%files" >> ${SPECFILE}
325        fi
326
327# ToDo: check file exists
328cat >> ${SPECFILE} << EOL
329%defattr(-,root,root)
330EOL
331
332        if [ "x${DOCFILES}" != "x" ]; then
333                echo "%doc${DOCFILES}" >> ${SPECFILE}
334        fi
335
336        echo >> ${SPECFILE}
337}
338
339#
340# Output ChangeLog
341#
342OutputChangeLog()
343{
344cat >> ${SPECFILE} << EOL
345%changelog
346* `LANG=C LANGUAGE=C LC_ALL=C date '+%a %b %d %Y'` $FULLNAME <$EMAIL> $PKGVERSION-1
347- initial build for Vine Linux
348EOL
349}
350
351#
352# main
353#
354
355# check arguments
356if [ -z "$*" ]; then
357        echo "Usage: `basename $0` source-archive"
358        exit 1
359fi
360
361ARCHIVE=$1
362
363# load configuration
364if [ -f $HOME/.config/vine-rpm-helper/mkrpmspec.conf ]; then
365        source $HOME/.config/vine-rpm-helper/mkrpmspec.conf
366else
367        TRACKID="FIXME"
368        FULLNAME="Your Name"
369        EMAIL="name@yours.example.com"
370fi
371
372CheckPackType
373
374PKGNAME=`echo ${BASENAME} | sed -e 's/-[0-9][0-9.]*.*//'`
375PKGVERSION=`echo ${BASENAME} | sed -e 's/^.*-\([0-9][0-9.]*.*\)/\1/'`
376SOURCE=`echo $SOURCE | sed -e "s/${PKGNAME}/%{name}/g" | sed -e "s/$PKGVERSION/%{version}/g"`
377SOURCEDIR=`rpm -E '%_sourcedir' | sed -e "s|%{name}|${PKGNAME}|"`
378PKGSOURCE=${SOURCEDIR}/`basename ${ARCHIVE}`
379BUILDDIR=`rpm -E '%_builddir'`
380
381CheckScheme
382
383CheckPackage
384
385SPECDIR=`rpm -E '%_specdir'`/`echo ${NAME} | sed -e "s/%{pkgname}/${PKGNAME}/"`
386mkdir -pv ${SPECDIR}
387SPECFILE=${SPECDIR}/`echo ${NAME} | sed -e "s/%{pkgname}/${PKGNAME}/"`-vl.spec
388
389# Backup spec file
390if [ -f ${SPECFILE} ]; then
391        cp -v ${SPECFILE}{,.`LANG=C LANGUAGE=C LC_ALL=C date '+%Y%m%d%H%M%S'`}
392fi
393
394# Load plugins
395if [ -f ${pluginsdir}/${PKGTYPE} ]; then
396        source ${pluginsdir}/${PKGTYPE}
397else
398        echo "`eval_gettext "Can't find \\\${pluginsdir}/\\\${PKGTYPE}"`" 1>&2
399        exit 1
400fi
401
402# Output SPEC file.
403OutputBasicInfo
404OutputPrep
405OutputBuild
406OutputInstall
407
408if [ "${GETTEXTIZE}" = "yes" ]; then
409        echo >> ${SPECFILE}
410        echo "%find_lang %{name}" >> ${SPECFILE}
411        echo >> ${SPECFILE}
412fi
413
414OutputClean
415OutputFileList
416OutputChangeLog
417
418# Output result
419echo "`eval_gettext "Created \\\${SPECFILE}"`"
Note: See TracBrowser for help on using the repository browser.