summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJennifer Leech <jenn@lindenlab.com>2008-06-12 20:51:41 +0000
committerJennifer Leech <jenn@lindenlab.com>2008-06-12 20:51:41 +0000
commitfbf15572d905799257c07d1ddfb9dea0007e89fe (patch)
tree090041496a28250356fab7806ff5c02d929a8169
parent26a87de287544e923d08addcae4efd51125ac8c0 (diff)
svn merge -r89258:89534 svn+ssh://svn/svn/linden/branches/install-dev-binaries/idb2-merge-buildme
-rw-r--r--indra/cmake/APR.cmake2
-rw-r--r--indra/cmake/Audio.cmake2
-rw-r--r--indra/cmake/Boost.cmake2
-rw-r--r--indra/cmake/CARes.cmake2
-rw-r--r--indra/cmake/CURL.cmake2
-rw-r--r--indra/cmake/ELFIO.cmake2
-rw-r--r--indra/cmake/EXPAT.cmake2
-rw-r--r--indra/cmake/FMOD.cmake3
-rw-r--r--indra/cmake/FreeType.cmake2
-rw-r--r--indra/cmake/GooglePerfTools.cmake2
-rw-r--r--indra/cmake/JPEG.cmake2
-rw-r--r--indra/cmake/LLKDU.cmake2
-rw-r--r--indra/cmake/LLWindow.cmake3
-rw-r--r--indra/cmake/MySQL.cmake3
-rw-r--r--indra/cmake/NDOF.cmake3
-rw-r--r--indra/cmake/OpenGL.cmake6
-rw-r--r--indra/cmake/OpenJPEG.cmake2
-rw-r--r--indra/cmake/OpenSSL.cmake2
-rw-r--r--indra/cmake/PNG.cmake2
-rw-r--r--indra/cmake/Prebuilt.cmake23
-rw-r--r--indra/cmake/UI.cmake2
-rw-r--r--indra/cmake/ViewerMiscLibs.cmake9
-rw-r--r--indra/cmake/XmlRpcEpi.cmake2
-rw-r--r--indra/cmake/ZLIB.cmake7
-rw-r--r--indra/newview/CMakeLists.txt1
-rw-r--r--indra/newview/res-sdl/arrow.BMPbin2102 -> 0 bytes
-rw-r--r--indra/newview/res-sdl/arrowcop.BMPbin3126 -> 0 bytes
-rw-r--r--indra/newview/res-sdl/arrowcopmulti.BMPbin3126 -> 0 bytes
-rw-r--r--indra/newview/res-sdl/arrowdrag.BMPbin2102 -> 0 bytes
-rw-r--r--indra/newview/res-sdl/circleandline.BMPbin2102 -> 0 bytes
-rw-r--r--indra/newview/res-sdl/cross.BMPbin2102 -> 0 bytes
-rw-r--r--indra/newview/res-sdl/hand.BMPbin2102 -> 0 bytes
-rw-r--r--indra/newview/res-sdl/ibeam.BMPbin2102 -> 0 bytes
-rw-r--r--indra/newview/res-sdl/ll_icon.BMPbin5174 -> 0 bytes
-rw-r--r--indra/newview/res-sdl/llarrow.BMPbin2102 -> 0 bytes
-rw-r--r--indra/newview/res-sdl/llarrowdrag.BMPbin2102 -> 0 bytes
-rw-r--r--indra/newview/res-sdl/llarrowdragmulti.BMPbin3126 -> 0 bytes
-rw-r--r--indra/newview/res-sdl/llarrowlocked.BMPbin2102 -> 0 bytes
-rw-r--r--indra/newview/res-sdl/llgrablocked.BMPbin2102 -> 0 bytes
-rw-r--r--indra/newview/res-sdl/llno.BMPbin2102 -> 0 bytes
-rw-r--r--indra/newview/res-sdl/llnolocked.BMPbin2102 -> 0 bytes
-rw-r--r--indra/newview/res-sdl/lltoolcamera.BMPbin2102 -> 0 bytes
-rw-r--r--indra/newview/res-sdl/lltoolcreate.BMPbin2102 -> 0 bytes
-rw-r--r--indra/newview/res-sdl/lltoolfocus.BMPbin2102 -> 0 bytes
-rw-r--r--indra/newview/res-sdl/lltoolgrab.BMPbin2102 -> 0 bytes
-rw-r--r--indra/newview/res-sdl/lltoolland.BMPbin2102 -> 0 bytes
-rw-r--r--indra/newview/res-sdl/lltoolpan.BMPbin2102 -> 0 bytes
-rw-r--r--indra/newview/res-sdl/lltoolpipette.BMPbin3126 -> 0 bytes
-rw-r--r--indra/newview/res-sdl/lltoolrotate.BMPbin2102 -> 0 bytes
-rw-r--r--indra/newview/res-sdl/lltoolscale.BMPbin2102 -> 0 bytes
-rw-r--r--indra/newview/res-sdl/lltooltranslate.BMPbin2102 -> 0 bytes
-rw-r--r--indra/newview/res-sdl/lltoolzoomin.BMPbin2102 -> 0 bytes
-rw-r--r--indra/newview/res-sdl/lltoolzoomout.BMPbin2102 -> 0 bytes
-rw-r--r--indra/newview/res-sdl/sizenesw.BMPbin2102 -> 0 bytes
-rw-r--r--indra/newview/res-sdl/sizens.BMPbin2102 -> 0 bytes
-rw-r--r--indra/newview/res-sdl/sizenwse.BMPbin2102 -> 0 bytes
-rw-r--r--indra/newview/res-sdl/sizewe.BMPbin2102 -> 0 bytes
-rw-r--r--indra/newview/res-sdl/toolbuy.BMPbin3126 -> 0 bytes
-rw-r--r--indra/newview/res-sdl/toolmediaopen.BMPbin3128 -> 0 bytes
-rw-r--r--indra/newview/res-sdl/toolopen.BMPbin3126 -> 0 bytes
-rw-r--r--indra/newview/res-sdl/toolpause.BMPbin3128 -> 0 bytes
-rw-r--r--indra/newview/res-sdl/toolpickobject.BMPbin2102 -> 0 bytes
-rw-r--r--indra/newview/res-sdl/toolpickobject2.BMPbin2102 -> 0 bytes
-rw-r--r--indra/newview/res-sdl/toolpickobject3.BMPbin2102 -> 0 bytes
-rw-r--r--indra/newview/res-sdl/toolplay.BMPbin3128 -> 0 bytes
-rw-r--r--indra/newview/res-sdl/toolsit.BMPbin3126 -> 0 bytes
-rw-r--r--indra/newview/res-sdl/wait.BMPbin2102 -> 0 bytes
-rw-r--r--indra/newview/res-sdl/working.BMPbin2102 -> 0 bytes
-rw-r--r--install.xml1242
-rwxr-xr-xscripts/install.py675
70 files changed, 1801 insertions, 206 deletions
diff --git a/indra/cmake/APR.cmake b/indra/cmake/APR.cmake
index eb1fb68991..b1aec807ee 100644
--- a/indra/cmake/APR.cmake
+++ b/indra/cmake/APR.cmake
@@ -2,6 +2,7 @@
include(BerkeleyDB)
include(Linking)
+include(Prebuilt)
set(APR_FIND_QUIETLY ON)
set(APR_FIND_REQUIRED ON)
@@ -12,6 +13,7 @@ set(APRUTIL_FIND_REQUIRED ON)
if (STANDALONE)
include(FindAPR)
else (STANDALONE)
+ use_prebuilt_binary(apr_suite)
if (WINDOWS)
set(WINLIBS_PREBUILT_DEBUG_DIR
${CMAKE_SOURCE_DIR}/../libraries/i686-win32/lib/debug
diff --git a/indra/cmake/Audio.cmake b/indra/cmake/Audio.cmake
index 895881141a..c6ccab2613 100644
--- a/indra/cmake/Audio.cmake
+++ b/indra/cmake/Audio.cmake
@@ -1,4 +1,5 @@
# -*- cmake -*-
+include(Prebuilt)
if (STANDALONE)
include(FindPkgConfig)
@@ -7,6 +8,7 @@ if (STANDALONE)
pkg_check_modules(VORBISENC REQUIRED vorbisenc)
pkg_check_modules(VORBISFILE REQUIRED vorbisfile)
else (STANDALONE)
+ use_prebuilt_binary(ogg-vorbis)
set(VORBIS_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include)
set(VORBISENC_INCLUDE_DIRS ${VORBIS_INCLUDE_DIRS})
set(VORBISFILE_INCLUDE_DIRS ${VORBIS_INCLUDE_DIRS})
diff --git a/indra/cmake/Boost.cmake b/indra/cmake/Boost.cmake
index 40f23eb8ca..c7df87177e 100644
--- a/indra/cmake/Boost.cmake
+++ b/indra/cmake/Boost.cmake
@@ -1,4 +1,5 @@
# -*- cmake -*-
+include(Prebuilt)
set(Boost_FIND_QUIETLY ON)
set(Boost_FIND_REQUIRED ON)
@@ -10,6 +11,7 @@ if (STANDALONE)
set(BOOST_REGEX_LIBRARY boost_regex-mt)
set(BOOST_SIGNALS_LIBRARY boost_signals-mt)
else (STANDALONE)
+ use_prebuilt_binary(boost)
set(Boost_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include)
if (WINDOWS)
diff --git a/indra/cmake/CARes.cmake b/indra/cmake/CARes.cmake
index 4dfcf588c6..68fabc3493 100644
--- a/indra/cmake/CARes.cmake
+++ b/indra/cmake/CARes.cmake
@@ -1,5 +1,6 @@
# -*- cmake -*-
include(Linking)
+include(Prebuilt)
set(CARES_FIND_QUIETLY ON)
set(CARES_FIND_REQUIRED ON)
@@ -7,6 +8,7 @@ set(CARES_FIND_REQUIRED ON)
if (STANDALONE)
include(FindCARes)
else (STANDALONE)
+ use_prebuilt_binary(ares)
if (WINDOWS)
set(CARES_LIBRARIES areslib)
elseif (DARWIN)
diff --git a/indra/cmake/CURL.cmake b/indra/cmake/CURL.cmake
index bce4a85d16..6e5fed4d52 100644
--- a/indra/cmake/CURL.cmake
+++ b/indra/cmake/CURL.cmake
@@ -1,4 +1,5 @@
# -*- cmake -*-
+include(Prebuilt)
set(CURL_FIND_QUIETLY ON)
set(CURL_FIND_REQUIRED ON)
@@ -6,6 +7,7 @@ set(CURL_FIND_REQUIRED ON)
if (STANDALONE)
include(FindCURL)
else (STANDALONE)
+ use_prebuilt_binary(curl)
if (WINDOWS)
set(CURL_LIBRARIES
debug libcurld
diff --git a/indra/cmake/ELFIO.cmake b/indra/cmake/ELFIO.cmake
index 2805842cbc..e420ce27bb 100644
--- a/indra/cmake/ELFIO.cmake
+++ b/indra/cmake/ELFIO.cmake
@@ -1,10 +1,12 @@
# -*- cmake -*-
+include(Prebuilt)
set(ELFIO_FIND_QUIETLY ON)
if (STANDALONE)
include(FindELFIO)
elseif (LINUX)
+ use_prebuilt_binary(elfio)
set(ELFIO_LIBRARIES ELFIO)
set(ELFIO_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/include)
endif (STANDALONE)
diff --git a/indra/cmake/EXPAT.cmake b/indra/cmake/EXPAT.cmake
index 3010d63532..acb15dc623 100644
--- a/indra/cmake/EXPAT.cmake
+++ b/indra/cmake/EXPAT.cmake
@@ -1,4 +1,5 @@
# -*- cmake -*-
+include(Prebuilt)
set(EXPAT_FIND_QUIETLY ON)
set(EXPAT_FIND_REQUIRED ON)
@@ -6,6 +7,7 @@ set(EXPAT_FIND_REQUIRED ON)
if (STANDALONE)
include(FindEXPAT)
else (STANDALONE)
+ use_prebuilt_binary(expat)
if (WINDOWS)
set(EXPAT_LIBRARIES libexpatMT)
else (WINDOWS)
diff --git a/indra/cmake/FMOD.cmake b/indra/cmake/FMOD.cmake
index 781c8babbe..258fd6bf66 100644
--- a/indra/cmake/FMOD.cmake
+++ b/indra/cmake/FMOD.cmake
@@ -1,4 +1,7 @@
# -*- cmake -*-
+include(Prebuilt)
+
+use_prebuilt_binary(fmod)
find_library(FMOD_LIBRARY
NAMES fmod fmodvc fmod-3.75
diff --git a/indra/cmake/FreeType.cmake b/indra/cmake/FreeType.cmake
index 064135bcd1..5f1aa26e89 100644
--- a/indra/cmake/FreeType.cmake
+++ b/indra/cmake/FreeType.cmake
@@ -1,10 +1,12 @@
# -*- cmake -*-
+include(Prebuilt)
if (STANDALONE)
include(FindPkgConfig)
pkg_check_modules(FREETYPE REQUIRED freetype2)
else (STANDALONE)
+ use_prebuilt_binary(freetype)
if (LINUX)
set(FREETYPE_INCLUDE_DIRS
${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include)
diff --git a/indra/cmake/GooglePerfTools.cmake b/indra/cmake/GooglePerfTools.cmake
index 61a2631a08..9b3eca060f 100644
--- a/indra/cmake/GooglePerfTools.cmake
+++ b/indra/cmake/GooglePerfTools.cmake
@@ -1,8 +1,10 @@
# -*- cmake -*-
+include(Prebuilt)
if (STANDALONE)
include(FindGooglePerfTools)
else (STANDALONE)
+ use_prebuilt_binary(google)
if (LINUX)
set(TCMALLOC_LIBRARIES tcmalloc)
set(STACKTRACE_LIBRARIES stacktrace)
diff --git a/indra/cmake/JPEG.cmake b/indra/cmake/JPEG.cmake
index 18bdd8bc46..8047718f39 100644
--- a/indra/cmake/JPEG.cmake
+++ b/indra/cmake/JPEG.cmake
@@ -1,4 +1,5 @@
# -*- cmake -*-
+include(Prebuilt)
include(Linking)
set(JPEG_FIND_QUIETLY ON)
@@ -7,6 +8,7 @@ set(JPEG_FIND_REQUIRED ON)
if (STANDALONE)
include(FindJPEG)
else (STANDALONE)
+ use_prebuilt_binary(jpeglib)
if (LINUX)
set(JPEG_LIBRARIES jpeg)
elseif (DARWIN)
diff --git a/indra/cmake/LLKDU.cmake b/indra/cmake/LLKDU.cmake
index 6ec14d2588..a02b5d958e 100644
--- a/indra/cmake/LLKDU.cmake
+++ b/indra/cmake/LLKDU.cmake
@@ -1,6 +1,8 @@
# -*- cmake -*-
+include(Prebuilt)
if (NOT STANDALONE AND EXISTS ${LIBS_CLOSED_DIR}/llkdu)
+ use_prebuilt_binary(kdu)
if (WINDOWS)
set(KDU_LIBRARY debug kdu_cored optimized kdu_core)
elseif (LINUX)
diff --git a/indra/cmake/LLWindow.cmake b/indra/cmake/LLWindow.cmake
index 7a1ecaf0b1..c0efa27f6e 100644
--- a/indra/cmake/LLWindow.cmake
+++ b/indra/cmake/LLWindow.cmake
@@ -1,6 +1,7 @@
# -*- cmake -*-
include(OpenGL)
+include(Prebuilt)
if (STANDALONE)
include(FindSDL)
@@ -12,6 +13,8 @@ if (STANDALONE)
SDL_LIBRARY
)
else (STANDALONE)
+ use_prebuilt_binary(SDL)
+ use_prebuilt_binary(mesa)
if (LINUX AND VIEWER)
set (SDL_FOUND TRUE)
set (SDL_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/i686-linux)
diff --git a/indra/cmake/MySQL.cmake b/indra/cmake/MySQL.cmake
index 7dc638ec57..e7400a3de4 100644
--- a/indra/cmake/MySQL.cmake
+++ b/indra/cmake/MySQL.cmake
@@ -1,7 +1,10 @@
# -*- cmake -*-
include(Linking)
+include(Prebuilt)
# We don't prebuild our own MySQL client library.
+use_prebuilt_binary(mysql)
+
set(MYSQL_FIND_QUIETLY ON)
set(MYSQL_FIND_REQUIRED ON)
diff --git a/indra/cmake/NDOF.cmake b/indra/cmake/NDOF.cmake
index 22e9787653..3f715a2312 100644
--- a/indra/cmake/NDOF.cmake
+++ b/indra/cmake/NDOF.cmake
@@ -1,4 +1,7 @@
# -*- cmake -*-
+include(Prebuilt)
+
+use_prebuilt_binary(ndofdev)
if (WINDOWS OR DARWIN)
add_definitions(-DLIB_NDOF=1)
diff --git a/indra/cmake/OpenGL.cmake b/indra/cmake/OpenGL.cmake
index 7395d478fe..6a2b6811af 100644
--- a/indra/cmake/OpenGL.cmake
+++ b/indra/cmake/OpenGL.cmake
@@ -1,5 +1,9 @@
# -*- cmake -*-
+include(Prebuilt)
if (NOT STANDALONE)
+ use_prebuilt_binary(GL)
+ # possible glh_linear should have its own .cmake file instead
+ use_prebuilt_binary(glh_linear)
set(GLEXT_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include)
-endif (NOT STANDALONE) \ No newline at end of file
+endif (NOT STANDALONE)
diff --git a/indra/cmake/OpenJPEG.cmake b/indra/cmake/OpenJPEG.cmake
index 32dcb505aa..fcc82c2f49 100644
--- a/indra/cmake/OpenJPEG.cmake
+++ b/indra/cmake/OpenJPEG.cmake
@@ -1,4 +1,5 @@
# -*- cmake -*-
+include(Prebuilt)
set(OPENJPEG_FIND_QUIETLY ON)
set(OPENJPEG_FIND_REQUIRED ON)
@@ -6,6 +7,7 @@ set(OPENJPEG_FIND_REQUIRED ON)
if (STANDALONE)
include(FindOpenJPEG)
else (STANDALONE)
+ use_prebuilt_binary(openjpeg)
if(WINDOWS)
# Windows has differently named release and debug openjpeg(d) libs.
diff --git a/indra/cmake/OpenSSL.cmake b/indra/cmake/OpenSSL.cmake
index 715af3ba54..81584c09ea 100644
--- a/indra/cmake/OpenSSL.cmake
+++ b/indra/cmake/OpenSSL.cmake
@@ -1,4 +1,5 @@
# -*- cmake -*-
+include(Prebuilt)
set(OpenSSL_FIND_QUIETLY ON)
set(OpenSSL_FIND_REQUIRED ON)
@@ -6,6 +7,7 @@ set(OpenSSL_FIND_REQUIRED ON)
if (STANDALONE)
include(FindOpenSSL)
else (STANDALONE)
+ use_prebuilt_binary(openSSL)
if (WINDOWS)
set(OPENSSL_LIBRARIES ssleay32 libeay32)
else (WINDOWS)
diff --git a/indra/cmake/PNG.cmake b/indra/cmake/PNG.cmake
index b4f7e5e66b..4d0b7b2d8d 100644
--- a/indra/cmake/PNG.cmake
+++ b/indra/cmake/PNG.cmake
@@ -1,4 +1,5 @@
# -*- cmake -*-
+include(Prebuilt)
set(PNG_FIND_QUIETLY ON)
set(PNG_FIND_REQUIRED ON)
@@ -6,6 +7,7 @@ set(PNG_FIND_REQUIRED ON)
if (STANDALONE)
include(FindPNG)
else (STANDALONE)
+ use_prebuilt_binary(libpng)
set(PNG_LIBRARIES png12)
set(PNG_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include)
endif (STANDALONE)
diff --git a/indra/cmake/Prebuilt.cmake b/indra/cmake/Prebuilt.cmake
index 2f4fbd05c7..33cdeeeed5 100644
--- a/indra/cmake/Prebuilt.cmake
+++ b/indra/cmake/Prebuilt.cmake
@@ -2,16 +2,19 @@
include(Python)
-macro (use_prebuilt_library _lib)
+macro (use_prebuilt_binary _binary)
if (NOT STANDALONE)
- exec_program(${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}
- ARGS
- --install-dir=${LIBS_PREBUILT_DIR} ${_lib}/${ARCH}
- RETURN_VALUE _installed
- )
- if (NOT _installed)
+ execute_process(COMMAND ${PYTHON_EXECUTABLE}
+ install.py
+ --install-dir=${CMAKE_SOURCE_DIR}/..
+ ${_binary}
+ WORKING_DIRECTORY ${SCRIPTS_DIR}
+ RESULT_VARIABLE _installed
+ )
+ if (NOT _installed EQUAL 0)
message(FATAL_ERROR
- "Failed to download or unpack prebuilt ${_lib} for ${ARCH}")
- endif (NOT _installed)
+ "Failed to download or unpack prebuilt '${_binary}'."
+ " Process returned ${_installed}.")
+ endif (NOT _installed EQUAL 0)
endif (NOT STANDALONE)
-endmacro (use_prebuilt_library _lib)
+endmacro (use_prebuilt_binary _binary)
diff --git a/indra/cmake/UI.cmake b/indra/cmake/UI.cmake
index 7d2955ce36..f529f5b644 100644
--- a/indra/cmake/UI.cmake
+++ b/indra/cmake/UI.cmake
@@ -1,4 +1,5 @@
# -*- cmake -*-
+include(Prebuilt)
if (STANDALONE)
include(FindPkgConfig)
@@ -30,6 +31,7 @@ if (STANDALONE)
add_definitions(${${pkg}_CFLAGS_OTHERS})
endforeach(pkg)
else (STANDALONE)
+ use_prebuilt_binary(gtk-atk-pango-glib)
if (LINUX)
set(UI_LIBRARIES
atk-1.0
diff --git a/indra/cmake/ViewerMiscLibs.cmake b/indra/cmake/ViewerMiscLibs.cmake
new file mode 100644
index 0000000000..7329972596
--- /dev/null
+++ b/indra/cmake/ViewerMiscLibs.cmake
@@ -0,0 +1,9 @@
+# -*- cmake -*-
+include(Prebuilt)
+
+if (NOT STANDALONE)
+ use_prebuilt_binary(libstdc++)
+ use_prebuilt_binary(libuuid)
+ use_prebuilt_binary(vivox)
+endif(NOT STANDALONE)
+
diff --git a/indra/cmake/XmlRpcEpi.cmake b/indra/cmake/XmlRpcEpi.cmake
index 3fd6f80eb9..107d1926ba 100644
--- a/indra/cmake/XmlRpcEpi.cmake
+++ b/indra/cmake/XmlRpcEpi.cmake
@@ -1,4 +1,5 @@
# -*- cmake -*-
+include(Prebuilt)
set(XMLRPCEPI_FIND_QUIETLY ON)
set(XMLRPCEPI_FIND_REQUIRED ON)
@@ -6,6 +7,7 @@ set(XMLRPCEPI_FIND_REQUIRED ON)
if (STANDALONE)
include(FindXmlRpcEpi)
else (STANDALONE)
+ use_prebuilt_binary(xmlrpc-epi)
if (WINDOWS)
set(XMLRPCEPI_LIBRARIES xmlrpcepi)
else (WINDOWS)
diff --git a/indra/cmake/ZLIB.cmake b/indra/cmake/ZLIB.cmake
index 3740103a72..80d4191971 100644
--- a/indra/cmake/ZLIB.cmake
+++ b/indra/cmake/ZLIB.cmake
@@ -3,13 +3,18 @@
set(ZLIB_FIND_QUIETLY ON)
set(ZLIB_FIND_REQUIRED ON)
+include(Prebuilt)
+
if (STANDALONE)
include(FindZLIB)
else (STANDALONE)
+ use_prebuilt_binary(zlib)
if (WINDOWS)
set(ZLIB_LIBRARIES zlib)
else (WINDOWS)
set(ZLIB_LIBRARIES z)
endif (WINDOWS)
- set(ZLIB_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include)
+ if (WINDOWS OR LINUX)
+ set(ZLIB_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include/zlib)
+ endif (WINDOWS OR LINUX)
endif (STANDALONE)
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 6d1e58d40c..20876d630f 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -33,6 +33,7 @@ include(TemplateCheck)
include(UI)
include(UnixInstall)
include(LLKDU)
+include(ViewerMiscLibs)
include_directories(
${ELFIO_INCLUDE_DIR}
diff --git a/indra/newview/res-sdl/arrow.BMP b/indra/newview/res-sdl/arrow.BMP
deleted file mode 100644
index a8f6da64b5..0000000000
--- a/indra/newview/res-sdl/arrow.BMP
+++ /dev/null
Binary files differ
diff --git a/indra/newview/res-sdl/arrowcop.BMP b/indra/newview/res-sdl/arrowcop.BMP
deleted file mode 100644
index 1a26a0df34..0000000000
--- a/indra/newview/res-sdl/arrowcop.BMP
+++ /dev/null
Binary files differ
diff --git a/indra/newview/res-sdl/arrowcopmulti.BMP b/indra/newview/res-sdl/arrowcopmulti.BMP
deleted file mode 100644
index 48f153cef6..0000000000
--- a/indra/newview/res-sdl/arrowcopmulti.BMP
+++ /dev/null
Binary files differ
diff --git a/indra/newview/res-sdl/arrowdrag.BMP b/indra/newview/res-sdl/arrowdrag.BMP
deleted file mode 100644
index cd868eec20..0000000000
--- a/indra/newview/res-sdl/arrowdrag.BMP
+++ /dev/null
Binary files differ
diff --git a/indra/newview/res-sdl/circleandline.BMP b/indra/newview/res-sdl/circleandline.BMP
deleted file mode 100644
index 284ae8b7d5..0000000000
--- a/indra/newview/res-sdl/circleandline.BMP
+++ /dev/null
Binary files differ
diff --git a/indra/newview/res-sdl/cross.BMP b/indra/newview/res-sdl/cross.BMP
deleted file mode 100644
index 0b4672d4d6..0000000000
--- a/indra/newview/res-sdl/cross.BMP
+++ /dev/null
Binary files differ
diff --git a/indra/newview/res-sdl/hand.BMP b/indra/newview/res-sdl/hand.BMP
deleted file mode 100644
index 2a092fbb7f..0000000000
--- a/indra/newview/res-sdl/hand.BMP
+++ /dev/null
Binary files differ
diff --git a/indra/newview/res-sdl/ibeam.BMP b/indra/newview/res-sdl/ibeam.BMP
deleted file mode 100644
index 820904a228..0000000000
--- a/indra/newview/res-sdl/ibeam.BMP
+++ /dev/null
Binary files differ
diff --git a/indra/newview/res-sdl/ll_icon.BMP b/indra/newview/res-sdl/ll_icon.BMP
deleted file mode 100644
index 4a44aafbfa..0000000000
--- a/indra/newview/res-sdl/ll_icon.BMP
+++ /dev/null
Binary files differ
diff --git a/indra/newview/res-sdl/llarrow.BMP b/indra/newview/res-sdl/llarrow.BMP
deleted file mode 100644
index a8f6da64b5..0000000000
--- a/indra/newview/res-sdl/llarrow.BMP
+++ /dev/null
Binary files differ
diff --git a/indra/newview/res-sdl/llarrowdrag.BMP b/indra/newview/res-sdl/llarrowdrag.BMP
deleted file mode 100644
index cd868eec20..0000000000
--- a/indra/newview/res-sdl/llarrowdrag.BMP
+++ /dev/null
Binary files differ
diff --git a/indra/newview/res-sdl/llarrowdragmulti.BMP b/indra/newview/res-sdl/llarrowdragmulti.BMP
deleted file mode 100644
index fb528bc92d..0000000000
--- a/indra/newview/res-sdl/llarrowdragmulti.BMP
+++ /dev/null
Binary files differ
diff --git a/indra/newview/res-sdl/llarrowlocked.BMP b/indra/newview/res-sdl/llarrowlocked.BMP
deleted file mode 100644
index 0aaa441ab1..0000000000
--- a/indra/newview/res-sdl/llarrowlocked.BMP
+++ /dev/null
Binary files differ
diff --git a/indra/newview/res-sdl/llgrablocked.BMP b/indra/newview/res-sdl/llgrablocked.BMP
deleted file mode 100644
index 847439670f..0000000000
--- a/indra/newview/res-sdl/llgrablocked.BMP
+++ /dev/null
Binary files differ
diff --git a/indra/newview/res-sdl/llno.BMP b/indra/newview/res-sdl/llno.BMP
deleted file mode 100644
index 284ae8b7d5..0000000000
--- a/indra/newview/res-sdl/llno.BMP
+++ /dev/null
Binary files differ
diff --git a/indra/newview/res-sdl/llnolocked.BMP b/indra/newview/res-sdl/llnolocked.BMP
deleted file mode 100644
index 61f0170cb3..0000000000
--- a/indra/newview/res-sdl/llnolocked.BMP
+++ /dev/null
Binary files differ
diff --git a/indra/newview/res-sdl/lltoolcamera.BMP b/indra/newview/res-sdl/lltoolcamera.BMP
deleted file mode 100644
index c961d7a49c..0000000000
--- a/indra/newview/res-sdl/lltoolcamera.BMP
+++ /dev/null
Binary files differ
diff --git a/indra/newview/res-sdl/lltoolcreate.BMP b/indra/newview/res-sdl/lltoolcreate.BMP
deleted file mode 100644
index 08a4a9322d..0000000000
--- a/indra/newview/res-sdl/lltoolcreate.BMP
+++ /dev/null
Binary files differ
diff --git a/indra/newview/res-sdl/lltoolfocus.BMP b/indra/newview/res-sdl/lltoolfocus.BMP
deleted file mode 100644
index afb90a95e3..0000000000
--- a/indra/newview/res-sdl/lltoolfocus.BMP
+++ /dev/null
Binary files differ
diff --git a/indra/newview/res-sdl/lltoolgrab.BMP b/indra/newview/res-sdl/lltoolgrab.BMP
deleted file mode 100644
index f2ac68bf3c..0000000000
--- a/indra/newview/res-sdl/lltoolgrab.BMP
+++ /dev/null
Binary files differ
diff --git a/indra/newview/res-sdl/lltoolland.BMP b/indra/newview/res-sdl/lltoolland.BMP
deleted file mode 100644
index 64e6365625..0000000000
--- a/indra/newview/res-sdl/lltoolland.BMP
+++ /dev/null
Binary files differ
diff --git a/indra/newview/res-sdl/lltoolpan.BMP b/indra/newview/res-sdl/lltoolpan.BMP
deleted file mode 100644
index ffbef21ec7..0000000000
--- a/indra/newview/res-sdl/lltoolpan.BMP
+++ /dev/null
Binary files differ
diff --git a/indra/newview/res-sdl/lltoolpipette.BMP b/indra/newview/res-sdl/lltoolpipette.BMP
deleted file mode 100644
index 2d27118289..0000000000
--- a/indra/newview/res-sdl/lltoolpipette.BMP
+++ /dev/null
Binary files differ
diff --git a/indra/newview/res-sdl/lltoolrotate.BMP b/indra/newview/res-sdl/lltoolrotate.BMP
deleted file mode 100644
index dd84673018..0000000000
--- a/indra/newview/res-sdl/lltoolrotate.BMP
+++ /dev/null
Binary files differ
diff --git a/indra/newview/res-sdl/lltoolscale.BMP b/indra/newview/res-sdl/lltoolscale.BMP
deleted file mode 100644
index 882515e5e3..0000000000
--- a/indra/newview/res-sdl/lltoolscale.BMP
+++ /dev/null
Binary files differ
diff --git a/indra/newview/res-sdl/lltooltranslate.BMP b/indra/newview/res-sdl/lltooltranslate.BMP
deleted file mode 100644
index d084f6a026..0000000000
--- a/indra/newview/res-sdl/lltooltranslate.BMP
+++ /dev/null
Binary files differ
diff --git a/indra/newview/res-sdl/lltoolzoomin.BMP b/indra/newview/res-sdl/lltoolzoomin.BMP
deleted file mode 100644
index e4e46cc702..0000000000
--- a/indra/newview/res-sdl/lltoolzoomin.BMP
+++ /dev/null
Binary files differ
diff --git a/indra/newview/res-sdl/lltoolzoomout.BMP b/indra/newview/res-sdl/lltoolzoomout.BMP
deleted file mode 100644
index 7f958383ab..0000000000
--- a/indra/newview/res-sdl/lltoolzoomout.BMP
+++ /dev/null
Binary files differ
diff --git a/indra/newview/res-sdl/sizenesw.BMP b/indra/newview/res-sdl/sizenesw.BMP
deleted file mode 100644
index 559579f40e..0000000000
--- a/indra/newview/res-sdl/sizenesw.BMP
+++ /dev/null
Binary files differ
diff --git a/indra/newview/res-sdl/sizens.BMP b/indra/newview/res-sdl/sizens.BMP
deleted file mode 100644
index 8373077dff..0000000000
--- a/indra/newview/res-sdl/sizens.BMP
+++ /dev/null
Binary files differ
diff --git a/indra/newview/res-sdl/sizenwse.BMP b/indra/newview/res-sdl/sizenwse.BMP
deleted file mode 100644
index 6d069fa765..0000000000
--- a/indra/newview/res-sdl/sizenwse.BMP
+++ /dev/null
Binary files differ
diff --git a/indra/newview/res-sdl/sizewe.BMP b/indra/newview/res-sdl/sizewe.BMP
deleted file mode 100644
index 878df453a4..0000000000
--- a/indra/newview/res-sdl/sizewe.BMP
+++ /dev/null
Binary files differ
diff --git a/indra/newview/res-sdl/toolbuy.BMP b/indra/newview/res-sdl/toolbuy.BMP
deleted file mode 100644
index a00bdb2c58..0000000000
--- a/indra/newview/res-sdl/toolbuy.BMP
+++ /dev/null
Binary files differ
diff --git a/indra/newview/res-sdl/toolmediaopen.BMP b/indra/newview/res-sdl/toolmediaopen.BMP
deleted file mode 100644
index ac4b231994..0000000000
--- a/indra/newview/res-sdl/toolmediaopen.BMP
+++ /dev/null
Binary files differ
diff --git a/indra/newview/res-sdl/toolopen.BMP b/indra/newview/res-sdl/toolopen.BMP
deleted file mode 100644
index 93c7e44b28..0000000000
--- a/indra/newview/res-sdl/toolopen.BMP
+++ /dev/null
Binary files differ
diff --git a/indra/newview/res-sdl/toolpause.BMP b/indra/newview/res-sdl/toolpause.BMP
deleted file mode 100644
index dd2c6857d2..0000000000
--- a/indra/newview/res-sdl/toolpause.BMP
+++ /dev/null
Binary files differ
diff --git a/indra/newview/res-sdl/toolpickobject.BMP b/indra/newview/res-sdl/toolpickobject.BMP
deleted file mode 100644
index 25469fc3a8..0000000000
--- a/indra/newview/res-sdl/toolpickobject.BMP
+++ /dev/null
Binary files differ
diff --git a/indra/newview/res-sdl/toolpickobject2.BMP b/indra/newview/res-sdl/toolpickobject2.BMP
deleted file mode 100644
index 09df69e675..0000000000
--- a/indra/newview/res-sdl/toolpickobject2.BMP
+++ /dev/null
Binary files differ
diff --git a/indra/newview/res-sdl/toolpickobject3.BMP b/indra/newview/res-sdl/toolpickobject3.BMP
deleted file mode 100644
index fc28698050..0000000000
--- a/indra/newview/res-sdl/toolpickobject3.BMP
+++ /dev/null
Binary files differ
diff --git a/indra/newview/res-sdl/toolplay.BMP b/indra/newview/res-sdl/toolplay.BMP
deleted file mode 100644
index 9c40d7dbec..0000000000
--- a/indra/newview/res-sdl/toolplay.BMP
+++ /dev/null
Binary files differ
diff --git a/indra/newview/res-sdl/toolsit.BMP b/indra/newview/res-sdl/toolsit.BMP
deleted file mode 100644
index ca911ece71..0000000000
--- a/indra/newview/res-sdl/toolsit.BMP
+++ /dev/null
Binary files differ
diff --git a/indra/newview/res-sdl/wait.BMP b/indra/newview/res-sdl/wait.BMP
deleted file mode 100644
index 26dec59afe..0000000000
--- a/indra/newview/res-sdl/wait.BMP
+++ /dev/null
Binary files differ
diff --git a/indra/newview/res-sdl/working.BMP b/indra/newview/res-sdl/working.BMP
deleted file mode 100644
index 26dec59afe..0000000000
--- a/indra/newview/res-sdl/working.BMP
+++ /dev/null
Binary files differ
diff --git a/install.xml b/install.xml
new file mode 100644
index 0000000000..497ed9cc02
--- /dev/null
+++ b/install.xml
@@ -0,0 +1,1242 @@
+<?xml version="1.0" ?>
+<llsd>
+<map>
+ <key>binaries</key>
+ <map>
+ <key>GL</key>
+ <map>
+ <key>copyright</key>
+ <string>Copyright (c) 1991-2000 Silicon Graphics, Inc.</string>
+ <key>description</key>
+ <string>A standard for 3D Graphics rendering engine.</string>
+ <key>license</key>
+ <string>GL</string>
+ <key>packages</key>
+ <map>
+ <key>darwin</key>
+ <map>
+ <key>md5sum</key>
+ <string>7b147162449c216a016dc2bfe2a4380c</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/GL-darwin-20080610.tar.bz2</uri>
+ </map>
+ <key>linux</key>
+ <map>
+ <key>md5sum</key>
+ <string>d78e3e4d8c33e5233d88ec8096307ee8</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/GL-linux-20080610.tar.bz2</uri>
+ </map>
+ <key>windows</key>
+ <map>
+ <key>md5sum</key>
+ <string>e0736f3f17fe980ef68b8a65ef90011d</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/GL-windows-20080611.tar.bz2</uri>
+ </map>
+ </map>
+ </map>
+ <key>SDL</key>
+ <map>
+ <key>copyright</key>
+ <string>Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Sam Lantinga</string>
+ <key>description</key>
+ <string>The Simple DirectMedia Layer libraries are used for handling input and basic window/GL setup on the Linux client.</string>
+ <key>license</key>
+ <string>lgpl</string>
+ <key>packages</key>
+ <map>
+ <key>darwin</key>
+ <map>
+ <key>md5sum</key>
+ <string>d7500212b654e9380c4dc24166285407</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/SDL-1.2.5-darwin-20080610.tar.bz2</uri>
+ </map>
+ <key>linux</key>
+ <map>
+ <key>md5sum</key>
+ <string>c7f3da1da96ccc1f26ec92634e7771b8</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/SDL-1.2.5-linux-20080610.tar.bz2</uri>
+ </map>
+ <key>windows</key>
+ <map>
+ <key>md5sum</key>
+ <string>1c081cc35730919781e23b916a56722e</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/SDL-1.2.5-windows-20080611.tar.bz2</uri>
+ </map>
+ </map>
+ </map>
+ <key>apr_suite</key>
+ <map>
+ <key>license</key>
+ <string>apache 2.0</string>
+ <key>packages</key>
+ <map>
+ <key>darwin</key>
+ <map>
+ <key>md5sum</key>
+ <string>ee3014eda3d5f912c1e3ec21bbdddcaf</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/apr_suite-1.2.8-darwin-20080610.tar.bz2</uri>
+ </map>
+ <key>linux</key>
+ <map>
+ <key>md5sum</key>
+ <string>4b0f2cc3ec66162be6cf0b13186bc838</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/apr_suite-1.2.8-linux-20080610.tar.bz2</uri>
+ </map>
+ <key>windows</key>
+ <map>
+ <key>md5sum</key>
+ <string>979257a1b24d9200be58872d9c658114</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/apr_suite-1.2.8-windows-20080611.tar.bz2</uri>
+ </map>
+ </map>
+ </map>
+ <key>ares</key>
+ <map>
+ <key>copyright</key>
+ <string>Copyright 1998 by the Massachusetts Institute of Technology.</string>
+ <key>description</key>
+ <string>Performs DNS requests and name resolves asynchronously. Used with libcurl to keep all HTTP operations async.</string>
+ <key>license</key>
+ <string>c-ares</string>
+ <key>packages</key>
+ <map>
+ <key>darwin</key>
+ <map>
+ <key>md5sum</key>
+ <string>19aae45edfd29a269cd10af7729489e7</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/ares-1.3.0-darwin-20080610.tar.bz2</uri>
+ </map>
+ <key>linux</key>
+ <map>
+ <key>md5sum</key>
+ <string>8b163aa08cf4a5b70f93519137fa6cf0</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/ares-1.3.0-linux-20080610.tar.bz2</uri>
+ </map>
+ <key>windows</key>
+ <map>
+ <key>md5sum</key>
+ <string>bbbe5e5f8504125e2ab813f666fd61ba</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/ares-1.3.0-windows-20080611.tar.bz2</uri>
+ </map>
+ </map>
+ </map>
+ <key>berkeley</key>
+ <map>
+ <key>copyright</key>
+ <string>Copyright (c) 1990-1999 Sleepycat Software. All rights reserved.</string>
+ <key>description</key>
+ <string>a high-performance, embedded database library</string>
+ <key>license</key>
+ <string>sleepycat</string>
+ </map>
+ <key>boost</key>
+ <map>
+ <key>copyright</key>
+ <string>various</string>
+ <key>description</key>
+ <string>A set of portable C++ libraries which provide a wide set of functionality. Used primarily for tokenization. </string>
+ <key>license</key>
+ <string>boost</string>
+ <key>packages</key>
+ <map>
+ <key>darwin</key>
+ <map>
+ <key>md5sum</key>
+ <string>4afb62f563bb2fd9d43fc071e2eeb167</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/boost-1.32.0-darwin-20080610.tar.bz2</uri>
+ </map>
+ <key>linux</key>
+ <map>
+ <key>md5sum</key>
+ <string>14aba81fa0993e420882314a3fea5127</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/boost-1.32.0-linux-20080610.tar.bz2</uri>
+ </map>
+ <key>windows</key>
+ <map>
+ <key>md5sum</key>
+ <string>2b627d2a598f883950c21bae52738176</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/boost-1.32.0-windows-20080611.tar.bz2</uri>
+ </map>
+ </map>
+ </map>
+ <key>curl</key>
+ <map>
+ <key>copyright</key>
+ <string>Copyright (c) 1996 - 2008, Daniel Stenberg, &lt;daniel@haxx.se&gt;.</string>
+ <key>description</key>
+ <string>Client-side URL transfer library. Handles moving data across the net in many different protocols. Used to GET/POST/PUT/DELETE web resources. </string>
+ <key>license</key>
+ <string>curl</string>
+ <key>packages</key>
+ <map>
+ <key>darwin</key>
+ <map>
+ <key>md5sum</key>
+ <string>722c0e0eccf28b00e0f759362ef81ddf</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/curl-7.16.0-darwin-20080610.tar.bz2</uri>
+ </map>
+ <key>linux</key>
+ <map>
+ <key>md5sum</key>
+ <string>cd89f34324acf1222078298974c1dfb3</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/curl-7.16.0-linux-20080610.tar.bz2</uri>
+ </map>
+ <key>windows</key>
+ <map>
+ <key>md5sum</key>
+ <string>08d17bc997494a852537b0c7b4425d47</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/curl-7.16.0-windows-20080611.tar.bz2</uri>
+ </map>
+ </map>
+ </map>
+ <key>elfio</key>
+ <map>
+ <key>license</key>
+ <string>lgpl</string>
+ <key>packages</key>
+ <map>
+ <key>linux</key>
+ <map>
+ <key>md5sum</key>
+ <string>e4f5109f8c119613d7b2c3706d786e43</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/elfio-1.0.3-linux-20080610.tar.bz2</uri>
+ </map>
+ </map>
+ </map>
+ <key>expat</key>
+ <map>
+ <key>copyright</key>
+ <string>Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd</string>
+ <key>description</key>
+ <string>An XML parser library written in C. It is a stream-oriented parser in which an application registers handlers for things the parser might find in the XML document (like start tags).</string>
+ <key>license</key>
+ <string>mit</string>
+ <key>packages</key>
+ <map>
+ <key>darwin</key>
+ <map>
+ <key>md5sum</key>
+ <string>93760196ea3e851b1a334743816e189d</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/expat-1.95.8-darwin-20080610.tar.bz2</uri>
+ </map>
+ <key>linux</key>
+ <map>
+ <key>md5sum</key>
+ <string>8e990a9e3c30c7c37c147ac0df70a323</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/expat-1.95.8-linux-20080610.tar.bz2</uri>
+ </map>
+ <key>windows</key>
+ <map>
+ <key>md5sum</key>
+ <string>e58538aae9982209e095bbf6660c8d6b</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/expat-1.95.8-windows-20080611.tar.bz2</uri>
+ </map>
+ </map>
+ </map>
+ <key>fmod</key>
+ <map>
+ <key>copyright</key>
+ <string>FMOD Sound System, copyright (C) Firelight Technologies Pty, Ltd., 1994-2006.</string>
+ <key>description</key>
+ <string>Audio engine and mp3 stream decoder .</string>
+ <key>license</key>
+ <string>fmod</string>
+ <key>packages</key>
+ <map>
+ <key>darwin</key>
+ <map>
+ <key>md5sum</key>
+ <string>d13cc275db503492fc87c7b36c1c49d3</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/fmod-3.75-darwin-20080610.tar.bz2</uri>
+ </map>
+ <key>linux</key>
+ <map>
+ <key>md5sum</key>
+ <string>85caf188852f2cfede49ff12a3d928d5</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/fmod-3.75-linux-20080610.tar.bz2</uri>
+ </map>
+ <key>windows</key>
+ <map>
+ <key>md5sum</key>
+ <string>1a55dec2907821f5f785648a660126c3</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/fmod-3.75-windows-20080611.tar.bz2</uri>
+ </map>
+ </map>
+ </map>
+ <key>fontconfig</key>
+ <map>
+ <key>license</key>
+ <string>mit</string>
+ <key>packages</key>
+ <map>
+ <key>linux</key>
+ <map>
+ <key>md5sum</key>
+ <string>6630fea6b036f3e937608b3d4186adfa</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/fontconfig-2.2.3-linux-20080610.tar.bz2</uri>
+ </map>
+ </map>
+ </map>
+ <key>freetype</key>
+ <map>
+ <key>copyright</key>
+ <string>Copyright</string>
+ <key>description</key>
+ <string>Font</string>
+ <key>license</key>
+ <string>freetype</string>
+ <key>packages</key>
+ <map>
+ <key>darwin</key>
+ <map>
+ <key>md5sum</key>
+ <string>b34eb8af0a2b736a1d70d8b32b3e009d</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/freetype-2.1.5-darwin-20080610.tar.bz2</uri>
+ </map>
+ <key>linux</key>
+ <map>
+ <key>md5sum</key>
+ <string>a52b44f89b7422c565da5f4a5c7f582c</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/freetype-2.1.5-linux-20080610.tar.bz2</uri>
+ </map>
+ <key>windows</key>
+ <map>
+ <key>md5sum</key>
+ <string>5b1aae54ea3313a9f424719323eb5ad3</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/freetype-2.1.5-windows-20080611.tar.bz2</uri>
+ </map>
+ </map>
+ </map>
+ <key>glh_linear</key>
+ <map>
+ <key>copyright</key>
+ <string>Copyright (c) 2000 Cass Everitt; Copyright (c) 2000 NVIDIA Corporation; All rights reserved.</string>
+ <key>description</key>
+ <string>nVidia NVParse SDK: platform-indepenedent C++ Apple OpenGL helper library</string>
+ <key>license</key>
+ <string>glh_linear</string>
+ <key>packages</key>
+ <map>
+ <key>darwin</key>
+ <map>
+ <key>md5sum</key>
+ <string>64ea2fca2ca9457b9305ec416c574a61</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/glh_linear-darwin-20080610.tar.bz2</uri>
+ </map>
+ <key>linux</key>
+ <map>
+ <key>md5sum</key>
+ <string>6fd9c490b7460e2b433381050495e48e</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/glh_linear-linux-20080610.tar.bz2</uri>
+ </map>
+ <key>windows</key>
+ <map>
+ <key>md5sum</key>
+ <string>e286dc9f7ce90856a7ac291874b6fc34</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/glh_linear-windows-20080611.tar.bz2</uri>
+ </map>
+ </map>
+ </map>
+ <key>google</key>
+ <map>
+ <key>license</key>
+ <string>mit</string>
+ <key>packages</key>
+ <map>
+ <key>linux</key>
+ <map>
+ <key>md5sum</key>
+ <string>6df3889822deb8b80ac6f6d421a35137</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/google-linux-20080610.tar.bz2</uri>
+ </map>
+ </map>
+ </map>
+ <key>gstreamer</key>
+ <map>
+ <key>license</key>
+ <string>lgpl</string>
+ <key>packages</key>
+ <map>
+ <key>linux</key>
+ <map>
+ <key>md5sum</key>
+ <string>5e0e4ee938b56a118c90d51447009ba9</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/gstreamer-linux-20080610.tar.bz2</uri>
+ </map>
+ </map>
+ </map>
+ <key>gtk-atk-pango-glib</key>
+ <map>
+ <key>copyright</key>
+ <string>Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald</string>
+ <key>description</key>
+ <string>Libraries associated with GTK for gui features. atk: interfaces for accessibility; glib: low-level core functionality for using GTK+ and GNOME; pango: layout/rendering of text w/ emphasis on internationalization.</string>
+ <key>license</key>
+ <string>lgpl</string>
+ <key>packages</key>
+ <map>
+ <key>linux</key>
+ <map>
+ <key>md5sum</key>
+ <string>72801a23b43586b822c8a1dfc1a6e313</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/gtk-atk-pango-glib-linux-20080610.tar.bz2</uri>
+ </map>
+ <key>windows</key>
+ <map>
+ <key>md5sum</key>
+ <string>492b04de6ba02167cef7a04e8dc5e748</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/gtk-atk-pango-glib-windows-20080611.tar.bz2</uri>
+ </map>
+ </map>
+ </map>
+ <key>havok</key>
+ <map>
+ <key>copyright</key>
+ <string>on file</string>
+ <key>description</key>
+ <string>Physics engine for the simulator</string>
+ <key>license</key>
+ <string>havok</string>
+ <key>packages</key>
+ <map>
+ <key>darwin</key>
+ <map>
+ <key>md5sum</key>
+ <string>7d3d2d71c08729fe881a059af1d9b938</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/havok-4.6-darwin-20080610.tar.bz2</uri>
+ </map>
+ <key>linux</key>
+ <map>
+ <key>md5sum</key>
+ <string>36a892b451b5cbc8f72d6f1153f55cf8</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/havok-4.6-linux-20080610.tar.bz2</uri>
+ </map>
+ <key>windows</key>
+ <map>
+ <key>md5sum</key>
+ <string>b63a2f20df43c68062c6b8e77a2da455</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/havok-4.6-windows-20080611.tar.bz2</uri>
+ </map>
+ </map>
+ </map>
+ <key>jpeglib</key>
+ <map>
+ <key>copyright</key>
+ <string>Copyright (c) 2003, Yves Piguet.</string>
+ <key>description</key>
+ <string>An open-source JPEG-2000 library; a slower alternative to Kadaku. Used in the open source release </string>
+ <key>license</key>
+ <string>jpeglib</string>
+ <key>packages</key>
+ <map>
+ <key>darwin</key>
+ <map>
+ <key>md5sum</key>
+ <string>62cc07ef64f31f493f55e618c915125b</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/jpeglib-6b-darwin-20080610.tar.bz2</uri>
+ </map>
+ <key>linux</key>
+ <map>
+ <key>md5sum</key>
+ <string>6bb623a88116002124686248ebd35fd9</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/jpeglib-6b-linux-20080610.tar.bz2</uri>
+ </map>
+ <key>windows</key>
+ <map>
+ <key>md5sum</key>
+ <string>b28852df715401eae575ccd9d5c84cf1</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/jpeglib-6b-windows-20080611.tar.bz2</uri>
+ </map>
+ </map>
+ </map>
+ <key>kdu</key>
+ <map>
+ <key>copyright</key>
+ <string>on file</string>
+ <key>description</key>
+ <string>Kakadu (KDU) JPEG-2000 decoder library. </string>
+ <key>license</key>
+ <string>kdu</string>
+ <key>packages</key>
+ <map>
+ <key>darwin</key>
+ <map>
+ <key>md5sum</key>
+ <string>a351af91b5a102d1b6fe95b5d1ab4347</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/kdu-5.2.1-darwin-20080610.tar.bz2</uri>
+ </map>
+ <key>linux</key>
+ <map>
+ <key>md5sum</key>
+ <string>155ecb6f704c1082aa6565537ada024b</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/kdu-5.2.1-linux-20080610.tar.bz2</uri>
+ </map>
+ <key>windows</key>
+ <map>
+ <key>md5sum</key>
+ <string>5cd4c0db91e3687290de685203634ab8</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/kdu-5.2.1-windows-20080611.tar.bz2</uri>
+ </map>
+ </map>
+ </map>
+ <key>libpng</key>
+ <map>
+ <key>copyright</key>
+ <string>Copyright (c) 2004, 2006-2008 Glenn Randers-Pehrson</string>
+ <key>description</key>
+ <string>An open, extensible image format with lossless compression. PNG Reference Library </string>
+ <key>license</key>
+ <string>libpng</string>
+ <key>packages</key>
+ <map>
+ <key>darwin</key>
+ <map>
+ <key>md5sum</key>
+ <string>2e41f3710b5769e58d2e00944feb7bee</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/libpng-1.2.18-darwin-20080610.tar.bz2</uri>
+ </map>
+ <key>linux</key>
+ <map>
+ <key>md5sum</key>
+ <string>642dd0ba1fa7ac55fae555cd622b36f6</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/libpng-1.2.18-linux-20080610.tar.bz2</uri>
+ </map>
+ <key>windows</key>
+ <map>
+ <key>md5sum</key>
+ <string>0274c3d4a3b7cce8eede207348438f3b</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/libpng-1.2.18-windows-20080611.tar.bz2</uri>
+ </map>
+ </map>
+ </map>
+ <key>libstdc++</key>
+ <map>
+ <key>copyright</key>
+ <string>Copyright (C) 2007 Free Software Foundation, Inc. &lt;http://fsf.org/&gt;</string>
+ <key>description</key>
+ <string>Bundled library.</string>
+ <key>license</key>
+ <string>gpl</string>
+ <key>packages</key>
+ <map>
+ <key>linux</key>
+ <map>
+ <key>md5sum</key>
+ <string>8c39ea5d1feebbe9b8ee5d5933eeabe5</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/libstdc++-6.0-linux-20080610.tar.bz2</uri>
+ </map>
+ </map>
+ </map>
+ <key>libuuid</key>
+ <map>
+ <key>copyright</key>
+ <string>Copyright (C) 2007 Free Software Foundation, Inc. &lt;http://fsf.org/&gt;</string>
+ <key>description</key>
+ <string>Generates UUIDs under Linux. Originally a part of the ext2fs filesystem. Also see lluuid.cpp for all platforms. Part of the e2fsprogs package.</string>
+ <key>license</key>
+ <string>lgpl</string>
+ <key>packages</key>
+ <map>
+ <key>linux</key>
+ <map>
+ <key>md5sum</key>
+ <string>cf68933edc8d556d6901179a7993bbc0</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/libuuid-linux-20080610.tar.bz2</uri>
+ </map>
+ </map>
+ </map>
+ <key>libxml</key>
+ <map>
+ <key>license</key>
+ <string>mit</string>
+ <key>packages</key>
+ <map>
+ <key>linux</key>
+ <map>
+ <key>md5sum</key>
+ <string>3a71ea5ff924e70c6786ef2c202f553b</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/libxml-2.6.24-linux-20080610.tar.bz2</uri>
+ </map>
+ </map>
+ </map>
+ <key>llmozlib</key>
+ <map>
+ <key>license</key>
+ <string>mozillaPL</string>
+ <key>packages</key>
+ <map>
+ <key>darwin</key>
+ <map>
+ <key>md5sum</key>
+ <string>e2969baf0e39f6a586141a75c3360330</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/llmozlib-darwin-20080610.tar.bz2</uri>
+ </map>
+ <key>linux</key>
+ <map>
+ <key>md5sum</key>
+ <string>55ab8be3f18e27095f7ecae7d90804d5</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/llmozlib-linux-20080610.tar.bz2</uri>
+ </map>
+ <key>windows</key>
+ <map>
+ <key>md5sum</key>
+ <string>73a0bc8ea770a4035175161d2b1e903f</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/llmozlib-windows-20080611.tar.bz2</uri>
+ </map>
+ </map>
+ </map>
+ <key>mesa</key>
+ <map>
+ <key>copyright</key>
+ <string>Copyright (C) 1999-2007 Brian Paul All Rights Reserved.</string>
+ <key>description</key>
+ <string>Mesa 3-D graphics library. Provides the required Apple OpenGL headers under Linux.</string>
+ <key>license</key>
+ <string>mesa</string>
+ <key>packages</key>
+ <map>
+ <key>linux</key>
+ <map>
+ <key>md5sum</key>
+ <string>461891f44070780d9ca0b26988b6f44e</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/mesa-7.0-linux-20080610.tar.bz2</uri>
+ </map>
+ <key>windows</key>
+ <map>
+ <key>md5sum</key>
+ <string>e0a27aef7b2de0d5c78c753f72214e8d</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/mesa-7.0-windows-20080611.tar.bz2</uri>
+ </map>
+ </map>
+ </map>
+ <key>mysql</key>
+ <map>
+ <key>license</key>
+ <string>gpl</string>
+ <key>packages</key>
+ <map>
+ <key>darwin</key>
+ <map>
+ <key>md5sum</key>
+ <string>a60de9d31aa3dfab8851f8c2dfa3f8dc</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/mysql-darwin-20080610.tar.bz2</uri>
+ </map>
+ <key>windows</key>
+ <map>
+ <key>md5sum</key>
+ <string>813e8621ca3cd5a720f709620927070f</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/mysql-windows-20080611.tar.bz2</uri>
+ </map>
+ </map>
+ </map>
+ <key>ndofdev</key>
+ <map>
+ <key>copyright</key>
+ <string>(c) 2008 Linden Lab.</string>
+ <key>description</key>
+ <string>in use on windows and darwin for joystick support.</string>
+ <key>license</key>
+ <string>linden</string>
+ <key>packages</key>
+ <map>
+ <key>darwin</key>
+ <map>
+ <key>md5sum</key>
+ <string>dae6e00c7eed6bacdecd639c4f5cef1d</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/ndofdev-darwin-20080610.tar.bz2</uri>
+ </map>
+ <key>linux</key>
+ <map>
+ <key>md5sum</key>
+ <string>ccaf379968c886258d5390d06ff1a2c0</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/ndofdev-linux-20080610.tar.bz2</uri>
+ </map>
+ <key>windows</key>
+ <map>
+ <key>md5sum</key>
+ <string>af8249252bcd3782606bf17cdc145ea4</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/ndofdev-windows-20080611.tar.bz2</uri>
+ </map>
+ </map>
+ </map>
+ <key>ogg-vorbis</key>
+ <map>
+ <key>copyright</key>
+ <string>Copyright (C) 2008 Xiph.org Foundation</string>
+ <key>description</key>
+ <string>Ogg: container format Vorbis: audio compression scheme</string>
+ <key>license</key>
+ <string>ogg-vorbis</string>
+ <key>packages</key>
+ <map>
+ <key>darwin</key>
+ <map>
+ <key>md5sum</key>
+ <string>59d3f15d89d9433f931f480878f46d4c</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/ogg-vorbis-1.03-1.1.2-darwin-20080610.tar.bz2</uri>
+ </map>
+ <key>linux</key>
+ <map>
+ <key>md5sum</key>
+ <string>54a29d28fbce6dd6abb875975a42acf1</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/ogg-vorbis-1.03-1.1.2-linux-20080610.tar.bz2</uri>
+ </map>
+ <key>windows</key>
+ <map>
+ <key>md5sum</key>
+ <string>2800543038e88c233976a2301e67325f</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/ogg-vorbis-1.03-1.1.2-windows-20080611.tar.bz2</uri>
+ </map>
+ </map>
+ </map>
+ <key>openSSL</key>
+ <map>
+ <key>license</key>
+ <string>openSSL</string>
+ <key>packages</key>
+ <map>
+ <key>darwin</key>
+ <map>
+ <key>md5sum</key>
+ <string>5da0ef41618a024795508f5c93d61754</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/openSSL-0.9.7c-darwin-20080610.tar.bz2</uri>
+ </map>
+ <key>linux</key>
+ <map>
+ <key>md5sum</key>
+ <string>fb54b93f881e587363b134f42e2f1c0b</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/openSSL-0.9.7c-linux-20080610.tar.bz2</uri>
+ </map>
+ <key>windows</key>
+ <map>
+ <key>md5sum</key>
+ <string>0f0e8ea5014f2112f2d04a85a0b8720e</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/openSSL-0.9.7c-windows-20080611.tar.bz2</uri>
+ </map>
+ </map>
+ </map>
+ <key>openjpeg</key>
+ <map>
+ <key>copyright</key>
+ <string>Copyright (c) 2002-2007, Communications and Remote Sensing Laboratory, Universite catholique de Louvain (UCL), Belgium</string>
+ <key>description</key>
+ <string>An open-source JPEG-2000 library; a slower alternative to Kadaku. Used in the open source release </string>
+ <key>license</key>
+ <string>openjpeg</string>
+ <key>packages</key>
+ <map>
+ <key>darwin</key>
+ <map>
+ <key>md5sum</key>
+ <string>e169d2372539fc96b72dc59aa7a656e6</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/openjpeg-1.2-darwin-20080610.tar.bz2</uri>
+ </map>
+ <key>linux</key>
+ <map>
+ <key>md5sum</key>
+ <string>8b2733f8e4b7d58db7392d7a6837675f</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/openjpeg-1.2-linux-20080610.tar.bz2</uri>
+ </map>
+ <key>windows</key>
+ <map>
+ <key>md5sum</key>
+ <string>9f7ae7023fad3c823a303c57610973c5</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/openjpeg-1.2-windows-20080611.tar.bz2</uri>
+ </map>
+ </map>
+ </map>
+ <key>quicktime</key>
+ <map>
+ <key>copyright</key>
+ <string>Copyright (C) 1990-2006 by Apple Computer, Inc., all rights reserved.</string>
+ <key>description</key>
+ <string>Separate download. Used to play in-world video clips on a prim. </string>
+ <key>license</key>
+ <string>quicktime</string>
+ <key>packages</key>
+ <map>
+ <key>windows</key>
+ <map>
+ <key>md5sum</key>
+ <string>7a2e6fc89b1ef027f3a36ebb46fb0c8a</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/quicktime-windows-20080611.tar.bz2</uri>
+ </map>
+ </map>
+ </map>
+ <key>smartheap</key>
+ <map>
+ <key>copyright</key>
+ <string>Copyright (C) 1991-2000 Compuware Corporation. All Rights Reserved.</string>
+ <key>description</key>
+ <string>Memory Management Library</string>
+ <key>license</key>
+ <string>smartheap</string>
+ <key>packages</key>
+ <map>
+ <key>darwin</key>
+ <map>
+ <key>md5sum</key>
+ <string>f54131b5f228e805c64c2e4e6c96579a</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/smartheap-6.0.2-darwin-20080610.tar.bz2</uri>
+ </map>
+ <key>linux</key>
+ <map>
+ <key>md5sum</key>
+ <string>499208522bf7d7843e1d014d64214e06</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/smartheap-6.0.2-linux-20080610.tar.bz2</uri>
+ </map>
+ <key>windows</key>
+ <map>
+ <key>md5sum</key>
+ <string>78fd47017f21d11eae43bca3e38a3e1e</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/smartheap-6.0.2-windows-20080611.tar.bz2</uri>
+ </map>
+ </map>
+ </map>
+ <key>tut</key>
+ <map>
+ <key>copyright</key>
+ <string>Copyright 2002-2006 Vladimir Dyuzhev</string>
+ <key>description</key>
+ <string>C++ Template Unit Test</string>
+ <key>license</key>
+ <string>bsd</string>
+ <key>packages</key>
+ <map>
+ <key>darwin</key>
+ <map>
+ <key>md5sum</key>
+ <string>fe8045e47dc505786e1d45d480190f96</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/tut-darwin-20080610.tar.bz2</uri>
+ </map>
+ <key>linux</key>
+ <map>
+ <key>md5sum</key>
+ <string>2e28af0b6124a472b9aac6f2225dca8d</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/tut-linux-20080610.tar.bz2</uri>
+ </map>
+ <key>windows</key>
+ <map>
+ <key>md5sum</key>
+ <string>953cc124943a05e474687a127d2e88d9</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/tut-windows-20080611.tar.bz2</uri>
+ </map>
+ </map>
+ </map>
+ <key>unistd</key>
+ <map>
+ <key>copyright</key>
+ <string>(c) 2008 Linden Lab.</string>
+ <key>description</key>
+ <string>Placeholder file to make flex happy on windows.</string>
+ <key>license</key>
+ <string>linden</string>
+ <key>packages</key>
+ <map>
+ <key>windows</key>
+ <map>
+ <key>md5sum</key>
+ <string>6353aff33d7d03b22055aec76f53a866</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/unistd-windows-20080611.tar.bz2</uri>
+ </map>
+ </map>
+ </map>
+ <key>vivox</key>
+ <map>
+ <key>copyright</key>
+ <string> </string>
+ <key>license</key>
+ <string>vivox</string>
+ <key>packages</key>
+ <map>
+ <key>darwin</key>
+ <map>
+ <key>md5sum</key>
+ <string>121199818b827e147179c3d3494815e1</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/vivox-darwin-20080610.tar.bz2</uri>
+ </map>
+ <key>linux</key>
+ <map>
+ <key>md5sum</key>
+ <string>c58f03002a9c452d4c8cb1874d3ac44b</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/vivox-linux-20080610.tar.bz2</uri>
+ </map>
+ <key>windows</key>
+ <map>
+ <key>md5sum</key>
+ <string>fce352d6d99233b2dac1cd51add0f0d1</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/vivox-windows-20080611.tar.bz2</uri>
+ </map>
+ </map>
+ </map>
+ <key>xmlrpc-epi</key>
+ <map>
+ <key>copyright</key>
+ <string>Copyright 2000 Epinions, Inc.</string>
+ <key>description</key>
+ <string>Implementation of the xmlrpc protocol in C that provides an API for developers to serialize RPC requests to and from XML. </string>
+ <key>license</key>
+ <string>xmlrpc-epi</string>
+ <key>packages</key>
+ <map>
+ <key>darwin</key>
+ <map>
+ <key>md5sum</key>
+ <string>d116c41b95ec41adee7bbfdbf2c74ffb</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/xmlrpc-epi-0.51-darwin-20080610.tar.bz2</uri>
+ </map>
+ <key>linux</key>
+ <map>
+ <key>md5sum</key>
+ <string>dd08d9f03c9fb84406aa31494e4e5663</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/xmlrpc-epi-0.51-linux-20080610.tar.bz2</uri>
+ </map>
+ <key>windows</key>
+ <map>
+ <key>md5sum</key>
+ <string>e904dd2653fdb9dac15cc452a74f4bcb</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/xmlrpc-epi-0.51-windows-20080611.tar.bz2</uri>
+ </map>
+ </map>
+ </map>
+ <key>zlib</key>
+ <map>
+ <key>copyright</key>
+ <string>Copyright (C) 1995-2003 Jean-loup Gailly and Mark Adler</string>
+ <key>description</key>
+ <string>A Massively Spiffy Yet Delicately Unobtrusive Compression Library (Also Free, Not to Mention Unencumbered by Patents)</string>
+ <key>license</key>
+ <string>zlib</string>
+ <key>packages</key>
+ <map>
+ <key>darwin</key>
+ <map>
+ <key>md5sum</key>
+ <string>99be09df2ec92282293761cd9ae242ac</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/zlib-1.1.4-darwin-20080610.tar.bz2</uri>
+ </map>
+ <key>linux</key>
+ <map>
+ <key>i686</key>
+ <map>
+ <key>md5sum</key>
+ <string>7efbde55728369e76ab9d46bff60c87f</string>
+ <key>url</key>
+ <uri>http://codex.lindenlab.com/~aaronb/install_pkgs/zlib-1.2.1-linux-i686.tar.gz</uri>
+ </map>
+ <key>md5sum</key>
+ <string>a93da3d0a1fcf05c70d545991e0be227</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/zlib-1.1.4-linux-20080610.tar.bz2</uri>
+ </map>
+ <key>windows</key>
+ <map>
+ <key>md5sum</key>
+ <string>7058b7aeded6d8bb10bd0de8539f8392</string>
+ <key>url</key>
+ <uri>http://user.lindenlab.com/~jenn/install_pkgs/zlib-1.1.4-windows-20080611.tar.bz2</uri>
+ </map>
+ </map>
+ </map>
+ </map>
+ <key>licenses</key>
+ <map>
+ <key>GL</key>
+ <map>
+ <key>url</key>
+ <string>http://www.xfree86.org/4.4.0/LICENSE9.html#sgi</string>
+ </map>
+ <key>apache 2.0</key>
+ <map>
+ <key>url</key>
+ <string>http://www.apache.org/licenses/LICENSE-2.0</string>
+ </map>
+ <key>boost</key>
+ <map>
+ <key>url</key>
+ <string>http://www.boost.org/LICENSE_1_0.txt</string>
+ </map>
+ <key>bsd</key>
+ <map>
+ <key>url</key>
+ <string>http://www.opensource.org/licenses/bsd-license.php</string>
+ </map>
+ <key>c-ares</key>
+ <map>
+ <key>text</key>
+ <string>http://daniel.haxx.se/projects/c-ares/license.html</string>
+ </map>
+ <key>curl</key>
+ <map>
+ <key>url</key>
+ <string>http://curl.haxx.se/docs/copyright.html</string>
+ </map>
+ <key>fmod</key>
+ <map>
+ <key>url</key>
+ <string>http://www.fmod.org/ifmodlicense.html</string>
+ </map>
+ <key>freetype</key>
+ <map>
+ <key>url</key>
+ <string>http://freetype.sourceforge.net/FTL.TXT</string>
+ </map>
+ <key>glh_linear</key>
+ <map>
+ <key>text</key>
+ <string>glh - is a platform-indepenedent C++ OpenGL helper library
+
+Copyright (c) 2000 Cass Everitt
+Copyright (c) 2000 NVIDIA Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or
+without modification, are permitted provided that the following
+conditions are met:
+
+Redistributions of source code must retain the above
+copyright notice, this list of conditions and the following
+disclaimer.
+Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following
+disclaimer in the documentation and/or other materials
+provided with the distribution.
+The names of contributors to this software may not be used
+to endorse or promote products derived from this software
+without specific prior written permission.
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+
+Cass Everitt - cass@r3.nu
+
+</string>
+ </map>
+ <key>gpl</key>
+ <map>
+ <key>url</key>
+ <string>http://www.gnu.org/licenses/gpl.html</string>
+ </map>
+ <key>havok</key>
+ <map>
+ <key>text</key>
+ <string>on file</string>
+ </map>
+ <key>intel</key>
+ <map>
+ <key>text</key>
+ <string>Haven't yet found.
+</string>
+ </map>
+ <key>jpeglib</key>
+ <map>
+ <key>text</key>
+ <string>http://nyctergatis.com/jpeglib/</string>
+ </map>
+ <key>kdu</key>
+ <map>
+ <key>text</key>
+ <string>jpeg2000 license #00024 (on file)</string>
+ </map>
+ <key>lgpl</key>
+ <map>
+ <key>url</key>
+ <string>http://www.gnu.org/copyleft/lgpl.html</string>
+ </map>
+ <key>libpng</key>
+ <map>
+ <key>text</key>
+ <string>http://www.libpng.org/pub/png/src/libpng-LICENSE.txt</string>
+ </map>
+ <key>linden</key>
+ <map>
+ <key>text</key>
+ <string>Using this license for Linden Lab owned library files</string>
+ </map>
+ <key>mesa</key>
+ <map>
+ <key>url</key>
+ <string>http://www.mesa3d.org/license.html</string>
+ </map>
+ <key>mit</key>
+ <map>
+ <key>text</key>
+ <string>http://www.jclark.com/xml/copying.txt</string>
+ </map>
+ <key>mozillaPL</key>
+ <map>
+ <key>url</key>
+ <string>http://www.mozilla.org/MPL/MPL-1.1.html</string>
+ </map>
+ <key>ogg-vorbis</key>
+ <map>
+ <key>url</key>
+ <string>http://www.xiph.org/licenses/bsd/</string>
+ </map>
+ <key>openSSL</key>
+ <map>
+ <key>url</key>
+ <string>http://www.openssl.org/source/license.html</string>
+ </map>
+ <key>openjpeg</key>
+ <map>
+ <key>url</key>
+ <string>http://www.openjpeg.org/BSDlicense.txt</string>
+ </map>
+ <key>quicktime</key>
+ <map>
+ <key>text</key>
+ <string>ENGLISH
+
+Apple Computer, Inc.
+QuickTime 7 Software Developer Kit (SDK)
+Software License Agreement
+
+PLEASE READ THIS SOFTWARE LICENSE AGREEMENT ("LICENSE") BEFORE USING THE SOFTWARE. BY USING THE SOFTWARE, YOU ARE AGREEING TO BE BOUND BY THE TERMS OF THIS LICENSE. IF YOU ARE ACCESSING THE SOFTWARE ELECTRONICALLY, SIGNIFY YOUR AGREEMENT TO BE BOUND BY THE TERMS OF THIS LICENSE BY CLICKING THE "AGREE/ACCEPT" BUTTON. IF YOU DO NOT AGREE TO THE TERMS OF THIS LICENSE, RETURN THE APPLE SOFTWARE TO THE PLACE WHERE YOU OBTAINED IT FOR A REFUND OR, IF THE SOFTWARE WAS ACCESSED ELECTRONICALLY, CLICK "DISAGREE/DECLINE".
+
+IMPORTANT NOTE: To the extent this software may be used to reproduce materials, it is licensed to you only for reproduction of materials you are authorized or legally permitted to reproduce.
+
+1. License. Any software, tools, utilities, sample code, documentation, fonts, API?s, header files and other materials accompanying this License, whether on disk, print or electronic documentation, in read only memory, or any other media, (collectively, the "Apple Software") are licensed, not sold, to you by Apple Computer, Inc. ("Apple") for use only under the terms of this License, and Apple reserves all rights not expressly granted to you. The rights granted herein are limited to Apple's and its licensors' intellectual property rights in the Apple Software and do not include any other patents or intellectual property rights. You own the media on which the Apple Software is recorded but Apple and/or Apple's licensor(s) retain ownership of the Apple Software itself. The Apple Software in this package and any copies, modifications and derivative works that this License authorizes you to make are subject to this License.
+
+2. Permitted Uses and Restrictions. You may use the Apple Software to develop application software that is compatible with, and runs only on Mac OS X and/or Windows platforms with QuickTime installed. Except for compiling header files and linking libraries as necessary to build your application software, you have no right to modify, incorporate into or include in combination with your own programs, license or otherwise redistribute any portion of the Apple Software. Your software application may not interfere with the functionality of QuickTime Player or the QuickTime Plug-in, including but not limited to file type or MIME type associations that are registered to QuickTime. You may make only as many internal use copies of the Apple Software as reasonably necessary to use the Apple Software as permitted in this paragraph and distribute such copies only to your employees whose job duties require them to so use the Apple Software. You must reproduce on each copy of the Apple Software or portion thereof, the Apple copyright notice and any other proprietary legends that were on the original copy of the Apple Software. Except as expressly permitted in this License, you may not decompile, reverse engineer, disassemble, modify, rent, lease, loan, sublicense, distribute or create derivative works based upon the Apple Software in whole or part. Your rights under this License will terminate automatically without notice from Apple if you fail to comply with any term(s) of this License. In addition, Apple reserves the right to terminate this License if a new version of Apple's operating system software or the Apple Software is released which is incompatible with the Apple Software.
+
+3. Disclaimer Of Warranty. The Apple Software may be "alpha", "beta", "development", pre-release, untested, and/or not fully tested and may contain errors that could cause failures or loss of data, be incomplete or contain inaccuracies. YOU EXPRESSLY ACKNOWLEDGE AND AGREE THAT USE OF THE APPLE SOFTWARE IS AT YOUR SOLE RISK AND THAT THE ENTIRE RISK AS TO SATISFACTORY QUALITY, PERFORMANCE, ACCURACY AND EFFORT IS WITH YOU. EXCEPT FOR THE LIMITED WARRANTY ON MEDIA SET FORTH ABOVE AND TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THE APPLE SOFTWARE IS PROVIDED "AS IS", WITH ALL FAULTS AND WITHOUT WARRANTY OF ANY KIND, AND APPLE AND APPLE'S LICENSORS (COLLECTIVELY REFERRED TO AS "APPLE" FOR THE PURPOSES OF SECTIONS 4 AND 5) HEREBY DISCLAIM ALL WARRANTIES AND CONDITIONS WITH RESPECT TO THE APPLE SOFTWARE, EITHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES AND/OR CONDITIONS OF MERCHANTABILITY, OF SATISFACTORY QUALITY, OF FITNESS FOR A PARTICULAR PURPOSE, OF ACCURACY, OF QUIET ENJOYMENT, AND NON-INFRINGEMENT OF THIRD PARTY RIGHTS. APPLE DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE APPLE SOFTWARE, THAT THE FUNCTIONS CONTAINED IN THE APPLE SOFTWARE WILL MEET YOUR REQUIREMENTS, THAT THE OPERATION OF THE APPLE SOFTWARE WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT DEFECTS IN THE APPLE SOFTWARE WILL BE CORRECTED. NO ORAL OR WRITTEN INFORMATION OR ADVICE GIVEN BY APPLE OR AN APPLE AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SHOULD THE APPLE SOFTWARE PROVE DEFECTIVE, YOU ASSUME THE ENTIRE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES OR LIMITATIONS ON APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO THE ABOVE EXCLUSION AND LIMITATIONS MAY NOT APPLY TO YOU.
+
+4. Limitation Of Liability. TO THE EXTENT NOT PROHIBITED BY LAW, IN NO EVENT SHALL APPLE BE LIABLE FOR PERSONAL INJURY, OR ANY INCIDENTAL, SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES WHATSOEVER, INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF PROFITS, LOSS OF DATA, BUSINESS INTERRUPTION OR ANY OTHER COMMERCIAL DAMAGES OR LOSSES, ARISING OUT OF OR RELATED TO YOUR USE OR INABILITY TO USE THE APPLE SOFTWARE, HOWEVER CAUSED, REGARDLESS OF THE THEORY OF LIABILITY (CONTRACT, TORT OR OTHERWISE) AND EVEN IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME JURISDICTIONS DO NOT ALLOW THE LIMITATION OF LIABILITY FOR PERSONAL INJURY, OR OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS LIMITATION MAY NOT APPLY TO YOU. In no event shall Apple's total liability to you for all damages (other than as may be required by applicable law in cases involving personal injury) exceed the amount of fifty dollars ($50.00). The foregoing limitations will apply even if the above stated remedy fails of its essential purpose.
+
+5. Export Control. You may not use or otherwise export or reexport the Apple Product except as authorized by United States law and the laws of the jurisdiction in which the Apple Product was obtained. In particular, but without limitation, the Apple Product may not be exported or re-exported (a) into any U.S. embargoed countries or (b) to anyone on the U.S. Treasury Department's list of Specially Designated Nationals or the U.S. Department of Commerce Denied Person?s List or Entity List. By using the Apple Product, you represent and warrant that you are not located in any such country or on any such list.
+
+6. Government End Users. The Apple Software and related documentation are "Commercial Items", as that term is defined at 48 C.F.R. ?2.101, consisting of "Commercial Computer Software" and "Commercial Computer Software Documentation", as such terms are used in 48 C.F.R. ?12.212 or 48 C.F.R. ?227.7202, as applicable. Consistent with 48 C.F.R. ?12.212 or 48 C.F.R. ?227.7202-1through 227.7202-4, as applicable, the Commercial Computer Software and Commercial Computer Software Documentation are being licensed to U.S. Government end users (a) only as Commercial Items and (b) with only those rights as are granted to all other end users pursuant to the terms and conditions herein. Unpublished-rights reserved under the copyright laws of the United States.
+
+7. Controlling Law and Severability. This License will be governed by and construed in accordance with the laws of the State of California, as applied to agreements entered into and to be performed entirely within California between California residents. This License shall not be governed by the United Nations Convention on Contracts for the International Sale of Goods, the application of which is expressly excluded. If for any reason a court of competent jurisdiction finds any provision, or portion thereof, to be unenforceable, the remainder of this License shall continue in full force and effect.
+
+8. Complete Agreement. This License constitutes the entire agreement between the parties with respect to the use of the Apple Software licensed hereunder and supersedes all prior or contemporaneous understandings regarding such subject matter. No amendment to or modification of this License will be binding unless in writing and signed by Apple. Any translation of this License is done for local requirements and in the event of a dispute between the English and any non-English versions, the English version of this License shall govern.
+
+EA0300
+</string>
+ </map>
+ <key>sleepycat</key>
+ <map>
+ <key>url</key>
+ <string>http://opensource.org/licenses/sleepycat.php</string>
+ </map>
+ <key>smartheap</key>
+ <map>
+ <key>text</key>
+ <string>on file
+</string>
+ </map>
+ <key>things</key>
+ <map>
+ </map>
+ <key>vivox</key>
+ <map>
+ <key>text</key>
+ <string>on file</string>
+ </map>
+ <key>xmlrpc-epi</key>
+ <map>
+ <key>url</key>
+ <string>http://xmlrpc-epi.sourceforge.net/main.php?t=license</string>
+ </map>
+ <key>zlib</key>
+ <map>
+ <key>url</key>
+ <string>http://www.gzip.org/zlib/zlib_license.html</string>
+ </map>
+ </map>
+ </map>
+</llsd>
diff --git a/scripts/install.py b/scripts/install.py
index 7421d697f6..7a1d57aaa7 100755
--- a/scripts/install.py
+++ b/scripts/install.py
@@ -34,7 +34,6 @@ $/LicenseInfo$
"""
import copy
-import errno
import md5
import optparse
import os
@@ -73,18 +72,18 @@ class InstallFile(object):
def __str__(self):
return "ifile{%s:%s}" % (self.pkgname, self.url)
- def _is_md5_match(self):
- hasher = md5.new(file(self.filename).read())
+ def _is_md5sum_match(self):
+ hasher = md5.new(file(self.filename, 'rb').read())
if hasher.hexdigest() == self.md5sum:
return True
return False
def is_match(self, platform):
"""@brief Test to see if this ifile is part of platform
-@param platform The target platform. Eg, win32 or linux/i686/gcc/3.3
-@return Returns True if the ifile is in the platform.
+ @param platform The target platform. Eg, windows or linux/i686/gcc/3.3
+ @return Returns True if the ifile is in the platform.
"""
- if self.platform_path == 'common':
+ if self.platform_path[0] == 'common':
return True
req_platform_path = platform.split('/')
#print "platform:",req_platform_path
@@ -96,21 +95,20 @@ class InstallFile(object):
return False
#print "match!"
return True
-
def fetch_local(self):
- print "Looking for:",self.filename
+ #print "Looking for:",self.filename
if not os.path.exists(self.filename):
- print "not there -- fetching"
- elif self.md5sum and not self._is_md5_match():
- print "Found, but md5 does not match."
+ pass
+ elif self.md5sum and not self._is_md5sum_match():
+ print "md5 mismatch:", self.filename
os.remove(self.filename)
else:
- print "Found matching package"
+ print "Found matching package:", self.filename
return
print "Downloading",self.url,"to local file",self.filename
urllib.urlretrieve(self.url, self.filename)
- if self.md5sum and not self._is_md5_match():
+ if self.md5sum and not self._is_md5sum_match():
raise RuntimeError("Error matching md5 for %s" % self.url)
class LicenseDefinition(object):
@@ -121,7 +119,7 @@ class LicenseDefinition(object):
# blessed : ...
# }
self._definition = definition
-
+
class BinaryDefinition(object):
def __init__(self, definition):
@@ -138,7 +136,7 @@ class BinaryDefinition(object):
def _ifiles_from_path(self, tree, pkgname, cache_dir, path):
ifiles = []
- if tree.has_key('url'):
+ if 'url' in tree:
ifiles.append(InstallFile(
pkgname,
tree['url'],
@@ -159,10 +157,10 @@ class BinaryDefinition(object):
def ifiles(self, pkgname, platform, cache_dir):
"""@brief return a list of appropriate InstallFile instances to install
-@param pkgname The name of the package to be installed, eg 'tut'
-@param platform The target platform. Eg, win32 or linux/i686/gcc/3.3
-@param cache_dir The directory to cache downloads.
-@return Returns a list of InstallFiles which are part of this install
+ @param pkgname The name of the package to be installed, eg 'tut'
+ @param platform The target platform. Eg, windows or linux/i686/gcc/3.3
+ @param cache_dir The directory to cache downloads.
+ @return Returns a list of InstallFiles which are part of this install
"""
if 'packages' not in self._definition:
return []
@@ -172,13 +170,16 @@ class BinaryDefinition(object):
cache_dir)
if platform == 'all':
return all_ifiles
- return [ifile for ifile in all_ifiles if ifile.is_match(platform)]
+ #print "Considering", len(all_ifiles), "packages for", pkgname
+ # split into 2 lines because pychecker thinks it might return none.
+ files = [ifile for ifile in all_ifiles if ifile.is_match(platform)]
+ return files
class InstalledPackage(object):
def __init__(self, definition):
# looks like:
- # { url1 : [file1,file2,...],
- # url2 : [file1,file2,...],...
+ # { url1 : { files: [file1,file2,...], md5sum:... },
+ # url2 : { files: [file1,file2,...], md5sum:... },...
# }
self._installed = {}
for url in definition:
@@ -188,13 +189,23 @@ class InstalledPackage(object):
return self._installed.keys()
def files_in(self, url):
- return self._installed[url]
+ return self._installed[url].get('files', [])
+
+ def get_md5sum(self, url):
+ return self._installed[url].get('md5sum', None)
def remove(self, url):
self._installed.pop(url)
def add_files(self, url, files):
- self._installed[url] = files
+ if url not in self._installed:
+ self._installed[url] = {}
+ self._installed[url]['files'] = files
+
+ def set_md5sum(self, url, md5sum):
+ if url not in self._installed:
+ self._installed[url] = {}
+ self._installed[url]['md5sum'] = md5sum
class Installer(object):
def __init__(self, install_filename, installed_filename, dryrun):
@@ -203,17 +214,17 @@ class Installer(object):
self._installed_filename = installed_filename
self._installed_changed = False
self._dryrun = dryrun
- self._binaries = {}
+ self._installables = {}
self._licenses = {}
self._installed = {}
self.load()
def load(self):
if os.path.exists(self._install_filename):
- install = llsd.parse(file(self._install_filename).read())
+ install = llsd.parse(file(self._install_filename, 'rb').read())
try:
for name in install['binaries']:
- self._binaries[name] = BinaryDefinition(
+ self._installables[name] = BinaryDefinition(
install['binaries'][name])
except KeyError:
pass
@@ -223,7 +234,7 @@ class Installer(object):
except KeyError:
pass
if os.path.exists(self._installed_filename):
- installed = llsd.parse(file(self._installed_filename).read())
+ installed = llsd.parse(file(self._installed_filename, 'rb').read())
try:
bins = installed['binaries']
for name in bins:
@@ -234,7 +245,7 @@ class Installer(object):
def _write(self, filename, state):
print "Writing state to",filename
if not self._dryrun:
- file(filename, 'w').write(llsd.format_xml(state))
+ file(filename, 'wb').write(llsd.format_pretty_xml(state))
def save(self):
if self._install_changed:
@@ -242,10 +253,10 @@ class Installer(object):
state['licenses'] = {}
for name in self._licenses:
state['licenses'][name] = self._licenses[name]._definition
- #print "self._binaries:",self._binaries
+ #print "self._installables:",self._installables
state['binaries'] = {}
- for name in self._binaries:
- state['binaries'][name] = self._binaries[name]._definition
+ for name in self._installables:
+ state['binaries'][name] = self._installables[name]._definition
self._write(self._install_filename, state)
if self._installed_changed:
state = {}
@@ -256,92 +267,146 @@ class Installer(object):
bin[name] = self._installed[name]._installed
self._write(self._installed_filename, state)
- def is_license_info_valid(self):
- valid = True
- for bin in self._binaries:
- binary = self._binaries[bin]._definition
- if not binary.has_key('license'):
- valid = False
- print >>sys.stderr, "No license info for binary", bin + '.'
- continue
- if binary['license'] not in self._licenses:
- valid = False
- lic = binary['license']
- print >>sys.stderr, "Missing license info for '" + lic + "'",
- print >>sys.stderr, 'in binary', bin + '.'
- return valid
+ def is_valid_license(self, bin):
+ "@brief retrun true if we have valid license info for binary."
+ binary = self._installables[bin]._definition
+ if 'license' not in binary:
+ print >>sys.stderr, "No license info found for", bin
+ print >>sys.stderr, 'Please add the license with the',
+ print >>sys.stderr, '--add-installable option. See', sys.argv[0], '--help'
+ return False
+ if binary['license'] not in self._licenses:
+ lic = binary['license']
+ print >>sys.stderr, "Missing license info for '" + lic + "'.",
+ print >>sys.stderr, 'Please add the license with the',
+ print >>sys.stderr, '--add-license option. See', sys.argv[0],
+ print >>sys.stderr, '--help'
+ return False
+ return True
+
+ def list_installables(self):
+ "Return a list of all known binaries."
+ return self._installables.keys()
def detail_binary(self, name):
"Return a binary definition detail"
- try:
- detail = self._binaries[name]._definition
- return detail
- except KeyError:
- return None
+ return self._installables[name]._definition
+
+ def list_licenses(self):
+ "Return a list of all known licenses."
+ return self._licenses.keys()
- def _update_field(self, binary, field):
+ def detail_license(self, name):
+ "Return a license definition detail"
+ return self._licenses[name]._definition
+
+ def list_installed(self):
+ "Return a list of installed packages."
+ return self._installed.keys()
+
+ def _update_field(self, binary, field, value):
"""Given a block and a field name, add or update it.
@param binary[in,out] a dict containing all the details about a binary.
@param field the name of the field to update.
+ @param value the value of the field to update; if omitted, interview
+ will ask for value.
"""
- if binary.has_key(field):
- print "Update value for '" + field + "'"
- print "(Leave blank to keep current value)"
- print "Current Value: '" + binary[field] + "'"
- else:
- print "Specify value for '" + field + "'"
- value = raw_input("Enter New Value: ")
- if binary.has_key(field) and not value:
- pass
- elif value:
+ if value:
binary[field] = value
+ else:
+ if field in binary:
+ print "Update value for '" + field + "'"
+ print "(Leave blank to keep current value)"
+ print "Current Value: '" + binary[field] + "'"
+ else:
+ print "Specify value for '" + field + "'"
+ new_value = raw_input("Enter New Value: ")
+ if field in binary and not new_value:
+ pass
+ elif new_value:
+ binary[field] = new_value
- def _add_package(self, binary):
- """Add an url for a platform path to the binary.
- @param binary[in,out] a dict containing all the details about a binary."""
- print """\
-Please enter a new package location and url. Some examples:
-common -- specify a package for all platforms
-linux -- specify a package for all arch and compilers on linux
-darwin/universal -- specify a mac os x universal
-win32/i686/vs/2003 -- specify a windows visual studio 2003 package"""
- target = raw_input("Package path: ")
- url = raw_input("Package URL: ")
- md5sum = raw_input("Package md5: ")
- path = target.split('/')
- if not binary.has_key('packages'):
+ self._install_changed = True
+ return True
+
+ def _update_installable(self, name, platform, url, md5sum):
+ """Update installable entry with specific package information.
+ @param binary[in,out] a dict containing all the details about a binary.
+ @param platform Platform info, i.e. linux/i686, windows/i686 etc.
+ @param url URL of tar file
+ @param md5sum md5sum of tar file
+ """
+ binary = self._installables[name]._definition
+ path = platform.split('/')
+ if 'packages' not in binary:
binary['packages'] = {}
update = binary['packages']
for child in path:
- if not update.has_key(child):
+ if child not in update:
update[child] = {}
parent = update
update = update[child]
parent[child]['url'] = llsd.uri(url)
parent[child]['md5sum'] = md5sum
- def adopt_binary(self, name):
- "Interactively pull a new binary into the install"
- if not self._binaries.has_key(name):
- print "Adding binary '" + name + "'."
- self._binaries[name] = BinaryDefinition({})
+ self._install_changed = True
+ return True
+
+
+ def add_installable_package(self, name, **kwargs):
+ """Add an url for a platform path to the binary.
+ @param binary[in,out] a dict containing all the details about a binary.
+ """
+ platform_help_str = """\
+Please enter a new package location and url. Some examples:
+common -- specify a package for all platforms
+linux -- specify a package for all arch and compilers on linux
+darwin/universal -- specify a mac os x universal
+windows/i686/vs/2003 -- specify a windows visual studio 2003 package"""
+ if name not in self._installables:
+ print "Error: must add library with --add-installable or " \
+ +"--add-installable-metadata before using " \
+ +"--add-installable-package option"
+ return False
else:
print "Updating binary '" + name + "'."
- binary = self._binaries[name]._definition
+ for arg in ('platform', 'url', 'md5sum'):
+ if not kwargs[arg]:
+ if arg == 'platform': print platform_help_str
+ kwargs[arg] = raw_input("Package "+arg+":")
+ path = kwargs['platform'].split('/')
+
+ return self._update_installable(name, kwargs['platform'],
+ kwargs['url'], kwargs['md5sum'])
+
+ def add_installable_metadata(self, name, **kwargs):
+ """Interactively add (only) library metadata into install,
+ w/o adding binary"""
+ if name not in self._installables:
+ print "Adding installable '" + name + "'."
+ self._installables[name] = BinaryDefinition({})
+ else:
+ print "Updating installable '" + name + "'."
+ binary = self._installables[name]._definition
for field in ('copyright', 'license', 'description'):
- self._update_field(binary, field)
- self._add_package(binary)
- print "Adopted binary '" + name + "':"
- pprint.pprint(self._binaries[name])
- self._install_changed = True
+ self._update_field(binary, field, kwargs[field])
+ print "Added installable '" + name + "':"
+ pprint.pprint(self._installables[name])
+
return True
- def orphan_binary(self, name):
- self._binaries.pop(name)
+ def add_installable(self, name, **kwargs):
+ "Interactively pull a new binary into the install"
+ ret_a = self.add_installable_metadata(name, **kwargs)
+ ret_b = self.add_installable_package(name, **kwargs)
+ return (ret_a and ret_b)
+
+ def remove_installable(self, name):
+ self._installables.pop(name)
self._install_changed = True
def add_license(self, name, text, url):
- if self._licenses.has_key(name):
+ if name in self._licenses:
print "License '" + name + "' being overwritten."
definition = {}
if url:
@@ -358,47 +423,77 @@ win32/i686/vs/2003 -- specify a windows visual studio 2003 package"""
self._licenses.pop(name)
self._install_changed = True
- def _determine_install_set(self, ifiles):
- """@brief determine what to install
-@param ifiles A list of InstallFile instances which are necessary for this install
-@return Returns the tuple (ifiles to install, ifiles to remove)"""
- installed_list = []
- for package in self._installed:
- installed_list.extend(self._installed[package].urls())
- installed_set = set(installed_list)
- #print "installed_set:",installed_set
- install_list = [ifile.url for ifile in ifiles]
- install_set = set(install_list)
- #print "install_set:",install_set
- remove_set = installed_set.difference(install_set)
- to_remove = [ifile for ifile in ifiles if ifile.url in remove_set]
- #print "to_remove:",to_remove
- install_set = install_set.difference(installed_set)
- to_install = [ifile for ifile in ifiles if ifile.url in install_set]
- #print "to_install:",to_install
- return to_install, to_remove
-
- def _build_ifiles(self, platform, cache_dir):
- """@brief determine what files to install and remove
-@param platform The target platform. Eg, win32 or linux/i686/gcc/3.3
-@param cache_dir The directory to cache downloads.
-@return Returns the tuple (ifiles to install, ifiles to remove)"""
- ifiles = []
- for bin in self._binaries:
- ifiles.extend(self._binaries[bin].ifiles(bin, platform, cache_dir))
- return self._determine_install_set(ifiles)
-
- def _remove(self, to_remove):
+ def _uninstall(self, binaries):
+ """@brief Do the actual removal of files work.
+ *NOTE: This method is not transactionally safe -- ie, if it
+ raises an exception, internal state may be inconsistent. How
+ should we address this?
+ @param binaries The package names to remove
+ """
remove_file_list = []
- for ifile in to_remove:
- remove_file_list.extend(
- self._installed[ifile.pkgname].files_in(ifile.url))
- self._installed[ifile.pkgname].remove(ifile.url)
- self._installed_changed = True
+ for pkgname in binaries:
+ for url in self._installed[pkgname].urls():
+ remove_file_list.extend(
+ self._installed[pkgname].files_in(url))
+ self._installed[pkgname].remove(url)
+ if not self._dryrun:
+ self._installed_changed = True
+ if not self._dryrun:
+ self._installed.pop(pkgname)
+ remove_dir_set = set()
for filename in remove_file_list:
print "rm",filename
if not self._dryrun:
- os.remove(filename)
+ if os.path.exists(filename):
+ remove_dir_set.add(os.path.dirname(filename))
+ os.remove(filename)
+ for dirname in remove_dir_set:
+ try:
+ os.removedirs(dirname)
+ except OSError:
+ # This is just for cleanup, so we don't care about
+ # normal failures.
+ pass
+
+ def uninstall(self, binaries, install_dir):
+ """@brief Remove the packages specified.
+ @param binaries The package names to remove
+ @param install_dir The directory to work from
+ """
+ print "uninstall",binaries,"from",install_dir
+ cwd = os.getcwdu()
+ os.chdir(install_dir)
+ try:
+ self._uninstall(binaries)
+ finally:
+ os.chdir(cwd)
+
+ def _build_ifiles(self, platform, cache_dir):
+ """@brief determine what files to install
+ @param platform The target platform. Eg, windows or linux/i686/gcc/3.3
+ @param cache_dir The directory to cache downloads.
+ @return Returns the ifiles to install
+ """
+ ifiles = []
+ for bin in self._installables:
+ ifiles.extend(self._installables[bin].ifiles(bin, platform, cache_dir))
+ to_install = []
+ #print "self._installed",self._installed
+ for ifile in ifiles:
+ if ifile.pkgname not in self._installed:
+ to_install.append(ifile)
+ elif ifile.url not in self._installed[ifile.pkgname].urls():
+ to_install.append(ifile)
+ elif ifile.md5sum != self._installed[ifile.pkgname].get_md5sum(ifile.url):
+ # *TODO: We may want to uninstall the old version too
+ # when we detect it is installed, but the md5 sum is
+ # different.
+ to_install.append(ifile)
+ else:
+ #print "Installation up to date:",ifile.pkgname,ifile.platform_path
+ pass
+ #print "to_install",to_install
+ return to_install
def _install(self, to_install, install_dir):
for ifile in to_install:
@@ -411,30 +506,40 @@ win32/i686/vs/2003 -- specify a windows visual studio 2003 package"""
tar.extractall(path=install_dir)
except AttributeError:
_extractall(tar, path=install_dir)
- if self._installed.has_key(ifile.pkgname):
- self._installed[ifile.pkgname].add_files(ifile.url, tar.getnames())
+ if ifile.pkgname in self._installed:
+ self._installed[ifile.pkgname].add_files(
+ ifile.url,
+ tar.getnames())
+ self._installed[ifile.pkgname].set_md5sum(
+ ifile.url,
+ ifile.md5sum)
else:
# *HACK: this understands the installed package syntax.
- definition = { ifile.url : tar.getnames() }
+ definition = { ifile.url :
+ {'files': tar.getnames(),
+ 'md5sum' : ifile.md5sum } }
self._installed[ifile.pkgname] = InstalledPackage(definition)
self._installed_changed = True
- def do_install(self, platform, install_dir, cache_dir):
+ def install(self, binaries, platform, install_dir, cache_dir):
"""@brief Do the installation for for the platform.
-@param platform The target platform. Eg, win32 or linux/i686/gcc/3.3
-@param install_dir The root directory to install into. Created if missing.
-@param cache_dir The directory to cache downloads. Created if missing."""
- if not self._binaries:
- raise RuntimeError("No binaries to install. Please add them.")
+ @param binaries The requested binaries to install.
+ @param platform The target platform. Eg, windows or linux/i686/gcc/3.3
+ @param install_dir The root directory to install into. Created
+ if missing.
+ @param cache_dir The directory to cache downloads. Created if
+ missing.
+ """
+ # The ordering of steps in the method is to help reduce the
+ # likelihood that we break something.
_mkdir(install_dir)
_mkdir(cache_dir)
- to_install, to_remove = self._build_ifiles(platform, cache_dir)
+ to_install = self._build_ifiles(platform, cache_dir)
- # we do this in multiple steps reduce the likelyhood to have a
- # bad install.
+ # Filter for files which we actually requested to install.
+ to_install = [ifl for ifl in to_install if ifl.pkgname in binaries]
for ifile in to_install:
ifile.fetch_local()
- self._remove(to_remove)
self._install(to_install, install_dir)
@@ -485,43 +590,69 @@ def _extractall(tar, path=".", members=None):
def _mkdir(directory):
"Safe, repeatable way to make a directory."
- try:
+ if not os.path.exists(directory):
os.makedirs(directory)
- except OSError, e:
- if e[0] != errno.EEXIST:
- raise
def _get_platform():
"Return appropriate platform packages for the environment."
platform_map = {
'darwin': 'darwin',
'linux2': 'linux',
- 'win32' : 'win32',
- 'cygwin' : 'win32',
+ 'win32' : 'windows',
+ 'cygwin' : 'windows',
'solaris' : 'solaris'
}
return platform_map[sys.platform]
-def main():
+def _getuser():
+ "Get the user"
+ try:
+ # Unix-only.
+ import getpass
+ return getpass.getuser()
+ except ImportError:
+ import win32api
+ return win32api.GetUserName()
+
+def _default_binary_cache():
+ """In general, the binary files do not change much, so find a host/user
+ specific location to cache files."""
+ user = _getuser()
+ cache_dir = "/var/tmp/%s/install.cache" % user
+ if _get_platform() == 'windows':
+ import tempfile
+ cache_dir = os.path.join(tempfile.gettempdir(), \
+ 'install.cache.%s' % user)
+ return cache_dir
+
+
+def parse_args():
parser = optparse.OptionParser(
- usage="usage: %prog [options]",
+ usage="usage: %prog [options] [binary1 [binary2 [binary3...]]]",
formatter = helpformatter.Formatter(),
description="""This script fetches and installs binary packages.
+It also handles uninstalling those packages and manages the mapping between
+packages and their license.
The process is to open and read an install manifest file which specifies
-what files should be installed. For each file in the manifest:
+what files should be installed. For each binary to be installed.
* make sure it has a license
* check the installed version
** if not installed and needs to be, download and install
** if installed version differs, download & install
+If no binaries are specified on the command line, then the defaut
+behavior is to install all known binaries appropriate for the platform
+specified or uninstall all binaries if --uninstall is set. You can specify
+more than one binary on the command line.
+
When specifying a platform, you can specify 'all' to install all
packages, or any platform of the form:
OS[/arch[/compiler[/compiler_version]]]
Where the supported values for each are:
-OS: darwin, linux, win32, solaris
+OS: darwin, linux, windows, solaris
arch: i686, x86_64, ppc, universal
compiler: vs, gcc
compiler_version: 2003, 2005, 2008, 3.3, 3.4, 4.0, etc.
@@ -529,8 +660,8 @@ compiler_version: 2003, 2005, 2008, 3.3, 3.4, 4.0, etc.
No checks are made to ensure a valid combination of platform
parts. Some exmples of valid platforms:
-win32
-win32/i686/vs/2005
+windows
+windows/i686/vs/2005
linux/x86_64/gcc/3.3
linux/x86_64/gcc/4.0
darwin/universal/gcc/4.0
@@ -554,18 +685,24 @@ darwin/universal/gcc/4.0
dest='installed_filename',
help='The file used to record what is installed.')
parser.add_option(
+ '--export-manifest',
+ action='store_true',
+ default=False,
+ dest='export_manifest',
+ help="Print the install manifest to stdout and exit.")
+ parser.add_option(
'-p', '--platform',
type='string',
default=_get_platform(),
dest='platform',
help="""Override the automatically determined platform. \
-You can specify 'all' to do a complete installation of all binaries.""")
+You can specify 'all' to do a installation of binaries for all platforms.""")
parser.add_option(
'--cache-dir',
type='string',
- default=join(base_dir, '.install.cache'),
+ default=_default_binary_cache(),
dest='cache_dir',
- help='Where to download files.')
+ help='Where to download files. Default: %s'%(_default_binary_cache()))
parser.add_option(
'--install-dir',
type='string',
@@ -573,12 +710,30 @@ You can specify 'all' to do a complete installation of all binaries.""")
dest='install_dir',
help='Where to unpack the installed files.')
parser.add_option(
+ '--list-installed',
+ action='store_true',
+ default=False,
+ dest='list_installed',
+ help="List the installed package names and exit.")
+ parser.add_option(
'--skip-license-check',
action='store_false',
default=True,
dest='check_license',
help="Do not perform the license check.")
parser.add_option(
+ '--list-licenses',
+ action='store_true',
+ default=False,
+ dest='list_licenses',
+ help="List known licenses and exit.")
+ parser.add_option(
+ '--detail-license',
+ type='string',
+ default=None,
+ dest='detail_license',
+ help="Get detailed information on specified license and exit.")
+ parser.add_option(
'--add-license',
type='string',
default=None,
@@ -588,12 +743,6 @@ license. Specify --license-url if the license is remote or specify \
--license-text, otherwse the license text will be read from standard \
input.""")
parser.add_option(
- '--remove-license',
- type='string',
- default=None,
- dest='remove_license',
- help="Remove a named license.")
- parser.add_option(
'--license-url',
type='string',
default=None,
@@ -608,33 +757,104 @@ Ignored if --add-license is not specified.""")
help="""Put the text into an added license. \
Ignored if --add-license is not specified.""")
parser.add_option(
- '--orphan',
+ '--remove-license',
type='string',
default=None,
- dest='orphan',
+ dest='remove_license',
+ help="Remove a named license.")
+ parser.add_option(
+ '--remove-installable',
+ type='string',
+ default=None,
+ dest='remove_installable',
help="Remove a binary from the install file.")
parser.add_option(
- '--adopt',
+ '--add-installable',
type='string',
default=None,
- dest='adopt',
+ dest='add_installable',
help="""Add a binary into the install file. Argument is the name of \
the binary to add.""")
parser.add_option(
+ '--add-installable-metadata',
+ type='string',
+ default=None,
+ dest='add_installable_metadata',
+ help="""Add package for library into the install file. Argument is \
+the name of the library to add.""")
+ parser.add_option(
+ '--installable-copyright',
+ type='string',
+ default=None,
+ dest='installable_copyright',
+ help="""Copyright for specified new package. Ignored if \
+--add-installable is not specified.""")
+ parser.add_option(
+ '--installable-license',
+ type='string',
+ default=None,
+ dest='installable_license',
+ help="""Name of license for specified new package. Ignored if \
+--add-installable is not specified.""")
+ parser.add_option(
+ '--installable-description',
+ type='string',
+ default=None,
+ dest='installable_description',
+ help="""Description for specified new package. Ignored if \
+--add-installable is not specified.""")
+ parser.add_option(
+ '--add-installable-package',
+ type='string',
+ default=None,
+ dest='add_installable_package',
+ help="""Add package for library into the install file. Argument is \
+the name of the library to add.""")
+ parser.add_option(
+ '--package-platform',
+ type='string',
+ default=None,
+ dest='package_platform',
+ help="""Platform for specified new package. \
+Ignored if --add-installable or --add-installable-package is not specified.""")
+ parser.add_option(
+ '--package-url',
+ type='string',
+ default=None,
+ dest='package_url',
+ help="""URL for specified package. \
+Ignored if --add-installable or --add-installable-package is not specified.""")
+ parser.add_option(
+ '--package-md5',
+ type='string',
+ default=None,
+ dest='package_md5',
+ help="""md5sum for new package. \
+Ignored if --add-installable or --add-installable-package is not specified.""")
+ parser.add_option(
'--list',
action='store_true',
default=False,
- dest='list_binaries',
- help="List the binaries in the install manifest")
+ dest='list_installables',
+ help="List the binaries in the install manifest and exit.")
parser.add_option(
- '--details',
+ '--detail',
type='string',
default=None,
dest='detail_binary',
- help="Get detailed information on specified binary.")
- options, args = parser.parse_args()
-
+ help="Get detailed information on specified binary and exit.")
+ parser.add_option(
+ '--uninstall',
+ action='store_true',
+ default=False,
+ dest='uninstall',
+ help="""Remove the binaries specified in the arguments. Just like \
+during installation, if no binaries are listed then all installed binaries \
+are removed.""")
+ return parser.parse_args()
+def main():
+ options, args = parse_args()
installer = Installer(
options.install_filename,
options.installed_filename,
@@ -643,18 +863,40 @@ the binary to add.""")
#
# Handle the queries for information
#
- if options.list_binaries:
- print "binary list:",installer._binaries.keys()
+ if options.list_installed:
+ print "installed list:", installer.list_installed()
+ return 0
+ if options.list_installables:
+ print "binary list:", installer.list_installables()
return 0
if options.detail_binary:
- detail = installer.detail_binary(options.detail_binary)
- if detail:
+ try:
+ detail = installer.detail_binary(options.detail_binary)
print "Detail on binary",options.detail_binary+":"
pprint.pprint(detail)
- else:
+ except KeyError:
print "Bianry '"+options.detail_binary+"' not found in",
print "install file."
return 0
+ if options.list_licenses:
+ print "license list:", installer.list_licenses()
+ return 0
+ if options.detail_license:
+ try:
+ detail = installer.detail_license(options.detail_license)
+ print "Detail on license",options.detail_license+":"
+ pprint.pprint(detail)
+ except KeyError:
+ print "License '"+options.detail_binary+"' not defined in",
+ print "install file."
+ return 0
+ if options.export_manifest:
+ # *HACK: just re-parse the install manifest and pretty print
+ # it. easier than looking at the datastructure designed for
+ # actually determining what to install
+ install = llsd.parse(file(options.install_filename, 'rb').read())
+ pprint.pprint(install)
+ return 0
#
# Handle updates -- can only do one of these
@@ -668,26 +910,70 @@ the binary to add.""")
return 1
elif options.remove_license:
installer.remove_license(options.remove_license)
- elif options.orphan:
- installer.orphan_binary(options.orphan)
- elif options.adopt:
- if not installer.adopt_binary(options.adopt):
+ elif options.remove_installable:
+ installer.remove_installable(options.remove_installable)
+ elif options.add_installable:
+ if not installer.add_installable(
+ options.add_installable,
+ copyright=options.installable_copyright,
+ license=options.installable_license,
+ description=options.installable_description,
+ platform=options.package_platform,
+ url=options.package_url,
+ md5sum=options.package_md5):
return 1
+ elif options.add_installable_metadata:
+ if not installer.add_installable_metadata(
+ options.add_installable_metadata,
+ copyright=options.installable_copyright,
+ license=options.installable_license,
+ description=options.installable_description):
+ return 1
+ elif options.add_installable_package:
+ if not installer.add_installable_package(
+ options.add_installable_package,
+ platform=options.package_platform,
+ url=options.package_url,
+ md5sum=options.package_md5):
+ return 1
+ elif options.uninstall:
+ # Do not bother to check license if we're uninstalling.
+ all_installed = installer.list_installed()
+ if not len(args):
+ uninstall_installables = all_installed
+ else:
+ # passed in on the command line. We'll need to verify we
+ # know about them here.
+ uninstall_installables = args
+ for binary in uninstall_installables:
+ if binary not in all_installed:
+ raise RuntimeError('Binary not installed: %s' % (binary,))
+ installer.uninstall(uninstall_installables, options.install_dir)
else:
+ # Determine what binaries should be installed. If they were
+ # passed in on the command line, use them, otherwise install
+ # all known binaries.
+ all_installables = installer.list_installables()
+ if not len(args):
+ install_installables = all_installables
+ else:
+ # passed in on the command line. We'll need to verify we
+ # know about them here.
+ install_installables = args
+ for binary in install_installables:
+ if binary not in all_installables:
+ raise RuntimeError('Unknown binary: %s' % (binary,))
if options.check_license:
- if not installer.is_license_info_valid():
- print >>sys.stderr, 'Please add or correct the license',
- print >>sys.stderr, 'information in',
- print >>sys.stderr, options.install_filename + '.'
- print >>sys.stderr, "You can also use the --add-license",
- print >>sys.stderr, "option. See", sys.argv[0], "--help"
- return 1
-
- # *TODO: check against a list of 'known good' licenses.
- # *TODO: check for urls which conflict -- will lead to
- # problems.
-
- installer.do_install(
+ # *TODO: check against a list of 'known good' licenses.
+ # *TODO: check for urls which conflict -- will lead to
+ # problems.
+ for binary in install_installables:
+ if not installer.is_valid_license(binary):
+ return 1
+
+ # Do the work of installing the requested binaries.
+ installer.install(
+ install_installables,
options.platform,
options.install_dir,
options.cache_dir)
@@ -697,4 +983,5 @@ the binary to add.""")
return 0
if __name__ == '__main__':
+ #print sys.argv
sys.exit(main())