Things on my mind. George Drapeau's Weblog

May 09
21
Here's something I don't understand: I'm trying to compile the open source program "ffmpeg", useful for transcoding from one kind of movie file and video encoding format to another, plus a whole big bag-o-tricks.

So I download the source code:
svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg
Then I go into the ffmpeg source directory and type "./configure".  It fails, reporting:

check_ld
check_cc
BEGIN /tmp/ffconf.XXRJaOkG.c
   1   #include <signal.h>
   2   static void sighandler(int sig){
   3       raise(SIGTERM);
   4   }
   5   int main(void){
   6       signal(SIGILL, sighandler);
   7       signal(SIGFPE, sighandler);
   8       signal(SIGSEGV, sighandler);
   9   #ifdef SIGBUS
  10       signal(SIGBUS, sighandler);
  11   #endif
  12       {     volatile int i=0;
  13       __asm__ volatile (
  14           "xorl %%ebp, %%ebp"
  15       ::: "%ebp");
  16       return i; }
  17   }
END /tmp/ffconf.XXRJaOkG.c
gcc -D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112 -std=c99
-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D__EXTENSIONS__
-fomit-frame-pointer -c -o /tmp/ffconf.XXYJaalG.o
/tmp/ffconf.XXRJaOkG.c
gcc -o /tmp/ffconf.XXTJaWkG /tmp/ffconf.XXYJaalG.o
./configure: line 663: 16530: Terminated

I can't tell why it fails even making a Makefile, but after scanning the web for a while, I find a suggestion that says "use bash as your shell instead of whatever shell you were using."  I had been using tcsh, then tried ksh, then tried sh, all with the same error result.

So then I try "bash configure".  What do you know?  It created a Makefile just fine.

Now why is that?  Can somebody help me out here?  Because I don't know why the choice of a shell would make the configure script succeed or fail.  And that seems bad for the other shells available on OpenSolaris.

The app seems to compile, mostly.  Next: see how much of the app got compiled and how much of it runs.

Why am I doing this?  Because it's part of "pyTiVo", which I'd like to get running on my OpenSolaris home media server, so that I can back up the TiVo's content onto this nice, ZFS-enabled server.  I'll update my progress here.


Powered by ScribeFire.

May 09
12
The SourceJuicer is a tool in OpenSolaris meant to simplify the process of getting apps onto OpenSolaris.  The tool works by taking a file specifying the contents of the package to be installed (called a "spec file"); this includes information on where to fetch the source code for the application package, directions on how to build from source, then where to install the resulting app.

Ultimately, packages built using SourceJuicer will be reviewed and voted into the "/contrib" repository, a repo for third-party applications not necessarily part of the OpenSolaris core distribution.  SourceJuicer puts the packages it builds into a repo called "/pending"; to test these apps, you need to tell the package manager where the /pending repository is.

I want to take my OpenSolaris 2008.11 distribution and play with some of the new packages in /pending.  For example, I want to try the Azureus (now called Vuze) BitTorrent Java application which somebody just made available on OpenSolaris.  To do so, I need to do the following steps:

  • Add the SourceJuicer "/pending" repo to the list of repo's known to the package manager:
  • $ pfexec pkg set-authority -O http://jucr.opensolaris.org/pending jucrpending
  • Now I can install the package I want (in this case, "vuze", the name of the Azureus/Vuze application):
  • $ pfexec pkg install vuze
Simple as that.

I can also add this package repo and install the package via the graphical "Package Manager" interface, available via the menu choice System -> Administration -> Package Manager.  Once the Package Manager is launched, I choose the menu choice "Settings -> Manage Repositories..." to add the SourceJuicer pending repo.


Powered by ScribeFire.