source: projects/vine-rpm-helper/trunk/mkrpmspec.in @ 4895

Revision 4895, 7.0 KB checked in by yasumichi, 13 years ago (diff)

COPYING が見つからずパッケージタイプが Perl である場合、Perl と同等のライ

センスを設定するようにした。

RevLine 
[995]1#!/bin/sh
2
[1009]3#
[4879]4# remove old directory
5#
6RemoveOldDir()
7{
8        rm -rf ${BUILDDIR}/${PKGDIR}
9}
10
11#
[4885]12# check documentation
13#
14CheckDocumentation()
15{
16        DOCFILES=
[4886]17        for FILE in AUTHORS COPYING ChangeLog Changes HACKING LICENSE MAINTAINERS NEWS README THANKS TODO
[4885]18        do
19                if [ -f ${BUILDDIR}/${PKGDIR}/${FILE} ]; then
[4886]20                        echo "Found: ${FILE}"
[4885]21                        DOCFILES="${DOCFILES} ${FILE}"
22                fi
23        done
24}
25
26#
[4880]27# check gettextize
28#
29CheckGettexize()
30{
31        if [ -d ${BUILDDIR}/${PKGDIR}/po ];then
32                GETTEXTIZE=yes
33        else
34                GETTEXTIZE=no
35        fi
36}
37
38#
[4894]39# check license
40#
41CheckLicense()
42{
43        LICENSE=
44        if [ -f ${BUILDDIR}/${PKGDIR}/COPYING ]; then
45                MD5SUM=`md5sum ${BUILDDIR}/${PKGDIR}/COPYING`
46                LICENSE=`grep ${MD5SUM} @PKGDATADIR@/licences-md5sum.dat | cut -f2`
[4895]47        elif [ "${PKGTYPE}" = "Perl" ]; then
48                LICENSE="Artistic or GPL"
[4894]49        fi
50
51        if [ "x${LICENSE}" = "x" ]; then
52                LICENSE="FIXEME"
53        fi
54}
55
56#
[4879]57# check package type
58#
59CheckPkgType()
60{
61        if [ -f ${BUILDDIR}/${PKGDIR}/Makefile.PL ]; then
62                PKGTYPE=Perl
[4888]63                NAME="perl-%{pkgname}"
64                LINKTARGET=$(dirname `rpm -E '%_sourcedir'`)/`echo ${NAME} | sed -e "s/%{pkgname}/${PKGNAME}/"`
65                if [ ! -r ${LINKTARGET} ]; then
66                        ln -sv ${SOURCEDIR} ${LINKTARGET}
67                fi
[4879]68        elif [ -f ${BUILDDIR}/${PKGDIR}/setup.py ]; then
69                PKGTYPE=Python
[4888]70                NAME=$PKGNAME
[4879]71        elif [ -f ${BUILDDIR}/${PKGDIR}/configure ]; then
72                PKGTYPE=autotoolize
[4888]73                NAME=$PKGNAME
[4879]74        else
75                echo "Unknown package type." 1>&2
76                exit 1
77        fi
78        echo "パッケージは ${PKGTYPE} パッケージであると認識ました。"
[4889]79
80        # replace SOURCE
81        if [ ${NAME} = ${PKGNAME} ]; then
82                SOURCE=`echo ${SOURCE} | sed -e "s/${PKGNAME}/%{name}/g" -e "s/${PKGVERSION}/%{version}/g"`
83        else
84                SOURCE=`echo ${SOURCE} | sed -e "s/${PKGNAME}/%{pkgname}/g" -e "s/${PKGVERSION}/%{version}/g"`
85        fi
[4879]86}
87
88#
89# check package
90#
91CheckPackage()
92{
93        case $SUFFIX in
94                .tar.gz)
95                        PKGDIR=$(basename `tar ztf ${PKGSOURCE} | head -1`)
96                        RemoveOldDir
97                        (cd $BUILDDIR && tar zxf ${PKGSOURCE})
98                        ;;
99                .tar.bz2)
100                        PKGDIR=$(basename `tar jtf ${PKGSOURCE} | head -1`)
101                        RemoveOldDir
102                        (cd $BUILDDIR && tar jxf ${PKGSOURCE})
103                        ;;
104                *.tar.xz)
105                        PKGDIR=$(basename `tar Jtf ${PKGSOURCE} | head -1`)
106                        RemoveOldDir
107                        (cd $BUILDDIR && tar Jxf ${PKGSOURCE})
108                        ;;
109                *)
110                        echo "Unknown format." 1>&2
111                        exit 1
112                        ;;
113        esac
114        echo "パッケージを ${BUILDDIR}/${PKGDIR} に展開しました。"
[4887]115        CheckPkgType
[4885]116        CheckDocumentation
[4880]117        CheckGettexize
[4894]118        CheckLicense
[4879]119}
120
121#
[995]122# check scheme
[1009]123#
[995]124CheckScheme()
125{
126        case $ARCHIVE in
[4705]127                http://* | https://* | ftp://*)
[995]128                        if wget -P $SOURCEDIR -nc $ARCHIVE ;then        # download
129                                SOURCE=$ARCHIVE
130                        else
131                                exit 1                  # exit when failed download
132                        fi
133                        ;;
134                *)
135                        if [ -f $ARCHIVE ];then
[4842]136                                mkdir -p $SOURCEDIR
[995]137                                echo "move $ARCHIVE to $SOURCEDIR."
138                                mv $ARCHIVE $SOURCEDIR
139                                SOURCE=`basename $ARCHIVE`
140                        else
141                                echo "$ARCHIVE is not file." 1>&2
142                                exit 1
143                        fi
144                        ;;
145        esac 
146}
147
[1009]148#
[995]149# check suffix
[1009]150#
[995]151CheckSuffix()
152{
153        case $ARCHIVE in
154                *.tar.gz)
155                        BASENAME=`basename $ARCHIVE .tar.gz`
[1009]156                        SUFFIX=".tar.gz"
[995]157                        ;;
158                *.tar.bz2)
159                        BASENAME=`basename $ARCHIVE .tar.bz2`
[1009]160                        SUFFIX=".tar.bz2"
[995]161                        ;;
[4763]162                *.tar.xz)
163                        BASENAME=`basename $ARCHIVE .tar.xz`
164                        SUFFIX=".tar.xz"
165                        ;;
[995]166                *.zip)
167                        BASENAME=`basename $ARCHIVE .zip`
[1009]168                        SUFFIX=".zip"
[995]169                        ;;
170                *)
171                        echo "Unknown format." 1>&2
172                        exit 1
173                        ;;
174        esac
175}
176
[1009]177#
178# output basic information
179#
180OutputBasicInfo()
181{
[4888]182        if [ $NAME != $PKGNAME ];then
183                echo "%define   pkgname $PKGNAME" > $SPECFILE
184                echo >> $SPECFILE
185        else
186                echo > $SPECFILE
187        fi
188
189cat >> $SPECFILE << EOL
[1009]190# Basic Information
[4888]191Name:           $NAME
[1009]192Version:        $PKGVERSION
193Release:        1%{?_dist_release}
[4879]194# License は、COPYING などのファイルを参考に適切なものに変更してください。
[1009]195License:        $LICENSE
[4879]196# Group は、/usr/share/doc/rpm-`rpm --version | awk '{ print $3 }'`/GROUPS_for_vine.txt を参照して適切なものに変更してください。
197Group:          FIXME
[1009]198Source0:        $SOURCE
[4820]199BuildRoot:      %{_tmppath}/%{name}-%{version}-root
[1009]200
[4820]201Vendor:         Project Vine
202Distribution:   Vine Linux
[4884]203Packager:       $TRACKID
[1009]204
[4895]205Summary:        FIXME
[1009]206Summary(ja):    ここに日本語で概要を記述してください
207
[1209]208# Dependency
209# 以下に依存関係を記述してください。
210
[1009]211%description
[4895]212FIXME
[1009]213
214%description -l ja
215ここに日本語で詳細を記述してください。
216
217EOL
218}
219
220#
221# Output prep section
222#
223OutputPrep()
224{
225        echo '%prep' >> $SPECFILE
226
[4879]227        if [ "${PKGNAME}-${PKGVERSION}" != "${PKGDIR}" ]; then
228                SETUPOPT=" -n ${PKGDIR}"
229        fi
[1009]230        # setup corresponding to suffix
231        case $SUFFIX in
[4763]232                .tar.gz | .tar.bz2 | .tar.xz)
[4879]233                        echo "%setup -q${SETUPOPT}" >> $SPECFILE
[1009]234                        ;;
235                .zip)
[4879]236                        echo "%setup -T %{name}-%{version}" >> $SPECFILE
[1009]237                        echo 'unzip -xq %{SOURCE0}' >> $SPECFILE
238                        ;;     
239        esac
240
241        echo '' >> $SPECFILE
242}
243
244#
245# Output build section
246#
247OutputBuild()
248{
249        echo '%build' >> $SPECFILE
[4879]250        case ${PKGTYPE} in
251                Perl)
252                        echo 'make Makefile.PL' >> $SPECFILE
253                        echo '%{__make}' >> $SPECFILE
254                        ;;
255                Python)
256                        echo '%{__python} setup.py build' >> $SPECFILE
257                        ;;
258                autotoolize)
259                        echo '%configure' >> $SPECFILE
260                        echo '%{__make} %{?_smp_mflags}' >> $SPECFILE
261                        ;;
262        esac
[1009]263
264        echo '' >> $SPECFILE
265}
266
267#
268# Output install section
269#
270OutputInstall()
271{
272cat >> $SPECFILE << EOL
273%install
[1180]274%{__rm} -rf \${RPM_BUILD_ROOT}
[4880]275EOL
[1009]276
[4880]277        case ${PKGTYPE} in
278                Python)
279                        echo "%{__python} setup.py install --root=${RPM_BUILD_ROOT}" >> $SPECFILE
280                        ;;
281                Perl|autotoolize)
282                        echo "%{__make} install DESTDIR=\${RPM_BUILD_ROOT}" >> $SPECFILE
283                        ;;
284        esac
[1009]285
[4880]286        if [ "${GETTEXTIZE}" = "yes" ]; then
287                echo >> $SPECFILE
288                echo "%find_lang %{name}" >> $SPECFILE
289                echo >> $SPECFILE
290        fi
[1009]291
[4880]292cat >> $SPECFILE << EOL
[4885]293
[1009]294%clean
[1180]295%{__rm} -rf \${RPM_BUILD_ROOT}
[1009]296
297
298EOL
299}
300
301#
302# Output file list
303#
304OutputFileList()
305{
[4880]306        if [ "${GETTEXTIZE}" = "yes" ]; then
307                echo "%files -f %{name}.lang" >> $SPECFILE
308        else
309                echo "%files" >> $SPECFILE
310        fi
311
[1009]312# ToDo: check file exists
313cat >> $SPECFILE << EOL
314%defattr(-,root,root)
[4885]315EOL
[1009]316
[4885]317        if [ "x${DOCFILES}" != "x" ]; then
318                echo "%doc${DOCFILES}" >> $SPECFILE
319        fi
320
321        echo >> $SPECFILE
[1009]322}
323
324#
325# Output ChangeLog
326#
327OutputChangeLog()
328{
329cat >> $SPECFILE << EOL
330%changelog
[4884]331* `LANG=C LANGUAGE=C LC_ALL=C date '+%a %b %d %Y'` $FULLNAME <$EMAIL> $PKGVERSION-1
[1009]332- initial build for Vine Linux
333EOL
334}
335
336#
337# main
338#
339
[995]340# check arguments
341if [ -z "$*" ]; then
342        echo "Usage: `basename $0` source-archive"
343        exit 1
344fi
345
346ARCHIVE=$1
347
[4884]348# load configuration
349if [ -f $HOME/.config/vine-rpm-helper/mkrpmspec.conf ]; then
350        source $HOME/.config/vine-rpm-helper/mkrpmspec.conf
351else
352        TRACKID="FIXME"
353        FULLNAME="Your Name"
354        EMAIL="name@yours.example.com"
355fi
356
[995]357CheckSuffix
358
[1202]359PKGNAME=`echo $BASENAME | sed -e 's/-[0-9][0-9.]*.*//'`
360PKGVERSION=`echo $BASENAME | sed -e 's/^.*-\([0-9][0-9.]*.*\)/\1/'`
[995]361SOURCE=`echo $SOURCE | sed -e "s/$PKGNAME/%{name}/g" | sed -e "s/$PKGVERSION/%{version}/g"`
[4600]362SOURCEDIR=`rpm -E '%_sourcedir' | sed -e "s|%{name}|${PKGNAME}|"`
[4879]363PKGSOURCE=${SOURCEDIR}/`basename ${ARCHIVE}`
364BUILDDIR=`rpm -E '%_builddir'`
[995]365
[4600]366CheckScheme
367
[4888]368CheckPackage
369
370SPECDIR=`rpm -E '%_specdir'`/`echo ${NAME} | sed -e "s/%{pkgname}/${PKGNAME}/"`
[4820]371mkdir -p ${SPECDIR}
[4888]372SPECFILE=${SPECDIR}/`echo ${NAME} | sed -e "s/%{pkgname}/${PKGNAME}/"`-vl.spec
[995]373
374# Output SPEC file.
[1009]375OutputBasicInfo
376OutputPrep
377OutputBuild
378OutputInstall
379OutputFileList
380OutputChangeLog
[995]381
[1009]382# Output result
[995]383echo "made $SPECFILE"
Note: See TracBrowser for help on using the repository browser.