<div class='fossil-doc' data-title='Download Page'> <!-- This document uses AJAX to read the /juvlist page from the Fossil server, then constructs the list of downloads from the returned JSON. Edit the "releases" variable with each new release. Then add unversioned content files for the build products. --> <center><font size=4> <b>To install Fossil →</b> download the stand-alone executable and put it on your $PATH. </font> <!--<p><small> RPMs available <a href="http://download.opensuse.org/repositories/home:/rmax:/fossil/"> here.</a> Cryptographic checksums for download files are <a href="http://www.hwaci.com/fossil_download_checksums.html">here</a>. </small></p>--> <div id="download_filelist"> <!-- The JS below will fills in this <div> with a table of download products derived from the output of /juvlist --> </div> <p><small> <a href="../doc/trunk/www/aboutdownload.wiki">How this download page is implemented</a></small></p> </center> </div> <script> /***** Edit the following with each new release *******/ var releases = [ {"re": /-2\.5\.(tar\.gz|zip)$/, "title": "Version 2.5", "titleurl": "../doc/trunk/www/changes.wiki#v2_5", "date": "2018-02-07", "dateurl": "../timeline?c=version-2.5&y=ci"}, {"re": /-2\.4\.(tar\.gz|zip)$/, "title": "Version 2.4", "titleurl": "../doc/trunk/www/changes.wiki#v2_4", "date": "2017-11-03", "dateurl": "../timeline?c=version-2.4&y=ci"}, {"re": /-2\.3\.(tar\.gz|zip)$/, "title": "Version 2.3", "titleurl": "../doc/trunk/www/changes.wiki#v2_3", "date": "2017-07-21", "dateurl": "../timeline?c=version-2.3&y=ci"}] /******* Should not need to change anything else ******/ function escHTML(x){ return x.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">"); } var r1 = new XMLHttpRequest(); r1.onreadystatechange = function(){ if(r1.readyState!=4) return var jx = JSON.parse(r1.responseText); /* The jx returned will look like this: ** [{"name":NAME, "mtime":MTIME, "hash":HASH, "size":SIZE, "user":USER}] ** ** The sequence[] array describes the columns in the download matrix */ var sequence = [ {"name": "linux", "re": /-linux-/, "icon": "build-icons/linux.gif", "title": "Linux x64" }, {"name": "mac", "re": /-macosx-/, "icon": "build-icons/mac.gif", "title": "MacOS 10.x" }, {"name": "win", "re": /-w32-/, "icon": "build-icons/win32.gif", "title": "Windows" }, {"name": "src", "re": /-src-/, "icon": "build-icons/src.gif", "title": "Source Tarball" }] /* Accumulate HTML for the download matrix in h */ var h = "<table cellpadding='10'>\n" for(var i=0; i<releases.length; i++){ var cnt = 0; var products = {"dummy":0}; for(var j=0; j<jx.length; j++){ var nm = jx[j].name; if( !releases[i].re.test(nm) ) continue; for(k=0; k<sequence.length; k++){ if( sequence[k].re.test(nm) ){ products[sequence[k].name] = jx[j]; cnt++ break } } } if( cnt==0 ) continue h += "<tr><td colspan=6 align=left><hr>\n" h += "<center><b>" if( releases[i].titleurl ){ h += "<a href='" + releases[i].titleurl + "'>" + releases[i].title + "</a>\n" }else{ h += releases[i].title } if( releases[i].dateurl ){ h += "(<a href='" + releases[i].dateurl + "'>" + releases[i].date + "</a>)\n" }else if( releases[i].date ){ h += "(" + releases[i].date + ")\n" } h += "</b></center></td></tr>\n<tr>" for(k=0; k<sequence.length; k++){ var nm = sequence[k].name h += "<td align='center' valign='bottom'>\n" if( products[nm] ){ h += "<a href='" + encodeURI(products[nm].name) + "'>\n" h += "<img src='" + sequence[k].icon + "'><br>\n" h += sequence[k].title + "</a><br>\n" var sz = products[nm].size; sz /= 1000000.0; h += sz.toFixed(2) + " MB\n" } h += "</td>\n" } h += "</tr>\n" } h += "</table>" document.getElementById("download_filelist").innerHTML = h; } r1.open("GET","../juvlist",true); r1.send() </script>