diff --git a/build/jam/OptionalBuildFeatures b/build/jam/OptionalBuildFeatures index 2e6a0bdeea..6028a25479 100644 --- a/build/jam/OptionalBuildFeatures +++ b/build/jam/OptionalBuildFeatures @@ -66,8 +66,8 @@ if $(HAIKU_BUILD_FEATURE_SSL) { # ICU # Note ICU isn't actually optional, but is still an external package -HAIKU_ICU_GCC_2_PACKAGE = icu-4.8.1-x86-gcc2-2011-11-02a.zip ; -HAIKU_ICU_GCC_4_PACKAGE = icu-4.8.1-x86-gcc4-2011-11-02.zip ; +HAIKU_ICU_GCC_2_PACKAGE = icu-4.8.1.1-r1a4-x86-gcc2-2012-08-29.zip ; +HAIKU_ICU_GCC_4_PACKAGE = icu-4.8.1.1-r1a4-x86-gcc4-2012-08-29.zip ; HAIKU_ICU_PPC_PACKAGE = icu-4.8.1-ppc-2011-08-20.zip ; if $(TARGET_ARCH) = ppc || $(TARGET_ARCH) = x86 { @@ -224,19 +224,19 @@ if $(TARGET_ARCH) = x86 { local ffmpegBaseURL = $(baseURL)/lib ; if $(TARGET_ARCH) = x86 { if $(HAIKU_GCC_VERSION[1]) >= 4 { - HAIKU_FFMPEG_FILE = ffmpeg-0.10.2-x86-gcc4-2012-03-28.zip ; - HAIKU_SPEEX_FILE = speex-1.2rc1-x86-gcc4-2012-03-12.zip ; - HAIKU_LIBTHEORA_FILE = libtheora-1.1.1-x86-gcc4-2012-03-12.zip ; - HAIKU_LIBVORBIS_FILE = libvorbis-1.3.2-x86-gcc4-2012-03-12.zip ; - HAIKU_LIBOGG_FILE = libogg-1.3.0-x86-gcc4-2012-03-12.zip ; - HAIKU_LIBVPX_FILE = libvpx-1.0.0-x86-gcc4-2012-03-14.zip ; + HAIKU_FFMPEG_FILE = ffmpeg-0.10.2-r1a4-x86-gcc4-2012-09-02.zip ; + HAIKU_SPEEX_FILE = speex-1.2rc1-r1a4-x86-gcc4-2012-09-02.zip ; + HAIKU_LIBTHEORA_FILE = libtheora-1.1.1-r1a4-x86-gcc4-2012-09-02.zip ; + HAIKU_LIBVORBIS_FILE = libvorbis-1.3.2-r1a4-x86-gcc4-2012-09-02.zip ; + HAIKU_LIBOGG_FILE = libogg-1.3.0-r1a4-x86-gcc4-2012-09-02.zip ; + HAIKU_LIBVPX_FILE = libvpx-1.0.0-r1a4-x86-gcc4-2012-09-02.zip ; } else { - HAIKU_FFMPEG_FILE = ffmpeg-0.10.2-x86-gcc2-2012-03-28.zip ; - HAIKU_SPEEX_FILE = speex-1.2rc1-x86-gcc2-2012-03-11.zip ; - HAIKU_LIBTHEORA_FILE = libtheora-1.1.1-x86-gcc2-2012-03-11.zip ; - HAIKU_LIBVORBIS_FILE = libvorbis-1.3.2-x86-gcc2-2012-03-11.zip ; - HAIKU_LIBOGG_FILE = libogg-1.3.0-x86-gcc2-2012-03-11.zip ; - HAIKU_LIBVPX_FILE = libvpx-1.0.0-x86-gcc2-2012-03-14.zip ; + HAIKU_FFMPEG_FILE = ffmpeg-0.10.2-r1a4-x86-gcc2-2012-08-30.zip ; + HAIKU_SPEEX_FILE = speex-1.2rc1-r1a4-x86-gcc2-2012-08-29.zip ; + HAIKU_LIBTHEORA_FILE = libtheora-1.1.1-r1a4-x86-gcc2-2012-08-29.zip ; + HAIKU_LIBVORBIS_FILE = libvorbis-1.3.2-r1a4-x86-gcc2-2012-08-29.zip ; + HAIKU_LIBOGG_FILE = libogg-1.3.0-r1a4-x86-gcc2-2012-08-29.zip ; + HAIKU_LIBVPX_FILE = libvpx-1.0.0-r1a4-x86-gcc2-2012-08-29.zip ; } local ffmpegZipFile = [ DownloadFile $(HAIKU_FFMPEG_FILE) @@ -346,9 +346,9 @@ if $(TARGET_ARCH) = x86 { local mikmodBaseURL = http://haiku-files.org/files/optional-packages/lib ; if $(TARGET_ARCH) = x86 { if $(HAIKU_GCC_VERSION[1]) >= 4 { - HAIKU_MIKMOD_FILE = libmikmod-3.1.11-r1a3-x86-gcc4-2011-05-26.zip ; + HAIKU_MIKMOD_FILE = libmikmod-3.1.11-r1a4-x86-gcc4-2012-09-02.zip ; } else { - HAIKU_MIKMOD_FILE = libmikmod-3.1.11-r1a3-x86-gcc2-2011-05-19.zip ; + HAIKU_MIKMOD_FILE = libmikmod-3.1.11-r1a4-x86-gcc2-2012-08-29.zip ; } local mikmodZipFile = [ DownloadFile $(HAIKU_MIKMOD_FILE) @@ -380,7 +380,7 @@ if $(TARGET_ARCH) = ppc || $(TARGET_ARCH) = x86 { if $(TARGET_ARCH) = ppc { HAIKU_FREETYPE_FILE = freetype-2.4.9-ppc-gcc4-2012-06-26.zip ; } else if $(HAIKU_GCC_VERSION[1]) >= 4 { - HAIKU_FREETYPE_FILE = freetype-2.4.9-x86-gcc4-2012-06-15.zip ; + HAIKU_FREETYPE_FILE = freetype-2.4.9-r1a4-x86-gcc4-2012-09-02.zip ; } else { HAIKU_FREETYPE_FILE = freetype-2.4.9-r1a4-x86-gcc2-2012-08-28.zip ; } @@ -425,7 +425,7 @@ if [ IsOptionalHaikuImagePackageAdded TagLib ] { HAIKU_BUILD_FEATURE_TAGLIB = 1 ; } -HAIKU_TAGLIB_PACKAGE = taglib-1.6.3-r1a3-x86-gcc2-2011-05-20.zip ; +HAIKU_TAGLIB_PACKAGE = taglib-1.6.3-r1a4-x86-gcc2-2012-09-03.zip ; HAIKU_TAGLIB_URL = $(baseURL)/$(HAIKU_TAGLIB_PACKAGE) ; if $(HAIKU_BUILD_FEATURE_TAGLIB) { diff --git a/build/jam/OptionalLibPackages b/build/jam/OptionalLibPackages index d1902eae4f..b02eadab6a 100644 --- a/build/jam/OptionalLibPackages +++ b/build/jam/OptionalLibPackages @@ -83,13 +83,13 @@ if [ IsOptionalHaikuImagePackageAdded fribidi ] { Echo "No optional package fribidi available for $(TARGET_ARCH)" ; } else if $(HAIKU_GCC_VERSION[1]) >= 4 { InstallOptionalHaikuImagePackage - fribidi-0.19.2-r1a3-x86-gcc4-2011-05-26.zip - : $(baseURL)/lib/fribidi-0.19.2-r1a3-x86-gcc4-2011-05-26.zip + fribidi-0.19.2-r1a4-x86-gcc4-2012-09-01.zip + : $(baseURL)/lib/fribidi-0.19.2-r1a4-x86-gcc4-2012-09-01.zip : : true ; } else { InstallOptionalHaikuImagePackage - fribidi-0.19.2-r1a3-x86-gcc2-2011-05-19.zip - : $(baseURL)/lib/fribidi-0.19.2-r1a3-x86-gcc2-2011-05-19.zip + fribidi-0.19.2-r1a4-x86-gcc2-2012-08-29.zip + : $(baseURL)/lib/fribidi-0.19.2-r1a4-x86-gcc2-2012-08-29.zip : : true ; } } @@ -101,13 +101,13 @@ if [ IsOptionalHaikuImagePackageAdded lcms ] { Echo "No optional package lcms available for $(TARGET_ARCH)" ; } else if $(HAIKU_GCC_VERSION[1]) >= 4 { InstallOptionalHaikuImagePackage - lcms-2.1-r1a3-x86-gcc4-2011-05-26.zip - : $(baseURL)/lib/lcms-2.1-r1a3-x86-gcc4-2011-05-26.zip + lcms-2.1-r1a4-x86-gcc4-2012-09-02.zip + : $(baseURL)/lib/lcms-2.1-r1a4-x86-gcc4-2012-09-02.zip : : true ; } else { InstallOptionalHaikuImagePackage - lcms-2.1-r1a3-x86-gcc2-2011-05-19.zip - : $(baseURL)/lib/lcms-2.1-r1a3-x86-gcc2-2011-05-19.zip + lcms-2.1-r1a4-x86-gcc2-2012-08-29.zip + : $(baseURL)/lib/lcms-2.1-r1a4-x86-gcc2-2012-08-29.zip : : true ; } } @@ -119,13 +119,13 @@ if [ IsOptionalHaikuImagePackageAdded libart_lgpl ] { Echo "No optional package libart_lgpl available for $(TARGET_ARCH)" ; } else if $(HAIKU_GCC_VERSION[1]) >= 4 { InstallOptionalHaikuImagePackage - libart_lgpl-2.3.21-r1a3-x86-gcc4-2011-05-26.zip - : $(baseURL)/lib/libart_lgpl-2.3.21-r1a3-x86-gcc4-2011-05-26.zip + libart_lgpl-2.3.21-r1a4-x86-gcc4-2012-09-02.zip + : $(baseURL)/lib/libart_lgpl-2.3.21-r1a4-x86-gcc4-2012-09-02.zip : : true ; } else { InstallOptionalHaikuImagePackage - libart_lgpl-2.3.21-r1a3-x86-gcc2-2011-05-19.zip - : $(baseURL)/lib/libart_lgpl-2.3.21-r1a3-x86-gcc2-2011-05-19.zip + libart_lgpl-2.3.21-r1a4-x86-gcc2-2012-08-29.zip + : $(baseURL)/lib/libart_lgpl-2.3.21-r1a4-x86-gcc2-2012-08-29.zip : : true ; } } @@ -137,13 +137,13 @@ if [ IsOptionalHaikuImagePackageAdded libmad ] { Echo "No optional package libmad available for $(TARGET_ARCH)" ; } else if $(HAIKU_GCC_VERSION[1]) >= 4 { InstallOptionalHaikuImagePackage - libmad-0.15.1b-r1a3-x86-gcc4-2011-05-26.zip - : $(baseURL)/lib/libmad-0.15.1b-r1a3-x86-gcc4-2011-05-26.zip + libmad-0.15.1b-r1a4-x86-gcc4-2012-09-02.zip + : $(baseURL)/lib/libmad-0.15.1b-r1a4-x86-gcc4-2012-09-02.zip : : true ; } else { InstallOptionalHaikuImagePackage - libmad-0.15.1b-r1a3-x86-gcc2-2011-05-19.zip - : $(baseURL)/lib/libmad-0.15.1b-r1a3-x86-gcc2-2011-05-19.zip + libmad-0.15.1b-r1a4-x86-gcc2-2012-08-29.zip + : $(baseURL)/lib/libmad-0.15.1b-r1a4-x86-gcc2-2012-08-29.zip : : true ; } } @@ -155,13 +155,13 @@ if [ IsOptionalHaikuImagePackageAdded libmikmod ] { Echo "No optional package libmikmod available for $(TARGET_ARCH)" ; } else if $(HAIKU_GCC_VERSION[1]) >= 4 { InstallOptionalHaikuImagePackage - libmikmod-3.1.11-r1a3-x86-gcc4-2011-05-26.zip - : $(baseURL)/lib/libmikmod-3.1.11-r1a3-x86-gcc4-2011-05-26.zip + libmikmod-3.1.11-r1a4-x86-gcc4-2012-09-02.zip + : $(baseURL)/lib/libmikmod-3.1.11-r1a4-x86-gcc4-2012-09-02.zip : : true ; } else { InstallOptionalHaikuImagePackage - libmikmod-3.1.11-r1a3-x86-gcc2-2011-05-19.zip - : $(baseURL)/lib/libmikmod-3.1.11-r1a3-x86-gcc2-2011-05-19.zip + libmikmod-3.1.11-r1a4-x86-gcc2-2012-08-29.zip + : $(baseURL)/lib/libmikmod-3.1.11-r1a4-x86-gcc2-2012-08-29.zip : : true ; } } @@ -173,13 +173,13 @@ if [ IsOptionalHaikuImagePackageAdded libmodplug ] { Echo "No optional package libmodplug available for $(TARGET_ARCH)" ; } else if $(HAIKU_GCC_VERSION[1]) >= 4 { InstallOptionalHaikuImagePackage - libmodplug-0.8.8.1-r1a3-x86-gcc4-2011-05-26.zip - : $(baseURL)/lib/libmodplug-0.8.8.1-r1a3-x86-gcc4-2011-05-26.zip + libmodplug-0.8.8.4-r1a4-x86-gcc4-2012-09-02.zip + : $(baseURL)/lib/libmodplug-0.8.8.4-r1a4-x86-gcc4-2012-09-02.zip : : true ; } else { InstallOptionalHaikuImagePackage - libmodplug-0.8.8.1-r1a3-x86-gcc2-2011-05-19.zip - : $(baseURL)/lib/libmodplug-0.8.8.1-r1a3-x86-gcc2-2011-05-19.zip + libmodplug-0.8.8.4-r1a4-x86-gcc2-2012-08-29.zip + : $(baseURL)/lib/libmodplug-0.8.8.4-r1a4-x86-gcc2-2012-08-29.zip : : true ; } } @@ -191,13 +191,13 @@ if [ IsOptionalHaikuImagePackageAdded libpaper ] { Echo "No optional package libpaper available for $(TARGET_ARCH)" ; } else if $(HAIKU_GCC_VERSION[1]) >= 4 { InstallOptionalHaikuImagePackage - libpaper-1.1.24-r1a3-x86-gcc4-2011-05-26.zip - : $(baseURL)/lib/libpaper-1.1.24-r1a3-x86-gcc4-2011-05-26.zip + libpaper-1.1.24-r1a4-x86-gcc4-2012-09-01.zip + : $(baseURL)/lib/libpaper-1.1.24-r1a4-x86-gcc4-2012-09-01.zip : : true ; } else { InstallOptionalHaikuImagePackage - libpaper-1.1.24-r1a3-x86-gcc2-2011-05-19.zip - : $(baseURL)/lib/libpaper-1.1.24-r1a3-x86-gcc2-2011-05-19.zip + libpaper-1.1.24-r1a4-x86-gcc4-2012-09-01.zip + : $(baseURL)/lib/libpaper-1.1.24-r1a4-x86-gcc4-2012-09-01.zip : : true ; } } @@ -227,78 +227,78 @@ if [ IsOptionalHaikuImagePackageAdded SDLLibs ] { Echo "No optional package SDLLibs available for $(TARGET_ARCH)" ; } else if $(HAIKU_GCC_VERSION[1]) >= 4 { InstallOptionalHaikuImagePackage - libsdl-1.2.15-x86-gcc4-2012-05-31.zip - : $(baseURL)/lib/libsdl-1.2.15-x86-gcc4-2012-05-31.zip ; + libsdl-1.2.15-r1a4-x86-gcc4-2012-09-02.zip + : $(baseURL)/lib/libsdl-1.2.15-r1a4-x86-gcc4-2012-09-02.zip ; InstallOptionalHaikuImagePackage - guilib-1.2.1-x86-gcc4-2012-05-31.zip - : $(baseURL)/lib/guilib-1.2.1-x86-gcc4-2012-05-31.zip ; + guilib-1.2.1-r1a4-x86-gcc4-2012-09-02.zip + : $(baseURL)/lib/guilib-1.2.1-r1a4-x86-gcc4-2012-09-02.zip ; InstallOptionalHaikuImagePackage - sdl-gfx-2.0.23-x86-gcc4-2012-05-31.zip - : $(baseURL)/lib/sdl-gfx-2.0.23-x86-gcc4-2012-05-31.zip ; + sdl-gfx-2.0.23-r1a4-x86-gcc4-2012-09-02.zip + : $(baseURL)/lib/sdl-gfx-2.0.23-r1a4-x86-gcc4-2012-09-02.zip ; InstallOptionalHaikuImagePackage - sdl-image-1.2.12-x86-gcc4-2012-05-31.zip - : $(baseURL)/lib/sdl-image-1.2.12-x86-gcc4-2012-05-31.zip ; + sdl-image-1.2.12-r1a4-x86-gcc4-2012-09-02.zip + : $(baseURL)/lib/sdl-image-1.2.12-r1a4-x86-gcc4-2012-09-02.zip ; InstallOptionalHaikuImagePackage - sdl-mixer-1.2.11-x86-gcc4-2012-05-31.zip - : $(baseURL)/lib/sdl-mixer-1.2.11-x86-gcc4-2012-05-31.zip ; + sdl-mixer-1.2.11-r1a4-x86-gcc4-2012-09-02.zip + : $(baseURL)/lib/sdl-mixer-1.2.11-r1a4-x86-gcc4-2012-09-02.zip ; InstallOptionalHaikuImagePackage - sdl-net-1.2.8-x86-gcc4-2012-05-31.zip - : $(baseURL)/lib/sdl-net-1.2.8-x86-gcc4-2012-05-31.zip ; + sdl-net-1.2.8-r1a4-x86-gcc4-2012-09-02.zip + : $(baseURL)/lib/sdl-net-1.2.8-r1a4-x86-gcc4-2012-09-02.zip ; InstallOptionalHaikuImagePackage - sdl-sound-1.0.3-x86-gcc4-2012-05-31.zip - : $(baseURL)/lib/sdl-sound-1.0.3-x86-gcc4-2012-05-31.zip ; + sdl-sound-1.0.3-r1a4-x86-gcc4-2012-09-02.zip + : $(baseURL)/lib/sdl-sound-1.0.3-r1a4-x86-gcc4-2012-09-02.zip ; InstallOptionalHaikuImagePackage - sdl-rtf-0.1.0-r1a3-x86-gcc4-2011-05-26.zip - : $(baseURL)/lib/sdl-rtf-0.1.0-r1a3-x86-gcc4-2011-05-26.zip ; + sdl-rtf-0.1.0-r1a4-x86-gcc4-2012-09-03.zip + : $(baseURL)/lib/sdl-rtf-0.1.0-r1a4-x86-gcc4-2012-09-03.zip ; InstallOptionalHaikuImagePackage - sdl-ttf-2.0.11-x86-gcc4-2012-05-31.zip - : $(baseURL)/lib/sdl-ttf-2.0.11-x86-gcc4-2012-05-31.zip ; + sdl-ttf-2.0.11-r1a4-x86-gcc4-2012-09-02.zip + : $(baseURL)/lib/sdl-ttf-2.0.11-r1a4-x86-gcc4-2012-09-02.zip ; InstallOptionalHaikuImagePackage - sge-030809-x86-gcc4-2012-05-31.zip - : $(baseURL)/lib/sge-030809-x86-gcc4-2012-05-31.zip ; + sge-030809-r1a4-x86-gcc4-2012-09-02.zip + : $(baseURL)/lib/sge-030809-r1a4-x86-gcc4-2012-09-02.zip ; InstallOptionalHaikuImagePackage - smjpeg-0.2.1-x86-gcc4-2012-05-31.zip - : $(baseURL)/lib/smjpeg-0.2.1-x86-gcc4-2012-05-31.zip ; + smjpeg-0.2.1-r1a4-x86-gcc4-2012-09-02.zip + : $(baseURL)/lib/smjpeg-0.2.1-r1a4-x86-gcc4-2012-09-02.zip ; InstallOptionalHaikuImagePackage - smpeg-0.4.5-x86-gcc4-2011-05-31.zip - : $(baseURL)/lib/smpeg-0.4.5-x86-gcc4-2012-05-31.zip ; + smpeg-0.4.5-r1a4-x86-gcc4-2012-09-02.zip + : $(baseURL)/lib/smpeg-0.4.5-r1a4-x86-gcc4-2012-09-02.zip ; } else { InstallOptionalHaikuImagePackage - libsdl-1.2.15-x86-gcc2-2012-06-24.zip - : $(baseURL)/lib/libsdl-1.2.15-x86-gcc2-2012-06-24.zip ; + libsdl-1.2.15-r1a4-x86-gcc2-2012-08-29.zip + : $(baseURL)/lib/libsdl-1.2.15-r1a4-x86-gcc2-2012-08-29.zip ; InstallOptionalHaikuImagePackage - guilib-1.2.1-x86-gcc2-2012-06-24.zip - : $(baseURL)/lib/guilib-1.2.1-x86-gcc2-2012-06-24.zip ; + guilib-1.2.1-r1a4-x86-gcc2-2012-08-29.zip + : $(baseURL)/lib/guilib-1.2.1-r1a4-x86-gcc2-2012-08-29.zip ; InstallOptionalHaikuImagePackage - sdl-gfx-2.0.23-x86-gcc2-2012-06-24.zip - : $(baseURL)/lib/sdl-gfx-2.0.23-x86-gcc2-2012-06-24.zip ; + sdl-gfx-2.0.23-r1a4-x86-gcc2-2012-08-29.zip + : $(baseURL)/lib/sdl-gfx-2.0.23-r1a4-x86-gcc2-2012-08-29.zip ; InstallOptionalHaikuImagePackage - sdl-image-1.2.12-x86-x86-gcc2-2012-06-24.zip - : $(baseURL)/lib/sdl-image-1.2.12-x86-gcc2-2012-06-24.zip ; + sdl-image-1.2.12-r1a4-x86-gcc2-2012-08-29.zip + : $(baseURL)/lib/sdl-image-1.2.12-r1a4-x86-gcc2-2012-08-29.zip ; InstallOptionalHaikuImagePackage - sdl-mixer-1.2.11-x86-gcc2-2012-06-25.zip - : $(baseURL)/lib/sdl-mixer-1.2.11-x86-gcc2-2012-06-25.zip ; + sdl-mixer-1.2.11-r1a4-x86-gcc2-2012-08-29.zip + : $(baseURL)/lib/sdl-mixer-1.2.11-r1a4-x86-gcc2-2012-08-29.zip ; InstallOptionalHaikuImagePackage - sdl-net-1.2.8-x86-gcc2-2012-06-24.zip - : $(baseURL)/lib/sdl-net-1.2.8-x86-gcc2-2012-06-24.zip ; + sdl-net-1.2.8-r1a4-x86-gcc2-2012-08-29.zip + : $(baseURL)/lib/sdl-net-1.2.8-r1a4-x86-gcc2-2012-08-29.zip ; InstallOptionalHaikuImagePackage - sdl-sound-1.0.3-x86-gcc2-2012-06-24.zip - : $(baseURL)/lib/sdl-sound-1.0.3-x86-gcc2-2012-06-24.zip ; + sdl-sound-1.0-hg-r1a4-x86-gcc2-2012-08-30.zip + : $(baseURL)/lib/sdl-sound-1.0-hg-r1a4-x86-gcc2-2012-08-30.zip ; InstallOptionalHaikuImagePackage sdl-rtf-0.1.0-r1a3-x86-gcc2-2011-05-20.zip : $(baseURL)/lib/sdl-rtf-0.1.0-r1a3-x86-gcc2-2011-05-20.zip ; InstallOptionalHaikuImagePackage - sdl-ttf-2.0.11-x86-gcc2-2012-06-24.zip - : $(baseURL)/lib/sdl-ttf-2.0.11-x86-gcc2-2012-06-24.zip ; + sdl-ttf-2.0.11-r1a4-x86-gcc2-2012-08-29.zip + : $(baseURL)/lib/sdl-ttf-2.0.11-r1a4-x86-gcc2-2012-08-29.zip ; InstallOptionalHaikuImagePackage - sge-030809-x86-gcc2-2012-06-24.zip - : $(baseURL)/lib/sge-030809-x86-gcc2-2012-06-24.zip ; + sge-030809-r1a4-x86-gcc2-2012-08-29.zip + : $(baseURL)/lib/sge-030809-r1a4-x86-gcc2-2012-08-29.zip ; InstallOptionalHaikuImagePackage - smjpeg-0.2.1-x86-gcc2-2012-06-24.zip - : $(baseURL)/lib/smjpeg-0.2.1-x86-gcc2-2012-06-24.zip ; + smjpeg-0.2.1-r1a4-x86-gcc2-2012-08-29.zip + : $(baseURL)/lib/smjpeg-0.2.1-r1a4-x86-gcc2-2012-08-29.zip ; InstallOptionalHaikuImagePackage - smpeg-0.4.5-x86-gcc2-2012-06-24.zip - : $(baseURL)/lib/smpeg-0.4.5-x86-gcc2-2012-06-24.zip ; + smpeg-0.4.5-r1a4-x86-gcc2-2012-08-29.zip + : $(baseURL)/lib/smpeg-0.4.5-r1a4-x86-gcc2-2012-08-29.zip ; } } @@ -309,48 +309,48 @@ if [ IsOptionalHaikuImagePackageAdded XiphLibs ] { Echo "No optional package XiphLibs available for $(TARGET_ARCH)" ; } else if $(HAIKU_GCC_VERSION[1]) >= 4 { InstallOptionalHaikuImagePackage - flac-1.2.1-r1a3-x86-gcc4-2011-05-26.zip - : $(baseURL)/lib/flac-1.2.1-r1a3-x86-gcc4-2011-05-26.zip ; + flac-1.2.1-r1a4-x86-gcc4-2012-09-02.zip + : $(baseURL)/lib/flac-1.2.1-r1a4-x86-gcc4-2012-09-02.zip ; InstallOptionalHaikuImagePackage - libao-1.0.0-r1a3-x86-gcc4-2011-05-26.zip - : $(baseURL)/lib/libao-1.0.0-r1a3-x86-gcc4-2011-05-26.zip ; + libao-1.0.0-r1a4-x86-gcc4-2012-09-02.zip + : $(baseURL)/lib/libao-1.0.0-r1a4-x86-gcc4-2012-09-02.zip ; InstallOptionalHaikuImagePackage - libogg-1.2.2-r1a3-x86-gcc4-2011-05-26.zip - : $(baseURL)/lib/libogg-1.2.2-r1a3-x86-gcc4-2011-05-26.zip ; + libogg-1.3.0-r1a4-x86-gcc4-2012-09-02.zip + : $(baseURL)/lib/libogg-1.3.0-r1a4-x86-gcc4-2012-09-02.zip ; InstallOptionalHaikuImagePackage - libtheora-1.1.1-r1a3-x86-gcc4-2011-05-26.zip - : $(baseURL)/lib/libtheora-1.1.1-r1a3-x86-gcc4-2011-05-26.zip ; + libtheora-1.1.1-r1a4-x86-gcc4-2012-09-02.zip + : $(baseURL)/lib/libtheora-1.1.1-r1a4-x86-gcc4-2012-09-02.zip ; InstallOptionalHaikuImagePackage - libvorbis-1.3.2-r1a3-x86-gcc4-2011-05-26.zip - : $(baseURL)/lib/libvorbis-1.3.2-r1a3-x86-gcc4-2011-05-26.zip ; + libvorbis-1.3.2-r1a4-x86-gcc4-2012-09-02.zip + : $(baseURL)/lib/libvorbis-1.3.2-r1a4-x86-gcc4-2012-09-02.zip ; InstallOptionalHaikuImagePackage - speex-1.2rc1-x86-gcc4-2012-03-12.zip - : $(baseURL)/lib/speex-1.2rc1-x86-gcc4-2012-03-12.zip ; + speex-1.2rc1-r1a4-x86-gcc4-2012-09-02.zip + : $(baseURL)/lib/speex-1.2rc1-r1a4-x86-gcc4-2012-09-02.zip ; InstallOptionalHaikuImagePackage - vorbis-tools-1.4.0-r1a3-x86-gcc4-2011-05-26.zip - : $(baseURL)/lib/vorbis-tools-1.4.0-r1a3-x86-gcc4-2011-05-26.zip ; + vorbis-tools-1.4.0-r1a4-x86-gcc4-2012-09-02.zip + : $(baseURL)/lib/vorbis-tools-1.4.0-r1a4-x86-gcc4-2012-09-02.zip ; } else { InstallOptionalHaikuImagePackage - flac-1.2.1-r1a3-x86-gcc2-2011-05-19.zip - : $(baseURL)/lib/flac-1.2.1-r1a3-x86-gcc2-2011-05-19.zip ; + flac-1.2.1-r1a4-x86-gcc2-2012-08-29.zip + : $(baseURL)/lib/flac-1.2.1-r1a4-x86-gcc2-2012-08-29.zip ; InstallOptionalHaikuImagePackage - libao-1.0.0-r1a3-x86-gcc2-2011-05-19.zip - : $(baseURL)/lib/libao-1.0.0-r1a3-x86-gcc2-2011-05-19.zip ; + libao-1.0.0-r1a4-x86-gcc2-2012-08-29.zip + : $(baseURL)/lib/libao-1.0.0-r1a4-x86-gcc2-2012-08-29.zip ; InstallOptionalHaikuImagePackage - libogg-1.2.2-r1a3-x86-gcc2-2011-05-19.zip - : $(baseURL)/lib/libogg-1.2.2-r1a3-x86-gcc2-2011-05-19.zip ; + libogg-1.3.0-r1a4-x86-gcc2-2012-08-29.zip + : $(baseURL)/lib/libogg-1.3.0-r1a4-x86-gcc2-2012-08-29.zip ; InstallOptionalHaikuImagePackage - libtheora-1.1.1-r1a3-x86-gcc2-2011-05-19.zip - : $(baseURL)/lib/libtheora-1.1.1-r1a3-x86-gcc2-2011-05-19.zip ; + libtheora-1.1.1-r1a4-x86-gcc2-2012-08-29.zip + : $(baseURL)/lib/libtheora-1.1.1-r1a4-x86-gcc2-2012-08-29.zip ; InstallOptionalHaikuImagePackage - libvorbis-1.3.2-r1a3-x86-gcc2-2011-05-19.zip - : $(baseURL)/lib/libvorbis-1.3.2-r1a3-x86-gcc2-2011-05-19.zip ; + libvorbis-1.3.2-r1a4-x86-gcc2-2012-08-29.zip + : $(baseURL)/lib/libvorbis-1.3.2-r1a4-x86-gcc2-2012-08-29.zip ; InstallOptionalHaikuImagePackage - speex-1.2-git-r1a3-x86-gcc2-2011-05-26.zip - : $(baseURL)/lib/speex-1.2-git-r1a3-x86-gcc2-2011-05-26.zip ; + speex-1.2rc1-r1a4-x86-gcc2-2012-08-29.zip + : $(baseURL)/lib/speex-1.2rc1-r1a4-x86-gcc2-2012-08-29.zip ; InstallOptionalHaikuImagePackage - vorbis-tools-1.4.0-r1a3-x86-gcc2-2011-05-19.zip - : $(baseURL)/lib/vorbis-tools-1.4.0-r1a3-x86-gcc2-2011-05-19.zip ; + vorbis-tools-1.4.0-r1a4-x86-gcc2-2012-08-29.zip + : $(baseURL)/lib/vorbis-tools-1.4.0-r1a4-x86-gcc2-2012-08-29.zip ; } } diff --git a/build/jam/OptionalPackages b/build/jam/OptionalPackages index db27c3b918..5af5efae8b 100644 --- a/build/jam/OptionalPackages +++ b/build/jam/OptionalPackages @@ -384,12 +384,12 @@ if [ IsOptionalHaikuImagePackageAdded Caya ] { } else { if $(HAIKU_GCC_VERSION[1]) >= 4 || $(isHybridBuild) { InstallOptionalHaikuImagePackage - caya-264-x86-gcc4-2012-05-20.zip - : $(baseURL)/caya-264-x86-gcc4-2012-05-20.zip + caya-264-r1a4-x86-gcc4-2012-08-31.zip + : $(baseURL)/caya-264-r1a4-x86-gcc4-2012-08-31.zip : : true ; InstallOptionalHaikuImagePackage - caya-gpl-protocols-35-x86-gcc4-2012-05-20.zip - : $(baseURL)/caya-gpl-protocols-35-x86-gcc4-2012-05-20.zip + caya-gpl-protocols-35-r1a4-x86-gcc4-2012-09-03.zip + : $(baseURL)/caya-gpl-protocols-35-r1a4-x86-gcc4-2012-09-03.zip : : true ; AddSymlinkToHaikuImage home config be Applications : /boot/apps/Caya/Caya ; @@ -507,12 +507,12 @@ if [ IsOptionalHaikuImagePackageAdded Colors! ] { } else { if $(HAIKU_GCC_VERSION[1]) >= 4 { InstallOptionalHaikuImagePackage - Colors!-2.0-x86-gcc4-2012-04-30.zip - : $(baseURL)/Colors\!-2.0-x86-gcc4-2012-04-30.zip ; + Colors!-2.1-r1a4-x86-gcc4-2012-08-30.zip + : $(baseURL)/Colors\!-2.1-r1a4-x86-gcc4-2012-08-30.zip ; } else { InstallOptionalHaikuImagePackage - Colors!-2.0-x86-gcc2-2012-04-30.zip - : $(baseURL)/Colors\!-2.0-x86-gcc2-2012-04-30.zip ; + Colors!-2.1-r1a4-x86-gcc2-2012-08-30.zip + : $(baseURL)/Colors\!-2.1-r1a4-x86-gcc2-2012-08-30.zip ; } AddSymlinkToHaikuImage home config settings deskbar Applications : /boot/apps/Colors\!/Colors\! ; @@ -527,13 +527,13 @@ if [ IsOptionalHaikuImagePackageAdded Ctags ] { } else { if $(HAIKU_GCC_VERSION[1]) >= 4 { InstallOptionalHaikuImagePackage - ctags-5.8-x86-gcc4-2012-01-23.zip - : $(baseURL)/ctags-5.8-x86-gcc4-2012-01-23.zip + ctags-5.8-r1a4-x86-gcc4-2012-08-30.zip + : $(baseURL)/ctags-5.8-r1a4-x86-gcc4-2012-08-30.zip : : true ; } else { InstallOptionalHaikuImagePackage - ctags-5.8-x86-gcc2-2010-05-24.zip - : $(baseURL)/ctags-5.8-x86-gcc2-2010-05-24.zip + ctags-5.8-r1a4-x86-gcc2-2012-09-03.zip + : $(baseURL)/ctags-5.8-r1a4-x86-gcc2-2012-09-03.zip : : true ; } } @@ -881,12 +881,12 @@ if [ IsOptionalHaikuImagePackageAdded DMIDecode ] { Echo "No optional package DMIDecode available for $(TARGET_ARCH)" ; } else if $(HAIKU_GCC_VERSION[1]) >= 4 { InstallOptionalHaikuImagePackage - dmidecode-2.11-x86-gcc4-2011-11-02.zip - : http://revolf.free.fr/beos/dmidecode-2.11-x86-gcc4-2011-11-02.zip ; + dmidecode-2.11-r1a4-x86-gcc4-2012-09-04.zip + : $(baseURL)/dmidecode-2.11-r1a4-x86-gcc4-2012-09-04.zip ; } else { InstallOptionalHaikuImagePackage - dmidecode-2.11-x86-gcc2-2011-11-02.zip - : http://revolf.free.fr/beos/dmidecode-2.11-x86-gcc2-2011-11-02.zip ; + dmidecode-2.11-r1a4-x86-gcc2-2012-09-03.zip + : $(baseURL)/dmidecode-2.11-r1a4-x86-gcc2-2012-09-03.zip ; } } @@ -903,8 +903,8 @@ if [ IsOptionalHaikuImagePackageAdded Doxygen ] { : : true ; } else { InstallOptionalHaikuImagePackage - doxygen-1.6.3-x86-gcc2-2010-05-17.zip - : $(baseURL)/doxygen-1.6.3-x86-gcc2-2010-05-17.zip + doxygen-1.6.3-r1a4-x86-gcc2-2012-09-05.zip + : $(baseURL)/doxygen-1.6.3-r1a4-x86-gcc2-2012-09-05.zip : : true ; } } @@ -1014,8 +1014,8 @@ if [ IsOptionalHaikuImagePackageAdded GitDoc ] { } else { if $(HAIKU_GCC_VERSION[1]) >= 4 { InstallOptionalHaikuImagePackage - gitdoc-1.7.10.2-x86-gcc4-2012-06-20.zip - : $(baseURL)/gitdoc-1.7.10.2-x86-gcc4-2012-06-20.zip + gitdoc-1.7.10.2-r1a4-x86-gcc4-2012-09-03.zip + : $(baseURL)/gitdoc-1.7.10.2-r1a4-x86-gcc4-2012-09-03.zip : : true ; } else { InstallOptionalHaikuImagePackage @@ -1174,12 +1174,12 @@ if [ IsOptionalHaikuImagePackageAdded LibEvent ] { if $(HAIKU_GCC_VERSION[1]) >= 4 { InstallOptionalHaikuImagePackage libevent-2.0.10-r1a4-x86-gcc4-2012-08-30.zip - : $(baseURL)/lib/libevent-2.0.10-r1a4-x86-gcc4-2012-08-30.zip + : $(baseURL)/libevent-2.0.10-r1a4-x86-gcc4-2012-08-30.zip : : true ; } else { InstallOptionalHaikuImagePackage libevent-2.0.10-r1a4-x86-gcc2-2012-08-28.zip - : $(baseURL)/lib/libevent-2.0.10-r1a4-x86-gcc2-2012-08-28.zip + : $(baseURL)/libevent-2.0.10-r1a4-x86-gcc2-2012-08-28.zip : : true ; } } @@ -1209,11 +1209,11 @@ if [ IsOptionalHaikuImagePackageAdded LibLayout ] { if $(TARGET_ARCH) != x86 { Echo "No optional package LibLayout available for $(TARGET_ARCH)" ; } else if $(HAIKU_GCC_VERSION[1]) >= 4 { - InstallOptionalHaikuImagePackage liblayout-1.4.1-r1a4-gcc4-2012-08-30.zip - : $(baseURL)/liblayout-1.4.1-r1a4-gcc4-2012-08-30.zip ; + InstallOptionalHaikuImagePackage liblayout-1.4.1-r1a4-x86-gcc4-2012-08-30.zip + : $(baseURL)/liblayout-1.4.1-r1a4-x86-gcc4-2012-08-30.zip ; } else { - InstallOptionalHaikuImagePackage liblayout-1.4.1-r1a4-gcc2-2012-08-28.zip - : $(baseURL)/liblayout-1.4.1-r1a4-gcc2-2012-08-28.zip ; + InstallOptionalHaikuImagePackage liblayout-1.4.0-gcc2-2009-03-08.zip + : $(baseURL)/liblayout-1.4.0-gcc2-2009-03-08.zip ; } } @@ -1224,12 +1224,12 @@ if [ IsOptionalHaikuImagePackageAdded Libmng ] { Echo "No optional package Libmng available for $(TARGET_ARCH)" ; } else if $(HAIKU_GCC_VERSION[1]) >= 4 { InstallOptionalHaikuImagePackage - libmng-1.0.10-r1a3-x86-gcc4-2011-05-24.zip - : $(baseURL)/lib/libmng-1.0.10-r1a3-x86-gcc4-2011-05-24.zip ; + libmng-1.0.10-r1a4-x86-gcc4-2012-09-02.zip + : $(baseURL)/lib/libmng-1.0.10-r1a4-x86-gcc4-2012-09-02.zip ; } else { InstallOptionalHaikuImagePackage libmng-1.0.10-r1a4-x86-gcc2-2012-08-28.zip - : $(baseURL)/lib/libmng-1.0.10-r1a4-x86-gcc2-2012-08-28.zip ; + : $(baseURL)/lib/libmng-1.0.10-r1a4-x86-gcc2-2012-08-28.zip ; } } @@ -1292,13 +1292,13 @@ if [ IsOptionalHaikuImagePackageAdded Lua ] { } else { if $(HAIKU_GCC_VERSION[1]) >= 4 { InstallOptionalHaikuImagePackage - lua-5.1.4-x86-gcc4-2010-10-30.zip - : $(baseURL)/lua-5.1.4-x86-gcc4-2010-10-30.zip + lua-5.1.4-3-r1a4-x86-gcc4-2012-09-01.zip + : $(baseURL)/lua-5.1.4-3-r1a4-x86-gcc4-2012-09-01.zip : : true ; } else { InstallOptionalHaikuImagePackage - lua-5.1.4-3-r1a4-x86-gcc2-2012-08-29.zip - : $(baseURL)/lua-5.1.4-3-r1a4-x86-gcc2-2012-08-29.zip + lua-5.1.4-3-r1a4-x86-gcc2-2012-09-01.zip + : $(baseURL)/lua-5.1.4-3-r1a4-x86-gcc2-2012-09-01.zip : : true ; } } @@ -1506,8 +1506,8 @@ if [ IsOptionalHaikuImagePackageAdded P7zip ] { } else { if $(HAIKU_GCC_VERSION[1]) >= 4 { InstallOptionalHaikuImagePackage - p7zip-9.20.1-x86-gcc4-2012-06-19.zip - : $(baseURL)/p7zip-9.20.1-x86-gcc4-2012-06-19.zip ; + p7zip-9.20.1-r1a4-x86-gcc4-2012-08-30.zip + : $(baseURL)/p7zip-9.20.1-r1a4-x86-gcc4-2012-08-30.zip ; } else { InstallOptionalHaikuImagePackage p7zip-9.20.1-r1a4-x86-gcc2-2012-08-29.zip @@ -1529,8 +1529,8 @@ if [ IsOptionalHaikuImagePackageAdded Paladin ] { } else { if $(HAIKU_GCC_VERSION[1]) >= 4 { InstallOptionalHaikuImagePackage - paladin-1.3-r1a3-x86-gcc4-2011-05-24.zip - : $(baseURL)/paladin-1.3-r1a3-x86-gcc4-2011-05-24.zip ; + paladin-1.3-r1a4-x86-gcc4-2012-08-30.zip + : $(baseURL)/paladin-1.3-r1a4-x86-gcc4-2012-08-30.zip ; } else { InstallOptionalHaikuImagePackage paladin-1.3-r1a3-x86-gcc2-2011-05-18.zip @@ -1552,8 +1552,8 @@ if [ IsOptionalHaikuImagePackageAdded PCRE ] { } else { if $(HAIKU_GCC_VERSION[1]) >= 4 { InstallOptionalHaikuImagePackage - libpcre-8.12-r1a3-x86-gcc4-2011-05-24.zip - : $(baseURL)/libpcre-8.12-r1a3-x86-gcc4-2011-05-24.zip ; + libpcre-8.21-r1a4-x86-gcc4-2012-09-03.zip + : $(baseURL)/libpcre-8.21-r1a4-x86-gcc4-2012-09-03.zip ; } else { InstallOptionalHaikuImagePackage libpcre-8.21-r1a4-x86-gcc2-2012-08-28.zip @@ -1571,7 +1571,7 @@ if [ IsOptionalHaikuImagePackageAdded Pe ] { if $(HAIKU_GCC_VERSION[1]) >= 4 { InstallOptionalHaikuImagePackage pe-2.4.3-600-x86-gcc4-2011-12-18.zip - : $(baseURL)/pe-2.4.3-600-x86-gcc4-2011-12-18.zip ; + : $(baseURL)/pe-2.4.3-hg-r1a4-x86-gcc4-2012-09-04.zip ; } else { InstallOptionalHaikuImagePackage pe-2.4.3-hg-r1a4-x86-gcc2-2012-08-29.zip @@ -1613,8 +1613,8 @@ if [ IsOptionalHaikuImagePackageAdded Puri ] { Echo "No optional package Puri for gcc2" ; } else { InstallOptionalHaikuImagePackage - puri-0.3.9.1-x86-gcc4-2012-08-16.zip - : $(baseURL)/puri-0.3.9.1-x86-gcc4-2012-08-16.zip ; + puri-0.3.9.1-r1a4-x86-gcc4-2012-08-31.zip + : $(baseURL)/puri-0.3.9.1-r1a4-x86-gcc4-2012-08-31.zip ; AddSymlinkToHaikuImage home config settings deskbar Applications : /boot/apps/Puri/Puri ; } @@ -1628,8 +1628,8 @@ if [ IsOptionalHaikuImagePackageAdded Python ] { } else { if $(HAIKU_GCC_VERSION[1]) >= 4 { InstallOptionalHaikuImagePackage - python-2.6.7-x86-gcc4-2011-06-24.zip - : $(baseURL)/python-2.6.7-x86-gcc4-2011-06-24.zip + python-2.6.8-r1a4-x86-gcc4-2012-09-03.zip + : $(baseURL)/python-2.6.8-r1a4-x86-gcc4-2012-09-03.zip : : true ; } else { InstallOptionalHaikuImagePackage @@ -1648,8 +1648,8 @@ if [ IsOptionalHaikuImagePackageAdded Rsync ] { } else { if $(HAIKU_GCC_VERSION[1]) >= 4 { InstallOptionalHaikuImagePackage - rsync-3.0.7-r1a3-x86-gcc4-2011-05-24.zip - : $(baseURL)/rsync-3.0.7-r1a3-x86-gcc4-2011-05-24.zip + rsync-3.0.7-r1a4-x86-gcc4-2012-08-31.zip + : $(baseURL)/rsync-3.0.7-r1a4-x86-gcc4-2012-08-31.zip : : true ; } else { InstallOptionalHaikuImagePackage @@ -1667,8 +1667,8 @@ if [ IsOptionalHaikuImagePackageAdded Ruby ] { Echo "No optional package Ruby available for $(TARGET_ARCH)" ; } else if $(HAIKU_GCC_VERSION[1]) >= 4 { InstallOptionalHaikuImagePackage - ruby-1.9.1-r1a3-x86-gcc4-2011-05-24.zip - : $(baseURL)/ruby-1.9.1-r1a3-x86-gcc4-2011-05-24.zip ; + ruby-1.9.1-r1a4-x86-gcc4-2012-08-31.zip + : $(baseURL)/ruby-1.9.1-r1a4-x86-gcc4-2012-08-31.zip ; } else { InstallOptionalHaikuImagePackage ruby-1.9.1-r1a4-x86-gcc2-2012-08-29.zip @@ -1683,8 +1683,8 @@ if [ IsOptionalHaikuImagePackageAdded Sed ] { Echo "No optional package Sed available for $(TARGET_ARCH)" ; } else if $(HAIKU_GCC_VERSION[1]) >= 4 { InstallOptionalHaikuImagePackage - sed-4.2.1-r1a3-x86-gcc4-2011-05-24.zip - : $(baseURL)/sed-4.2.1-r1a3-x86-gcc4-2011-05-24.zip ; + sed-4.2.1-r1a4-x86-gcc4-2012-08-31.zip + : $(baseURL)/sed-4.2.1-r1a4-x86-gcc4-2012-08-31.zip ; } else { InstallOptionalHaikuImagePackage sed-4.2.1-r1a4-x86-gcc2-2012-08-27.zip @@ -1737,12 +1737,12 @@ if [ IsOptionalHaikuImagePackageAdded TagLib ] { Echo "No optional package TagLib available for $(TARGET_ARCH)" ; } else if $(HAIKU_GCC_VERSION[1]) >= 4 { InstallOptionalHaikuImagePackage - taglib-1.6.3-r1r3-x86-gcc4-2011-05-24.zip - : $(baseURL)/taglib-1.6.3-r1r3-x86-gcc4-2011-05-24.zip ; + taglib-1.6.3-r1a4-x86-gcc4-2012-09-03.zip + : $(baseURL)/taglib-1.6.3-r1a4-x86-gcc4-2012-09-03.zip ; } else { InstallOptionalHaikuImagePackage - taglib-1.7.2-r1a4-x86-gcc2-2012-08-30.zip - : $(baseURL)/taglib-1.7.2-r1a4-x86-gcc2-2012-08-30.zip ; + taglib-1.6.3-r1a4-x86-gcc2-2012-09-03.zip + : $(baseURL)/taglib-1.6.3-r1a4-x86-gcc2-2012-09-03.zip ; } } @@ -1754,8 +1754,8 @@ if [ IsOptionalHaikuImagePackageAdded Tar ] { } else { if $(HAIKU_GCC_VERSION[1]) >= 4 { InstallOptionalHaikuImagePackage - tar-1.26-x86-gcc4-2012-06-19.zip - : $(baseURL)/tar-1.26-x86-gcc4-2012-06-19.zip ; + tar-1.26-r1a4-x86-gcc4-2012-09-03.zip + : $(baseURL)/tar-1.26-r1a4-x86-gcc4-2012-09-03.zip ; } else { InstallOptionalHaikuImagePackage tar-1.26-r1a4-x86-gcc2-2012-08-29.zip @@ -1788,8 +1788,8 @@ if [ IsOptionalHaikuImagePackageAdded Transmission ] { } else { if $(HAIKU_GCC_VERSION[1]) >= 4 { InstallOptionalHaikuImagePackage - transmission-2.21-r1a3-x86-gcc4-2011-05-27.zip - : $(baseURL)/transmission-2.21-r1a3-x86-gcc4-2011-05-27.zip + transmission-2.21-r1a4-x86-gcc4-2012-09-03.zip + : $(baseURL)/transmission-2.21-r1a4-x86-gcc4-2012-09-03.zip : : true ; } else { InstallOptionalHaikuImagePackage @@ -1882,8 +1882,8 @@ if [ IsOptionalHaikuImagePackageAdded Vision ] { Echo "No optional package Vision available for $(TARGET_ARCH)" ; } else { if $(HAIKU_GCC_VERSION[1]) >= 4 { - InstallOptionalHaikuImagePackage vision-908-x86-gcc4-2012-02-26.zip - : $(baseURL)/vision-908-x86-gcc4-2012-02-26.zip ; + InstallOptionalHaikuImagePackage vision-908-r1a4-x86-gcc4-2012-09-04.zip + : $(baseURL)/vision-908-r1a4-x86-gcc4-2012-09-04.zip ; } else { InstallOptionalHaikuImagePackage vision-908-r1a4-x86-gcc2-2012-08-29.zip @@ -2044,8 +2044,8 @@ if [ IsOptionalHaikuImagePackageAdded XZ-Utils ] { Echo "No optional package XZ-Utils available for $(TARGET_ARCH)" ; } else { InstallOptionalHaikuImagePackage - xz-utils-5.0.1-x86-gcc4-2012-07-18.zip - : $(baseURL)/xz-utils-5.0.1-x86-gcc4-2012-07-18.zip ; + xz-utils-5.0.1-r1a4-x86-gcc4-2012-09-03.zip + : $(baseURL)/xz-utils-5.0.1-r1a4-x86-gcc4-2012-09-03.zip ; AddExpanderRuleToHaikuImage "application/x-xz" : .tar.xz : "tar -Jtvf \\0045s" : "tar -Jxvf \\0045s" diff --git a/data/artwork/GET HAIKU - download box 2 b/data/artwork/GET HAIKU - download box 2 index b1f79ba110..97d7fcc26f 100644 Binary files a/data/artwork/GET HAIKU - download box 2 and b/data/artwork/GET HAIKU - download box 2 differ diff --git a/data/artwork/HAIKU logo - black on white - installer b/data/artwork/HAIKU logo - black on white - installer index 9c23baee61..10820d7ba7 100644 Binary files a/data/artwork/HAIKU logo - black on white - installer and b/data/artwork/HAIKU logo - black on white - installer differ diff --git a/data/artwork/HAIKU logo - black on white - installer.png b/data/artwork/HAIKU logo - black on white - installer.png index 83fadde56a..b33399cf41 100644 Binary files a/data/artwork/HAIKU logo - black on white - installer.png and b/data/artwork/HAIKU logo - black on white - installer.png differ diff --git a/data/artwork/alpha-numbers-stamp b/data/artwork/alpha-numbers-stamp index 72cac7ad4a..25452e58f8 100644 Binary files a/data/artwork/alpha-numbers-stamp and b/data/artwork/alpha-numbers-stamp differ diff --git a/data/bin/installoptionalpackage b/data/bin/installoptionalpackage index f2a22dfd6d..612549fc57 100755 --- a/data/bin/installoptionalpackage +++ b/data/bin/installoptionalpackage @@ -42,8 +42,8 @@ declare alreadyInstalled="" # Some Packages cannot be installed, # as they require either the source code or compiled binaries declare packageIgnoreList="Bluetooth Development DevelopmentMin \ -DevelopmentBase MandatoryPackages UserlandFS Welcome WifiFirmwareScriptData \ -ICU-devel ICU " +DevelopmentBase ICU-devel ICU MandatoryPackages UserlandFS \ +WebPositive Welcome WifiFirmwareScriptData " function CreateInstallerScript() diff --git a/headers/private/tracker/NavMenu.h b/headers/private/tracker/NavMenu.h index 127d94f255..0726c36d94 100644 --- a/headers/private/tracker/NavMenu.h +++ b/headers/private/tracker/NavMenu.h @@ -80,12 +80,12 @@ class BNavMenu : public BSlowMenu { BWindow *parentWindow = NULL, const BObjectList *list = NULL); // parentWindow, if specified, will be closed if nav menu item invoked // with option held down - + virtual ~BNavMenu(); - + virtual void AttachedToWindow(); virtual void DetachedFromWindow(); - + void SetNavDir(const entry_ref *); void ForceRebuild(); bool NeedsToRebuild() const; @@ -96,7 +96,7 @@ class BNavMenu : public BSlowMenu { BMessenger Target(); void SetTypesList(const BObjectList *list); - const BObjectList *TypesList() const; + const BObjectList *TypesList() const; void AddNavDir(const Model *model, uint32 what, BHandler *target, bool populateSubmenu); @@ -121,7 +121,7 @@ class BNavMenu : public BSlowMenu { protected: virtual bool StartBuildingItemList(); virtual bool AddNextItem(); - virtual void DoneBuildingItemList(); + virtual void DoneBuildingItemList(); virtual void ClearMenuBuildingState(); void BuildVolumeMenu(); @@ -142,7 +142,7 @@ class BNavMenu : public BSlowMenu { EntryListBase *fContainer; bool fIteratingDesktop; - const BObjectList *fTypesList; + BObjectList *fTypesList; TrackingHookData fTrackingHook; }; diff --git a/src/apps/mediaplayer/playlist/Playlist.cpp b/src/apps/mediaplayer/playlist/Playlist.cpp index 9707423574..35fabad63d 100644 --- a/src/apps/mediaplayer/playlist/Playlist.cpp +++ b/src/apps/mediaplayer/playlist/Playlist.cpp @@ -325,10 +325,15 @@ Playlist::RemoveItem(int32 index, bool careAboutCurrentIndex) _NotifyItemRemoved(index); if (careAboutCurrentIndex) { - if (index >= CountItems()) - SetCurrentItemIndex(CountItems() - 1); - else if (index <= fCurrentIndex) - SetCurrentItemIndex(index - 1); + // fCurrentIndex isn't in sync yet, so might be one too large (if the + // removed item was above the currently playing item). + if (index < fCurrentIndex) + SetCurrentItemIndex(fCurrentIndex - 1, false); + else if (index == fCurrentIndex) { + if (fCurrentIndex == CountItems()) + fCurrentIndex--; + SetCurrentItemIndex(fCurrentIndex, true); + } } return item; diff --git a/src/data/beos_mime/text/x-patch b/src/data/beos_mime/text/x-patch index 1d0d240cc0..42dfc3eb00 100644 --- a/src/data/beos_mime/text/x-patch +++ b/src/data/beos_mime/text/x-patch @@ -18,15 +18,17 @@ resource(4, "META:EXTENS") message(234) { resource(5, "META:PREF_APP") #'MSIG' "application/x-vnd.beunited.pe"; resource(6, "META:ICON") #'VICN' array { - $"6E6369660505010200060338D2F73CD163BF82B23B84A94B88504870C900B6F5" - $"5CBDDCFFB3FFD7FFBA020106023E49240000000000003CAAAA4940004A3000FF" - $"CCFF897C4FB009040192020006023A55A6BAC2293F0DA33E958646C2EB4870EB" - $"00010101FF85CB520B0606AE0BB40BBF4D33C3AFB75DC173BDEFC607C13EC804" + $"6E6369660505010200060338D2F73CD163BF82B23B84A94B88504870C901BFDE" + $"F4BDFFFFFFFFE7EEFB020106023E49240000000000003CAAAA4940004A3000FF" + $"CEE5FF7C7588AD040192020006023A55A6BAC2293F0DA33E958646C2EB4870EB" + $"00010101FF5296CB0A0606AE0BB40BBF4D33C3AFB75DC173BDEFC607C13EC804" $"CA28BD82C118B920C51BBB40BF07B8083AB6BC0605AE02B57D3EB9B9C3EFB7BB" $"44BBB751BD75C936CA8EC1B1402F0A093B593D5BBFCDC93E455BC516C5F16046" - $"5B435D4544510A045A425E3F5A3D574008022E40BDB53308023142BE34BC0308" - $"023444C0E5BB5108023746C0D8BD7508023A48C270BDB508023D4A4CBD820802" - $"404CC408BFE6080A03020203000A0001011001178400040A020101000A000100" - $"1001178400040A010100000A04040604080A1815FF01178100040A0404060408" - $"0A18001501178200040A04030907051815FF0117810004" + $"5B435D4544510A045A425E3F5A3D574008022E45373C0802364441390802364B" + $"463B08023A4E4A3E08032D422E4430450803373839393A3B0C0A03020203000A" + $"0001011001178400040A020101000A0001001001178400040A010100000A0403" + $"04060738201B16FF01178100040A0402060438201B001601178200040A040105" + $"38201B16FF01178100040A000108382B1116FF01178100040A00010938231916" + $"FF01178100040A00010838251E16FF01178100040A00010938283116FF011781" + $"0004" }; diff --git a/src/data/beos_mime/text/x-source-code b/src/data/beos_mime/text/x-source-code index f002060a46..e83af7dde3 100644 --- a/src/data/beos_mime/text/x-source-code +++ b/src/data/beos_mime/text/x-source-code @@ -34,15 +34,17 @@ resource(4, "META:EXTENS") message(234) { resource(5, "META:PREF_APP") #'MSIG' "application/x-vnd.beunited.pe"; resource(6, "META:ICON") #'VICN' array { - $"6E6369660505010200060338D2F73CD163BF82B23B84A94B88504870C900B6F5" - $"5CBDDCFFB3FFD7FFBA020106023E49240000000000003CAAAA4940004A3000FF" - $"CCFF897C4FB009040192020006023A55A6BAC2293F0DA33E958646C2EB4870EB" - $"00010101FF85CB520B0606AE0BB40BBF4D33C3AFB75DC173BDEFC607C13EC804" + $"6E6369660505010200060338D2F73CD163BF82B23B84A94B88504870C901BFDE" + $"F4BDFFFFFFFFE7EEFB020106023E49240000000000003CAAAA4940004A3000FF" + $"CEE5FF7C7588AD040192020006023A55A6BAC2293F0DA33E958646C2EB4870EB" + $"00010101FF5296CB0A0606AE0BB40BBF4D33C3AFB75DC173BDEFC607C13EC804" $"CA28BD82C118B920C51BBB40BF07B8083AB6BC0605AE02B57D3EB9B9C3EFB7BB" $"44BBB751BD75C936CA8EC1B1402F0A093B593D5BBFCDC93E455BC516C5F16046" - $"5B435D4544510A045A425E3F5A3D574008022E40BDB53308023142BE34BC0308" - $"023444C0E5BB5108023746C0D8BD7508023A48C270BDB508023D4A4CBD820802" - $"404CC408BFE6080A03020203000A0001011001178400040A020101000A000100" - $"1001178400040A010100000A04040604080A1815FF01178100040A0404060408" - $"0A18001501178200040A04030907051815FF0117810004" + $"5B435D4544510A045A425E3F5A3D574008022E45373C0802364441390802364B" + $"463B08023A4E4A3E08032D422E4430450803373839393A3B0C0A03020203000A" + $"0001011001178400040A020101000A0001001001178400040A010100000A0403" + $"04060738201B16FF01178100040A0402060438201B001601178200040A040105" + $"38201B16FF01178100040A000108382B1116FF01178100040A00010938231916" + $"FF01178100040A00010838251E16FF01178100040A00010938283116FF011781" + $"0004" }; diff --git a/src/kits/app/Notification.cpp b/src/kits/app/Notification.cpp index cc0fc31b29..9f9687c2a8 100644 --- a/src/kits/app/Notification.cpp +++ b/src/kits/app/Notification.cpp @@ -75,6 +75,16 @@ BNotification::BNotification(BMessage* archive) if (archive->FindRef("_onClickFile", &onClickFile) == B_OK) SetOnClickFile(&onClickFile); + entry_ref onClickRef; + int32 index = 0; + while (archive->FindRef("_onClickRef", index++, &onClickRef) == B_OK) + AddOnClickRef(&onClickRef); + + BString onClickArgv; + index = 0; + while (archive->FindString("_onClickArgv", index++, &onClickArgv) == B_OK) + AddOnClickArg(onClickArgv); + status_t ret = B_OK; BMessage icon; if ((ret = archive->FindMessage("_icon", &icon)) == B_OK) { @@ -131,7 +141,7 @@ BNotification::Instantiate(BMessage* archive) /*! \brief Archives the BNotification in the BMessages @archive. \sa BArchivable::Archive(), Instantiate() static function. - \return + \return - \c B_OK: Everything went fine. - \c Other errors: Archiving has failed. */ diff --git a/src/kits/tracker/Model.cpp b/src/kits/tracker/Model.cpp index 1cf77c84ca..7c5e617569 100644 --- a/src/kits/tracker/Model.cpp +++ b/src/kits/tracker/Model.cpp @@ -1106,15 +1106,15 @@ Model::SupportsMimeType(const char* type, const BObjectList* list, int32 match; - if (type) { + if (type || (list != NULL && list->IsEmpty())) { BString typeString(type); match = MatchMimeTypeString(&typeString, mimeSignature); - } else + } else { match = WhileEachListItem(const_cast*>(list), MatchMimeTypeString, mimeSignature); - // const_cast shouldnt be here, have to have it until - // MW cleans up - + // const_cast shouldnt be here, have to have it until + // MW cleans up + } if (match == kMatch) // supports the actual type, it can't get any better return kModelSupportsType; diff --git a/src/kits/tracker/NavMenu.cpp b/src/kits/tracker/NavMenu.cpp index aa6526d383..14578f5ea0 100644 --- a/src/kits/tracker/NavMenu.cpp +++ b/src/kits/tracker/NavMenu.cpp @@ -130,7 +130,7 @@ void SpringLoadedFolderSetMenuStates(const BMenu* menu, const BObjectList* typeslist) { - if (!menu || !typeslist) + if (!menu || !typeslist || typeslist->IsEmpty()) return; // if a types list exists @@ -263,8 +263,10 @@ BNavMenu::BNavMenu(const char* title, uint32 message, const BHandler* target, fFlags(0), fItemList(0), fContainer(0), - fTypesList(list) + fTypesList(new BObjectList(10, true)) { + if (list != NULL) + *fTypesList = *list; InitIconPreloader(); SetFont(be_plain_font); @@ -292,8 +294,10 @@ BNavMenu::BNavMenu(const char* title, uint32 message, fFlags(0), fItemList(0), fContainer(0), - fTypesList(list) + fTypesList(new BObjectList(10, true)) { + if (list != NULL) + *fTypesList = *list; InitIconPreloader(); SetFont(be_plain_font); @@ -313,6 +317,7 @@ BNavMenu::BNavMenu(const char* title, uint32 message, BNavMenu::~BNavMenu() { + delete fTypesList; } @@ -334,13 +339,6 @@ BNavMenu::AttachedToWindow() void BNavMenu::DetachedFromWindow() { - // does this need to set this to null? - // the parent, handling dnd should set this - // appropriately - // - // if this changes, BeMenu and RecentsMenu - // in Deskbar should also change - fTypesList = NULL; } @@ -814,7 +812,10 @@ BNavMenu::SetShowParent(bool show) void BNavMenu::SetTypesList(const BObjectList* list) { - fTypesList = list; + if (list != NULL) + *fTypesList = *list; + else + fTypesList->MakeEmpty(); } diff --git a/src/libs/tiff/tif_jpeg.c b/src/libs/tiff/tif_jpeg.c index a967827e74..9ac77f181f 100644 --- a/src/libs/tiff/tif_jpeg.c +++ b/src/libs/tiff/tif_jpeg.c @@ -726,11 +726,10 @@ JPEGPreDecode(TIFF* tif, tsample_t s) if (sp->cinfo.d.image_width < segment_width || sp->cinfo.d.image_height < segment_height) { TIFFWarningExt(tif->tif_clientdata, module, - "Improper JPEG strip/tile size, " - "expected %dx%d, got %dx%d", - segment_width, segment_height, - sp->cinfo.d.image_width, - sp->cinfo.d.image_height); + "Improper JPEG strip/tile size, " + "expected %" B_PRIu32 "x%" B_PRIu32 ", got %" B_PRIu32 "x%" + B_PRIu32, segment_width, segment_height, sp->cinfo.d.image_width, + sp->cinfo.d.image_height); } if (sp->cinfo.d.image_width > segment_width || sp->cinfo.d.image_height > segment_height) { @@ -741,10 +740,10 @@ JPEGPreDecode(TIFF* tif, tsample_t s) * case and error out. */ TIFFErrorExt(tif->tif_clientdata, module, - "JPEG strip/tile size exceeds expected dimensions," - " expected %dx%d, got %dx%d", - segment_width, segment_height, - sp->cinfo.d.image_width, sp->cinfo.d.image_height); + "JPEG strip/tile size exceeds expected dimensions," + "expected %" B_PRIu32 "x%" B_PRIu32 ", got %" B_PRIu32 "x%" + B_PRIu32, segment_width, segment_height, sp->cinfo.d.image_width, + sp->cinfo.d.image_height); return (0); } if (sp->cinfo.d.num_components != diff --git a/src/preferences/appearance/APRWindow.cpp b/src/preferences/appearance/APRWindow.cpp index 6006482164..41cedcc95c 100644 --- a/src/preferences/appearance/APRWindow.cpp +++ b/src/preferences/appearance/APRWindow.cpp @@ -21,7 +21,7 @@ #include "AntialiasingSettingsView.h" #include "APRView.h" -#include "DecorSettingsView.h" +#include "LookAndFeelSettingsView.h" #include "defs.h" #include "FontView.h" @@ -54,15 +54,15 @@ APRWindow::APRWindow(BRect frame) fColorsView = new APRView(B_TRANSLATE("Colors")); - fDecorSettings = new DecorSettingsView( - B_TRANSLATE("Decorators")); + fLookAndFeelSettings = new LookAndFeelSettingsView( + B_TRANSLATE("Look and feel")); fAntialiasingSettings = new AntialiasingSettingsView( B_TRANSLATE("Antialiasing")); tabView->AddTab(fFontSettings); tabView->AddTab(fColorsView); - tabView->AddTab(fDecorSettings); + tabView->AddTab(fLookAndFeelSettings); tabView->AddTab(fAntialiasingSettings); _UpdateButtons(); @@ -92,7 +92,7 @@ APRWindow::MessageReceived(BMessage *message) fFontSettings->SetDefaults(); fColorsView->SetDefaults(); fAntialiasingSettings->SetDefaults(); - fDecorSettings->SetDefaults(); + fLookAndFeelSettings->SetDefaults(); _UpdateButtons(); break; @@ -101,7 +101,7 @@ APRWindow::MessageReceived(BMessage *message) fColorsView->Revert(); fAntialiasingSettings->Revert(); fFontSettings->Revert(); - fDecorSettings->Revert(); + fLookAndFeelSettings->Revert(); _UpdateButtons(); break; @@ -127,11 +127,11 @@ APRWindow::_IsDefaultable() const // printf("fonts defaultable: %d\n", fFontSettings->IsDefaultable()); // printf("colors defaultable: %d\n", fColorsView->IsDefaultable()); // printf("AA defaultable: %d\n", fAntialiasingSettings->IsDefaultable()); -// printf("decor defaultable: %d\n", fDecorSettings->IsDefaultable()); +// printf("decor defaultable: %d\n", fLookAndFeelSettings->IsDefaultable()); return fColorsView->IsDefaultable() || fFontSettings->IsDefaultable() || fAntialiasingSettings->IsDefaultable() - || fDecorSettings->IsDefaultable(); + || fLookAndFeelSettings->IsDefaultable(); } @@ -141,9 +141,9 @@ APRWindow::_IsRevertable() const // printf("fonts revertable: %d\n", fFontSettings->IsRevertable()); // printf("colors revertable: %d\n", fColorsView->IsRevertable()); // printf("AA revertable: %d\n", fAntialiasingSettings->IsRevertable()); -// printf("decor revertable: %d\n", fDecorSettings->IsRevertable()); +// printf("decor revertable: %d\n", fLookAndFeelSettings->IsRevertable()); return fColorsView->IsRevertable() || fFontSettings->IsRevertable() || fAntialiasingSettings->IsRevertable() - || fDecorSettings->IsRevertable(); + || fLookAndFeelSettings->IsRevertable(); } diff --git a/src/preferences/appearance/APRWindow.h b/src/preferences/appearance/APRWindow.h index ab6f582f16..1907fc4964 100644 --- a/src/preferences/appearance/APRWindow.h +++ b/src/preferences/appearance/APRWindow.h @@ -20,7 +20,7 @@ class APRView; class AntialiasingSettingsView; class FontView; -class DecorSettingsView; +class LookAndFeelSettingsView; class APRWindow : public BWindow { @@ -39,7 +39,7 @@ private: AntialiasingSettingsView* fAntialiasingSettings; FontView* fFontSettings; - DecorSettingsView* fDecorSettings; + LookAndFeelSettingsView* fLookAndFeelSettings; }; diff --git a/src/preferences/appearance/Jamfile b/src/preferences/appearance/Jamfile index 12ade0a6a4..45904f7a26 100644 --- a/src/preferences/appearance/Jamfile +++ b/src/preferences/appearance/Jamfile @@ -9,7 +9,7 @@ Includes [ FGristFiles AntialiasingSettingsView.cpp ] Preference Appearance : APRMain.cpp AntialiasingSettingsView.cpp - DecorSettingsView.cpp + LookAndFeelSettingsView.cpp FontSelectionView.cpp FontView.cpp APRView.cpp @@ -40,7 +40,7 @@ DoCatalogs Appearance : ColorSet.cpp ColorWell.cpp ColorWhichItem.cpp - DecorSettingsView.cpp + LookAndFeelSettingsView.cpp FontView.cpp FontSelectionView.cpp ; diff --git a/src/preferences/appearance/DecorSettingsView.cpp b/src/preferences/appearance/LookAndFeelSettingsView.cpp similarity index 60% rename from src/preferences/appearance/DecorSettingsView.cpp rename to src/preferences/appearance/LookAndFeelSettingsView.cpp index 711c534a7d..5720764d89 100644 --- a/src/preferences/appearance/DecorSettingsView.cpp +++ b/src/preferences/appearance/LookAndFeelSettingsView.cpp @@ -5,10 +5,11 @@ * Authors: * Alexander von Gluck, kallisti5@unixzen.com * Stephan Aßmus + * Ryan Leavengood */ -#include "DecorSettingsView.h" +#include "LookAndFeelSettingsView.h" #include #include @@ -17,8 +18,10 @@ #include #include #include +#include #include #include +#include #include #include #include @@ -32,18 +35,26 @@ #undef B_TRANSLATION_CONTEXT #define B_TRANSLATION_CONTEXT "DecorSettingsView" + // This was not renamed to keep from breaking translations static const int32 kMsgSetDecor = 'deco'; static const int32 kMsgDecorInfo = 'idec'; +static const int32 kMsgDoubleScrollbarArrows = 'dsba'; + +static const bool kDefaultDoubleScrollbarArrowsSetting = false; // #pragma mark - -DecorSettingsView::DecorSettingsView(const char* name) +LookAndFeelSettingsView::LookAndFeelSettingsView(const char* name) : - BView(name, 0) + BView(name, 0), + fDecorInfoButton(NULL), + fDecorMenuField(NULL), + fDecorMenu(NULL), + fDoubleScrollbarArrowsCheckBox(NULL) { // Decorator menu _BuildDecorMenu(); @@ -53,6 +64,13 @@ DecorSettingsView::DecorSettingsView(const char* name) fDecorInfoButton = new BButton(B_TRANSLATE("About"), new BMessage(kMsgDecorInfo)); + fDoubleScrollbarArrowsCheckBox = new BCheckBox("doubleScrollbarArrows", + B_TRANSLATE("Use double scrollbar arrows"), + new BMessage(kMsgDoubleScrollbarArrows)); + + fSavedDoubleArrowsValue = _GetDoubleScrollbarArrowsSetting(); + fDoubleScrollbarArrowsCheckBox->SetValue(fSavedDoubleArrowsValue); + SetLayout(new BGroupLayout(B_VERTICAL)); // control layout @@ -61,20 +79,21 @@ DecorSettingsView::DecorSettingsView(const char* name) .Add(fDecorMenuField->CreateMenuBarLayoutItem(), 1, 0) .Add(fDecorInfoButton, 2, 0) - .Add(BSpaceLayoutItem::CreateGlue(), 0, 3, 2) - .SetInsets(10, 10, 10, 10) - ); + .Add(fDoubleScrollbarArrowsCheckBox, 0, 3, 2) + .Add(BSpaceLayoutItem::CreateGlue(), 0, 4, 2) + .SetInsets(10, 10, 10, 10) + ); // TODO : Decorator Preview Image? } -DecorSettingsView::~DecorSettingsView() +LookAndFeelSettingsView::~LookAndFeelSettingsView() { } void -DecorSettingsView::AttachedToWindow() +LookAndFeelSettingsView::AttachedToWindow() { if (Parent() != NULL) SetViewColor(Parent()->ViewColor()); @@ -83,11 +102,12 @@ DecorSettingsView::AttachedToWindow() fDecorMenu->SetTargetForItems(this); fDecorInfoButton->SetTarget(this); + fDoubleScrollbarArrowsCheckBox->SetTarget(this); } void -DecorSettingsView::MessageReceived(BMessage *msg) +LookAndFeelSettingsView::MessageReceived(BMessage *msg) { switch (msg->what) { case kMsgSetDecor: @@ -121,10 +141,13 @@ DecorSettingsView::MessageReceived(BMessage *msg) BAlert *infoAlert = new BAlert(B_TRANSLATE("About Decorator"), infoText.String(), B_TRANSLATE("OK")); infoAlert->SetFlags(infoAlert->Flags() | B_CLOSE_ON_ESCAPE); - infoAlert->Go(); + infoAlert->Go(); break; } + case kMsgDoubleScrollbarArrows: + _SetDoubleScrollbarArrowsSetting(fDoubleScrollbarArrowsCheckBox->Value()); + break; default: BView::MessageReceived(msg); @@ -134,7 +157,7 @@ DecorSettingsView::MessageReceived(BMessage *msg) void -DecorSettingsView::_BuildDecorMenu() +LookAndFeelSettingsView::_BuildDecorMenu() { fDecorMenu = new BPopUpMenu(B_TRANSLATE("Choose Decorator")); @@ -163,24 +186,24 @@ DecorSettingsView::_BuildDecorMenu() void -DecorSettingsView::_SetDecor(const BString& name) +LookAndFeelSettingsView::_SetDecor(const BString& name) { _SetDecor(fDecorUtility.FindDecorator(name)); -} +} void -DecorSettingsView::_SetDecor(DecorInfo* decorInfo) +LookAndFeelSettingsView::_SetDecor(DecorInfo* decorInfo) { if (fDecorUtility.SetDecorator(decorInfo) == B_OK) { _AdoptToCurrentDecor(); Window()->PostMessage(kMsgUpdate); } -} +} void -DecorSettingsView::_AdoptToCurrentDecor() +LookAndFeelSettingsView::_AdoptToCurrentDecor() { fCurrentDecor = fDecorUtility.CurrentDecorator()->Name(); if (fSavedDecor.Length() == 0) @@ -189,7 +212,7 @@ DecorSettingsView::_AdoptToCurrentDecor() } void -DecorSettingsView::_AdoptInterfaceToCurrentDecor() +LookAndFeelSettingsView::_AdoptInterfaceToCurrentDecor() { BMenuItem* item = fDecorMenu->FindItem(fCurrentDecor); if (item != NULL) @@ -197,29 +220,60 @@ DecorSettingsView::_AdoptInterfaceToCurrentDecor() } +bool +LookAndFeelSettingsView::_GetDoubleScrollbarArrowsSetting() +{ + scroll_bar_info info; + get_scroll_bar_info(&info); + + return info.double_arrows; +} + + void -DecorSettingsView::SetDefaults() +LookAndFeelSettingsView::_SetDoubleScrollbarArrowsSetting(bool value) +{ + scroll_bar_info info; + get_scroll_bar_info(&info); + + info.double_arrows = value; + set_scroll_bar_info(&info); + + Window()->PostMessage(kMsgUpdate); +} + + +void +LookAndFeelSettingsView::SetDefaults() { _SetDecor(fDecorUtility.DefaultDecorator()); + _SetDoubleScrollbarArrowsSetting(kDefaultDoubleScrollbarArrowsSetting); + fDoubleScrollbarArrowsCheckBox->SetValue( + kDefaultDoubleScrollbarArrowsSetting); } bool -DecorSettingsView::IsDefaultable() +LookAndFeelSettingsView::IsDefaultable() { - return fCurrentDecor != fDecorUtility.DefaultDecorator()->Name(); + return fCurrentDecor != fDecorUtility.DefaultDecorator()->Name() || + fDoubleScrollbarArrowsCheckBox->Value() != + kDefaultDoubleScrollbarArrowsSetting; } bool -DecorSettingsView::IsRevertable() +LookAndFeelSettingsView::IsRevertable() { - return fCurrentDecor != fSavedDecor; + return fCurrentDecor != fSavedDecor || + fDoubleScrollbarArrowsCheckBox->Value() != fSavedDoubleArrowsValue; } void -DecorSettingsView::Revert() +LookAndFeelSettingsView::Revert() { _SetDecor(fSavedDecor); + _SetDoubleScrollbarArrowsSetting(fSavedDoubleArrowsValue); + fDoubleScrollbarArrowsCheckBox->SetValue(fSavedDoubleArrowsValue); } diff --git a/src/preferences/appearance/DecorSettingsView.h b/src/preferences/appearance/LookAndFeelSettingsView.h similarity index 65% rename from src/preferences/appearance/DecorSettingsView.h rename to src/preferences/appearance/LookAndFeelSettingsView.h index 520bde281d..3214be3924 100644 --- a/src/preferences/appearance/DecorSettingsView.h +++ b/src/preferences/appearance/LookAndFeelSettingsView.h @@ -5,9 +5,10 @@ * Authors: * Alexander von Gluck, kallisti5@unixzen.com * Stephan Aßmus + * Ryan Leavengood */ -#ifndef DECOR_SETTINGS_VIEW_H -#define DECOR_SETTINGS_VIEW_H +#ifndef LOOK_AND_FEEL_SETTINGS_VIEW_H +#define LOOK_AND_FEEL_SETTINGS_VIEW_H #include @@ -16,14 +17,15 @@ class BButton; +class BCheckBox; class BMenuField; class BPopUpMenu; -class DecorSettingsView : public BView { +class LookAndFeelSettingsView : public BView { public: - DecorSettingsView(const char* name); - virtual ~DecorSettingsView(); + LookAndFeelSettingsView(const char* name); + virtual ~LookAndFeelSettingsView(); virtual void AttachedToWindow(); virtual void MessageReceived(BMessage* message); @@ -40,6 +42,8 @@ private: void _BuildDecorMenu(); void _AdoptToCurrentDecor(); void _AdoptInterfaceToCurrentDecor(); + bool _GetDoubleScrollbarArrowsSetting(); + void _SetDoubleScrollbarArrowsSetting(bool value); private: DecorInfoUtility fDecorUtility; @@ -47,9 +51,11 @@ private: BButton* fDecorInfoButton; BMenuField* fDecorMenuField; BPopUpMenu* fDecorMenu; + BCheckBox* fDoubleScrollbarArrowsCheckBox; BString fSavedDecor; BString fCurrentDecor; + bool fSavedDoubleArrowsValue; }; -#endif // DECOR_SETTINGS_VIEW_H +#endif // LOOK_AND_FEEL_SETTINGS_VIEW_H diff --git a/src/servers/app/DesktopSettings.cpp b/src/servers/app/DesktopSettings.cpp index c983c69ad0..a634905d31 100644 --- a/src/servers/app/DesktopSettings.cpp +++ b/src/servers/app/DesktopSettings.cpp @@ -57,7 +57,7 @@ DesktopSettingsPrivate::_SetDefaults() // init scrollbar info fScrollBarInfo.proportional = true; - fScrollBarInfo.double_arrows = true; + fScrollBarInfo.double_arrows = false; fScrollBarInfo.knob = 1; // look of the knob (R5: (0, 1, 2), 1 = default) fScrollBarInfo.min_knob_size = 15; diff --git a/src/system/kernel/cache/block_cache.cpp b/src/system/kernel/cache/block_cache.cpp index 7cd01571e0..22e20ccb8b 100644 --- a/src/system/kernel/cache/block_cache.cpp +++ b/src/system/kernel/cache/block_cache.cpp @@ -3046,9 +3046,11 @@ cache_abort_sub_transaction(void* _cache, int32 id) // The parent transaction didn't change the block, but the sub // transaction did - we need to revert to the original data. // The block is no longer part of the transaction - ASSERT(block->original_data != NULL); - memcpy(block->current_data, block->original_data, - cache->block_size); + if (block->original_data != NULL) { + // The block might not have original data if was empty + memcpy(block->current_data, block->original_data, + cache->block_size); + } if (last != NULL) last->transaction_next = next; diff --git a/src/system/kernel/vm/Jamfile b/src/system/kernel/vm/Jamfile index fa0282d658..a646e719c4 100644 --- a/src/system/kernel/vm/Jamfile +++ b/src/system/kernel/vm/Jamfile @@ -3,6 +3,8 @@ SubDir HAIKU_TOP src system kernel vm ; UsePrivateHeaders shared ; UseHeaders [ FDirName $(SUBDIR) $(DOTDOT) device_manager ] ; +UsePrivateHeaders [ FDirName kernel disk_device_manager ] ; +UsePrivateHeaders [ FDirName kernel util ] ; KernelMergeObject kernel_vm.o : PageCacheLocker.cpp diff --git a/src/system/kernel/vm/VMAnonymousCache.cpp b/src/system/kernel/vm/VMAnonymousCache.cpp index d9047dfaa8..ae0d9799d5 100644 --- a/src/system/kernel/vm/VMAnonymousCache.cpp +++ b/src/system/kernel/vm/VMAnonymousCache.cpp @@ -1,4 +1,6 @@ /* + * Copyright 2012, Alexander von Gluck IV, kallisti5@unixzen.com. + * Copyright 2011, Hamish Morrison, hamish@lavabit.com. * Copyright 2008, Zhao Shuai, upczhsh@163.com. * Copyright 2008-2011, Ingo Weinhold, ingo_weinhold@gmx.de. * Copyright 2002-2009, Axel Dörfler, axeld@pinc-software.de. @@ -17,13 +19,20 @@ #include #include +#include #include #include #include #include +#include +#include +#include +#include #include #include +#include +#include #include #include #include @@ -69,6 +78,8 @@ #define SWAP_BLOCK_MASK (SWAP_BLOCK_PAGES - 1) +static const char* const kDefaultSwapPath = "/var/swap"; + struct swap_file : DoublyLinkedListLinkImpl { int fd; struct vnode* vnode; @@ -159,7 +170,7 @@ protected: class ReadPage : public SwapTraceEntry { public: ReadPage(VMAnonymousCache* cache, page_num_t pageIndex, - swap_addr_t swapSlotIndex) + swap_addr_t swapSlotIndex) : SwapTraceEntry(cache), fPageIndex(pageIndex), @@ -183,7 +194,7 @@ private: class WritePage : public SwapTraceEntry { public: WritePage(VMAnonymousCache* cache, page_num_t pageIndex, - swap_addr_t swapSlotIndex) + swap_addr_t swapSlotIndex) : SwapTraceEntry(cache), fPageIndex(pageIndex), @@ -220,7 +231,7 @@ dump_swap_info(int argc, char** argv) kprintf("swap files:\n"); for (SwapFileList::Iterator it = sSwapFileList.GetIterator(); - swap_file* file = it.Next();) { + swap_file* file = it.Next();) { swap_addr_t total = file->last_slot - file->first_slot; kprintf(" vnode: %p, pages: total: %lu, free: %lu\n", file->vnode, total, file->bmp->free_slots); @@ -283,9 +294,10 @@ swap_slot_alloc(uint32 count) // if this swap file has used more than 90% percent of its space // switch to another - if (sSwapFileAlloc->bmp->free_slots - < (sSwapFileAlloc->last_slot - sSwapFileAlloc->first_slot) / 10) + if (sSwapFileAlloc->bmp->free_slots + < (sSwapFileAlloc->last_slot - sSwapFileAlloc->first_slot) / 10) { sSwapFileAlloc = sSwapFileList.GetNext(sSwapFileAlloc); + } mutex_unlock(&sSwapFileListLock); @@ -297,10 +309,11 @@ static swap_file* find_swap_file(swap_addr_t slotIndex) { for (SwapFileList::Iterator it = sSwapFileList.GetIterator(); - swap_file* swapFile = it.Next();) { + swap_file* swapFile = it.Next();) { if (slotIndex >= swapFile->first_slot - && slotIndex < swapFile->last_slot) + && slotIndex < swapFile->last_slot) { return swapFile; + } } panic("find_swap_file(): can't find swap file for slot %ld\n", slotIndex); @@ -426,7 +439,7 @@ VMAnonymousCache::~VMAnonymousCache() { // free allocated swap space and swap block for (off_t offset = virtual_base, toFree = fAllocatedSwapSize; - offset < virtual_end && toFree > 0; offset += B_PAGE_SIZE) { + offset < virtual_end && toFree > 0; offset += B_PAGE_SIZE) { swap_addr_t slotIndex = _SwapBlockGetAddress(offset >> PAGE_SHIFT); if (slotIndex == SWAP_SLOT_NONE) continue; @@ -474,8 +487,8 @@ VMAnonymousCache::Resize(off_t newSize, int priority) swap_block* swapBlock = NULL; for (page_num_t pageIndex = (newSize + B_PAGE_SIZE - 1) >> PAGE_SHIFT; - pageIndex < oldPageCount && fAllocatedSwapSize > 0; - pageIndex++) { + pageIndex < oldPageCount && fAllocatedSwapSize > 0; pageIndex++) { + WriteLocker locker(sSwapHashLock); // Get the swap slot index for the page. @@ -718,7 +731,7 @@ VMAnonymousCache::WriteAsync(off_t offset, const generic_io_vec* vecs, // create our callback WriteCallback* callback = (flags & B_VIP_IO_REQUEST) != 0 - ? new(malloc_flags(HEAP_PRIORITY_VIP)) WriteCallback(this, _callback) + ? new(malloc_flags(HEAP_PRIORITY_VIP)) WriteCallback(this, _callback) : new(std::nothrow) WriteCallback(this, _callback); if (callback == NULL) { if (newSlot) { @@ -731,8 +744,8 @@ VMAnonymousCache::WriteAsync(off_t offset, const generic_io_vec* vecs, _callback->IOFinished(B_NO_MEMORY, true, 0); return B_NO_MEMORY; } -// TODO: If the page already had swap space assigned, we don't need an own -// callback. + // TODO: If the page already had swap space assigned, we don't need an own + // callback. callback->SetTo(pageIndex, slotIndex, newSlot); @@ -1038,7 +1051,7 @@ VMAnonymousCache::_MergePagesSmallerConsumer(VMAnonymousCache* source) // all pages of the source back to the consumer. for (VMCachePagesTree::Iterator it = pages.GetIterator(); - vm_page* page = it.Next();) { + vm_page* page = it.Next();) { // If a source page is in the way, remove and free it. vm_page* sourcePage = source->LookupPage( (off_t)page->cache_offset << PAGE_SHIFT); @@ -1067,9 +1080,9 @@ VMAnonymousCache::_MergeSwapPages(VMAnonymousCache* source) return; for (off_t offset = source->virtual_base - & ~(off_t)(B_PAGE_SIZE * SWAP_BLOCK_PAGES - 1); - offset < source->virtual_end; - offset += B_PAGE_SIZE * SWAP_BLOCK_PAGES) { + & ~(off_t)(B_PAGE_SIZE * SWAP_BLOCK_PAGES - 1); + offset < source->virtual_end; + offset += B_PAGE_SIZE * SWAP_BLOCK_PAGES) { WriteLocker locker(sSwapHashLock); @@ -1165,6 +1178,93 @@ VMAnonymousCache::_MergeSwapPages(VMAnonymousCache* source) // #pragma mark - +// TODO: This can be removed if we get BFS uuid's +struct VolumeInfo { + char name[B_FILE_NAME_LENGTH]; + char device[B_FILE_NAME_LENGTH]; + char filesystem[B_OS_NAME_LENGTH]; + off_t capacity; +}; + + +class PartitionScorer : public KPartitionVisitor { +public: + PartitionScorer(VolumeInfo& volumeInfo) + : + fBestPartition(NULL), + fBestScore(-1), + fVolumeInfo(volumeInfo) + { + } + + virtual bool VisitPre(KPartition* partition) + { + if (!partition->ContainsFileSystem()) + return false; + + KPath path; + partition->GetPath(&path); + + int score = 0; + if (strcmp(fVolumeInfo.name, partition->ContentName()) == 0) + score += 4; + if (strcmp(fVolumeInfo.device, path.Path()) == 0) + score += 3; + if (fVolumeInfo.capacity == partition->Size()) + score += 2; + if (strcmp(fVolumeInfo.filesystem, + partition->DiskSystem()->ShortName()) == 0) { + score += 1; + } + if (score >= 4 && score > fBestScore) { + fBestPartition = partition; + fBestScore = score; + } + + return false; + } + + KPartition* fBestPartition; + +private: + int32 fBestScore; + VolumeInfo fVolumeInfo; +}; + + +status_t +get_mount_point(KPartition* partition, KPath* mountPoint) +{ + if (!mountPoint || !partition->ContainsFileSystem()) + return B_BAD_VALUE; + + const char* volumeName = partition->ContentName(); + if (!volumeName || strlen(volumeName) == 0) + volumeName = partition->Name(); + if (!volumeName || strlen(volumeName) == 0) + volumeName = "unnamed volume"; + + char basePath[B_PATH_NAME_LENGTH]; + int32 len = snprintf(basePath, sizeof(basePath), "/%s", volumeName); + for (int32 i = 1; i < len; i++) + if (basePath[i] == '/') + basePath[i] = '-'; + char* path = mountPoint->LockBuffer(); + int32 pathLen = mountPoint->BufferSize(); + strncpy(path, basePath, pathLen); + + struct stat dummy; + for (int i = 1; ; i++) { + if (stat(path, &dummy) != 0) + break; + snprintf(path, pathLen, "%s%d", basePath, i); + } + + mountPoint->UnlockBuffer(); + return B_OK; +} + + status_t swap_file_add(const char* path) { @@ -1291,8 +1391,8 @@ void swap_init(void) { // create swap block cache - sSwapBlockCache = create_object_cache("swapblock", - sizeof(swap_block), sizeof(void*), NULL, NULL, NULL); + sSwapBlockCache = create_object_cache("swapblock", sizeof(swap_block), + sizeof(void*), NULL, NULL, NULL); if (sSwapBlockCache == NULL) panic("swap_init(): can't create object cache for swap blocks\n"); @@ -1338,46 +1438,166 @@ swap_init_post_modules() if (gReadOnlyBootDevice) return; - off_t size = 0; + bool swapEnabled = true; + bool swapAutomatic = true; + off_t swapSize = 0; + + dev_t swapDeviceID = -1; + VolumeInfo selectedVolume = {}; void* settings = load_driver_settings("virtual_memory"); + if (settings != NULL) { - if (!get_driver_boolean_parameter(settings, "vm", false, false)) { - unload_driver_settings(settings); - return; + // We pass a lot of information on the swap device, this is mostly to + // ensure that we are dealing with the same device that was configured. + + // TODO: Some kind of BFS uuid would be great here :) + const char* enabled = get_driver_parameter(settings, "vm", NULL, NULL); + + if (enabled != NULL) { + swapEnabled = get_driver_boolean_parameter(settings, "vm", + false, false); + + const char* size = get_driver_parameter(settings, "swap_size", + NULL, NULL); + const char* volume = get_driver_parameter(settings, + "swap_volume_name", NULL, NULL); + const char* device = get_driver_parameter(settings, + "swap_volume_device", NULL, NULL); + const char* filesystem = get_driver_parameter(settings, + "swap_volume_filesystem", NULL, NULL); + const char* capacity = get_driver_parameter(settings, + "swap_volume_capacity", NULL, NULL); + + if (size != NULL && device != NULL && volume != NULL + && filesystem != NULL && capacity != NULL) { + // User specified a size / volume + swapAutomatic = false; + swapSize = atoll(size); + strncpy(selectedVolume.name, volume, + sizeof(selectedVolume.name)); + strncpy(selectedVolume.device, device, + sizeof(selectedVolume.device)); + strncpy(selectedVolume.filesystem, filesystem, + sizeof(selectedVolume.filesystem)); + selectedVolume.capacity = atoll(capacity); + } else if (size != NULL) { + // Older file format, no location information (assume /var/swap) + swapAutomatic = false; + swapSize = atoll(size); + swapDeviceID = gBootDevice; + } } - - const char* string = get_driver_parameter(settings, "swap_size", NULL, - NULL); - size = string ? atoll(string) : 0; - unload_driver_settings(settings); - } else - size = (off_t)vm_page_num_pages() * B_PAGE_SIZE * 2; + } - if (size < B_PAGE_SIZE) + if (swapAutomatic) { + swapEnabled = true; + swapSize = (off_t)vm_page_num_pages() * B_PAGE_SIZE; + if (swapSize <= (1024 * 1024 * 1024)) { + // Memory under 1GB? double the swap + swapSize *= 2; + } + } + + if (!swapEnabled || swapSize < B_PAGE_SIZE) return; - int fd = open("/var/swap", O_RDWR | O_CREAT | O_NOCACHE, S_IRUSR | S_IWUSR); + if (!swapAutomatic && swapDeviceID < 0) { + // If user-specified swap, and no swap device has been chosen yet... + KDiskDeviceManager::CreateDefault(); + KDiskDeviceManager* manager = KDiskDeviceManager::Default(); + PartitionScorer visitor(selectedVolume); + + KDiskDevice* device; + int32 cookie = 0; + while ((device = manager->NextDevice(&cookie)) != NULL) { + if (device->IsReadOnlyMedia() || device->IsWriteOnce() + || device->IsRemovable()) { + continue; + } + device->VisitEachDescendant(&visitor); + } + + if (!visitor.fBestPartition) { + dprintf("%s: Can't find configured swap partition '%s'\n", + __func__, selectedVolume.name); + } else { + if (visitor.fBestPartition->IsMounted()) + swapDeviceID = visitor.fBestPartition->VolumeID(); + else { + KPath devPath, mountPoint; + visitor.fBestPartition->GetPath(&devPath); + get_mount_point(visitor.fBestPartition, &mountPoint); + const char* mountPath = mountPoint.Path(); + mkdir(mountPath, S_IRWXU | S_IRWXG | S_IRWXO); + swapDeviceID = _kern_mount(mountPath, devPath.Path(), + NULL, 0, NULL, 0); + if (swapDeviceID < 0) { + dprintf("%s: Can't mount configured swap partition '%s'\n", + __func__, selectedVolume.name); + } + } + } + } + + if (swapDeviceID < 0) + swapDeviceID = gBootDevice; + + // We now have a swapDeviceID which is used for the swap file + + KPath path; + struct fs_info info; + _kern_read_fs_info(swapDeviceID, &info); + if (swapDeviceID == gBootDevice) + path = kDefaultSwapPath; + else { + vfs_entry_ref_to_path(info.dev, info.root, + ".", path.LockBuffer(), path.BufferSize()); + path.UnlockBuffer(); + path.Append("swap"); + } + + const char* swapPath = path.Path(); + + // Swap size limits prevent oversized swap files + if (swapAutomatic) { + off_t existingSwapSize = 0; + struct stat existingSwapStat; + if (stat(swapPath, &existingSwapStat) == 0) + existingSwapSize = existingSwapStat.st_size; + + off_t freeSpace = info.free_blocks * info.block_size + existingSwapSize; + + // Adjust automatic swap to a maximum of 25% of the free space + if (swapSize > (freeSpace / 4)) + swapSize = (freeSpace / 4); + } + + // Create swap file + int fd = open(swapPath, O_RDWR | O_CREAT | O_NOCACHE, S_IRUSR | S_IWUSR); if (fd < 0) { - dprintf("Can't open/create /var/swap: %s\n", strerror(errno)); + dprintf("%s: Can't open/create %s: %s\n", __func__, + swapPath, strerror(errno)); return; } struct stat stat; - stat.st_size = size; + stat.st_size = swapSize; status_t error = _kern_write_stat(fd, NULL, false, &stat, sizeof(struct stat), B_STAT_SIZE | B_STAT_SIZE_INSECURE); if (error != B_OK) { - dprintf("Failed to resize /var/swap to %lld bytes: %s\n", size, - strerror(error)); + dprintf("%s: Failed to resize %s to %lld bytes: %s\n", __func__, + swapPath, swapSize, strerror(error)); } close(fd); - error = swap_file_add("/var/swap"); - if (error != B_OK) - dprintf("Failed to add swap file /var/swap: %s\n", strerror(error)); + error = swap_file_add(swapPath); + if (error != B_OK) { + dprintf("%s: Failed to add swap file %s: %s\n", __func__, swapPath, + strerror(error)); + } } @@ -1397,7 +1617,7 @@ swap_free_page_swap_space(vm_page* page) cache->fAllocatedSwapSize -= B_PAGE_SIZE; cache->_SwapBlockFree(page->cache_offset, 1); - return true; + return true; } @@ -1419,16 +1639,19 @@ swap_total_swap_pages() uint32 totalSwapSlots = 0; for (SwapFileList::Iterator it = sSwapFileList.GetIterator(); - swap_file* swapFile = it.Next();) + swap_file* swapFile = it.Next();) { totalSwapSlots += swapFile->last_slot - swapFile->first_slot; + } mutex_unlock(&sSwapFileListLock); return totalSwapSlots; } + #endif // ENABLE_SWAP_SUPPORT + void swap_get_info(struct system_memory_info* info) { diff --git a/src/tests/system/kernel/cache/block_cache_test.cpp b/src/tests/system/kernel/cache/block_cache_test.cpp index f03f37b4eb..d0b88f171b 100644 --- a/src/tests/system/kernel/cache/block_cache_test.cpp +++ b/src/tests/system/kernel/cache/block_cache_test.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2008, Axel Dörfler, axeld@pinc-software.de. + * Copyright 2008-2012, Axel Dörfler, axeld@pinc-software.de. * Distributed under the terms of the MIT License. */ @@ -400,6 +400,45 @@ test_abort_sub_transaction() cache_end_transaction(gCache, id, NULL, NULL); cache_sync_transaction(gCache, id); + + start_test("Abort sub with empty block"); + id = cache_start_transaction(gCache); + + gBlocks[1].present = true; + gBlocks[1].read = true; + + block = block_cache_get_writable(gCache, 1, id); + or_block(block, BLOCK_CHANGED_IN_PREVIOUS); + gBlocks[1].original = gBlocks[1].current; + gBlocks[1].current |= BLOCK_CHANGED_IN_PREVIOUS; + + block_cache_put(gCache, 1); + + gBlocks[1].is_dirty = true; + TEST_BLOCKS(1, 1); + + cache_start_sub_transaction(gCache, id); + + gBlocks[0].present = true; + + block = block_cache_get_empty(gCache, 0, id); + or_block(block, BLOCK_CHANGED_IN_SUB); + gBlocks[0].current = BLOCK_CHANGED_IN_SUB; + + block_cache_put(gCache, 0); + + cache_abort_sub_transaction(gCache, id); + + gBlocks[0].write = false; + gBlocks[0].is_dirty = false; + gBlocks[0].parent = 0; + gBlocks[0].original = 0; + TEST_BLOCKS(0, 1); + + gBlocks[1].write = true; + gBlocks[1].is_dirty = false; + cache_end_transaction(gCache, id, NULL, NULL); + cache_sync_transaction(gCache, id); }