source: projects/texlive-vtlpkg/trunk/tlpdb2rpmspec.sh.in @ 10361

Revision 10361, 20.5 KB checked in by munepi, 8 years ago (diff)

updated to TeX Live 2016

  • Property svn:executable set to *
Line 
1#!/bin/bash
2# tlpdb2rpmspec
3#
4# Copyright 2010-2016 Munehiro Yamamoto <munepi@vinelinux.org>
5# This file is licensed under the GNU General Public License version 2
6# or any later version.
7
8Usage(){
9    cat<<EOF
10$(basename $0) @@VTLPKG_VERSION@@
11Usage:  $(basename $0) [option] [pkgname]
12
13TeX Live Package Database (a file named texlive.tlpdb) to RPM spec converter
14This script generates a RPM spec file of CTAN and collection-* packages
15contained in TeX Live @@VTLPKG_VERSION@@.
16
17Options:
18        --name:                 return [pkgname]
19        --category:             return the category of [pkgname]
20        --revision:             return the revision of [pkgname]
21        --depend:               return dependencies of [pkgname]
22        --shortdesc:            return the short description of [pkgname]
23        --longdesc:             return the description of [pkgname]
24        --execute:              return post processe of [pkgname]
25        --catalogue-ctan:       return the locate of [pkgname]
26        --catalogue-date:       return the last update of [pkgname]
27        --catalogue-license:    return the license of [pkgname]
28        --catalogue-version:    return the version of [pkgname]
29        --filelist:             return the filelist of [pkgname]
30        --help:                 show this help
31
32Supoort collection-* packages:
33$(egrep "^name collection-" $TLPDB | sed -e "s,name ,,g" | grep -v -e "texworks" -e "wintools")
34EOF
35}
36
37check-parameter(){
38    [ -z "$*" ] && Usage && return 1
39
40    while [ ! -z "$*" ]; do
41        case $1 in
42            --name|--category|--revision|--depend|--shortdesc|--longdesc|--execute|--catalogue-ctan|--catalogue-date|--catalogue-license|--catalogue-version|--filelist)
43                [ $with_option -eq 1 ] && \
44                    $__echo "E: you only give one option" && return 1
45                with_option=1
46                ;;
47            --help)
48                Usage
49                return 1
50                ;;
51            --minimal-collections|--standard-collections|--full-collections)
52                ;;
53            *)
54                [ -z "$(egrep -n "^name $1$" $TLPDB)" ] && \
55                    $__echo "E: unknown option or package: $1" && return 1
56                ;;
57        esac
58        shift
59    done
60
61    return 0
62}
63
64
65## tlpkg4a [--name|--category|--revision|--depend|--shortdesc|--longdesc|--execute|--catalogue-ctan|--catalogue-date|--catalogue-license|--catalogue-version|--filelist] [pkgname]
66tlpkg4a(){
67    [ $# -eq 2 ] || return 1
68    local opt=$1
69    local pkg=$2
70    local fieldname=$($__echo $opt | sed -e "s,--,,")
71
72    ## check param
73    case $opt in
74        --name|--category|--revision|--depend|--shortdesc|--longdesc|--execute|--catalogue-ctan|--catalogue-date|--catalogue-license|--catalogue-version|--filelist)
75            ;;
76        *)
77            $__echo "E: unknown option: $opt"
78            exit 1
79            ;;
80    esac
81
82    ## get the head line of $pkg record
83    pkg_LINE=$(egrep -n "^name $pkg$" $TLPDB | cut -d":" -f 1)
84
85    ## read tlpdb
86    is_pkg=0
87    (
88        [ "$opt" = "--filelist" ] && \
89            tail -n $(( $TLPDB_MAXLINE - $pkg_LINE + 1 )) $TLPDB || \
90            tail -n $(( $TLPDB_MAXLINE - $pkg_LINE + 1 )) $TLPDB | egrep -v -e "^ "
91    ) | \
92        while read field; do
93            ## find the record of $pkg
94            $__echo "$field" | egrep -q "^name $pkg" && is_pkg=1
95            [ $is_pkg -eq 0 ] && continue
96           
97            ## return the values of its field name
98            if [ "$opt" = "--filelist" ]; then
99            ## NOTE: we only need texmf-dist directories
100            ##       we replace RELOC with texmf-dist
101                $__echo "$field" | \
102                    egrep -e "^texmf-dist/" -e "^RELOC/" | \
103                    sed -e "s,^RELOC,texmf-dist," \
104                        -e "s, details=.*,," -e "s, language=.*,,"
105            else
106                $__echo "$field" | \
107                    egrep "^${fieldname} " | \
108                    sed -e "s,${fieldname} ,,"
109            fi
110           
111            ## end of the record of $pkg
112            $__echo "$field" | egrep -q "^[[:blank:]]*$" && break
113        done
114   
115    return 0
116}
117
118## tlpkg2speclicense [pkgname]
119tlpkg2speclicense(){
120    [ $# -eq 1 ] || return 1
121    local pkg=$1
122
123    case $(tlpkg4a --catalogue-license $pkg) in
124        gpl3) $__echo "GPLv3+";;
125        gpl2) $__echo "GPLv2+";;
126        gpl) $__echo "GPL+";;
127        lppl1.3) $__echo "LPPL 1.3";;
128        lppl1.2) $__echo "LPPL 1.2";;
129        lppl|lppl1) $__echo "LPPL";;
130        other-free) $__echo "Freely redistributable without restriction";;
131        pd) $__echo "Public Domain";;
132        noinfo) $__echo "No Info";;
133        lgpl|lgpl2.1) $__echo "LGPLv2+";;
134        gfsl) $__echo "LPPL";;
135        bsd) $__echo "BSD";;
136        knuth) $__echo "Knuth";;
137        unknown) $__echo "Unknown";;
138        gfl) $__echo "LPPL";;
139        artistic2) $__echo "Artistic 2.0";;
140        fdl) $__echo "GFDL";;
141        collection) $__echo "Public Domain";;
142        artistic) $__echo "Artistic";;
143        other-nonfree) $__echo "Other";;
144        other) $__echo "Other";;
145        ofl) $__echo "OFSFLD";;
146        apache2) $__echo "ASL 2.0";;
147        nosource) $__echo "No Source";;
148        nosell) $__echo "No Sell";;
149        nocommercial) $__echo "Non-commercial";;
150        *) return 1;;
151    esac
152    return 0
153}
154
155## tlpkg2archivelist [pkgname]
156tlpkg2archivelist(){
157    [ $# -eq 1 ] || return 1
158    local pkg=$1
159    local pkgdeps="$(tlpkg4a --depend $pkg)"
160    local i=
161
162    ## if $pkg is not collection-*, only return the filelist of $pkg
163    $__echo $pkg | egrep -q "^collection-" || return 0
164
165    ##!! we need pure filelist of $pkg; remove collection-*
166    pkgdeps=$($__echo $pkgdeps | sed -e "s,collection-[-A-Za-z0-9]*,,g")
167
168    [ -z "$pkgdeps" ] && return 0
169    for i in $pkgdeps; do
170        ls ${TLNETROOT}/archive/${i}.tar.xz ${TLNETROOT}/archive/${i}.*.tar.xz 2>/dev/null | grep -v -e alpha-linux -e amd64-freebsd -e amd64-kfreebsd -e amd64-netbsd -e armel-linux -e armhf-linux -e i386-cygwin -e i386-freebsd -e i386-kfreebsd -e i386-linux -e i386-netbsd -e i386-solaris -e mips-irix -e mipsel-linux -e powerpc-linux -e sparc-solaris -e universal-darwin -e win32 -e x86_64-cygwin -e x86_64-darwin -e x86_64-linux -e x86_64-solaris | sed -e "s,.*/,,g"
171    done
172
173    return 0
174}
175
176## tlpkg2manifest [pkgname]
177tlpkg2manifest(){
178    [ $# -eq 1 ] || return 1
179    local pkg=$1
180    local pkgdeps="$(tlpkg4a --depend $pkg)"
181    local i=
182
183    tlpkg4a --filelist $pkg || return 1
184
185    ## if $pkg is not collection-*, only return the filelist of $pkg
186    $__echo $pkg | egrep -q "^collection-" || return 0
187
188    ##!! we need pure filelist of $pkg; remove collection-*
189    pkgdeps=$($__echo $pkgdeps | sed -e "s,collection-[-A-Za-z0-9]*,,g")
190
191    [ -z "$pkgdeps" ] && return 0
192    for i in $pkgdeps; do
193        tlpkg4a --filelist $i || return 1
194    done
195
196    return 0
197}
198
199## tlpkg2maplist [pkgname]
200tlpkg2maplist(){
201    [ $# -eq 1 ] || return 1
202    local pkg=$1
203    local pkgdeps="$(tlpkg4a --depend $pkg)"
204    local i=
205
206    tlpkg4a --execute $pkg | grep -e "Map" | sed -e "s,^add,,g"
207
208    ##!! we need pure filelist of $pkg; remove collection-*
209    pkgdeps=$($__echo $pkgdeps | sed -e "s,collection-[-A-Za-z0-9]*,,g")
210
211    [ -z "$pkgdeps" ] && return 0
212    for i in $pkgdeps; do
213        tlpkg4a --execute $i | grep -e "Map" | sed -e "s,^add,,g"
214    done
215
216    return 0
217}
218
219## tlpkg2inilist [pkgname]
220tlpkg2inilist(){
221    [ $# -eq 1 ] || return 1
222    local pkg=$1
223    local pkgdeps="$(tlpkg4a --depend $pkg)"
224    local i=
225
226    ## search AddFormat, AddHypen
227    tlpkg4a --execute $pkg | grep -e "Add"
228
229    ##!! we need pure filelist of $pkg; remove collection-*
230    pkgdeps=$($__echo $pkgdeps | sed -e "s,collection-[-A-Za-z0-9]*,,g")
231
232    [ -z "$pkgdeps" ] && return 0
233    for i in $pkgdeps; do
234        tlpkg4a --execute $i | grep -e "Add"
235    done
236
237    return 0
238}
239
240## mkrpmspec [pkgname]
241mkrpmspec(){
242    [ $# -eq 1 ] || return 1
243    local pkg=$1
244    local i=
245
246    RPM_SUMMARY="TeX Live: $(tlpkg4a --shortdesc $pkg)"
247
248    ## Requires tag for texlive
249    RPM_REQUIRES=$(for i in $(tlpkg4a --depend $pkg | egrep "^collection-"); do \
250        $__echo "Requires: texlive-$i = %{version}"; \
251        done)
252
253    ## Requires tag for external dependencies
254    [ ! -z "$ASYMPTOTE_PACKAGE" ] && \
255        [ ! -z "$(tlpdb2rpmspec --depend $pkg | egrep "^asymptote$")" ] && \
256        RPM_REQUIRES="${RPM_REQUIRES}
257Requires: $ASYMPTOTE_PACKAGE"
258    [ ! -z "$DETEX_PACKAGE" ] && \
259        [ ! -z "$(tlpdb2rpmspec --depend $pkg | egrep "^detex$")" ] && \
260        RPM_REQUIRES="${RPM_REQUIRES}
261Requires: $DETEX_PACKAGE"
262    [ ! -z "$DVIPNG_PACKAGE" ] && \
263        [ ! -z "$(tlpdb2rpmspec --depend $pkg | egrep "^dvipng$")" ] && \
264        RPM_REQUIRES="${RPM_REQUIRES}
265Requires: $DVIPNG_PACKAGE"
266    [ ! -z "$LATEXMK_PACKAGE" ] && \
267        [ ! -z "$(tlpdb2rpmspec --depend $pkg | egrep "^latexmk$")" ] && \
268        RPM_REQUIRES="${RPM_REQUIRES}
269Requires: $LATEXMK_PACKAGE"
270    [ ! -z "$LCDF_TYPETOOLS_PACKAGE" ] && \
271        [ ! -z "$(tlpdb2rpmspec --depend $pkg | egrep "^lcdftypetools$")" ] && \
272        RPM_REQUIRES="${RPM_REQUIRES}
273Requires: $LCDF_TYPETOOLS_PACKAGE"
274    [ ! -z "$PSUTILS_PACKAGE" ] && \
275        [ ! -z "$(tlpdb2rpmspec --depend $pkg | egrep "^psutils$")" ] && \
276        RPM_REQUIRES="${RPM_REQUIRES}
277Requires: $PSUTILS_PACKAGE"
278    [ ! -z "$T1UTILS_PACKAGE" ] && \
279        [ ! -z "$(tlpdb2rpmspec --depend $pkg | egrep "^t1utils$")" ] && \
280        RPM_REQUIRES="${RPM_REQUIRES}
281Requires: $T1UTILS_PACKAGE"
282
283    ## License tag
284    RPM_LICENSE="$(tlpkg2speclicense $pkg),"
285    for i in $(tlpkg4a --depend $pkg | egrep -v "^collection-"); do
286        tmp=$(tlpkg2speclicense $i)
287        $__echo "$RPM_LICENSE" | grep -q "${tmp},"
288        [ $? -eq 1 ] && RPM_LICENSE="${RPM_LICENSE} ${tmp},"
289    done
290    RPM_LICENSE=$($__echo "$RPM_LICENSE" | sed -e "s/,$//" | sed -e "s/^, //")
291    [ -z "$RPM_LICENSE" ] && RPM_LICENSE=distributable
292
293    PKG_SHORTDESC=$(tlpkg4a --shortdesc $pkg)
294    PKG_LONGDESC=$(tlpkg4a --longdesc $pkg)
295
296    PKG_CTANPKGSLIST=$(for i in $(tlpkg4a --depend $pkg); do \
297        if [ -z "$($__echo "$i" | grep "collection-")" ]; then \
298            $__echo -n "$i: "; \
299            tmp=$(tlpkg4a --shortdesc $i); \
300            [ -z "${tmp}" ] && $__echo || $__echo "$tmp"; \
301        fi
302        done)
303
304    PKG_ARCHIVELIST=$(tlpkg2archivelist $pkg)
305    [ -z "${PKG_ARCHIVELIST}" ] && \
306        $__echo "W: empty archive list: $pkg" >&2
307
308    ## check whether or not $pkg is collection-lang*****
309    with_colllang=0
310    $__echo $pkg | egrep -q "^collection-lang" && \
311        with_colllang=1
312
313    ## check to need the subpackage %{name}-doc
314    with_docpkg=0
315    for i in ${PKG_ARCHIVELIST}; do
316        [ ! -z "$($__echo "$i" | egrep "\.doc\.")" ] && \
317            with_docpkg=1 && break
318    done
319
320    with_maplist=0
321    MAPLIST="$(tlpkg2maplist $pkg)"
322    [ ! -z "$MAPLIST" ] && with_maplist=1
323    ##$__echo $with_maplist && $__echo "$MAPLIST" && exit
324
325    with_inilist=0
326    INILIST="$(tlpkg2inilist $pkg)"
327    [ ! -z "$INILIST" ] && with_inilist=1
328    ##$__echo $with_inilist && $__echo "$INILIST" && exit
329
330cat<<EOF
331## -*- coding: utf-8-unix -*-
332## NOTE: This spec file is generated by $(basename $0) ${VERSION}-${RELEASE}:
333## $(basename $0) $pkg
334
335%global _use_internal_dependency_generator 0
336%global __find_provides %{nil}
337%global __find_requires %{nil}
338
339Summary: ${RPM_SUMMARY}
340Summary(ja): ${RPM_SUMMARY}
341Name: texlive-$pkg
342Version: ${VERSION}
343Release: ${RELEASE}%{?_dist_release}
344License: ${RPM_LICENSE}
345Group: Applications/Publishing
346URL:http://www.tug.org/texlive/
347
348$(x=(${PKG_ARCHIVELIST}); for (( i=0; i < ${#x[@]}; ++i )); do $__echo Source${i}: ${x[$i]}; done)
349
350Requires: texlive = %{version}
351$RPM_REQUIRES
352
353Requires(post):         texlive = %{version}
354Requires(postun):       texlive = %{version}
355
356BuildArch:      noarch
357Buildroot:      %{_tmppath}/%{name}-%{version}-root
358
359Vendor:         ${RPM_VENDOR}
360Distribution:   ${RPM_DISTRIBUTION}
361Packager:       ${RPM_PACKAGER}
362
363%description
364The TeX Live software distribution offers a complete TeX system for a
365variety of Unix, Macintosh, Windows and other platforms. It
366encompasses programs for editing, typesetting, previewing and printing
367of TeX documents in many different languages, and a large collection
368of TeX macros and font libraries.
369
370The distribution includes extensive general documentation about TeX,
371as well as the documentation for the included software packages.
372
373This package is a collection of ${PKG_SHORTDESC}:
374${PKG_LONGDESC}
375
376This package contains the following CTAN packages:
377${PKG_CTANPKGSLIST}
378
379%description -l ja
380TeX Live ソフトウェアディストリビューションは、
381さまざまな Unix, Macintosh, Windows、および
382他のプラットホームに対して完全な TeX システムを提供します。
383多くの異なった言語を含む TeX ドキュメントの
384編集、組版、閲覧、印刷するためのプログラム、
385そして、TeX マクロやフォントライブラリの大きなコレクションを
386同梱しています。
387
388このディストリビューションは
389同梱しているソフトウェアパッケージのためのドキュメントばかりでなく、
390TeX に関するたくさんの一般的なドキュメントを含んでいます。
391
392このパッケージは以下のようなパッケージ集です。
393${PKG_SHORTDESC}:
394${PKG_LONGDESC}
395
396このパッケージは以下の CTAN パッケージを含んでいます:
397${PKG_CTANPKGSLIST}
398
399EOF
400
401## subpackage: %{name}-doc
402if [ $with_docpkg -eq 1 ]; then
403    cat<<EOF
404%package doc
405Summary: TeX Live: Documentation files of %{name}
406Group: Applications/Publishing
407Requires: %{name} = %{version}-%{release}
408
409%description doc
410This package contains documentation files of %{name}.
411
412EOF
413fi
414
415cat<<EOF
416%prep
417%setup -c -n %{name}-%{version}
418$(x=(${PKG_ARCHIVELIST}); for (( i=1; i < ${#x[@]}; ++i )); do $__echo %__tar -xvf %{SOURCE${i}}; done)
419
420%build
421
422%install
423[ -n "%{buildroot}" -a "%{buildroot}" != / ] && %__rm -rf %{buildroot}
424
425%__mkdir_p %{buildroot}%{_datadir}
426
427## move texmf-dist to /usr/share/texmf-dist
428[ -d texmf-dist ] && %__mv texmf-dist %{buildroot}%{_tl_texmfdist}/ ||:
429
430## move texmf to /usr/share/texmf
431[ -d texmf ] && %__mv texmf %{buildroot}%{_tl_texmfmain}/ ||:
432
433## move tlpkg to /usr/share/tlpkg
434[ -d tlpkg ] && %__mv tlpkg %{buildroot}%{_datadir}/ ||:
435
436## move all non-arch binaries to /usr/bin
437[ -d bin ] && %__mv bin %{buildroot}%{_prefix}/ ||:
438
439## move others into /usr/share/texmf-dist
440%__mkdir_p %{buildroot}%{_tl_texmfdist}
441%__cp -a * %{buildroot}%{_tl_texmfdist}/ ||:
442%__rm -rf * ||:
443
444
445## remove duplicated files between texlive and texlive-collection-*
446## NOTE: We provides texmf.cnf and updmap{-hdr,}.cfg from texlive
447## remove unpacked files
448x=(
449dvipdfmx/dvipdfmx.cfg
450scripts/context/stubs/unix/mtxrun
451scripts/latexmk/latexmk.pl
452scripts/ptex2pdf/ptex2pdf.lua
453scripts/texlive/fmtutil.pl
454scripts/texlive/texconfig-dialog.sh
455scripts/texlive/texconfig-sys.sh
456scripts/texlive/texconfig.sh
457scripts/texlive/texlinks.sh
458scripts/texlive/tlmgr.pl
459scripts/texlive/updmap.pl
460texconfig/tcfmgr
461web2c/fmtutil.cnf
462web2c/mktex.opt
463web2c/mktexdir
464web2c/mktexdir.opt
465web2c/mktexnam
466web2c/mktexnam.opt
467web2c/mktexupd
468web2c/texmf.cnf
469web2c/updmap-hdr.cfg
470web2c/updmap.cfg
471install-tl
472#
473scripts/cjk-gs-integrate/cjk-gs-integrate.pl #texlive-collection-langcjk-2015-3vl7.noarch
474scripts/epspdf/epspdf.tlu #texlive-collection-pictures-2015-3vl7.noarch
475scripts/epspdf/epspdftk.tcl #texlive-collection-pictures-2015-3vl7.noarch
476scripts/glossaries/makeglossaries #texlive-collection-latexextra-2015-3vl7.noarch
477scripts/jfontmaps/kanji-config-updmap.pl #texlive-collection-langjapanese-2015-3vl7.noarch
478scripts/jfontmaps/kanji-fontmap-creator.pl #texlive-collection-langjapanese-2015-3vl7.noarch
479scripts/kotex-utils/jamo-normalize.pl #texlive-collection-langkorean-2015-3vl7.noarch
480scripts/kotex-utils/komkindex.pl #texlive-collection-langkorean-2015-3vl7.noarch
481scripts/crossrefware/ltx2crossrefxml.pl #texlive-collection-bibtexextra-2015-3vl7.noarch
482scripts/rubik/rubikrotation.pl #texlive-collection-games-2015-3vl7.noarch
483scripts/musixtex/musixtex.lua #texlive-collection-music-2015-3vl7.noarch
484scripts/pmxchords/pmxchords.lua #texlive-collection-music-2015-3vl7.noarch
485scripts/ctanify/ctanify #texlive-collection-binextra-2015-3vl7.noarch
486scripts/dtxgen/dtxgen #texlive-collection-binextra-2015-3vl7.noarch
487scripts/findhyph/findhyph #texlive-collection-binextra-2015-3vl7.noarch
488scripts/latexpand/latexpand #texlive-collection-binextra-2015-3vl7.noarch
489scripts/ltxfileinfo/ltxfileinfo #texlive-collection-binextra-2015-3vl7.noarch
490scripts/latexdiff/latexdiff-vc.pl #texlive-collection-binextra-2015-3vl7.noarch
491scripts/latexdiff/latexdiff.pl #texlive-collection-binextra-2015-3vl7.noarch
492scripts/texfot/texfot.pl #texlive-collection-binextra-2015-3vl7.noarch
493scripts/fontools/autoinst #texlive-collection-fontutils-2015-3vl7.noarch
494scripts/luaotfload/luaotfload-tool.lua #texlive-collection-luatex-2015-3vl7.noarch
495scripts/oberdiek/pdfatfi.pl #texlive-collection-latex-2016-2vl7.noarch
496)
497if [ -d %{buildroot}%{_tl_texmfdist} ]; then
498pushd %{buildroot}%{_tl_texmfdist}
499%__rm -f \${x[@]} ||:
500popd
501fi
502
503EOF
504
505cat<<EOF
506## Files list
507find %{buildroot} -type f -or -type l | \\
508    %__sed -e "s|%{buildroot}||g" > filelist.full
509
510find %{buildroot}%{_tl_texmfdist} -type d | \\
511    %__sed -e "s|^%{buildroot}|%dir |" \\
512           -e "s|\$|/|"             >> filelist.full
513
514EOF
515
516## subpackage: %{name}-doc
517if [ $with_docpkg -eq 1 ]; then
518    cat<<EOF
519## subpackages
520grep "/texmf-dist/doc/" filelist.full > filelist.doc
521cat filelist.doc filelist.full | sort | uniq -u > filelist.tmp
522%__mv -f filelist.tmp filelist.full
523
524EOF
525fi
526
527cat<<EOF
528%clean
529%__rm -rf %{buildroot}
530
531%post
532%_tl_touch_run texhash
533%_tl_touch_run mtxrun
534
535EOF
536
537## Running updmap
538if [ $with_maplist -eq 1 ]; then
539    cat<<EOF
540[ -f %{_tl_texmfdist}/web2c/updmap.cfg ] || exit 0
541
542$($__echo "$MAPLIST" | while read maptype map; do \
543    cat<<EOT
544    %_tl_enable_map ${maptype} ${map}
545EOT
546done)
547
548EOF
549fi
550
551## Running fmtutil
552if [ $with_inilist -eq 1 ]; then
553    cat<<EOF
554%_tl_touch_run fmtutil
555
556EOF
557fi
558
559cat<<EOF
560exit 0
561
562
563%postun
564if [ "\$1" = 0 ]; then
565    %_tl_touch_run texhash
566
567EOF
568
569## Running updmap
570if [ $with_maplist -eq 1 ]; then
571    cat<<EOF
572    [ -f %{_tl_texmfdist}/web2c/updmap.cfg ] || exit 0
573
574$($__echo "$MAPLIST" | while read maptype map; do \
575    cat<<EOT
576    %_tl_disable_map ${map}
577EOT
578done)
579
580EOF
581fi
582
583cat<<EOF
584fi
585
586exit 0
587
588%posttrans
589%{_tl_exec_texhash}
590%{_tl_exec_mtxrun}
591%{_tl_exec_updmap}
592%{_tl_exec_fmtutil}
593exit 0
594
595
596%files -f filelist.full
597%defattr(-,root,root,-)
598
599EOF
600## subpackage: %{name}-doc
601if [ $with_docpkg -eq 1 ]; then
602    cat<<EOF
603%files -f filelist.doc doc
604%defattr(-,root,root,-)
605
606EOF
607fi
608
609cat<<EOF
610%changelog
611$(cat @@VTLPKG_CHANGELOG@@)
612EOF
613
614    return 0
615}
616
617## mkrpmcollection [--minimal-collections|--standard-collections|--full-collections]
618mkrpmcollection(){
619    local category=$($__echo $1 | sed -e "s/--\([a-z]*\)-collections/\1/")
620    local category_pkglist=
621    local macro_sourcedir="%_sourcedir ${TLNETROOT}/archive"
622    local i=
623
624    case $category in
625        minimal|standard)
626            category_pkglist=$(grep -e "${category}," $CATEGORYLIST | sed -e "s/${category},//g" | sed -e "s/,$//g")
627            ;;
628        full)
629            category_pkglist=$(Usage | egrep "^collection-")
630            ;;
631        *)
632            $__echo "E: unknown category: $category"
633            return 1
634            ;;
635    esac
636
637    for i in ${category_pkglist}; do
638        $__echo "making texlive-${i} ..."
639        if [ -f texlive-${i}-${RPM_SPEC_SUFFIX}.spec ]; then
640            rpm -q --specfile --changelog texlive-${i}-${RPM_SPEC_SUFFIX}.spec >/dev/null 2>&1
641            if [ $? -eq 0 ]; then
642                $__echo "W: already exists: texlive-${i}-${RPM_SPEC_SUFFIX}.spec" >&2
643                continue
644            fi
645        fi
646        mkrpmspec $i > texlive-${i}-${RPM_SPEC_SUFFIX}.spec
647        if [ $? -eq 1 ]; then
648            $__echo "texlive-${i}-${RPM_SPEC_SUFFIX}.spec: "
649            cat texlive-${i}-${RPM_SPEC_SUFFIX}.spec
650            rm -f texlive-${i}-${RPM_SPEC_SUFFIX}.spec
651            continue
652        fi
653        rpmbuild -ba --define="${macro_sourcedir}" texlive-${i}-${RPM_SPEC_SUFFIX}.spec || return 1
654    done
655
656    return 0
657}
658
659setup-tlpdb2rpmspec(){
660    __echo=$(which echo 2>/dev/null)
661    [ ! -f $__echo ] && return 1
662
663    ## set external dependencies
664    ASYMPTOTE_PACKAGE=
665    DETEX_PACKAGE=
666    DVIPNG_PACKAGE=
667    LATEXMK_PACKAGE=
668    LCDF_TYPETOOLS_PACKAGE=
669    PSUTILS_PACKAGE=
670    T1UTILS_PACKAGE=
671
672    ## set local tlnet
673    TLNETROOT=@@VTLPKG_TLNETROOT@@
674    TLPDB=@@VTLPKG_TLPDB@@
675
676    ## load your .vtlpkg.conf
677    if [ -f ${HOME}/.vtlpkg.conf ]; then
678        . ${HOME}/.vtlpkg.conf
679    else
680        $__echo "E: ${HOME}/.vtlpkg.conf: No such file"
681        return 1
682    fi
683
684    [ -z "$RPM_SPEC_SUFFIX" ] && \
685        $__echo "E: \$RPM_SPEC_SUFFIX is empty" && return 1
686    [ -z "$RPM_VENDOR" ] && \
687        $__echo "E: \$RPM_VENDOR is empty" && return 1
688    [ -z "$RPM_DISTRIBUTION" ] && \
689        $__echo "E: \$RPM_DISTRIBUTION is empty" && return 1
690    [ -z "$RPM_GPG_NAME" ] && \
691        $__echo "E: \$RPM_GPG_NAME is empty" && return 1
692    [ -z "$RPM_PACKAGER" ] && \
693        $__echo "E: \$RPM_PACKAGER is empty" && return 1
694
695    ## setup configurations
696    VERSION=@@VTLPKG_VERSION@@
697    RELEASE=@@VTLPKG_RELEASE@@
698
699    ## check texlive.tlpdb
700    [ ! -f $TLPDB ] && \
701        $__echo "E: \$TLPDB: No such file" && return 1
702    TLPDB_MAXLINE=$(wc -l $TLPDB | awk '{print $1}')
703
704    ## category of collection-*
705    CATEGORYLIST=@@VTLPKG_CATEGORYLIST@@
706
707    ## set some booleans
708    with_option=0
709}
710
711##############################################################################
712
713setup-tlpdb2rpmspec || exit 1
714
715check-parameter $* || exit 1
716
717case $1 in
718    --name|--category|--revision|--depend|--shortdesc|--longdesc|--execute|--catalogue-ctan|--catalogue-date|--catalogue-license|--catalogue-version|--filelist)
719        tlpkg4a $1 $2 || exit 1
720        ;;
721    --minimal-collections|--standard-collections|--full-collections)
722        mkrpmcollection $1 || exit 1
723        ;;
724    *)
725        mkrpmspec $1 || exit 1
726        ;;
727esac
728
729exit
730
731### end of file
Note: See TracBrowser for help on using the repository browser.