#!/usr/bin/env perl # $Id$ # Public domain. Originally written 2005, Karl Berry. # Check if a package in TL has any changes on CTAN. BEGIN { chomp ($mydir = `dirname $0`); # we are in Master/tlpkg/bin unshift (@INC, "$mydir/.."); } use TeXLive::TLConfig qw/$RelocPrefix $RelocTree/; use TeXLive::TLPOBJ; use TeXLive::TLPDB; use File::Basename; my $tlpdb; my $Master; our %OPT; my @TLP_working = qw( 12many 2up Asana-Math ESIEEcv GS1 HA-prosper IEEEconf IEEEtran SIstyle SIunits Tabbing Type1fonts a0poster a2ping a4wide a5comb aaai-named aastex abbr abc abnt abntex2 abraces abstract abstyles academicons accanthis accents accessibility accfonts accsupp achemso acmart acmconf acro acronym acroterm active-conf actuarialangle actuarialsymbol addfont addliga addlines adfathesis adforn adhocfilelist adigraph adjmulticol adfsymbols adjustbox adobemapping adrconv adtrees advdate ae aecc aeguill afparticle afthesis aguplus aiaa aichej ajl akktex akletter alegreya alertmessage alg algobox algolrevived algorithm2e algorithmicx algorithms algxpar aligned-overset alkalami allrunes almendra almfixed alnumsec alpha-persian alphalph alterqcm altfont ametsoc amiri amsaddr amscdx amscls amscls-doc amsfonts amslatex-primer amsldoc-it amsldoc-vn amsmath amsmath-it amsrefs amstex amsthdoc-it animate annotate anonchap anonymouspro answers antiqua antomega antt anufinalexam anyfontsize anysize aobs-tikz aomart apa apa6 apa6e apa7 apacite apalike2 apalike-german apnum appendix appendixnumberbeamer apprendre-a-programmer-en-tex apprends-latex apptools apxproof arabi arabicfront arabi-add arabluatex arabtex arabxetex aramaic-serto arara archaeologie archaic arcs arev arimo armtex around-the-bend arphic arphic-ttf arraycols arrayjobx arraysort arsclassica arydshln articleingud asaetr asapsym ascelike ascii-chart ascii-font asciilist ascmac askinclude askmaps asmeconf asmejour aspectratio assignment assoccnt astro asyfig asymptote-faq-zh-cn asymptote-by-example-zh-cn asymptote-manual-zh-cn asypictureb atbegshi atenddvi atveryend attachfile attachfile2 aucklandthesis augie auncial-new aurical aurl auto-pst-pdf-lua autobreak autopdf authoraftertitle authorarchive authordate authorindex auto-pst-pdf autoaligne autoarea automata autonum autosp auxhook avantgar avremu awesomebox axessibility axodraw2 b1encoding babel babel-albanian babel-azerbaijani babel-basque babel-belarusian babel-bosnian babel-breton babel-bulgarian babel-catalan babel-croatian babel-czech babel-danish babel-dutch babel-english babel-esperanto babel-estonian babel-finnish babel-french babel-friulan babel-galician babel-german babel-georgian babel-greek babel-hebrew babel-hungarian babel-icelandic babel-indonesian babel-interlingua babel-irish babel-italian babel-japanese babel-kurmanji babel-latin babel-latvian babel-macedonian babel-malay babel-norsk babel-occitan babel-piedmontese babel-polish babel-portuges babel-romanian babel-romansh babel-russian babel-samin babel-scottish babel-serbian babel-serbianc babel-slovak babel-slovenian babel-sorbian babel-spanglish babel-spanish babel-swedish babel-thai babel-turkish babel-ukrainian babel-vietnamese babel-welsh babelbib background backnaur baekmuk bagpipe bangorcsthesis bangorexam bangtex bankstatement barcodes bardiag barr barracuda bartel-chess-fonts bashful basicarith baskervald baskervaldx baskervillef basque-book basque-date bath-bst bbcard bbding bbm bbm-macros bbold bbold-type1 bchart bclogo beamer beamer2thesis beamer-FUBerlin beamer-rl beamer-tut-pt beamer-verona beameraudience beamerauxtheme beamercolorthemeowl beamerdarkthemes beamerposter beamersubframe beamerswitch beamertheme-cuerna beamertheme-detlevcm beamertheme-epyt beamertheme-focus beamertheme-light beamertheme-metropolis beamertheme-npbt beamertheme-phnompenh beamertheme-saintpetersburg beamertheme-upenn-bc beamerthemejltree beamerthemenirma bearwear beebe begingreek begriff beilstein belleek bengali bera berenisadf besjournals bestpapers betababel beton beuron bewerbung bez123 bezierplot bgreek bgteubner bguq bhcexam bib-fr bib2gls bibarts biber bibhtml biblatex biblatex-abnt biblatex-anonymous biblatex-apa biblatex-apa6 biblatex-archaeology biblatex-arthistory-bonn biblatex-bath biblatex-bookinarticle biblatex-bookinother biblatex-bwl biblatex-caspervector biblatex-cheatsheet biblatex-chem biblatex-chicago biblatex-claves biblatex-dw biblatex-enc biblatex-ext biblatex-fiwi biblatex-gb7714-2015 biblatex-gost biblatex-historian biblatex-ieee biblatex-ijsra biblatex-iso690 biblatex-jura2 biblatex-juradiss biblatex-lni biblatex-luh-ipw biblatex-manuscripts-philology biblatex-mla biblatex-morenames biblatex-multiple-dm biblatex-musuos biblatex-nature biblatex-nejm biblatex-nottsclassic biblatex-opcit-booktitle biblatex-oxref biblatex-philosophy biblatex-phys biblatex-publist biblatex-realauthor biblatex-sbl biblatex-science biblatex-shortfields biblatex-socialscienceshuberlin biblatex-source-division biblatex-subseries biblatex-swiss-legal biblatex-trad biblatex-true-citepages-omit bibleref bibleref-french bibleref-german bibleref-lds bibleref-mouth bibleref-parse bibletext biblist bibtex bibtexperllibs bibtopic bibtopicprefix bibexport bibunits bidi bidi-atbegshi bidicontour bidihl bidipagegrid bidipresentation bidishadowtext bigfoot bigintcalc bigints binarytree binomexp biochemistry-colors biocon biolett-bst bitelist bitpattern bitset bitter bizcard blacklettert1 blindtext blkarray blochsphere block blockdraw_mp bloques blowup blox bnumexpr bodegraph bohr boisik bold-extra boites boldtensors bondgraph bondgraphs bookcover bookdb bookest bookhands booklet bookman bookmark booktabs booktabs-de booktabs-fr boolexpr boondox bophook borceux bosisio boxedminipage boxedminipage2e boxhandler bpchem bpolynomial br-lex bracketkey braids braille braket brandeis-dissertation brandeis-problemset breakcites breakurl bredzenie breqn bropd brushscr bullcntr bundledoc burmese businesscard-qrcode bussproofs bussproofs-extra bxbase bxcalc bxcjkjatype bxdpx-beamer bxdvidriver bxghost bxjaholiday bxjaprnind bxjatoucs bxpapersize bxpdfver bxeepic bxenclose bxjalipsum bxjscls bxnewfont bxorigcapt bxtexlogo bxwareki bytefield c90 c-pascal cabin cachepic caladea calcage calctab calculation calculator calligra calligra-type1 callouts calrsfs cals calxxxx-yyyy cancel canoniclayout cantarell capt-of captcont captdef caption carbohydrates carlisle carlito carolmin-ps cascade cascadilla cases casyl catchfile catchfilebetweentags catcodes catechis catoptions cbcoptic cbfonts cbfonts-fd cc-pl ccaption ccfonts ccicons cclicenses cd cd-cover cdpbundl cell cellprops cellspace celtic censor centeredline cesenaexam cfr-initials cfr-lm changebar changelayout changelog changepage changes chappg chapterfolder charter chbibref cheatsheet checkcites checkend checklistings chem-journal chemarrow chembst chemcompounds chemcono chemexec chemfig chemformula chemgreek chemmacros chemnum chemplants chemschemex chemsec chemstyle cherokee chess chess-problem-diagrams chessboard chessfss chet chextras chicago chicagoa chicago-annote chickenize childdoc chivo chkfloat chklref chletter chngcntr chordbars chordbox chronology chronosys chs-physics-report chscite churchslavonic cinzel circ circledsteps circuit-macros circuitikz cite citeall citeref cje cjhebrew cjk cjk-gs-integrate cjk-ko cjkpunct clara classics classpack classicthesis cleanthesis clearsans clefval cleveref clipboard clock clojure-pamphlet cloze clrdblpg clrscode clrscode3e clrstrip cluttex cm cm-lgc cm-mf-extra-bold cm-super cm-unicode cmap cmarrows cmbright cmcyr cmdstring cmdtrack cmexb cmextra cmll cmpica cmpj cmsd cmsrb cmtiup cnbwp cnltx cntformats cntperchap cochineal codeanatomy codedoc codepage codesection codicefiscaleitaliano coelacanth collcell collectbox collref colophon colordoc colorinfo coloring colorprofiles colorsep colorspace colortab colortbl colorwav colorweb colourchange combelow combine combinedgraphics combofont comfortaa comicneue comma commado commath commedit comment compactbib competences complexity components-of-TeX comprehensive computational-complexity concepts concmath concmath-fonts concprog concrete confproc constants conteq context-account context-algorithmic context-animation context-annotation context-bnf context-chromato context-cmscbf context-cmttbf context-construction-plan context-cyrillicnumbers context-degrade context-fancybreak context-filter context-french context-fullpage context-gantt context-gnuplot context-handlecsv context-inifile context-layout context-letter context-lettrine context-mathsets context-notes-zh-cn context-rst context-ruby context-simplefonts context-simpleslides context-title context-transliterator context-typearea context-typescripts context-vim context-visualcounter continue contour contracard conv-xkv convbkmk cooking cooking-units cookingsymbols cool coollist coolstr coolthms cooltooltips coordsys copyedit copyrightbox cormorantgaramond correctmathalign coseoul countriesofeurope counttexruns courier courier-scaled courseoutline coursepaper coverpage covington cprotect cqubeamer cquthesis crbox crimson crimsonpro crop crossreference crossreftools crossrefware crossword crosswrd cryptocode cryst cs csbulletin cslatex csplain csquotes csquotes-de css-colors cstex cstypo csvmerge csvsimple ctan-o-mat ctan_chk ctanbib ctanify ctanupload ctable ctablestack ctex ctex-faq cuprum cursolatex cuisine currency currfile currvita curve curve2e curves custom-bib cutwin cv cv4tw cweb-latex cyber cybercic cyklop cyrillic cyrplain dad dancers dantelogo dashbox dashrule dashundergaps dataref datatool dateiliste datenumber datetime datetime2 datetime2-bahasai datetime2-basque datetime2-breton datetime2-bulgarian datetime2-catalan datetime2-croatian datetime2-czech datetime2-danish datetime2-dutch datetime2-en-fulltext datetime2-english datetime2-esperanto datetime2-estonian datetime2-finnish datetime2-french datetime2-galician datetime2-german datetime2-greek datetime2-hebrew datetime2-icelandic datetime2-irish datetime2-italian datetime2-it-fulltext datetime2-latin datetime2-lsorbian datetime2-magyar datetime2-norsk datetime2-polish datetime2-portuges datetime2-romanian datetime2-russian datetime2-samin datetime2-scottish datetime2-serbian datetime2-slovak datetime2-slovene datetime2-spanish datetime2-swedish datetime2-turkish datetime2-ukrainian datetime2-usorbian datetime2-welsh dblfloatfix dccpaper dcpic ddphonism de-macro decimal decorule dehyph dehyph-exptl dejavu dejavu-otf delim delimseasy delimset delimtxt denisbdoc derivative dhua diadia diagbox diagmac2 dialogl diagnose dice dichokey dickimaw dictsym diffcoeff digiconfigs dijkstra din1505 dinat dinbrief dingbat directory dirtree dirtytalk disser ditaa dithesis dk-bib dlfltxb dnaseq dnp doc-pictex docbytex doclicense docmfp docmute docsurvey doctools documentation doi doipubmed domitian dosepsbin dotlessi dot2texi dotarrow dotseqn dottex doublestroke dowith download dox dozenal dpfloat dprogress drac draftcopy draftfigure draftwatermark dramatist dratex drawmatrix drawstack drm droid droit-fr drs drv dsptricks dsserif dtk dtxdescribe dtxgallery dtxgen dtxtut ducksay duckuments duerer duerer-latex duotenzor dutchcal dvdcoll dvgloss dviasm dviincl dviinfox dvipsconfig dynamicnumber dynblocks dynkin-diagrams dyntree e-french ean ean13isbn easy easy-todo easyfig easyformat easylist easyreview ebezier ebgaramond ebgaramond-maths ebong ebook ebproof ebsthesis ec ecc ecclesiastic ecltree eco ecobiblatex econ-bst econometrics economic ecothesis ecv ed edfnotes edmac edmargin ednotes eemeir eepic efbox egameps egplot ehhline eiad eiad-ltx eijkhout einfuehrung einfuehrung2 ejpecp ekaia elbioimp electrum eledform eledmac elegantbook elegantnote elegantpaper elements ellipse ellipsis elmath elocalloc elpres els-cas-templates elsarticle elteikthesis eltex elvish elzcards emarks embedall embedfile embrac emf emisa emptypage emulateapj emp enctex encxvlna endfloat endheads endiagram endnotes endnotesj endofproofwd engpron engrec engtlc enigma enotez enumitem enumitem-zref envbig environ envlab epigrafica epigram epigraph epiolmec eplain epsdice epsf epsf-dvipdfmx epsincl epslatex-fr epspdf epspdfconversion epstopdf epstopdf-pkg eqell eqexpl eqlist eqnalign eqname eqnarray eqnnumwarn eqparbox erdc erewhon erewhon-math errata erw-l3 esami es-tex-faq esdiff esindex esint esint-type1 esk eskd eskdx eso-pic esrelation esstix estcpmm esvect etaremune etdipa etex-pkg etexcmds etextools ethiop ethiop-t1 etoc etoolbox etoolbox-de etsvthor euenc euflag eukdate euler eulerpx eulervm euro euro-ce europasscv europecv eurosym everyhook everypage exam exam-n exam-randomizechoices examdesign example examplep exceltex excludeonly exercise exercisebank exercisepoints exercises exframe exp-testopt expdlist expex export expressg exsheets exsol extarrows exteps extpfeil extract extsizes facsimile factura facture facture-belge-simple-sans-tva faktor fancybox fancyhandout fancyhdr fancyhdr-it fancylabel fancynum fancypar fancyref fancyslides fancytabs fancytooltips fancyvrb fandol fascicules fast-diagram fbb fbithesis fbox fbs fc fcavtex fcltxdoc fcolumn fdsymbol fduthesis featpost fei fenixpar fetamont fetchcls feupphdteses feyn feynmf feynmp-auto ffslides fge fgruler fibeamer fifinddo-info fifo-stack fig4latex figbas figbib figflow figsize filecontents filecontentsdef filedate filehook fileinfo filemod findhyph fink finstrut fira firamath firamath-otf first-latex-doc fitbox fithesis fix2col fixcmex fixfoot fixjfm fixlatvian fixltxhyph fixme fixmetodonotes fixpdfmag fiziko fjodor flabels flacards flagderiv flashcards flashmovie flipbook flippdf float floatflt floatrow flowchart flowfram fltpoint fmp fmtcount fn2end fnbreak fncychap fncylab fnpara fnpct fnspe fntproof fnumprint foekfont foilhtml fonetika font-change font-change-xetex fontawesome fontawesome5 fontaxes fontbook fontch fontinst fontmfizz fontools fonts-churchslavonic fonts-tlwg fontsetup fontspec fonttable fontwrap footbib footmisc footmisx footnotebackref footnotehyper footnoterange footnpag forarray foreign forest forest-quickstart forloop formlett formation-latex-ul forms16be formular forum fouridx fourier fouriernc fp fpl fragmaster fragments frame framed francais-bst frankenstein frcursive frederika2016 frege frenchmath frletter frontespizio ftc-notebook ftcap ftnxtra fullblck fullminipage fullwidth functan fundus-calligra fundus-cyr fundus-sueterlin fvextra fwlw g-brief gaceta galois gamebook gammas garamond-libre garamond-math garuda-c90 garrigues gastex gatech-thesis gates gatherenum gauss gb4e gbt7714 gcard gchords gcite gender geschichtsfrkl genealogy genealogytree gene-logic genmisc genmpage gentium-tug gentle gentombow geometry german germbib germkorr getfiledate getitems getmap getoptk gettitlestring gfnotation gfsartemisia gfsbaskerville gfsbodoni gfscomplutum gfsdidot gfsdidotclassic gfsneohellenic gfsneohellenicmath gfsporson gfssolomos ghab ghsystem gillcm gillius gincltex gindex ginpenc gitfile-info gitinfo gitinfo2 gitlog gitver globalvals glosmathtools gloss glossaries glossaries-danish glossaries-dutch glossaries-english glossaries-estonian glossaries-extra glossaries-finnish glossaries-french glossaries-german glossaries-irish glossaries-italian glossaries-magyar gloss-occitan glossaries-polish glossaries-portuges glossaries-serbian glossaries-slovene glossaries-spanish gmdoc gmdoc-enhance gmiflink gmp gmutils gmverb gmverse gnuplottex go gobble gofonts gost gothic gotoh grabbox gradientframe gradstudentresume grafcet grant graph35 graphbox graphics graphics-cfg graphics-def graphics-pln graphicx-psmin graphicxbox graphicxpsd graphviz grayhints greek-fontenc greek-inputenc greekdates greektex greektonoi greenpoint gregoriotex grfext grffile grfpaste grid grid-system gridset gridslides grotesq grundgesetze gsemthesis gtl gtrlib-largetrees gtrcrd gu guitar guitarchordschemes guitartabs guitlogo gzt h2020proposal hackthefootline hacm hagenberg-thesis halloweenmath handin handout hands hang hanging hanoi happy4th har2nat hardwrap harmony harnon-cv harpoon harvard harveyballs harvmac hatching hausarbeit-jura havannah hc he-she hecthese helvetic hep hep-paper hepnames hepparticles hepthesis hepunits here heuristica hexgame hf-tikz hfbright hfoldsty hhtensor histogr historische-zeitschrift hitec hithesis hletter hlist hmtrump hobby hobete hobsub hologo hook-pre-commit-pkg horoscop hpsdiss hrefhide hrlatex hu-berlin-bundle hulipsum hustthesis hvfloat hvindex hvqrurl hycolor hypdvips hyper hyperbar hypernat hyperref hyperxmp hyph-utf8 hyphen-base hyphenat hyphenex hyplain ibycus-babel ibygrk icite icsv identkey idxcmds idxlayout ieeepes ietfbibs iffont ifmslide ifmtarg ifnextok ifoddpage ifplatform ifptex ifsym iftex ifthenx ifxptex iitem ijmart ijqc ijsra imac image-gallery imakeidx impatient impatient-cn impatient-fr imfellenglish impnattypo import imsproc imtekda incgraph includernw inconsolata index indextools infwarerr initials inkpaper inline-images inlinebib inlinedef inputenx inputtrc inriafonts insbox installfont intcalc interactiveworkbook interchar interfaces interpreter interval intopdf intro-scientific inversepath invoice invoice-class invoice2 iodhbwm ionumbers iopart-num ipaex ipaex-type1 is-bst iscram iso iso10303 isodate isodoc isomath isonums isopt isorot isotope issuulinks istgame itnumpar iwhdp iwona jablantile jacow jamtimes japanese-otf japanese-otf-uptex jbact jfmutil jigsaw jknapltx jkmath jlabels jlreq jmb jmlr jneurosci jnuexam jpsj jsclasses jslectureplanner jumplines junicode jura juraabbrev jurabib juramisc jurarsp js-misc jvlisting kalendarium kanaparser kantlipsum karnaugh karnaugh-map karnaughmap kastrup kblocks kdgdocs kerkis kerntest ketcindy keycommand keyfloat keyindex keyreader keystroke keyval2e keyvaltable kix kixfont knitting knittingpattern knowledge knuth knuth-lib knuth-local koma-moderncvclassic koma-script koma-script-examples koma-script-sfs komacv komacv-rg kotex-oblivoir kotex-plain kotex-utf kotex-utils kpfonts ksfh_nat ksp-thesis ktv-texdata ku-template kurdishlipsum kurier kvdefinekeys kvmap kvoptions kvsetkeys l2picfaq l2tabu l2tabu-english l2tabu-french l2tabu-italian l2tabu-spanish l3backend l3build l3kernel l3packages l3experimental labbook labels labels4easylist labelschanged labyrinth ladder lambda-lists langcode langsci lapdf lastpackage lastpage latex latex-amsmath-dev latex-base-dev latex-bib-ex latex-bib2-ex latex-brochure latex-course latex-doc-ptr latex-fonts latex-git-log latex-graphics-companion latex-graphics-dev latex-make latex-mr latex-notes-zh-cn latex-papersize latex-referenz latex-refsheet latex-tabellen latex-tds latex-tools-dev latex-uni8 latex-veryshortguide latex-via-exemplos latex-web-companion latex2e-help-texinfo latex2e-help-texinfo-fr latex2e-help-texinfo-spanish latex2man latex2nemeth latex4musicians latex4wp latex4wp-it latexbangla latexbug latexcheat latexcheat-de latexcheat-esmx latexcheat-ptbr latexcolors latexcourse-rug latexdemo latexdiff latexfileinfo-pkgs latexfileversion latexgit latexindent latexmk latexmp latexpand latino-sine-flexione lato layaureo layouts lazylist lccaps lcd lcg lcyw leading leadsheets leaflet lecturer lectures ledmac leftidx leipzig lengthconvert letltxmacro letterswitharrows lettre lettrine levy lewis lexend lexikon lexref lfb lgreek lh lhcyr lhelp libertine libertinegc libertinus libertinus-fonts libertinus-otf libertinus-type1 libertinust1math libgreek librarian librebaskerville librebodoni librecaslon librefranklin libris lilyglyphs limap limecv linearA linegoal lineno ling-macros linguex linguisticspro linop lion-msc lipsum lisp-on-tex listbib listing listings listings-ext listingsutf8 listlbls listliketab listofitems listofsymbols lithuanian liturg lkproof llncsconf lm lm-math lmake lni lobster2 locality localloc logbox logical-markup-utils logicproof logicpuzzle logix logpap logreq lollipop longdivision longfbox longfigure longnamefilelist loops lpform lpic lplfitch lps lroundrect lsc lshort-bulgarian lshort-chinese lshort-czech lshort-dutch lshort-english lshort-estonian lshort-finnish lshort-french lshort-german lshort-italian lshort-japanese lshort-korean lshort-mongol lshort-persian lshort-polish lshort-portuguese lshort-russian lshort-slovak lshort-slovenian lshort-spanish lshort-thai lshort-turkish lshort-ukr lshort-vietnamese lstaddons lstbayes lstfiracode lt3graph ltablex ltabptch ltb2bib ltxcmds ltxdockit ltxfileinfo ltxguidex ltximg ltxindex ltxkeys ltxmisc ltxnew ltxtools lua-alt-getopt lua-check-hyphen lua-visual-debug lua2dox luabibentry luabidi luacode luacolor luahyphenrules luaimageembed luaindex luainputenc luaintro lualatex-doc lualatex-doc-de lualatex-math lualatex-truncate lualibs luamesh luamplib luaotfload luapackageloader luarandom luasseq luatex85 luatexbase luatexja luatexko luatextra luatodonotes luavlna luaxml lwarp lxfonts ly1 lyluatex m-tx macros2e macroswap mafr magaz magicnum mailing mailmerge make4ht makebarcode makebase makebox makecell makecirc makecmds makecookbook makedtx makeglos makeplot maker makerobust makeshape mandi manfnt manfnt-font manuscript manyind marcellus margbib marginfit marginfix marginnote markdown marvosym matc3 matc3mem match_parens math-e math-into-latex-4 mathabx mathabx-type1 mathalpha mathastext mathcommand mathcomp mathdesign mathdots mathexam mathfam256 mathfixs mathfont mathpartir mathpazo mathpunctspace mathspec mathtools matlab-prettifier mathspic maths-symbols matrix-skeleton mattens maybemath mcaption mceinleger mcexam mcf2graph mcite mciteplus mcmthesis mdframed mdputu mdsymbol mdwtools media9 medstarbeamer meetingmins memdesign memexsupp memoir MemoirChapStyles memory memorygraphs mendex-doc mentis mensa-tex menu menukeys merriweather metafont-beginners metago metalogo metalogox metaobj metaplot metapost-colorbrewer metapost-examples metatex metatype1 metauml method metre metrix mf2pt1 mfirstuc mflogo mflogo-font mfnfss mfpic mfpic4ode mftinc mgltex mhchem mhequ miama mi-solns microtype microtype-de midnight midpage miller milog milsymb minibox minidocument minifp minipage-marginpar miniplot minitoc minorrevision minted mintspirit minutes mismath missaali mkgrkindex mkjobtexmf mkpattern mkpic mla-paper mlacls mleftright mlist mmap mnotes mnras mnsymbol modeles-factures-belges-assocs moderncv modernposter moderntimeline modiagram modref modroman modular modulus mongolian-babel montserrat monofill montex moodle moreenum morefloats morehype moresize moreverb morewrites morisawa movie15 mp3d mparhack mparrows mpattern mpcolornames mpgraphics mpman-ru mpostinl mptopdf mptrees ms msc msg mslapa msu-thesis mtgreek mucproc mugsthesis multenum multiaudience multibbl multibib multibibliography multicap multicolrule multidef multido multienv multiexpand multilang multiobjective multirow munich musicography musikui musixguit musixtex musixtex-fonts musixtnt musuos muthesis mversion mwcls mwe mweights mxedruli mychemistry mycv mylatexformat mynsfc na-box na-position nag nameauth namespc nanicolle nanumtype1 nar natbib natded nath nature navigator navydocs ncclatex ncctools ncntrsbk nddiss ndsu-thesis needspace nestquot neuralnetwork nevelok newcommand newcomputermodern newenviron newfile newfloat newlfm newpx newsletr newspaper newtx newtxsf newtxtt newunicodechar newvbtm newverbs nextpage nfssext-cfr nicefilelist niceframe niceframe-type1 nicematrix nicetext nidanfloat nih nihbiosketch nimbus15 njurepo nkarta nlctdoc nmbib noconflict nodetree noindentafter noitcrul nolbreaks nomencl nomentbl nonfloat nonumonpart nopageno norasi-c90 normalcolor nostarch notes notes2bib notespages notestex notex-bst noto notoccite novel nowidow nox npp-for-context nrc ntgclass ntheorem ntheorem-vn nuc nucleardata numberedblock numberpt numericplots numname numnameru numprint numspell nwejm oberdiek objectz obnov ocg-p ocgx ocgx2 ocherokee ocr-b ocr-b-outline ocr-latex octave octavo odsfile ofs ogham oinuit old-arrows oldlatin oldstandard oldstyle olsak-misc onedown onlyamsmath onrannual opcit opensans oplotsymbl opteng optidef optional options ordinalpt orkhun oscola ot-tableau othello othelloboard oubraces outline outliner outlines outlining overlays overlock overpic pacioli padauk pagecolor pagecont padcount pagenote pagerange pageslts palatino paper papercdcase papermas papertex paracol parades paralist parallel paratype paresse parnotes parrun parsa parselines parskip pas-cours pas-crosswords pas-cv pas-tableur passivetex patch patchcmd patgen2-tutorial path pauldoc pawpict pax pbibtex-base pbox pb-diagram pbsheet pdf14 pdf-trans pdfarticle pdfbook2 pdfcolmk pdfcomment pdfcprot pdfcrop pdfescape pdfjam pdflatexpicscale pdflscape pdfmarginpar pdfoverlay pdfpagediff pdfpages pdfpc-movie pdfprivacy pdfreview pdfscreen pdfslide pdfsync pdftex-quiet pdftexcmds pdftricks pdftricks2 pdfx pdfxup pecha pedigree-perl penrose perception perfectcut perltex permute persian-bib petiteannonce petri-nets pfarrei pgf pgf-blur pgf-cmykshadings pgf-soroban pgf-spectra pgf-umlcd pgf-umlsd pgfgantt pgfkeyx pgfmolbio pgfmorepages pgfopts pgfornament pgfornament-han pgfplots phaistos phffullpagefigure phfnote phfparen phfqit phfquotetext phfsvnwatermark phfthm philex philokalia philosophersimprint phonenumbers phonetic phonrule photo physics piano picinpar pict2e pictex pictex2 pictexsum picture piechartmp piff pigpen pinlabel pinoutikz pitex pittetd pixelart pkfix pkfix-helper pkgloader pkuthss pl placeat placeins placeins-plain plain-doc plainpkg plainyr plari plantslabels plantuml plates platex platex-tools platexcheat plautopatch play playfair plex plex-otf plipsum plnfss plstmary plweb pm-isomath pmboxdraw pmgraph pmx pmxchords pnas2009 poemscol poetry poetrytex poiretone polexpr polski poltawski polyglossia polynom polynomial polytable poormanlog postage postcards poster-mac powerdot powerdot-fuberlin powerdot-tuliplab ppr-prv pracjourn practicalreports preprint prerex present presentations presentations-en pressrelease prettyref preview prftree printlen proba probsoln procIAGssymp prodint productbox program progress progressbar proof-at-the-end proofread prooftrees proposal properties prosper protex protocol prtec przechlewski-book psbao pseudo pseudocode psfrag psfrag-italian psfragx psgo psizzl pslatex psnfss pspicture pst-2dplot pst-3d pst-3dplot pst-abspos pst-am pst-antiprism pst-arrow pst-asr pst-bar pst-barcode pst-bezier pst-blur pst-bspline pst-calculate pst-calendar pst-cie pst-circ pst-coil pst-contourplot pst-cox pst-dart pst-dbicons pst-diffraction pst-electricfield pst-eps pst-eucl pst-eucl-translation-bg pst-exa pst-feyn pst-fill pst-fit pst-fr3d pst-fractal pst-fun pst-func pst-gantt pst-geo pst-geometrictools pst-gr3d pst-grad pst-graphicx pst-infixplot pst-intersect pst-jtree pst-knot pst-labo pst-layout pst-lens pst-light3d pst-lsystem pst-magneticfield pst-marble pst-math pst-mirror pst-moire pst-node pst-ob3d pst-ode pst-optexp pst-optic pst-osci pst-ovl pst-pad pst-pdgr pst-perspective pst-platon pst-plot pst-poker pst-poly pst-pdf pst-pulley pst-qtree pst-rputover pst-rubans pst-shell pst-sigsys pst-slpe pst-solarsystem pst-solides3d pst-soroban pst-spectra pst-spinner pst-spirograph pst-stru pst-support pst-text pst-thick pst-tools pst-tree pst-turtle pst-tvz pst-uml pst-vectorian pst-vehicle pst-venn pst-vowel pst-vue3d pst2pdf pstool pstricks pstricks-add pstricks_calcnotes pstring ptex-base ptex-fontmaps ptex-fonts ptex-manual ptex2pdf ptext ptolemaicastronomy ptptex punk punk-latex punknova purifyeps pxbase pxchfon pxcjkcat pxfonts pxgreeks pxjahyper pxjodel pxpgfmark pxrubrica pxtatescale pxtxalfa pxufont pygmentex python pythonhighlight pythontex qcircuit qcm qobitree qrcode qsharp qstest qsymbols qtree qualitype quantikz quantumarticle quattrocento quicktype quiz2socrative quotchap quoting quotmark quran quran-de quran-ur r_und_s ragged2e raleway ran_toks randbild randomlist randomwalk randtext rank-2-roots rccol rcs rcs-multi rcsinfo readarray realboxes realhats realscripts rec-thy recipe recipebook recipecard recycle rectopma refcheck refcount refenums reflectgraphics refman refstyle regcount regexpatch register regstats reledmac relenc relsize reotex repeatindex repere repltext rerunfilecheck resphilosophica resumecls resumemac returntogrid reverxii revquantum revtex rgltxdoc ribbonproofs rjlparshap rlepsf rmathbr rmpage roboto robustcommand robustindex romanbar romanbarpagenumber romande romanneg romannum rosario rotfloat rotpages roundbox roundrect rrgtrees rsc rsfs rsfso rterface rtkinenc rtklage rubik ruhyphen rulerbox rulercompass russ rutitlepage rviewport rvwrite ryersonsgsthesis ryethesis sa-tikz sageep sanitize-umlaut sanskrit sanskrit-t1 sansmath sansmathaccent sansmathfonts sapthesis sasnrdisplay sauerj sauter sauterfonts savefnmark savesym savetrees scale scalebar scalerel scanpages schedule schemabloc schemata scholax sclang-prettifier schule schulschriften schwalbe-chess sciposter scientific-thesis-cover scontents scratch scratch3 scratchx screenplay screenplay-pkg scrjrnl scrlttr2copy scsnowman sdaps sdrt sduthesis secdot secnum section sectionbox sectionbreak sectsty seealso selectp selinput selnolig semantic semantic-markup semaphor seminar semioneside semproc sepfootnotes sepnum seqsplit serbian-apostrophe serbian-date-lat serbian-def-cyr serbian-lig sesamanuel sesstime setdeck setspace seuthesis seuthesix sexam sf298 sffms sfg sfmath sgame shade shadethm shadow shadowtext shapepar shapes shdoc shipunov shobhika short-math-guide shorttoc show2e showcharinbox showdim showexpl showhyphens showlabels showtags shuffle sidecap sidenotes sides signchart silence simple-resume-cv simple-thesis-dissertation simplebnf simplecd simplecv simpleinvoice simplekv simpleoptics simpler-wick simplewick simplified-latex simurgh sitem siunitx skak skaknew skb skdoc skeycommand skeyval skmath skrapport skull slantsc slideshow smalltableof smartdiagram smartref smartunits snapshot snotez songbook songs sort-by-letters soton soul soulutf8 soulpos soup sourcecodepro sourcesanspro sourceserifpro spacingtricks spalign spanish-mx spark-otf sparklines spath3 spectralsequences spelling spie sphack sphdthesis splines splitbib splitindex spot spotcolor spreadtab spverbatim sr-vorl srbook-mem srcltx srdp-mathematik srcredact sseq sslides stack stackengine stage standalone stanli starfont startex statex statex2 statistics statistik statmath staves stdclsdv stdpage stealcaps steinmetz stellenbosch step stex stickstoo stix stix2-otf stix2-type1 stmaryrd storebox storecmd stringenc stringstrings structmech struktex sttools stubs studenthandouts sty2dtx suanpan subdocs subdepth subeqn subeqnarray subfig subfigmat subfigure subfiles subfloat substances substitutefont substr subsupscripts subtext sudoku sudokubundle suftesi sugconf superiors supertabular susy svg svg-inkscape svgcolor svn svn-multi svn-prov svninfo svrsymbols swebib swimgraf syllogism symbol sympytexpackage syntax synproof syntrace synttree systeme t-angles t2 tabfigures table-fct tableaux tablefootnote tableof tablestyles tablists tablor tabls tablvar tabriz-thesis tabstackengine tabto-generic tabto-ltx tabu tabularborder tabularcalc tabularew tabulars-e tabulary tabvar tagging tagpair tagpdf talk tamefloats tamethebeast tap tapir tasks tcldoc tcolorbox tdclock tdsfrmath technics technion-thesis-template ted templates-fenn templates-sommer templatetools tempora tengwarscript tensind tensor termcal termcal-de termlist termmenu testhyphens testidx tetragonos teubner tex-ewd tex-font-errors-cheatsheet tex-gyre tex-gyre-math tex-ini-files tex-label tex-locale tex-overview tex-ps tex-refs tex-virtual-academy-pl tex4ebook texapi texbytopic texcount texdate texdef texdiff texdirflatten texdoc texdraw texfot texilikechaps texilikecover texliveonfly texloganalyser texlogos texmate texments texonly texosquery texplate texpower texproposal texshade textualicomma texvc textcase textfit textglos textgreek textmerg textopo textpath textpos tfrupee thaienum thaispec thalie theanodidot theanomodern theanooldstyle theatre theoremref thesis-ekf thesis-gwu thesis-qom thesis-titlepage-fhac thinsp thmbox thmtools threadcol threeddice threeparttable threeparttablex thuaslogos thucoursework thumb thumbpdf thumbs thumby thuthesis ticket ticollege tikz-bayesnet tikz-cd tikz-3dplot tikz-dependency tikz-dimline tikz-feynhand tikz-feynman tikz-imagelabels tikz-inet tikz-kalender tikz-karnaugh tikz-ladder tikz-layers tikz-nef tikz-network tikz-opm tikz-optics tikz-palattice tikz-qtree tikz-relay tikz-sfc tikz-timing tikz-trackschematic tikz-truchet tikzcodeblocks tikzducks tikzinclude tikzlings tikzmark tikzmarmots tikzorbital tikzpagenodes tikzpeople tikzpfeile tikzposter tikzscale tikzsymbols timbreicmc times timetable timing-diagrams tinos tipa tipa-de tipfr titlecaps titlefoot titlepages titlepic titleref titlesec titling tkz-base tkz-berge tkz-doc tkz-euclide tkz-fct tkz-graph tkz-kiviat tkz-linknodes tkz-orm tikz-page tkz-tab tlc-article tlc2 tlcockpit tocbibind tocdata tocloft tocvsec2 todo todonotes tokcycle tokenizer toolbox tools topfloat topiclongtable topletter totcount totpages toptesi tpic2pdftex tpslifonts tqft tracklang trajan tram translation-array-fr translation-arsclassica-de translation-biblatex-de translation-chemsym-de translation-dcolumn-fr translation-ecv-de translation-enumitem-de translation-europecv-de translation-filecontents-de translation-moreverb-de translation-natbib-fr translation-tabbing-fr translations translator transparent tree-dvips treetex trfsigns trigonometry trimspaces trivfloat trsym truncate tsemlines tucv tuda-ci tudscr tufte-latex tugboat tugboat-plain tui turabian turabian-formatting turkmen turnstile turnthepage twoinone twoup txfonts txfontsb txgreeks txuprcal type1cm typed-checklist typeface typehtml typeoutfileinfo typewriter typicons typoaid typogrid uaclasses uafthesis uantwerpendocs uassign ucalgmthesis ucharcat ucharclasses ucbthesis ucdavisthesis ucs ucsmonograph ucthesis udesoftec uebungsblatt uestcthesis uhhassignment uhrzeit uiucredborder uiucthesis ukrhyph ulem ulqda ulthese umbclegislation umich-thesis uml umlaute umoline umthesis umtypewriter unam-thesis unamth-template unamthesis undergradmath underlin underoverlap underscore undolabl unfonts-core unfonts-extra uni-wtal-ger uni-wtal-lin unicode-alphabets unicode-data unicode-bidi unicode-math unifith uniquecounter unisugar unitn-bimrep units unitsdef universa universalis univie-ling unizgklasa unravel unswcover uothesis uowthesis uowthesistitlepage upca uplatex upmethodology uppunctlm upquote uptex-base uptex-fonts upzhkinsoku uri url urlbst urcls urwchancal usebib ushort uspace uspatent ut-thesis utexasthesis utf8mex uwmslide uwthesis vak vancouver variablelm variations varindex varisize varsfromjobname varwidth vaucanson-g vdmlisting velthuis venn venndiagram venturisadf verbasef verbatimbox verbatimcopy verbdef verbments verifica verse version versions versonotes vertbars vgrid vhistory visualfaq visualpstricks visualtikz vmargin vntex vocaltract volumes voss-mathcol vpe vruler vtable vwcol wadalab wallcalendar wallpaper warning warpcol was wasy wasy-type1 wasysym webguide webquiz widetable widows-and-orphans williams windycity withargs witharrows wnri wnri-latex wordcount wordlike worksheet wrapfig wsemclassic wsuipa wtref xargs xassoccnt xbmks xcharter xcite xcjk2uni xcntperchap xcolor xcolor-material xcolor-solarized xcomment xcookybooky xcpdftips xdoc xduthesis xebaposter xechangebar xecjk xecolor xecyr xecyrmongolian xeindex xellipsis xepersian xesearch xespotcolor xetex-devanagari xetex-itrans xetex-pstricks xetex-tibetan xetexfontinfo xetexko xetexref xevlna xfakebold xfor xgreek xhfill xifthen xii xii-lat xindex xint xits xkcdcolors xkeyval xlop xltabular xltxtra xmltex xmpincl xnewcommand xoptarg xpatch xpeek xpiano xpicture xpinyin xprintlen xpunctuate xq xsavebox xsim xskak xstring xtab xtuthesis xunicode xurl xwatermark xyling xymtex xypic xypic-tut-pt xytree yafoot yagusylo yaletter yannisgr yathesis yax yazd-thesis ycbook ydoc yfonts yfonts-t1 yhmath yinit-otf york-thesis youngtab yplan ytableau zapfchan zapfding zebra-goodies zed-csp zhlineskip zhlipsum zhnumber zhmetrics zhmetrics-uptex zhspacing ziffer zlmtt zootaxa-bst zref zwgetfdate zwpagelayout zxjafbfont zxjafont zxjatype ); # these packages we do not expect to check. Once this list is complete, # we can start working on tlmgr list | grep shortdesc. my @TLP_no_check = ( "afm2pl", # not on ctan "aleph", # binary "asymptote", # binary "autosp", # binary "bibtex", # binary "bibtex8", # binary "bibtexu", # binary "chktex", # binary "cjkutils", # binary "cns", # old unchanging font under CJK on ctan "context", # binary+taco/mojca "cs", # multiple .tar.gz, too painful to unpack "ctib", # binary "ctie", # binary "cweb", # binary "cweb-old", # our files "cyrillic-bin", # binary "detex", # binary "devnag", # binary "dtl", # binary "dvi2tty", # binary "dvicopy", # binary "dvidvi", # binary "dviljk", # binary "dviout-util", # binary "dvipdfm", # binary "dvipdfmx", # binary "dvipng", # binary "dvipos", # binary "dvips", # binary "dvisvgm", # binary "ecgdraw", # awaiting upload with trivial \CheckSum fix 2jul16 "enctex", # binary "etex", # binary "euxm", # knuth, old, not on ctan "finbib", # not on ctan "fontname", # tl-update-auto "fontware", # binary "glyphlist", # not on ctan, handled in tlpkg/dev/srclist.txt "gnu-freefont", # no files to compare, distributed as tarballs "groff", # binary "gsftopk", # binary "gustlib", # not on ctan, requested from gust "gustprog", # not on ctan, gust "guide-to-latex", # not on ctan, book examples, ok "hyperref-docsrc", # not on ctan, awaiting hyperref doc volunteer "ifluatex", # part of oberdiek "jadetex", # too old to owrry about "jmn", # part of context "kluwer", # not on ctan, old lppl, not worth pursuing or removing "kpathsea", # binary "lacheck", # binary "lambda", # not on ctan, too old to worry about "latex-bin", # binary "latex-bin-dev", # binary "latexconfig", # we maintain "lcdftypetools", # binary "luatex", # binary "luahbtex", # binary "luajittex", # binary "makeindex", # binary "malayalam-latex", # binary "metafont", # binary "metapost", # binary "mex", # gust, requested 2013 "mflua", # binary "mfware", # binary "mltex", # binary "omega", # binary "omegaware", # binary "otibet", # not on ctan, too old to worry about "patgen", # binary "pdftex", # binary "pdftosrc", # binary "pdfwin", # not on ctan, too old to worry about "plain", # mostly our .ini files, plus well-known plain.tex "powerdot", # stale generated files on ctan "ps2pk", # binary "pst-ghsb", # not on ctan, replaced by pst-slpe, keep for compat "pstools", # binary "psutils", # binary "ptex", # binary "qpxqtx", # gust, requested feb 2013 "revtex4", # APS declines to keep compatibility, but we have to "roex", # gust, requested 2012 "seetexk", # binary "synctex", # binary "t1utils", # binary "tds", # stable, don't worry until next update "tetex", # we maintain "tex", # binary "tex4ht", # binary "texconfig", # we maintain "texdoctk", # maintained here "texinfo", # tl-update-auto "texlive.infra", # binary "texsis", # too old to worry about "texware", # binary "texworks", # binary "tie", # binary "tlaunch", # w32 siep binary "tlshell", # our binary "ttfutils", # binary "updmap-map", # autogenerated map files "uhc", # big tar files from 2005, don't worry until update "uptex", # binary "utopia", # afm differs, don't worry "vlna", # binary "web", # binary "xdvi", # binary "xelatex-dev", # binary "xetex", # binary "xetexconfig", # we maintain "xindy", # binary "xmltexconfig", # we maintain "xpdfopen", # binary ); exit (&main ()); sub main { chomp ($Master = `cd $mydir/../.. && pwd`); $tlpdb = TeXLive::TLPDB->new ("root" => $Master); die "Cannot find tlpdb in $Master!" unless defined $tlpdb; $OPT{"verbose"} = 0; if ($ARGV[0] eq "--verbose" || $ARGV[0] eq "-v") { $OPT{"verbose"} = 1; shift @ARGV; } $OPT{"all"} = 0; if ($ARGV[0] eq "--all") { $OPT{"all"} = 1; shift @ARGV; } $OPT{"no-clean"} = 0; if ($ARGV[0] eq "--no-clean") { $OPT{"no-clean"} = 1; shift @ARGV; } if ($ARGV[0] eq "--list-not-treated") { my @not_checked = (); for my $b (&normal_tlps ()) { if (! grep ($b eq $_, @TLP_working, @TLP_no_check)) { push (@not_checked, $b); } } print "" . (@not_checked+0) . " TL packages not checked against CTAN:\n"; print "@not_checked\n"; @ARGV = (); # no normal checks } elsif ($ARGV[0] eq "--check") { # check all/only those packages we have actually run through this mill. @ARGV = @TLP_working; } elsif ($ARGV[0] eq "--check-all") { @ARGV = &normal_tlps (); } my $errcount = 0; for my $tlp (@ARGV) { print "checking $tlp..." if $OPT{"verbose"}; $errcount += &do_tlp ($tlp); } return $errcount; } # gives a list with only the 'normal' packages, # that is, excluding meta-packages and binary packages # (and hyphen for the moment) # sub normal_tlps { my @normal; my $non_normal = `ls $Master/bin`; $non_normal =~ s/\n/\$|/g; $non_normal .= '^0+texlive|^bin-|^collection-|^scheme-|^texlive-|^hyphen-'; foreach ($tlpdb->list_packages) { push (@normal, $_) unless (/$non_normal/); } return @normal; } # Return 1 if package TLPN needs updating (or error), 0 if ok. # sub do_tlp { my ($tlpn) = @_; my $needed = 0; my $tlp = $tlpdb->get_package($tlpn); if (!defined($tlp)) { warn "$0: no package $tlpn\n"; return 1; } chomp (my $ctan_dir = `$mydir/tlpkginfo --prepare '$tlpn'`); if (! $ctan_dir) { warn "$0: oops, no CTAN directory for $tlpn, fix fix\n"; return 1; } # csplain and cslatex have .tar.gz's that need to be unpacked for # comparison. (perhaps this should be done in tlpkginfo.) but don't # do any unpacking inside the ctan hierarchy. chomp (my $ctan_root = `$mydir/tlpkginfo --ctan-root`); if ($ctan_dir !~ m,^$ctan_root,) { for my $tgz (glob ("$ctan_dir/*.tar.gz")) { system ("tar -C $ctan_dir -xf $tgz"); } } # One more total kludge. We should probably put this into tlpkginfo # and factor it out from here and ctan2tds. if ($tlpn eq "cs") { $TMPDIR = $ENV{"TMPDIR"} || "/tmp"; my $pkgdir = "$TMPDIR/tl.$pkgname"; system ("rm -rf $pkgdir"); mkdir ($pkgdir, 0777) || die "mkdir($pkgdir) failed: $!"; # # unpack the multiple constituent tarballs. for my $tarbase ("csfonts-t1", "csfonts", "cspsfonts") { system ("tar -C $pkgdir -xf $ctan_dir/$tarbase.tar.gz"); } # look in the new dir we just created. $ctan_dir = $pkgdir; } my @tl_files = (); push @tl_files, $tlp->runfiles; push @tl_files, $tlp->docfiles; push @tl_files, $tlp->srcfiles; if ($tlp->relocated) { for (@tl_files) { s:^$RelocPrefix/:$RelocTree/:; } } # we don't push bin files. my @tl_basefiles = (); # compare with CTAN after the loop my @compared = (); for my $file (@tl_files) { (my $basefile = $file) =~ s,^.*/,,; # if file exists by multiple names in TL (e.g., README), only check # the first one we come across, since we'll only find the first one # on CTAN and we don't want to try to match subdir suffixes. next if grep { $_ eq $basefile } @tl_basefiles; #warn "checking tl file $file -> $basefile\n"; push (@tl_basefiles, $basefile); # No point in comparing our pdfs now, too many are different. # However, for lshort translations and mathdesign, pdf can be # all we have to compare. next if $file =~ /\.pdf$/ && $file !~ /short|mathdesign/; # seems mathpazo files were updated in TL and not CTAN. # Too old to worry about. next if $basefile =~ m,(pazofnst.tex|Makefile)$, && $file =~ m,/mathpazo/,; # We install our own stub, not ConTeXt's. I guess. next if $basefile eq "mptopdf.exe"; # btxmac.tex symlinked on CTAN, but we may as well keep the copy # actually used in lollipop in TL (doc tree). next if $basefile eq "btxmac.tex" && $file =~ m,/lollipop/,; # Different cluttex.lua gets installed. next if $basefile eq "cluttex.lua"; # Wrong README gets compared. next if $basefile eq "README" && $file =~ m,/(pmx|cs)/,; my $tl_file = "$Master/$file"; if (! -e $tl_file) { warn "$tl_file: TL file missing\n"; next; } chomp (my @ctan_files = `find $ctan_dir/ -name $basefile`); #warn "ctan find $basefile: @ctan_files\n"; # the trailing / is so we dereference a symlink on CTAN. next if @ctan_files > 1; # if more than one file by same name, skip my $ctan_file = $ctan_files[0]; #warn "ctan file is $ctan_file\n"; if (! -e $ctan_file) { # maybe it'll be there with a case change in the name chomp (@ctan_files = `find $ctan_dir/ -iname $basefile`); #warn "ctan ifind $basefile: @ctan_files\n"; next if @ctan_files > 1; # if more than one file by same name, skip $ctan_file = $ctan_files[0]; if (! -e $ctan_file) { # we generate lots of files, eg perlmacros.sty, so might skip. warn "$ctan_file: CTAN file missing\n" if $ctan_file && $ctan_file !~ /(cfg|dvi|sty|tex)$/; next; } } push (@compared, $basefile); if (&files_differ ($tl_file, $ctan_file)) { print "# $tlpn\ndiff $ctan_file $tl_file\n"; $needed = 1; last unless $OPT{"all"}; } } # unfortunately, we cannot do this. There are many PDF's on CTAN # which have no sources or otherwise problematic for TL. Perhaps one # day we could use the %moreclean hash from ctan2tds as an additional # filter, i.e., put all those ctan2tds tables in an external file. # # # check for PDF files on CTAN that we don't have. # my @ctan_pdf_needed = (); # chomp (my @ctan_files = `find $ctan_dir -name \*.pdf`); # for my $cfile (@ctan_files) { # (my $base_cfile = $cfile) =~ s,^.*/,,; # if (! grep { $_ eq $base_cfile } @tl_basefiles) { # push (@ctan_pdf_needed, $base_cfile); # } # } # if (@ctan_pdf_needed) { # if (! $needed) { # # if this is the first thing needed (no diffs), print package name. # print "# $tlpn\n"; # $needed = 1; # } # print "# new on ctan: @ctan_pdf_needed\n"; # } if (@compared == 0) { warn "\n$tlpn: no files to compare in $ctan_dir, fixme!\n"; warn " (tl_files = @tl_files)\n"; warn " (ctan_files = @ctan_files)\n"; } elsif ($needed == 0) { print "ok\n" if $OPT{"verbose"}; } print ((@compared + 0) . " compared (@compared)\n") if $OPT{"verbose"}; # clean up the tmpdir possibly created from tlpkginfo --prepare. chomp (my $ctan_root = `$mydir/tlpkginfo --ctan-root`); if ($ctan_dir !~ m,^$ctan_root, && ! $OPT{"no-clean"}) { system ("rm -rf $ctan_dir"); } return $needed; } # 0 if files are the same, 1 if they are different. # sub files_differ { my ($tl_file,$ctan_file) = @_; #warn "comparing $ctan_file $tl_file\n"; return system ("$mydir/cmp-textfiles $ctan_file $tl_file"); } # vim: set ts=8 sw=2 expandtab: