A couple of things on that. Firstly, Zero Install seems to have an architecture already designed to do that (compile and install) for multiple platforms. Their main website seems to be down at the moment but Wikipedia has a good overview here:
https://en.wikipedia.org/wiki/Zero_Install Secondly Appupdater has the capability to run arbitrary commands to "install" a product, so this could include the compile instructions or a ruby script (for example) to compile/install as well. The main differences are that Zero Install is source oriented and has a more robust XML format (but no Metalink), Appupdater is oriented to distributing binaries and of course already has Metalink support. Appupdater may have issues figuring out what is installed if the hashes differ when compiled on different systems for whatever reason, but multiple hashes for a particular compiled file is allowed. I think really the issue with package managers is that they all have their own formats for the data and metadata, if we can express that independently in some type of XML we can easily generate whatever data formats are needed to be backward compatible. ZeroInstall+Metalink+Appupdater parts should be a good start. Neil On Tue, 23 Oct 2012 00:13:31 -0700, Anthony Bryan <[email protected]> wrote: > I can test on a mac. but I was talking to Donnie Berkholz from Gentoo, > and they would be interested in a generic tool that does this (& said > that it would be helpful for many other packagers & distributions), so > maybe a proof of concept (Python?) for the generic version would be a > good start, then maybe adapt it to homebrew? > > On Sun, Oct 21, 2012 at 1:44 PM, Bram Neijt <[email protected]> wrote: >> Seem simple enough, however I don't have a Mac so I don't see me >> testing this in any sensible manner. >> >> Anybody with a Mac ready to give it a try? Maybe I can help with >> interpreting compiler output. >> >> Greets, >> >> Bram >> >> On Mon, Oct 15, 2012 at 4:41 AM, Anthony Bryan <[email protected]> >> wrote: >>> have any of you tried out Homebrew? http://mxcl.github.com/homebrew/ >>> >>> it's like Appupdater or apt-get for OS X, a package manager that >>> downloads >>> source & compiles it. >>> >>> it's really cool. one issue tho is there's an army of guys (manually it >>> seems?) updating the "Formula" (Ruby files) that describe each app when >>> a >>> new version comes out. so there's some lag, like any package management >>> with >>> maintainers that have to do manual updates. >>> >>> I think this is an opportunity for metalink to automate this process. >>> anyone familiar w/ Ruby that might be interested? that way it could fit >>> in >>> w/ the existing Homebrew stuff. >>> >>> anyways, one possible way would be to add metalink to the Formula (the >>> one >>> for curl's included at the end of msg) >>> >>> metalink 'http://curl.haxx.se/metalink.cgi?curl=tar.gz' >>> >>> then the process would be: >>> >>> download the metalink from similarly autoupdated addresses when new >>> versions >>> of (for instance) aria2 and libmetalink come out >>> hb already uses curl (Library/Homebrew/download_strategy.rb) >>> get the app's version in the version element of the metalink XML. >>> if version's greater than what's in the Formula, update the url and hash >>> >>> what do you think? seems relatively simple. >>> >>> other metalink-related opportunities: >>> >>> they'd like to support torrent downloads. -> a Formula for aria2 is >>> already >>> provided, I guess torrents would need a custom download strategy (see >>> Specifying the Download Strategy section at >>> https://github.com/mxcl/homebrew/wiki/Formula-Cookbook ) >>> >>> the curl metalink has a PGP signature. curl + GPGME? that would be >>> better >>> than the hashes. >>> >>> ----- >>> >>> >>> require 'formula' >>> >>> class Curl < Formula >>> homepage 'http://curl.haxx.se/' >>> url 'http://curl.haxx.se/download/curl-7.27.0.tar.gz' >>> sha256 >>> '8cbad34e58608f0e959fe16c7c987e57f5f3dec2c92d1cebb0678f9d668a6867' >>> >>> keg_only :provided_by_osx, >>> "The libcurl provided by Leopard is too old for CouchDB to >>> use." >>> >>> option 'with-ssh', 'Build with scp and sftp support' >>> option 'with-libmetalink', 'Build with Metalink support' >>> >>> depends_on 'pkg-config' => :build >>> depends_on 'libssh2' if build.include? 'with-ssh' >>> depends_on 'libmetalink' if build.include? 'with-libmetalink' >>> >>> def install >>> args = %W[ >>> --disable-debug >>> --disable-dependency-tracking >>> --prefix=#{prefix} >>> ] >>> >>> args << "--with-libssh2" if build.include? 'with-ssh' >>> args << "--with-libmetalink" if build.include? 'with-libmetalink' >>> >>> system "./configure", *args >>> system "make install" >>> end >>> end >>> >>> -- >>> (( Anthony Bryan ... Metalink [ http://www.metalinker.org ] >>> )) Easier, More Reliable, Self Healing Downloads >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups >>> "Metalink Discussion" group. >>> To post to this group, send email to >>> [email protected]. >>> To unsubscribe from this group, send email to >>> [email protected]. >>> For more options, visit this group at >>> http://groups.google.com/group/metalink-discussion?hl=en. >> >> -- >> You received this message because you are subscribed to the Google >> Groups "Metalink Discussion" group. >> To post to this group, send email to >> [email protected]. >> To unsubscribe from this group, send email to >> [email protected]. >> For more options, visit this group at >> http://groups.google.com/group/metalink-discussion?hl=en. >> > > > > -- > (( Anthony Bryan ... Metalink [ http://www.metalinker.org ] > )) Easier, More Reliable, Self Healing Downloads -- You received this message because you are subscribed to the Google Groups "Metalink Discussion" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/metalink-discussion?hl=en.
