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 *
RevLine 
[1476]1#!/bin/bash
2# tlpdb2rpmspec
3#
[10268]4# Copyright 2010-2016 Munehiro Yamamoto <munepi@vinelinux.org>
[1476]5# This file is licensed under the GNU General Public License version 2
6# or any later version.
7
8Usage(){
9    cat<<EOF
[5075]10$(basename $0) @@VTLPKG_VERSION@@
[1476]11Usage:  $(basename $0) [option] [pkgname]
12
[5075]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@@.
[1476]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
[5080]32Supoort collection-* packages:
[7764]33$(egrep "^name collection-" $TLPDB | sed -e "s,name ,,g" | grep -v -e "texworks" -e "wintools")
[1476]34EOF
35}
36
37check-parameter(){
38    [ -z "$*" ] && Usage && return 1
39
40    while [ ! -z "$*" ]; do
41        case $1 in
[1521]42            --name|--category|--revision|--depend|--shortdesc|--longdesc|--execute|--catalogue-ctan|--catalogue-date|--catalogue-license|--catalogue-version|--filelist)
[1476]43                [ $with_option -eq 1 ] && \
[5075]44                    $__echo "E: you only give one option" && return 1
[1476]45                with_option=1
46                ;;
47            --help)
48                Usage
49                return 1
50                ;;
[1521]51            --minimal-collections|--standard-collections|--full-collections)
52                ;;
53            *)
[1784]54                [ -z "$(egrep -n "^name $1$" $TLPDB)" ] && \
[5075]55                    $__echo "E: unknown option or package: $1" && return 1
[1476]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
[5075]70    local fieldname=$($__echo $opt | sed -e "s,--,,")
[1476]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        *)
[5075]77            $__echo "E: unknown option: $opt"
[1476]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
[1496]86    is_pkg=0
[2975]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    ) | \
[1476]92        while read field; do
93            ## find the record of $pkg
[5075]94            $__echo "$field" | egrep -q "^name $pkg" && is_pkg=1
[1496]95            [ $is_pkg -eq 0 ] && continue
[1476]96           
97            ## return the values of its field name
98            if [ "$opt" = "--filelist" ]; then
99            ## NOTE: we only need texmf-dist directories
[5075]100            ##       we replace RELOC with texmf-dist
101                $__echo "$field" | \
[5192]102                    egrep -e "^texmf-dist/" -e "^RELOC/" | \
[5075]103                    sed -e "s,^RELOC,texmf-dist," \
104                        -e "s, details=.*,," -e "s, language=.*,,"
[1476]105            else
[5075]106                $__echo "$field" | \
107                    egrep "^${fieldname} " | \
108                    sed -e "s,${fieldname} ,,"
[1476]109            fi
110           
111            ## end of the record of $pkg
[5075]112            $__echo "$field" | egrep -q "^[[:blank:]]*$" && break
[1476]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
[5075]124        gpl3) $__echo "GPLv3+";;
125        gpl2) $__echo "GPLv2+";;
126        gpl) $__echo "GPL+";;
[7145]127        lppl1.3) $__echo "LPPL 1.3";;
128        lppl1.2) $__echo "LPPL 1.2";;
129        lppl|lppl1) $__echo "LPPL";;
[5075]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";;
[1476]150        *) return 1;;
151    esac
152    return 0
153}
154
[7764]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
[8475]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"
[7764]171    done
172
173    return 0
174}
175
[1476]176## tlpkg2manifest [pkgname]
177tlpkg2manifest(){
178    [ $# -eq 1 ] || return 1
179    local pkg=$1
180    local pkgdeps="$(tlpkg4a --depend $pkg)"
[1521]181    local i=
[1476]182
183    tlpkg4a --filelist $pkg || return 1
184
[1496]185    ## if $pkg is not collection-*, only return the filelist of $pkg
[5075]186    $__echo $pkg | egrep -q "^collection-" || return 0
[1496]187
[1476]188    ##!! we need pure filelist of $pkg; remove collection-*
[5075]189    pkgdeps=$($__echo $pkgdeps | sed -e "s,collection-[-A-Za-z0-9]*,,g")
[1476]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)"
[1521]204    local i=
[1476]205
206    tlpkg4a --execute $pkg | grep -e "Map" | sed -e "s,^add,,g"
207
208    ##!! we need pure filelist of $pkg; remove collection-*
[5075]209    pkgdeps=$($__echo $pkgdeps | sed -e "s,collection-[-A-Za-z0-9]*,,g")
[1476]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
[1496]219## tlpkg2inilist [pkgname]
220tlpkg2inilist(){
221    [ $# -eq 1 ] || return 1
222    local pkg=$1
223    local pkgdeps="$(tlpkg4a --depend $pkg)"
[1521]224    local i=
[1476]225
[1496]226    ## search AddFormat, AddHypen
227    tlpkg4a --execute $pkg | grep -e "Add"
228
229    ##!! we need pure filelist of $pkg; remove collection-*
[5075]230    pkgdeps=$($__echo $pkgdeps | sed -e "s,collection-[-A-Za-z0-9]*,,g")
[1496]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
[1476]240## mkrpmspec [pkgname]
241mkrpmspec(){
242    [ $# -eq 1 ] || return 1
243    local pkg=$1
[1521]244    local i=
[1476]245
246    RPM_SUMMARY="TeX Live: $(tlpkg4a --shortdesc $pkg)"
247
248    ## Requires tag for texlive
[7764]249    RPM_REQUIRES=$(for i in $(tlpkg4a --depend $pkg | egrep "^collection-"); do \
[5078]250        $__echo "Requires: texlive-$i = %{version}"; \
251        done)
[1476]252
[5242]253    ## Requires tag for external dependencies
[5246]254    [ ! -z "$ASYMPTOTE_PACKAGE" ] && \
[7764]255        [ ! -z "$(tlpdb2rpmspec --depend $pkg | egrep "^asymptote$")" ] && \
[5246]256        RPM_REQUIRES="${RPM_REQUIRES}
257Requires: $ASYMPTOTE_PACKAGE"
[5242]258    [ ! -z "$DETEX_PACKAGE" ] && \
[7764]259        [ ! -z "$(tlpdb2rpmspec --depend $pkg | egrep "^detex$")" ] && \
[5242]260        RPM_REQUIRES="${RPM_REQUIRES}
261Requires: $DETEX_PACKAGE"
262    [ ! -z "$DVIPNG_PACKAGE" ] && \
[7764]263        [ ! -z "$(tlpdb2rpmspec --depend $pkg | egrep "^dvipng$")" ] && \
[5242]264        RPM_REQUIRES="${RPM_REQUIRES}
265Requires: $DVIPNG_PACKAGE"
266    [ ! -z "$LATEXMK_PACKAGE" ] && \
[7764]267        [ ! -z "$(tlpdb2rpmspec --depend $pkg | egrep "^latexmk$")" ] && \
[5242]268        RPM_REQUIRES="${RPM_REQUIRES}
269Requires: $LATEXMK_PACKAGE"
270    [ ! -z "$LCDF_TYPETOOLS_PACKAGE" ] && \
[7764]271        [ ! -z "$(tlpdb2rpmspec --depend $pkg | egrep "^lcdftypetools$")" ] && \
[5242]272        RPM_REQUIRES="${RPM_REQUIRES}
273Requires: $LCDF_TYPETOOLS_PACKAGE"
274    [ ! -z "$PSUTILS_PACKAGE" ] && \
[7764]275        [ ! -z "$(tlpdb2rpmspec --depend $pkg | egrep "^psutils$")" ] && \
[5242]276        RPM_REQUIRES="${RPM_REQUIRES}
277Requires: $PSUTILS_PACKAGE"
278    [ ! -z "$T1UTILS_PACKAGE" ] && \
[7764]279        [ ! -z "$(tlpdb2rpmspec --depend $pkg | egrep "^t1utils$")" ] && \
[5242]280        RPM_REQUIRES="${RPM_REQUIRES}
281Requires: $T1UTILS_PACKAGE"
282
[1476]283    ## License tag
284    RPM_LICENSE="$(tlpkg2speclicense $pkg),"
285    for i in $(tlpkg4a --depend $pkg | egrep -v "^collection-"); do
286        tmp=$(tlpkg2speclicense $i)
[5075]287        $__echo "$RPM_LICENSE" | grep -q "${tmp},"
[1476]288        [ $? -eq 1 ] && RPM_LICENSE="${RPM_LICENSE} ${tmp},"
289    done
[5075]290    RPM_LICENSE=$($__echo "$RPM_LICENSE" | sed -e "s/,$//" | sed -e "s/^, //")
[1476]291    [ -z "$RPM_LICENSE" ] && RPM_LICENSE=distributable
292
[1499]293    PKG_SHORTDESC=$(tlpkg4a --shortdesc $pkg)
294    PKG_LONGDESC=$(tlpkg4a --longdesc $pkg)
295
296    PKG_CTANPKGSLIST=$(for i in $(tlpkg4a --depend $pkg); do \
[5075]297        if [ -z "$($__echo "$i" | grep "collection-")" ]; then \
298            $__echo -n "$i: "; \
[1499]299            tmp=$(tlpkg4a --shortdesc $i); \
[5075]300            [ -z "${tmp}" ] && $__echo || $__echo "$tmp"; \
[1499]301        fi
302        done)
303
[7764]304    PKG_ARCHIVELIST=$(tlpkg2archivelist $pkg)
305    [ -z "${PKG_ARCHIVELIST}" ] && \
306        $__echo "W: empty archive list: $pkg" >&2
[1499]307
[10286]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
[5078]313    ## check to need the subpackage %{name}-doc
[1476]314    with_docpkg=0
[7764]315    for i in ${PKG_ARCHIVELIST}; do
316        [ ! -z "$($__echo "$i" | egrep "\.doc\.")" ] && \
317            with_docpkg=1 && break
318    done
[1476]319
[1496]320    with_maplist=0
321    MAPLIST="$(tlpkg2maplist $pkg)"
322    [ ! -z "$MAPLIST" ] && with_maplist=1
[5075]323    ##$__echo $with_maplist && $__echo "$MAPLIST" && exit
[1496]324
325    with_inilist=0
326    INILIST="$(tlpkg2inilist $pkg)"
327    [ ! -z "$INILIST" ] && with_inilist=1
[5075]328    ##$__echo $with_inilist && $__echo "$INILIST" && exit
[1496]329
[1476]330cat<<EOF
331## -*- coding: utf-8-unix -*-
[1709]332## NOTE: This spec file is generated by $(basename $0) ${VERSION}-${RELEASE}:
333## $(basename $0) $pkg
[1476]334
[5075]335%global _use_internal_dependency_generator 0
336%global __find_provides %{nil}
337%global __find_requires %{nil}
338
[1476]339Summary: ${RPM_SUMMARY}
[1499]340Summary(ja): ${RPM_SUMMARY}
[1476]341Name: texlive-$pkg
342Version: ${VERSION}
[1915]343Release: ${RELEASE}%{?_dist_release}
[1476]344License: ${RPM_LICENSE}
345Group: Applications/Publishing
346URL:http://www.tug.org/texlive/
347
[7958]348$(x=(${PKG_ARCHIVELIST}); for (( i=0; i < ${#x[@]}; ++i )); do $__echo Source${i}: ${x[$i]}; done)
[7764]349
[1476]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
[1499]373This package is a collection of ${PKG_SHORTDESC}:
374${PKG_LONGDESC}
[1476]375
376This package contains the following CTAN packages:
[1499]377${PKG_CTANPKGSLIST}
[1476]378
[1499]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
[1476]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
[7764]417%setup -c -n %{name}-%{version}
[7958]418$(x=(${PKG_ARCHIVELIST}); for (( i=1; i < ${#x[@]}; ++i )); do $__echo %__tar -xvf %{SOURCE${i}}; done)
[1476]419
420%build
421
422%install
423[ -n "%{buildroot}" -a "%{buildroot}" != / ] && %__rm -rf %{buildroot}
424
[7764]425%__mkdir_p %{buildroot}%{_datadir}
[1476]426
[7764]427## move texmf-dist to /usr/share/texmf-dist
428[ -d texmf-dist ] && %__mv texmf-dist %{buildroot}%{_tl_texmfdist}/ ||:
[1476]429
[7764]430## move texmf to /usr/share/texmf
431[ -d texmf ] && %__mv texmf %{buildroot}%{_tl_texmfmain}/ ||:
[1476]432
[7764]433## move tlpkg to /usr/share/tlpkg
434[ -d tlpkg ] && %__mv tlpkg %{buildroot}%{_datadir}/ ||:
[3943]435
[7764]436## move all non-arch binaries to /usr/bin
437[ -d bin ] && %__mv bin %{buildroot}%{_prefix}/ ||:
[3943]438
[7764]439## move others into /usr/share/texmf-dist
440%__mkdir_p %{buildroot}%{_tl_texmfdist}
441%__cp -a * %{buildroot}%{_tl_texmfdist}/ ||:
442%__rm -rf * ||:
[5242]443
[7764]444
445## remove duplicated files between texlive and texlive-collection-*
446## NOTE: We provides texmf.cnf and updmap{-hdr,}.cfg from texlive
[7768]447## remove unpacked files
[7764]448x=(
[9945]449dvipdfmx/dvipdfmx.cfg
[9574]450scripts/context/stubs/unix/mtxrun
[10268]451scripts/latexmk/latexmk.pl
[9574]452scripts/ptex2pdf/ptex2pdf.lua
453scripts/texlive/fmtutil.pl
[9528]454scripts/texlive/texconfig-dialog.sh
455scripts/texlive/texconfig-sys.sh
456scripts/texlive/texconfig.sh
457scripts/texlive/texlinks.sh
458scripts/texlive/tlmgr.pl
[9574]459scripts/texlive/updmap.pl
[9528]460texconfig/tcfmgr
[9574]461web2c/fmtutil.cnf
[9528]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
[9535]471install-tl
[10207]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
[10361]495scripts/oberdiek/pdfatfi.pl #texlive-collection-latex-2016-2vl7.noarch
[7764]496)
497if [ -d %{buildroot}%{_tl_texmfdist} ]; then
498pushd %{buildroot}%{_tl_texmfdist}
499%__rm -f \${x[@]} ||:
500popd
[5242]501fi
502
[7764]503EOF
504
[5242]505cat<<EOF
[1476]506## Files list
507find %{buildroot} -type f -or -type l | \\
508    %__sed -e "s|%{buildroot}||g" > filelist.full
509
[7764]510find %{buildroot}%{_tl_texmfdist} -type d | \\
[1476]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
[7764]532%_tl_touch_run texhash
533%_tl_touch_run mtxrun
[1496]534
535EOF
536
537## Running updmap
538if [ $with_maplist -eq 1 ]; then
539    cat<<EOF
[7764]540[ -f %{_tl_texmfdist}/web2c/updmap.cfg ] || exit 0
[1498]541
[5075]542$($__echo "$MAPLIST" | while read maptype map; do \
[1496]543    cat<<EOT
[7764]544    %_tl_enable_map ${maptype} ${map}
[1496]545EOT
546done)
[2499]547
[1496]548EOF
[1476]549fi
550
[1496]551## Running fmtutil
552if [ $with_inilist -eq 1 ]; then
553    cat<<EOF
[7764]554%_tl_touch_run fmtutil
[2499]555
[1496]556EOF
[1476]557fi
558
[1496]559cat<<EOF
[1476]560exit 0
561
562
563%postun
564if [ "\$1" = 0 ]; then
[7764]565    %_tl_touch_run texhash
[1496]566
567EOF
568
569## Running updmap
570if [ $with_maplist -eq 1 ]; then
571    cat<<EOF
[7764]572    [ -f %{_tl_texmfdist}/web2c/updmap.cfg ] || exit 0
[1498]573
[5075]574$($__echo "$MAPLIST" | while read maptype map; do \
[1496]575    cat<<EOT
[7764]576    %_tl_disable_map ${map}
[1496]577EOT
578done)
579
580EOF
[1476]581fi
582
[1496]583cat<<EOF
584fi
585
[1476]586exit 0
587
[7145]588%posttrans
[7764]589%{_tl_exec_texhash}
590%{_tl_exec_mtxrun}
591%{_tl_exec_updmap}
592%{_tl_exec_fmtutil}
[7145]593exit 0
594
595
[1476]596%files -f filelist.full
[5075]597%defattr(-,root,root,-)
[1476]598
599EOF
600## subpackage: %{name}-doc
601if [ $with_docpkg -eq 1 ]; then
602    cat<<EOF
603%files -f filelist.doc doc
[5075]604%defattr(-,root,root,-)
[1476]605
606EOF
607fi
608
609cat<<EOF
610%changelog
[9048]611$(cat @@VTLPKG_CHANGELOG@@)
[1476]612EOF
613
614    return 0
615}
616
[1521]617## mkrpmcollection [--minimal-collections|--standard-collections|--full-collections]
618mkrpmcollection(){
[5075]619    local category=$($__echo $1 | sed -e "s/--\([a-z]*\)-collections/\1/")
[1521]620    local category_pkglist=
[7764]621    local macro_sourcedir="%_sourcedir ${TLNETROOT}/archive"
[1521]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        *)
[5075]632            $__echo "E: unknown category: $category"
[1521]633            return 1
634            ;;
635    esac
636
637    for i in ${category_pkglist}; do
[7764]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
[1918]647        if [ $? -eq 1 ]; then
[7764]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
[1918]651            continue
652        fi
[7764]653        rpmbuild -ba --define="${macro_sourcedir}" texlive-${i}-${RPM_SPEC_SUFFIX}.spec || return 1
[1521]654    done
655
656    return 0
657}
658
[1476]659setup-tlpdb2rpmspec(){
[5075]660    __echo=$(which echo 2>/dev/null)
661    [ ! -f $__echo ] && return 1
662
[5242]663    ## set external dependencies
[5246]664    ASYMPTOTE_PACKAGE=
[5242]665    DETEX_PACKAGE=
666    DVIPNG_PACKAGE=
667    LATEXMK_PACKAGE=
668    LCDF_TYPETOOLS_PACKAGE=
669    PSUTILS_PACKAGE=
670    T1UTILS_PACKAGE=
671
[7764]672    ## set local tlnet
673    TLNETROOT=@@VTLPKG_TLNETROOT@@
674    TLPDB=@@VTLPKG_TLPDB@@
675
[1476]676    ## load your .vtlpkg.conf
677    if [ -f ${HOME}/.vtlpkg.conf ]; then
678        . ${HOME}/.vtlpkg.conf
679    else
[5075]680        $__echo "E: ${HOME}/.vtlpkg.conf: No such file"
[1476]681        return 1
682    fi
683
[7764]684    [ -z "$RPM_SPEC_SUFFIX" ] && \
685        $__echo "E: \$RPM_SPEC_SUFFIX is empty" && return 1
[1476]686    [ -z "$RPM_VENDOR" ] && \
[5075]687        $__echo "E: \$RPM_VENDOR is empty" && return 1
[1476]688    [ -z "$RPM_DISTRIBUTION" ] && \
[5075]689        $__echo "E: \$RPM_DISTRIBUTION is empty" && return 1
[1476]690    [ -z "$RPM_GPG_NAME" ] && \
[5075]691        $__echo "E: \$RPM_GPG_NAME is empty" && return 1
[1476]692    [ -z "$RPM_PACKAGER" ] && \
[5075]693        $__echo "E: \$RPM_PACKAGER is empty" && return 1
[1476]694
695    ## setup configurations
696    VERSION=@@VTLPKG_VERSION@@
697    RELEASE=@@VTLPKG_RELEASE@@
698
[7764]699    ## check texlive.tlpdb
700    [ ! -f $TLPDB ] && \
701        $__echo "E: \$TLPDB: No such file" && return 1
[5075]702    TLPDB_MAXLINE=$(wc -l $TLPDB | awk '{print $1}')
[1476]703
[1521]704    ## category of collection-*
705    CATEGORYLIST=@@VTLPKG_CATEGORYLIST@@
706
[1476]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        ;;
[1521]721    --minimal-collections|--standard-collections|--full-collections)
722        mkrpmcollection $1 || exit 1
[1476]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.