source: trunk/dports/math/octave-devel/Portfile @ 147826

Last change on this file since 147826 was 147826, checked in by mcalhoun@…, 4 years ago

octave-devel: build with hdf5-18 instead of hdf5 (fixes #51080)
no revbump since port builds correctly or not at all

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 21.4 KB
Line 
1# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
2# $Id: Portfile 147826 2016-04-17 00:58:53Z mcalhoun@macports.org $
3
4PortSystem          1.0
5PortGroup           compilers  1.0
6PortGroup           muniversal 1.0
7PortGroup           active_variants 1.1
8PortGroup           select     1.0
9
10name                octave-devel
11categories          math science
12platforms           darwin
13license             GPL-3+
14maintainers         mcalhoun openmaintainer
15description         a high-level language for numerical computations
16long_description    \
17    GNU Octave is a high-level language, primarily intended for numerical \
18    computations.  It provides a convenient command line interface for \
19    solving linear and nonlinear problems numerically.
20
21homepage            http://www.gnu.org/software/octave
22
23#fetch.type          hg
24#hg.url              http://hg.savannah.gnu.org/hgweb/octave/
25
26set version_release 4.0.1
27set version_rc      4.0.1-rc4
28set version_tip     4.1.0+
29
30if { ${name} eq ${subport} } {
31    version         ${version_tip}
32    revision        9
33    hg.tag          ec01be3b8f5d
34
35    # see http://savannah.gnu.org/bugs/?41027
36    patchfiles-append   \
37        octave-bug_41027-half.patch
38
39    checksums-append               \
40        ${hg.tag}${extract.suffix} \
41        rmd160  350c605c11b7437d9697966ffecaa7031e05c28c \
42        sha256  d4ce3c55c9ef2ee74c4bb42f02757747cbbe023d3677d87e9177576f1b336963
43
44    livecheck.regex   "<a href=\"/hgweb/octave/rev/(\[a-zA-Z0-9.\]+)\">\ntip"
45}
46
47subport octave-devel-rc {
48    version         ${version_rc}
49    revision        4
50    hg.tag          2b66f30a0de7
51
52    if {${version_rc} eq ${version_release}} {
53        conflicts-append octave-devel-release
54    }
55
56    # see http://savannah.gnu.org/bugs/?func=detailitem&item_id=46592
57    patchfiles-append \
58        patch-e870a68742a6.diff
59
60    # see http://savannah.gnu.org/bugs/?41027
61    patchfiles-append   \
62        octave-bug_41027.patch
63
64    checksums-append               \
65        ${hg.tag}${extract.suffix} \
66        rmd160  4bf919790f28f21752381e127cf55b3a5f4d7344 \
67        sha256  4785967cff091dddd7d82dbbd094658a39ad26d4a7219abc1f1bbc4fe696d43a
68
69    livecheck.regex   "<a href=\"/hgweb/octave/rev/(\[a-zA-Z0-9.\]+)\">\nrc-"
70}
71
72subport octave-devel-release {
73    version         ${version_release}
74    #revision        0
75    hg.tag          5162cdfb56d8
76
77    if {${version_release} eq ${version_rc}} {
78        conflicts-append octave-devel-release
79    }
80
81    # see http://savannah.gnu.org/bugs/?func=detailitem&item_id=46592
82    patchfiles-append \
83        patch-e870a68742a6.diff
84
85    # see http://savannah.gnu.org/bugs/?41027
86    patchfiles-append   \
87        octave-bug_41027.patch
88
89    checksums-append               \
90        ${hg.tag}${extract.suffix} \
91        rmd160  64c48708d456e8efb48877af6443a2c637f3d3a6 \
92        sha256  8b6b93d2fe830f7aa5b446856105436c51547e1ff8fe47a4184ea535bdd370d1
93
94    livecheck.regex   "<a href=\"/hgweb/octave/rev/(\[a-zA-Z0-9.\]+)\">\nrelease-"
95}
96
97select.group octave
98select.file  ${filespath}/${subport}
99
100# check http://hg.savannah.gnu.org/hgweb/octave/gnulib-hg/rev for latest version
101set hg_gnu_tag      7f19e7f2afa2
102
103checksums-append \
104    ${hg_gnu_tag}${extract.suffix} \
105    rmd160  9d906212fdb4201f8592da10524606dadb3f50e3 \
106    sha256  85add8ce0c53e8868d903c28c407d864ca54bd42e8d472e09b1a1bb4b105b741
107
108master_sites        http://hg.savannah.gnu.org/hgweb/octave/archive:octave \
109                    http://hg.savannah.gnu.org/hgweb/octave/gnulib-hg/archive:gnulib
110
111distfiles           \
112    ${hg.tag}${extract.suffix}:octave \
113    ${hg_gnu_tag}${extract.suffix}:gnulib
114
115worksrcdir          octave-${hg.tag}
116
117#depends_extract-append port:git
118post-extract {
119    # command from bootstrap script file
120    #system -W ${worksrcpath} "${prefix}/bin/git clone --depth 2 git://git.sv.gnu.org/gnulib gnulib-hg"
121    move ${worksrcpath}/../gnulib-hg-${hg_gnu_tag} ${worksrcpath}/gnulib-hg
122}
123
124# see http://git.savannah.gnu.org/cgit/gnulib.git/commit/lib/stdio.in.h?id=d6176702c3ffb6c56e6620397470e1b3bd540b10
125patchfiles-append   \
126    patch-stdio.in.h.diff
127
128pre-patch {
129    # code located in pre-patch because variants from PortGroup compilers must
130    #    be evaluated before it can be determined if clang is being used
131
132    # see http://trac.macports.org/ticket/45011
133    # see http://savannah.gnu.org/bugs/?43298
134    set libcxxbug no
135    if { ${configure.cc} eq "/usr/bin/clang" && [lindex [split ${xcodeversion} .] 0] eq 6 } {
136        set libcxxbug yes
137    } elseif { [variant_exists clang35] && [variant_isset clang35] } {
138        set libcxxbug yes
139    }
140    if { ${libcxxbug} } {
141        patchfiles-append   \
142            clang-libcxx-fix.patch
143    }
144}
145
146# need for autoconf
147depends_build-append \
148    port:autoconf    \
149    port:automake    \
150    port:libtool
151
152use_autoconf         yes
153autoconf.cmd         ./bootstrap
154autoconf.args
155
156# avoid depends_build-append port:coreutils
157configure.env-append MKDIR_P="/bin/mkdir -p"
158
159# avoid depends_build-append port:cctools
160configure.env-append RANLIB=/usr/bin/ranlib
161
162# main octave port lists as a depends_lib
163# configure.ac list it among the "[p]rograms used in Makefiles"
164depends_build-append port:gawk
165configure.awk ${prefix}/bin/gawk
166
167# in configure.ac, said to be "[p]rograms used to generate icons file formats
168depends_build-append \
169    port:icoutils    \
170    port:librsvg
171configure.env-append              \
172    ICOTOOL=${prefix}/bin/icotool \
173    RSVG_CONVERT=${prefix}/bin/rsvg-convert
174
175# main octave port lists as a depends_lib
176# configure.ac list it among the "[p]rograms used in Makefiles"
177depends_build-append port:grep
178configure.env-append  GREP=${prefix}/bin/grep
179configure.env-append EGREP=${prefix}/bin/egrep
180configure.env-append FGREP=${prefix}/bin/fgrep
181
182# configure.ac list it among the "[p]rograms used in Makefiles"
183depends_build-append port:findutils
184configure.env-append FIND=${prefix}/bin/gfind
185
186# main octave port lists as a depends_lib
187# configure.ac list it among the "[p]rograms used in Makefiles"
188depends_build-append port:gsed
189configure.env-append SED=${prefix}/bin/gsed
190
191depends_build-append port:flex
192configure.env-append LEX=${prefix}/bin/flex
193
194depends_build-append port:bison
195configure.env-append YACC="${prefix}/bin/bison -y"
196
197depends_build-append port:gperf
198configure.env-append GPERF=/usr/bin/gperf
199
200# configure.ac list it among the "[p]rograms used in Makefiles"
201depends_build-append port:perl5
202configure.perl ${prefix}/bin/perl5
203
204# avoid depends_build-append port:desktop-file-utils
205#configure.env-append DESKTOP_FILE_INSTALL=""
206configure.env-append ac_cv_prog_DESKTOP_FILE_INSTALL=""
207
208depends_build-append \
209    port:pkgconfig
210
211compilers.choose    fc f77 f90 cc cxx
212
213# for now, limit the number of variants
214# some of these compilers may work fine
215compilers.setup     \
216    require_fortran \
217    -dragonegg      \
218    -gcc49          \
219    -gcc48          \
220    -gcc46          \
221    -gcc45          \
222    -gcc44          \
223    -g95            \
224    -llvm           \
225    -gcc47          \
226    -gcc46          \
227    -gcc45          \
228    -gcc44          \
229    -clang36        \
230    -clang35        \
231    -clang34        \
232    -clang33
233
234# help prevent conflicts with various octave ports
235configure.args-append \
236    --infodir=${prefix}/share/info/octave_${version}
237
238# offscreen rendering with OpenGL via osmesa would be nice to have, but the following
239#    causes a segmentation fault:
240#    h = figure ("visible", "off"); fn = tempname (); sombrero (); __osmesa_print__ (h, fn, "svg");
241#
242# solution is ???
243#
244#depends_lib-append port:mesa
245configure.args-append       \
246    --without-OSMesa
247
248#configure.args-append --with-shell=???
249
250configure.args-append       \
251    --with-framework-opengl \
252    --with-framework-carbon \
253    --without-x             \
254    --enable-static
255
256configure.args-append       \
257    --disable-openmp
258
259configure.args-append       \
260    --disable-java          \
261    --disable-gui           \
262    --without-fltk          \
263    --disable-jit           \
264    --without-sndfile       \
265    --without-portaudio     \
266    --without-magick        \
267    --disable-docs
268
269# in configure.ac, listed as one of "[p]rograms used when running Octave"
270depends_lib-append port:python27
271configure.python ${prefix}/bin/python2.7
272
273# in configure.ac, listed as one of "[p]rograms used when running Octave"
274depends_lib-append port:ghostscript
275configure.env-append GHOSTSCRIPT=${prefix}/bin/gs
276
277# in configure.ac, listed as one of "[p]rograms used when running Octave"
278depends_lib-append port:gnuplot
279configure.env-append GNUPLOT=${prefix}/bin/gnuplot
280
281# in configure.ac, listed as one of "[p]rograms used when running Octave"
282depends_lib-append port:less
283configure.env-append DEFAULT_PAGER=${prefix}/bin/less
284
285depends_lib-append   port:ncurses
286depends_lib-append   port:readline
287depends_lib-append   port:fontconfig
288depends_lib-append   port:pcre
289
290#--without-amd
291#--without-camd
292#--without-colamd
293#--without-cholmod
294#--without-cxsparse
295#--without-umfpack
296depends_lib-append  port:SuiteSparse
297foreach lib {amd camd colamd cholmod cxsparse umfpack} {
298    configure.args-append \
299        --with-${lib}="-l${lib} -lsuitesparseconfig"
300}
301
302#--without-qhull
303depends_lib-append  port:qhull
304
305#--without-z
306depends_lib-append  port:zlib
307
308#--without-hdf5
309if { ${name} eq ${subport} } {
310    # see #51080
311    depends_lib-append  port:hdf5-18
312    configure.args-append \
313        --with-hdf5-libdir=${prefix}/lib/hdf5-18 \
314        --with-hdf5-includedir=${prefix}/include/hdf5-18
315} else {
316    depends_lib-append  port:hdf5
317}
318
319#--disable-fftw-threads
320#--without-fftw3
321#--without-fftw3f
322depends_lib-append  port:fftw-3
323depends_lib-append  port:fftw-3-single
324
325#--without-glpk
326depends_lib-append  port:glpk
327
328#--without-curl
329depends_lib-append  port:curl
330
331#--without-qrupdate
332depends_lib-append port:qrupdate
333
334#--without-arpack
335depends_lib-append port:arpack
336
337#--without-openssl
338depends_lib-append port:openssl
339
340# fortran arch flag is not set automatically
341if {![variant_isset universal]} {
342    if {${build_arch} eq "x86_64" || ${build_arch} eq "ppc64"} {
343        configure.fflags-append -m64
344    } else {
345        configure.fflags-append -m32
346    }
347}
348
349# see etc/README.MacOS
350depends_run-append   \
351    port:epstool     \
352    port:ghostscript \
353    port:transfig    \
354    port:pstoedit
355
356depends_run-append port:octave_select
357
358variant accelerate description {use BLAS from Apple's Accelerate.framework} conflicts atlas openblas {
359    depends_lib-append port:vecLibFort
360
361    # dependents must be built with same BLAS and LAPACK
362    #require_active_variants port:arpack      accelerate
363    #require_active_variants port:SuiteSparse accelerate
364    #require_active_variants port:qrupdate    accelerate
365
366    configure.args-append        \
367        --with-blas=-lvecLibFort \
368        --with-lapack=""
369}
370
371variant openblas description {use BLAS from MacPorts' openblas port} conflicts atlas accelerate {
372
373    depends_lib-append path:lib/libopenblas.dylib:OpenBLAS
374    # LAPACK required
375    require_active_variants path:lib/libopenblas.dylib:OpenBLAS lapack
376
377    # dependents must be built with same BLAS and LAPACK
378    #require_active_variants port:arpack      openblas
379    #require_active_variants port:SuiteSparse openblas
380    #require_active_variants port:qrupdate    openblas
381
382    # replicate default values if configure script finds openblas on its own
383    configure.args-append        \
384        --with-blas=-lopenblas   \
385        --with-lapack=""
386}
387
388variant atlas description {use BLAS from MacPorts' atlas port} conflicts accelerate openblas {
389    depends_lib-append port:atlas
390
391    # dependents must be built with same BLAS and LAPACK
392    #require_active_variants port:arpack      atlas
393    #require_active_variants port:SuiteSparse atlas
394    #require_active_variants port:qrupdate    atlas
395
396    # replicate default values if configure script finds atlas on its own
397    configure.args-append        \
398        --with-blas="-lcblas -lf77blas -latlas" \
399        --with-lapack=-llapack
400}
401
402if {![variant_isset accelerate] && ![variant_isset openblas] && ![variant_isset atlas] } {
403    default_variants-append +accelerate
404}
405
406if {![variant_isset accelerate] && ![variant_isset openblas] && ![variant_isset atlas] } {
407    ui_error "\n\nYou must select either the +accelerate, +atlas, or +openblas variant.\n"
408    return -code error "Invalid variant selection"
409}
410
411variant java description {enable Java interface} {
412    PortGroup java 1.0
413    configure.args-replace --disable-java --enable-java
414}
415default_variants-append +java
416
417variant qt4gui description {build the GUI using Qt4} {
418    PortGroup qt4 1.0
419    depends_lib-append  port:qscintilla
420    configure.args-replace --disable-gui --enable-gui
421}
422default_variants-append +qt4gui
423
424variant fltk description {enable fltk as a graphics toolkit for plotting} {
425    depends_lib-append path:lib/libfltk.dylib:fltk
426
427    # as of version 4.1.0+ revision 0:
428    #    without fltk, configure script turns off "native_graphics," and
429    #       does not look for either freetype or gl2ps
430    #    it still looks for and links against fontconfig, however
431    depends_lib-append \
432        port:freetype  \
433        port:gl2ps
434
435    configure.args-replace --without-fltk --with-fltk
436}
437default_variants-append +fltk
438
439variant jit description {enable JIT compiler (EXPERIMENTAL)} {
440    # JIT requires LLVM, so select a version to use
441    set llvm_ver 3.7
442
443    # prevent multiple versions of llvm being required
444    # if clangXY compiler is requested, use llvm-X.Y
445    foreach clang ${compilers.clang_variants} {
446        if { [variant_exists ${clang}] && [variant_isset ${clang}] } {
447            set llvm_ver [string index ${clang} end-1].[string index ${clang} end]
448        }
449    }
450
451    depends_lib-append port:llvm-${llvm_ver}
452    configure.args-replace --disable-jit --enable-jit
453    configure.env-append LLVM_CONFIG=${prefix}/bin/llvm-config-mp-${llvm_ver}
454    configure.cxxflags-append -std=c++11
455}
456
457if {[variant_isset fltk] && [variant_isset qt4gui]} {
458    notes-append "unless octave is run with --no-gui-libs, graphics_toolkit(\"fltk\") will cause a crash"
459}
460
461variant sound description {enable audio support (file I/O and playback)} {
462    depends_lib-append port:libsndfile
463    depends_lib-append port:portaudio
464
465    configure.args-replace --without-sndfile   --with-sndfile
466    configure.args-replace --without-portaudio --with-portaudio
467}
468default_variants-append +sound
469
470variant app description "build application bundle to launch ${subport}" {
471    depends_build-append port:ImageMagick
472
473    global appName
474    set appName Octave_${version}.app
475
476    post-build {
477        xinstall -d -p -m 0755 ${worksrcpath}/${appName}/Contents
478        xinstall -d -p -m 0755 ${worksrcpath}/${appName}/Contents/Resources
479        xinstall -d -p -m 0755 ${worksrcpath}/${appName}/Contents/MacOS
480
481        set script [open "${worksrcpath}/${appName}/Contents/MacOS/Octave" w 0755]
482        if { [variant_isset qt4gui] } {
483            puts ${script} "#!/bin/sh"
484            puts ${script} ""
485            puts ${script} "${prefix}/bin/octave-${version} --force-gui"
486        } else {
487            puts ${script} "#!/usr/bin/osascript"
488            puts ${script} ""
489            puts ${script} "tell application \"Terminal\" to do script \"${prefix}/bin/octave-${version} --no-gui-libs; exit\""
490        }
491        close ${script}
492
493        #NSHumanReadableCopyright      ''
494        #LSUIElement                   1
495        set values "
496            CFBundleDevelopmentRegion     English
497            CFBundleExecutable            Octave
498            CFBundleIconFile              Octave.icns
499            CFBundleDocumentTypes         {-array \'{\"CFBundleTypeExtensions\" = (\"m\"); \"CFBundleTypeOSTypes\" = (\"Mfile\"); \"CFBundleTypeRole\" = \"Editor\";}\'}
500            CFBundleIdentifier            org.octave.Octave
501            CFBundleInfoDictionaryVersion 6.0
502            CFBundleSignature             Octave
503            CFBundleVersion               ${version}
504            CFBundleShortVersionString    ${version}
505        "
506        foreach {key value} ${values} {
507            system "/usr/bin/defaults write ${worksrcpath}/${appName}/Contents/Info ${key} ${value}"
508        }
509
510        # have Info.plist be human readable
511        system "/usr/bin/plutil -convert xml1 ${worksrcpath}/${appName}/Contents/Info.plist"
512
513        # conversion by plutil set verys limited permissions
514        system "/bin/chmod 0644 ${worksrcpath}/${appName}/Contents/Info.plist"
515
516        xinstall -d -m 0755 ${worksrcpath}/Octave.iconset
517
518        # values from original SVG file
519        set svg    etc/icons/octave-logo.svg
520        set width  283.28912
521        set height 283.28833
522        set dpi    90
523
524        foreach res {16 32 128 256 512} {
525
526            set hres [expr 2*${res}]
527
528            # find new density so that converted PNG files do not look pixelated
529            set denw  [expr ${dpi}*${res}/${width}]
530            set denh  [expr ${dpi}*${res}/${height}]
531
532            set hdenw [expr 2*${denw}]
533            set hdenh [expr 2*${denh}]
534
535            system -W ${worksrcpath} "${prefix}/bin/convert -background transparent -resize ${res}x${res}   -density ${denw}x${denh}   ${svg} Octave.iconset/icon_${res}x${res}.png"
536            system -W ${worksrcpath} "${prefix}/bin/convert -background transparent -resize ${hres}x${hres} -density ${hdenw}x${hdenh} ${svg} Octave.iconset/icon_${res}x${res}@2x.png"
537        }
538
539        system -W ${worksrcpath} "/usr/bin/iconutil -c icns -o ${appName}/Contents/Resources/Octave.icns Octave.iconset"
540    }
541
542    post-destroot {
543        copy ${worksrcpath}/${appName} ${destroot}${applications_dir}
544    }
545}
546default_variants-append +app
547
548variant docs description {build documentation files} {
549    depends_build-append port:texinfo
550    configure.env-append                \
551        MAKEINFO=${prefix}/bin/makeinfo \
552        TEXI2DVI=${prefix}/bin/texi2dvi \
553        TEXI2PDF=${prefix}/bin/texi2pdf
554
555    # see https://lists.macosforge.org/pipermail/macports-dev/2016-January/032293.html
556    depends_build-append \
557        port:texlive-basic \
558        port:texlive-latex
559
560    # see #51132
561    depends_build-append \
562        port:texlive-fonts-recommended
563
564    configure.args-replace --disable-docs --enable-docs
565}
566default_variants-append +docs
567
568# GraphicsMagick and octave need to be built with the same C++ standard library
569# or else undefined symbols:
570#    "Magick::Image::ping(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)"
571set magickConflict {}
572set magickDefault yes
573if {${configure.cxx_stdlib} ne "libstdc++"} {
574    foreach gccVar ${compilers.gcc_variants} {
575        if {[variant_exists ${gccVar}] } {
576            lappend magickConflict ${gccVar}
577
578            if {[variant_isset ${gccVar}] } {
579                set magickDefault no
580            }
581        }
582    }
583}
584eval "variant graphicsmagick description {use GraphicsMagick for image I/O} conflicts ${magickConflict} {
585    depends_lib-append port:GraphicsMagick
586    configure.args-replace --without-magick --with-magick=GraphicsMagick
587}"
588if {${magickDefault}} {
589    default_variants-append +graphicsmagick
590}
591
592if { ${subport} eq "octave-devel-rc" || ${subport} eq "octave-devel-release" } {
593    # remove architecture flags from header file
594    if { [variant_exists universal] && [variant_isset universal] } {
595        merger-post-destroot {
596            foreach arch ${universal_archs_to_use} {
597                set hfile ${destroot}-${arch}${prefix}/include/octave-${version}/octave/oct-conf.h
598                reinplace "s:-arch ${arch}::g"   ${hfile}
599                reinplace {s:-m32::g}                ${hfile}
600                reinplace {s:-m64::g}                ${hfile}
601            }
602        }
603    } else {
604        post-destroot {
605            set hfile ${destroot}${prefix}/include/octave-${version}/octave/oct-conf.h
606            reinplace "s:-arch ${build_arch}::g" ${hfile}
607            reinplace {s:-m32::g}                ${hfile}
608            reinplace {s:-m64::g}                ${hfile}
609        }
610    }
611}
612
613# remove or rename conflicting files
614post-destroot {
615    foreach bin {mkoctfile octave octave-cli octave-config} {
616        # delete since just a link to versioned name
617        file delete ${destroot}${prefix}/bin/${bin}
618
619        if { [variant_isset docs] } {
620            # put version number in man file to avoid conflict
621            move ${destroot}${prefix}/share/man/man1/${bin}.1 ${destroot}${prefix}/share/man/man1/${bin}-${version}.1
622        }
623    }
624
625    # put any startup commands in ${destroot}${prefix}/share/octave/${version}/m/startup/octaverc
626    # see https://www.gnu.org/software/octave/doc/interpreter/Startup-Files.html
627    file delete ${destroot}${prefix}/share/octave/site/m/startup/octaverc
628
629    # move appdata and icons into a versioned directory
630    xinstall -d -m 0755 ${destroot}${prefix}/share/octave/${version}/appdata
631    move \
632        ${destroot}${prefix}/share/appdata/www.octave.org-octave.appdata.xml \
633        ${destroot}${prefix}/share/octave/${version}/appdata/
634    foreach num {16 22 24 32 48 64 128 256 512} {
635        xinstall -d -m 0755 -p ${destroot}${prefix}/share/octave/${version}/icons/hicolor/${num}x${num}/apps
636        move \
637            ${destroot}${prefix}/share/icons/hicolor/${num}x${num}/apps/octave.png \
638            ${destroot}${prefix}/share/octave/${version}/icons/hicolor/${num}x${num}/apps/octave.png
639    }
640    xinstall -d -m 0755 -p ${destroot}${prefix}/share/octave/${version}/icons/hicolor/scalable/apps
641    move \
642        ${destroot}${prefix}/share/icons/hicolor/scalable/apps/octave.svg \
643        ${destroot}${prefix}/share/octave/${version}/icons/hicolor/scalable/apps/octave.svg
644}
645
646test.run    yes
647test.target check
648
649livecheck.type    regexm
650livecheck.url     http://hg.savannah.gnu.org/hgweb/octave/tags
651livecheck.version ${hg.tag}
Note: See TracBrowser for help on using the repository browser.