hrevr1alpha4-44592 adds 21 changesets to branch 'r1alpha4' old head: eec876e163fe562ac8278022a36e25b4527ca3da new head: 9f36741b8aefda8e3c8684698c89f9b04dba9040 ---------------------------------------------------------------------------- c9ac74f: Kernel VM: Style cleanup; No functional change [ Alexander von Gluck IV <kallisti5@xxxxxxxxxxx> ] 81d8910: Kernel VM: Improve swap file selection * Heavily based on Hamish Morrison's GCI work with some modified logic and cleanup. #3723 * Adds automatic swap as well as user specified swap * Limits: Automatic: (ram * 2) up to 25% of the disk User: user specified up to 90% of the disk * Supports changing the swap disk location [ Alexander von Gluck IV <kallisti5@xxxxxxxxxxx> ] 33b1bc7: Kernel VM: Add compatibility logic * If old-format swap config file found, parse it properly [ Alexander von Gluck IV <kallisti5@xxxxxxxxxxx> ] 21556b6: Kernel VM: A few changes as per Axel in #7742 * Avoid floating point numbers in the kernel * Warning would always show if custom swap file in use * Don't change a custom swap file size if low space occurs * Ram > 1GB? Don't double the memory for the automatic size [ Alexander von Gluck IV <kallisti5@xxxxxxxxxxx> ] 10fb1ad: Update several more packages for R1A4 Conflicts: build/jam/OptionalPackages [ Scott McCreary <scottmc2@xxxxxxxxx> ] 9b844fb: Fix typo [ Scott McCreary <scottmc2@xxxxxxxxx> ] d034e58: New icons for source code and patch files. Both are from #8867, created by Justin Stressman. The previous source code icon was not friendly to those with green color blindness. I also think it was an ugly green. Fixes #8867 of course. [ Ryan Leavengood <leavengood@xxxxxxxxx> ] 775ca69: Updated the list of contributers. Added people to the list contributers. Moved people to the list of past maintainers. Added GCI to our Google thanks. [ Humdinger <humdingerb@xxxxxxxxx> ] 8b84d1a: Small corrections to AboutSystem. Thanks Rene. [ Humdinger <humdingerb@xxxxxxxxx> ] 09cdc7f: Fixed warnings, 80 character line limit. [ Axel Dörfler <axeld@xxxxxxxxxxxxxxxx> ] e7c570c: Added fallback model string parsing for Intel CPUs. * When we do not have a predefined model string, we now try to parse the reported model string into something that is at least usable, and should look comparable to what we have now. * For models where the parsed type string is acceptable, we could remove the predefined ones. [ Axel Dörfler <axeld@xxxxxxxxxxxxxxxx> ] 994ed1b: VM Preflet: Add support for device selection * Enables swap file to be placed on non-boot partition * Changes tied closely to recent kernel virtual memory change [ Hamish Morrison <hamish@xxxxxxxxxxx> ] df015ac: VM Preflet: More throughly translate BAlert window titles * Ensure we call translate BAlert window titles [ Alexander von Gluck IV <kallisti5@xxxxxxxxxxx> ] 749ab62: VM Preflet: Style fix. bootDev to gBootDev. No functional change [ Alexander von Gluck IV <kallisti5@xxxxxxxxxxx> ] a9816d4: VM Preflet: Add an automatic swap option swap_auto * Add swap_auto to the virtual memory settings file * Disable controls based on the context of what is enabled * hamishm gave permission to adjust his copyrights to Haiku, Inc. [ Alexander von Gluck IV <kallisti5@xxxxxxxxxxx> ] 39792a3: Kernel VM: Utilize swap_auto option * Refine the swap logic a little * Refine header copyright to preferred format I had hamishm's verbal permission to change his entry [ Alexander von Gluck IV <kallisti5@xxxxxxxxxxx> ] 45f231f: VM Preflet: Center properly on screen * On first run, dialog was at 0,0 * Rename window location/settings file from VM_data to virtualmemory_preferences [ Alexander von Gluck IV <kallisti5@xxxxxxxxxxx> ] c6a63eb: VM Preflet: More correctly calculate default swap [ Alexander von Gluck IV <kallisti5@xxxxxxxxxxx> ] c7df018: VM Preflet: Style cleanup; check for success of fs_stat_dev * Cleanup as per Axel on the ML * Remove superfluous else statements [ Alexander von Gluck IV <kallisti5@xxxxxxxxxxx> ] 52d3e2e: VM Preflet: Add a BStatusBar to show swap file usage * Correct a situation where disabling the auto swap without adjusting the swap size would result in an invalid swap size getting written to the configuration [ Alexander von Gluck IV <kallisti5@xxxxxxxxxxx> ] 9f36741: VM Preflet: Fix user prompt string typo. Thanks ttcoder! [ Alexander von Gluck IV <kallisti5@xxxxxxxxxxx> ] ---------------------------------------------------------------------------- 17 files changed, 1238 insertions(+), 768 deletions(-) build/jam/OptionalBuildFeatures | 36 +- build/jam/OptionalLibPackages | 204 +++---- build/jam/OptionalPackages | 124 ++-- headers/private/shared/cpu_type.h | 62 +- src/apps/aboutsystem/AboutSystem.cpp | 29 +- src/bin/sysinfo.cpp | 82 +-- src/data/beos_mime/text/x-patch | 20 +- src/data/beos_mime/text/x-source-code | 20 +- src/preferences/virtualmemory/Jamfile | 22 +- src/preferences/virtualmemory/Settings.cpp | 323 +++++----- src/preferences/virtualmemory/Settings.h | 82 ++- src/preferences/virtualmemory/SettingsWindow.cpp | 574 +++++++++--------- src/preferences/virtualmemory/SettingsWindow.h | 89 ++- src/preferences/virtualmemory/VirtualMemory.cpp | 1 + src/preferences/virtualmemory/VirtualMemory.h | 21 +- src/system/kernel/vm/Jamfile | 2 + src/system/kernel/vm/VMAnonymousCache.cpp | 315 ++++++++-- ############################################################################ Commit: c9ac74f01852e42934552f2dbd3f9f891b147841 URL: http://cgit.haiku-os.org/haiku/commit/?id=c9ac74f Author: Alexander von Gluck IV <kallisti5@xxxxxxxxxxx> Date: Tue Sep 4 13:42:36 2012 UTC Committer: Ryan Leavengood <leavengood@xxxxxxxxx> Commit-Date: Sun Sep 9 23:00:08 2012 UTC Kernel VM: Style cleanup; No functional change ---------------------------------------------------------------------------- diff --git a/src/system/kernel/vm/VMAnonymousCache.cpp b/src/system/kernel/vm/VMAnonymousCache.cpp index d9047df..eae0b54 100644 --- a/src/system/kernel/vm/VMAnonymousCache.cpp +++ b/src/system/kernel/vm/VMAnonymousCache.cpp @@ -159,7 +159,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 +183,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 +220,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 +283,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 +298,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 +428,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 +476,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 +720,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 +733,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 +1040,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 +1069,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); @@ -1291,8 +1293,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"); @@ -1352,8 +1354,9 @@ swap_init_post_modules() size = string ? atoll(string) : 0; unload_driver_settings(settings); - } else + } else { size = (off_t)vm_page_num_pages() * B_PAGE_SIZE * 2; + } if (size < B_PAGE_SIZE) return; @@ -1397,7 +1400,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 +1422,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) { ############################################################################ Commit: 81d8910bd54584e42fd141c13e81bd5073805fe1 URL: http://cgit.haiku-os.org/haiku/commit/?id=81d8910 Author: Alexander von Gluck IV <kallisti5@xxxxxxxxxxx> Date: Tue Sep 4 15:58:38 2012 UTC Committer: Ryan Leavengood <leavengood@xxxxxxxxx> Commit-Date: Sun Sep 9 23:00:20 2012 UTC Ticket: https://dev.haiku-os.org/ticket/3723 Kernel VM: Improve swap file selection * Heavily based on Hamish Morrison's GCI work with some modified logic and cleanup. #3723 * Adds automatic swap as well as user specified swap * Limits: Automatic: (ram * 2) up to 25% of the disk User: user specified up to 90% of the disk * Supports changing the swap disk location ---------------------------------------------------------------------------- diff --git a/src/system/kernel/vm/Jamfile b/src/system/kernel/vm/Jamfile index fa0282d..a646e71 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 eae0b54..a9d4bc8 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@xxxxxxxxxxxx + * Copyright 2011, Hamish Morrison, hamish@xxxxxxxxxxxx * Copyright 2008, Zhao Shuai, upczhsh@xxxxxxxx * Copyright 2008-2011, Ingo Weinhold, ingo_weinhold@xxxxxxx * Copyright 2002-2009, Axel Dörfler, axeld@xxxxxxxxxxxxxxxxx @@ -17,13 +19,20 @@ #include <string.h> #include <unistd.h> +#include <FindDirectory.h> #include <KernelExport.h> #include <NodeMonitor.h> #include <arch_config.h> #include <boot_device.h> +#include <disk_device_manager/KDiskDevice.h> +#include <disk_device_manager/KDiskDeviceManager.h> +#include <disk_device_manager/KDiskSystem.h> +#include <disk_device_manager/KPartitionVisitor.h> #include <driver_settings.h> #include <fs/fd.h> +#include <fs/KPath.h> +#include <fs_info.h> #include <fs_interface.h> #include <heap.h> #include <kernel_daemon.h> @@ -69,6 +78,8 @@ #define SWAP_BLOCK_MASK (SWAP_BLOCK_PAGES - 1) +static const char* const kDefaultSwapPath = "/var/swap"; + struct swap_file : DoublyLinkedListLinkImpl<swap_file> { int fd; struct vnode* vnode; @@ -1167,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) { @@ -1340,47 +1438,161 @@ swap_init_post_modules() if (gReadOnlyBootDevice) return; - off_t size = 0; + bool swapEnabled = true; + bool swapAutomatic = true; + off_t swapSize = 0; + 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); + } } + unload_driver_settings(settings); + } - const char* string = get_driver_parameter(settings, "swap_size", NULL, - NULL); - size = string ? atoll(string) : 0; + if (swapAutomatic) { + swapEnabled = true; + swapSize = (off_t)vm_page_num_pages() * B_PAGE_SIZE * 2; + } - unload_driver_settings(settings); + if (!swapEnabled || swapSize < B_PAGE_SIZE) + return; + + dev_t dev = -1; + + if (!swapAutomatic) { + 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()) + dev = 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); + dev = _kern_mount(mountPath, devPath.Path(), + NULL, 0, NULL, 0); + if (dev < 0) { + dprintf("%s: Can't mount configured swap partition '%s'\n", + __func__, selectedVolume.name); + } + } + } + } + + if (dev < 0) + dev = gBootDevice; + + KPath path; + struct fs_info info; + _kern_read_fs_info(dev, &info); + if (dev == 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 + 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; + off_t maxSwap = freeSpace; + if (swapAutomatic) { + // Adjust automatic swap to a maximum of 25% of the free space + maxSwap = (off_t)(0.25 * freeSpace); } else { - size = (off_t)vm_page_num_pages() * B_PAGE_SIZE * 2; + // If user specified, leave 10% of the disk free + maxSwap = freeSpace - (off_t)(0.10 * freeSpace); + dprintf("%s: Warning: User specified swap file consumes over 90%% of " + "the available free space, limiting to 90%%\n", __func__); } - if (size < B_PAGE_SIZE) - return; + if (swapSize > maxSwap) + swapSize = maxSwap; - int fd = open("/var/swap", O_RDWR | O_CREAT | O_NOCACHE, S_IRUSR | S_IWUSR); + // 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)); + } } ############################################################################ Commit: 33b1bc7bf7db79dfac105a7d8f6ecfb83c4372dd URL: http://cgit.haiku-os.org/haiku/commit/?id=33b1bc7 Author: Alexander von Gluck IV <kallisti5@xxxxxxxxxxx> Date: Tue Sep 4 18:27:33 2012 UTC Committer: Ryan Leavengood <leavengood@xxxxxxxxx> Commit-Date: Sun Sep 9 23:02:32 2012 UTC Kernel VM: Add compatibility logic * If old-format swap config file found, parse it properly ---------------------------------------------------------------------------- diff --git a/src/system/kernel/vm/VMAnonymousCache.cpp b/src/system/kernel/vm/VMAnonymousCache.cpp index a9d4bc8..4c597d9 100644 --- a/src/system/kernel/vm/VMAnonymousCache.cpp +++ b/src/system/kernel/vm/VMAnonymousCache.cpp @@ -1441,6 +1441,8 @@ swap_init_post_modules() bool swapEnabled = true; bool swapAutomatic = true; off_t swapSize = 0; + + dev_t swapDeviceID = -1; VolumeInfo selectedVolume = {}; void* settings = load_driver_settings("virtual_memory"); @@ -1479,6 +1481,11 @@ swap_init_post_modules() 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; } } unload_driver_settings(settings); @@ -1492,9 +1499,8 @@ swap_init_post_modules() if (!swapEnabled || swapSize < B_PAGE_SIZE) return; - dev_t dev = -1; - - if (!swapAutomatic) { + 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); @@ -1514,16 +1520,16 @@ swap_init_post_modules() __func__, selectedVolume.name); } else { if (visitor.fBestPartition->IsMounted()) - dev = visitor.fBestPartition->VolumeID(); + 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); - dev = _kern_mount(mountPath, devPath.Path(), + swapDeviceID = _kern_mount(mountPath, devPath.Path(), NULL, 0, NULL, 0); - if (dev < 0) { + if (swapDeviceID < 0) { dprintf("%s: Can't mount configured swap partition '%s'\n", __func__, selectedVolume.name); } @@ -1531,13 +1537,15 @@ swap_init_post_modules() } } - if (dev < 0) - dev = gBootDevice; + 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(dev, &info); - if (dev == gBootDevice) + _kern_read_fs_info(swapDeviceID, &info); + if (swapDeviceID == gBootDevice) path = kDefaultSwapPath; else { vfs_entry_ref_to_path(info.dev, info.root, ############################################################################ Commit: 21556b610da23d0def04f9dca801714141c6b057 URL: http://cgit.haiku-os.org/haiku/commit/?id=21556b6 Author: Alexander von Gluck IV <kallisti5@xxxxxxxxxxx> Date: Tue Sep 4 20:35:10 2012 UTC Committer: Ryan Leavengood <leavengood@xxxxxxxxx> Commit-Date: Sun Sep 9 23:03:22 2012 UTC Ticket: https://dev.haiku-os.org/ticket/7742 Kernel VM: A few changes as per Axel in #7742 * Avoid floating point numbers in the kernel * Warning would always show if custom swap file in use * Don't change a custom swap file size if low space occurs * Ram > 1GB? Don't double the memory for the automatic size ---------------------------------------------------------------------------- diff --git a/src/system/kernel/vm/VMAnonymousCache.cpp b/src/system/kernel/vm/VMAnonymousCache.cpp index 4c597d9..ae0d979 100644 --- a/src/system/kernel/vm/VMAnonymousCache.cpp +++ b/src/system/kernel/vm/VMAnonymousCache.cpp @@ -1493,7 +1493,11 @@ swap_init_post_modules() if (swapAutomatic) { swapEnabled = true; - swapSize = (off_t)vm_page_num_pages() * B_PAGE_SIZE * 2; + 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) @@ -1557,26 +1561,19 @@ swap_init_post_modules() const char* swapPath = path.Path(); // Swap size limits prevent oversized swap files - 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; - off_t maxSwap = freeSpace; 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 - maxSwap = (off_t)(0.25 * freeSpace); - } else { - // If user specified, leave 10% of the disk free - maxSwap = freeSpace - (off_t)(0.10 * freeSpace); - dprintf("%s: Warning: User specified swap file consumes over 90%% of " - "the available free space, limiting to 90%%\n", __func__); + if (swapSize > (freeSpace / 4)) + swapSize = (freeSpace / 4); } - if (swapSize > maxSwap) - swapSize = maxSwap; - // Create swap file int fd = open(swapPath, O_RDWR | O_CREAT | O_NOCACHE, S_IRUSR | S_IWUSR); if (fd < 0) { ############################################################################ Commit: 10fb1ad5bfbf6d8034979827dac8f22897e901d6 URL: http://cgit.haiku-os.org/haiku/commit/?id=10fb1ad Author: Scott McCreary <scottmc2@xxxxxxxxx> Date: Wed Sep 5 04:19:22 2012 UTC Committer: Ryan Leavengood <leavengood@xxxxxxxxx> Commit-Date: Sun Sep 9 23:05:51 2012 UTC Update several more packages for R1A4 Conflicts: build/jam/OptionalPackages ---------------------------------------------------------------------------- diff --git a/build/jam/OptionalBuildFeatures b/build/jam/OptionalBuildFeatures index ca6c869..a13e19e 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 d1902ea..b02eada 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 00ddc7f..a0defdd 100644 --- a/build/jam/OptionalPackages +++ b/build/jam/OptionalPackages @@ -383,12 +383,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 ; @@ -526,13 +526,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 ; } } @@ -882,12 +882,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 ; } } @@ -904,8 +904,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 ; } } @@ -1015,8 +1015,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 @@ -1210,11 +1210,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 ; } } @@ -1225,12 +1225,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)/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)/libmng-1.0.10-r1a4-x86-gcc2-2012-08-28.zip ; + : $(baseURL)/lib/libmng-1.0.10-r1a4-x86-gcc2-2012-08-28.zip ; } } @@ -1293,13 +1293,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 ; } } @@ -1507,8 +1507,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 @@ -1530,8 +1530,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 @@ -1553,8 +1553,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 @@ -1572,7 +1572,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 @@ -1606,6 +1606,22 @@ if [ IsOptionalHaikuImagePackageAdded Perl ] { } +# Puri +if [ IsOptionalHaikuImagePackageAdded Puri ] { + if $(TARGET_ARCH) != x86 { + Echo "No optional package Puri available for $(TARGET_ARCH)" ; + } else if $(HAIKU_GCC_VERSION[1]) < 4 && ! $(isHybridBuild) { + Echo "No optional package Puri for gcc2" ; + } else { + InstallOptionalHaikuImagePackage + 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 ; + } +} + + # Python if [ IsOptionalHaikuImagePackageAdded Python ] { if $(TARGET_ARCH) != x86 { @@ -1613,8 +1629,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 @@ -1633,8 +1649,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 @@ -1652,8 +1668,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 @@ -1668,8 +1684,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 @@ -1722,12 +1738,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 ; } } @@ -1739,8 +1755,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 @@ -1773,8 +1789,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 @@ -1867,8 +1883,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 @@ -2029,8 +2045,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" ############################################################################ Commit: 9b844fbc7b3051beda857e77a7b6e9fd3d4603cc URL: http://cgit.haiku-os.org/haiku/commit/?id=9b844fb Author: Scott McCreary <scottmc2@xxxxxxxxx> Date: Wed Sep 5 04:38:00 2012 UTC Committer: Ryan Leavengood <leavengood@xxxxxxxxx> Commit-Date: Sun Sep 9 23:06:26 2012 UTC Fix typo ---------------------------------------------------------------------------- diff --git a/build/jam/OptionalPackages b/build/jam/OptionalPackages index a0defdd..038e993 100644 --- a/build/jam/OptionalPackages +++ b/build/jam/OptionalPackages @@ -1230,7 +1230,7 @@ if [ IsOptionalHaikuImagePackageAdded Libmng ] { } 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 ; } } ############################################################################ Commit: d034e5839dfa3697dc8e794e5e26789dc90d3247 URL: http://cgit.haiku-os.org/haiku/commit/?id=d034e58 Author: Ryan Leavengood <leavengood@xxxxxxxxx> Date: Wed Sep 5 05:07:36 2012 UTC Ticket: https://dev.haiku-os.org/ticket/8867 New icons for source code and patch files. Both are from #8867, created by Justin Stressman. The previous source code icon was not friendly to those with green color blindness. I also think it was an ugly green. Fixes #8867 of course. ---------------------------------------------------------------------------- diff --git a/src/data/beos_mime/text/x-patch b/src/data/beos_mime/text/x-patch index 1d0d240..42dfc3e 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 f002060..e83af7d 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" }; ############################################################################ Commit: 775ca691cdb67f62977f7dab357604a74c063c5d URL: http://cgit.haiku-os.org/haiku/commit/?id=775ca69 Author: Humdinger <humdingerb@xxxxxxxxx> Date: Wed Sep 5 16:19:40 2012 UTC Committer: Ryan Leavengood <leavengood@xxxxxxxxx> Commit-Date: Sun Sep 9 23:08:22 2012 UTC Updated the list of contributers. Added people to the list contributers. Moved people to the list of past maintainers. Added GCI to our Google thanks. ---------------------------------------------------------------------------- diff --git a/src/apps/aboutsystem/AboutSystem.cpp b/src/apps/aboutsystem/AboutSystem.cpp index ec3303c..73551b8 100644 --- a/src/apps/aboutsystem/AboutSystem.cpp +++ b/src/apps/aboutsystem/AboutSystem.cpp @@ -999,7 +999,6 @@ AboutView::_CreateCreditsView() "Ithamar R. Adema\n" "Bruno G. Albuquerque\n" "Stephan Aßmus\n" - "Salvatore Benedetto\n" "Stefano Ceccherini\n" "Rudolf Cornelissen\n" "Alexandre Deckner\n" @@ -1010,25 +1009,19 @@ AboutView::_CreateCreditsView() "René Gollent\n" "Bryce Groff\n" "Colin Günther\n" - "Karsten Heimrich\n" "Fredrik Holmqvist\n" "Philippe Houdoin\n" - "Maurice Kalinowski\n" - "Euan Kirkhope\n" "Ryan Leavengood\n" "Michael Lotz\n" - "Brecht Machiels\n" "Matt Madia\n" "Scott McCreary\n" "David McPaul\n" - "Wim van der Meer\n" "Fredrik Modéen\n" "Marcus Overhagen\n" "Michael Pfeiffer\n" "François Revol\n" "Philippe Saint-Pierre\n" "John Scipione\n" - "Andrej Spielmann\n" "Jonas Sundström\n" "Oliver Tappe\n" "Gerasim Troeglazov\n" @@ -1046,13 +1039,19 @@ AboutView::_CreateCreditsView() fCreditsView->SetFontAndColor(be_plain_font, B_FONT_ALL, &kDarkGrey); fCreditsView->Insert( "Andrew Bachmann\n" + "Salvatore Benedetto\n" "Tyler Dauwalder\n" "Daniel Furrer\n" "Andre Alves Garzia\n" + "Karsten Heimrich\n" "Erik Jaesler\n" + "Maurice Kalinowski\n" + "Euan Kirkhope\n" "Marcin Konicki\n" "Waldemar Kornewald\n" "Thomas Kurschel\n" + "Brecht Machiels\n" + "Wim van der Meer\n" "Frans Van Nispen\n" "Adi Oanca\n" "Michael Phipps\n" @@ -1060,6 +1059,7 @@ AboutView::_CreateCreditsView() "David Reid\n" "Hugo Santos\n" "Alexander G. M. Smith\n" + "Andrej Spielmann\n" "Bryan Varner\n" "Nathan Whitehorn\n" "Michael Wilber\n" @@ -1096,8 +1096,10 @@ AboutView::_CreateCreditsView() "Michael Davidson\n" "David Dengg\n" "John Drinkwater\n" + "Yongcong Du\n" "Cian Duffy\n" "Vincent Duvert\n" + "Pawel Dziepak\n" "Mikael Eiman\n" "Fredrik Ekdahl\n" "Joshua R. Elsasser\n" @@ -1112,7 +1114,9 @@ AboutView::_CreateCreditsView() "Deyan Genovski\n" "Pete Goodeve\n" "Lucian Adrian Grijincu\n" + "Jessica Hamilton\n" "Sean Healy\n" + "Andreas Henriksson\n" "Matthijs Hollemans\n" "Mathew Hounsell\n" "Morgan Howe\n" @@ -1171,12 +1175,14 @@ AboutView::_CreateCreditsView() "Reznikov Sergei\n" "Zousar Shaker\n" "Caitlin Shaw\n" + "Alex Smith\n" "Geoffry Song\n" "Daniel Switkin\n" "Atsushi Takamatsu\n" "James Urquhart\n" "Jason Vandermark\n" "Sandor Vroemisse\n" + "Jürgen Wall\n" "Denis Washington\n" "Ulrich Wimboeck\n" "Johannes Wischert\n" @@ -1188,7 +1194,7 @@ AboutView::_CreateCreditsView() "Zhao Shuai\n"); fCreditsView->Insert( B_TRANSLATE("\n" B_UTF8_ELLIPSIS - " and probably some more we forgot to mention (sorry!)" + "and probably some more we forgot to mention (sorry!)" "\n\n")); fCreditsView->SetFontAndColor(&font, B_FONT_ALL, &kHaikuOrange); @@ -1256,11 +1262,12 @@ AboutView::_CreateCreditsView() fCreditsView->Insert( B_TRANSLATE("The BeGeistert team\n")); fCreditsView->Insert( - B_TRANSLATE("Google & their Google Summer of Code program\n")); + B_TRANSLATE("Google & their Google Summer of Code and Google Code In " + "program\n")); fCreditsView->Insert( B_TRANSLATE("The University of Auckland and Christof Lutteroth\n\n")); fCreditsView->Insert( - B_TRANSLATE("... and the many people making donations!\n\n")); + B_TRANSLATE(B_UTF8_ELLIPSIS "and the many people making donations!\n\n")); // copyrights for various projects we use ############################################################################ Commit: 8b84d1a475ab1a26417ed7c20fe296fb5ea57eb1 URL: http://cgit.haiku-os.org/haiku/commit/?id=8b84d1a Author: Humdinger <humdingerb@xxxxxxxxx> Date: Wed Sep 5 17:38:14 2012 UTC Committer: Ryan Leavengood <leavengood@xxxxxxxxx> Commit-Date: Sun Sep 9 23:08:45 2012 UTC Small corrections to AboutSystem. Thanks Rene. ---------------------------------------------------------------------------- diff --git a/src/apps/aboutsystem/AboutSystem.cpp b/src/apps/aboutsystem/AboutSystem.cpp index 73551b8..e6d259c 100644 --- a/src/apps/aboutsystem/AboutSystem.cpp +++ b/src/apps/aboutsystem/AboutSystem.cpp @@ -1167,12 +1167,12 @@ AboutView::_CreateCreditsView() "Jeremy Rand\n" "Hartmut Reh\n" "Daniel Reinhold\n" + "Sergei Reznikov\n" "Chris Roberts\n" "Samuel Rodríguez Pérez\n" "Thomas Roell\n" "Rafael Romo\n" "Ralf Schülke\n" - "Reznikov Sergei\n" "Zousar Shaker\n" "Caitlin Shaw\n" "Alex Smith\n" @@ -1262,8 +1262,8 @@ AboutView::_CreateCreditsView() fCreditsView->Insert( B_TRANSLATE("The BeGeistert team\n")); fCreditsView->Insert( - B_TRANSLATE("Google & their Google Summer of Code and Google Code In " - "program\n")); + B_TRANSLATE("Google and their Google Summer of Code and Google Code In " + "programs\n")); fCreditsView->Insert( B_TRANSLATE("The University of Auckland and Christof Lutteroth\n\n")); fCreditsView->Insert( ############################################################################ Commit: 09cdc7f2d363bad28537606f2bf74ef0304e5038 URL: http://cgit.haiku-os.org/haiku/commit/?id=09cdc7f Author: Axel Dörfler <axeld@xxxxxxxxxxxxxxxx> Date: Thu Sep 6 18:14:54 2012 UTC Committer: Ryan Leavengood <leavengood@xxxxxxxxx> Commit-Date: Sun Sep 9 23:09:18 2012 UTC Fixed warnings, 80 character line limit. ---------------------------------------------------------------------------- diff --git a/src/bin/sysinfo.cpp b/src/bin/sysinfo.cpp index 52a9f8d..931d057 100644 --- a/src/bin/sysinfo.cpp +++ b/src/bin/sysinfo.cpp @@ -1,6 +1,6 @@ /* - * Copyright 2004-2008, Axel Dörfler, axeld@xxxxxxxxxxxxxxxxx - * Copyright (c) 2002, Carlos Hasan, for Haiku. + * Copyright 2004-2012, Axel Dörfler, axeld@xxxxxxxxxxxxxxxxx + * Copyright 2002, Carlos Hasan. * * Distributed under the terms of the MIT license. */ @@ -15,8 +15,8 @@ #include <cpu_type.h> -// ToDo: -disable_cpu_sn option is not yet implemented -// ToDo: most of this file should go into an architecture dependent source file +// TODO: -disable_cpu_sn option is not yet implemented +// TODO: most of this file should go into an architecture dependent source file #ifdef __INTEL__ struct cache_description { @@ -196,8 +196,8 @@ print_intel_cache_descriptors(enum cpu_types type, cpuid_info *info) if (cacheDescriptors[i] == 0x40) { printf("\tNo integrated L%u cache\n", type >= B_CPU_INTEL_PENTIUM_IV - && (type & B_CPU_x86_VENDOR_MASK) == B_CPU_INTEL_x86 ? - 3 : 2); + && (type & B_CPU_x86_VENDOR_MASK) == B_CPU_INTEL_x86 + ? 3 : 2); } else printf("\t%s\n", sIntelCacheDescriptions[j].description); break; @@ -242,7 +242,8 @@ print_level2_cache(uint32 reg, const char *name) { uint32 size = (reg >> 16) & 0xffff; uint32 ways = (reg >> 12) & 0xf; - uint32 linesPerTag = (reg >> 8) & 0xf; // intel does not define this + uint32 linesPerTag = (reg >> 8) & 0xf; + // intel does not define this uint32 lineSize = reg & 0xff; printf("\t%s: %lu KB, ", name, size); @@ -295,12 +296,14 @@ print_cache_desc(int32 cpu) print_level2_cache(info.regs.ecx, "L2 cache"); } + static void print_intel_cache_desc(int32 cpu) { cpuid_info info; - - // A second parameters needs to be passed to CPUID which determines the cache level to query + + // A second parameters needs to be passed to CPUID which determines the + // cache level to query get_cpuid(&info, 0x00000004, cpu); putchar('\n'); @@ -459,24 +462,31 @@ print_features(uint32 features) #ifdef __INTEL__ static void -print_processor_signature(system_info *sys_info, cpuid_info *info, const char *prefix) +print_processor_signature(system_info *sys_info, cpuid_info *info, + const char *prefix) { if ((sys_info->cpu_type & B_CPU_x86_VENDOR_MASK) == B_CPU_AMD_x86) { - printf("\t%s%sype %lu, family %lu, model %u, stepping %lu, features 0x%08lx\n", - prefix ? prefix : "", prefix && prefix[0] ? "t" : "T", + printf("\t%s%sype %lu, family %lu, model %lu, stepping %lu, features " + "0x%08lx\n", prefix ? prefix : "", prefix && prefix[0] ? "t" : "T", info->eax_1.type, - info->eax_1.family + (info->eax_1.family == 0xf ? info->eax_1.extended_family : 0), - info->eax_1.model + (info->eax_1.model == 0xf ? info->eax_1.extended_model << 4 : 0), + info->eax_1.family + (info->eax_1.family == 0xf + ? info->eax_1.extended_family : 0), + info->eax_1.model + (info->eax_1.model == 0xf + ? info->eax_1.extended_model << 4 : 0), info->eax_1.stepping, info->eax_1.features); - } else if ((sys_info->cpu_type & B_CPU_x86_VENDOR_MASK) == B_CPU_INTEL_x86) { + } else if ((sys_info->cpu_type & B_CPU_x86_VENDOR_MASK) + == B_CPU_INTEL_x86) { // model calculation is different for INTEL - printf("\t%s%sype %lu, family %lu, model %u, stepping %lu, features 0x%08lx\n", - prefix ? prefix : "", prefix && prefix[0] ? "t" : "T", + printf("\t%s%sype %lu, family %lu, model %lu, stepping %lu, features " + "0x%08lx\n", prefix ? prefix : "", prefix && prefix[0] ? "t" : "T", info->eax_1.type, - info->eax_1.family + (info->eax_1.family == 0xf ? info->eax_1.extended_family : 0), - info->eax_1.model + ((info->eax_1.family == 0xf || info->eax_1.family == 0x6) ? info->eax_1.extended_model << 4 : 0), + info->eax_1.family + (info->eax_1.family == 0xf + ? info->eax_1.extended_family : 0), + info->eax_1.model + + ((info->eax_1.family == 0xf || info->eax_1.family == 0x6) + ? info->eax_1.extended_model << 4 : 0), info->eax_1.stepping, info->eax_1.features); } @@ -500,12 +510,10 @@ dump_platform(system_info *info) static void dump_cpu(system_info *info, int32 cpu) { - /* references: - * - * http://grafi.ii.pw.edu.pl/gbm/x86/cpuid.html - * http://www.sandpile.org/ia32/cpuid.htm - * http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/TN13.pdf (Duron erratum) - */ + // References: + // http://grafi.ii.pw.edu.pl/gbm/x86/cpuid.html + // http://www.sandpile.org/ia32/cpuid.htm + // http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/TN13.pdf (Duron erratum) cpuid_info baseInfo; if (get_cpuid(&baseInfo, 0, cpu) != B_OK) { @@ -514,15 +522,18 @@ dump_cpu(system_info *info, int32 cpu) } int32 maxStandardFunction = baseInfo.eax_0.max_eax; - if (maxStandardFunction >= 500) - maxStandardFunction = 0; /* old Pentium sample chips has cpu signature here */ + if (maxStandardFunction >= 500) { + // old Pentium sample chips has cpu signature here + maxStandardFunction = 0; + } - /* Extended cpuid */ + // Extended cpuid cpuid_info cpuInfo; get_cpuid(&cpuInfo, 0x80000000, cpu); - // extended cpuid is only supported if max_eax is greater than the service id + // Extended cpuid is only supported if max_eax is greater than the + // service id int32 maxExtendedFunction = 0; if (cpuInfo.eax_0.max_eax > 0x80000000) maxExtendedFunction = cpuInfo.eax_0.max_eax & 0xff; @@ -586,7 +597,8 @@ dump_cpu(system_info *info, int32 cpu) get_cpuid(&cpuInfo, 0x80000007, cpu); print_amd_power_management_features(cpuInfo.regs.edx); } - } else if ((info->cpu_type & B_CPU_x86_VENDOR_MASK) == B_CPU_TRANSMETA_x86) + } else if ((info->cpu_type & B_CPU_x86_VENDOR_MASK) + == B_CPU_TRANSMETA_x86) print_transmeta_features(cpuInfo.regs.edx); } @@ -595,7 +607,8 @@ dump_cpu(system_info *info, int32 cpu) if (!strncmp(baseInfo.eax_0.vendor_id, "CyrixInstead", 12)) { get_cpuid(&cpuInfo, 0x00000002, cpu); print_intel_cache_descriptors(info->cpu_type, &cpuInfo); - } else if ((info->cpu_type & B_CPU_x86_VENDOR_MASK) == B_CPU_INTEL_x86) { + } else if ((info->cpu_type & B_CPU_x86_VENDOR_MASK) + == B_CPU_INTEL_x86) { // Intel does not support extended function 5 (but it does 6 hmm) print_intel_cache_desc(cpu); } else { @@ -620,7 +633,8 @@ dump_cpu(system_info *info, int32 cpu) if (flagsInfo.eax_1.features & (1UL << 18)) { get_cpuid(&cpuInfo, 3, cpu); printf("Serial number: %04lx-%04lx-%04lx-%04lx-%04lx-%04lx\n", - flagsInfo.eax_1.features >> 16, flagsInfo.eax_1.features & 0xffff, + flagsInfo.eax_1.features >> 16, + flagsInfo.eax_1.features & 0xffff, cpuInfo.regs.edx >> 16, cpuInfo.regs.edx & 0xffff, cpuInfo.regs.ecx >> 16, cpuInfo.regs.edx & 0xffff); } @@ -646,8 +660,8 @@ dump_cpus(system_info *info) snprintf(modelString, 32, "(Unknown %x)", info->cpu_type); } - printf("%ld %s%s%s, revision %04lx running at %LdMHz (ID: 0x%08lx 0x%08lx)\n\n", - info->cpu_count, + printf("%ld %s%s%s, revision %04lx running at %LdMHz (ID: 0x%08lx " + "0x%08lx)\n\n", info->cpu_count, vendor ? vendor : "", vendor ? " " : "", model, info->cpu_revision, info->cpu_clock_speed / 1000000, ############################################################################ Commit: e7c570cbc81c980910905421d0f16260b6abdfb0 URL: http://cgit.haiku-os.org/haiku/commit/?id=e7c570c Author: Axel Dörfler <axeld@xxxxxxxxxxxxxxxx> Date: Thu Sep 6 20:00:51 2012 UTC Committer: Ryan Leavengood <leavengood@xxxxxxxxx> Commit-Date: Sun Sep 9 23:09:20 2012 UTC Added fallback model string parsing for Intel CPUs. * When we do not have a predefined model string, we now try to parse the reported model string into something that is at least usable, and should look comparable to what we have now. * For models where the parsed type string is acceptable, we could remove the predefined ones. ---------------------------------------------------------------------------- diff --git a/headers/private/shared/cpu_type.h b/headers/private/shared/cpu_type.h index 2c1f7c6..7a4f7f6 100644 --- a/headers/private/shared/cpu_type.h +++ b/headers/private/shared/cpu_type.h @@ -1,5 +1,5 @@ /* - * Copyright 2004-2005, Axel Dörfler, axeld@xxxxxxxxxxxxxxxxx All rights reserved. + * Copyright 2004-2012, Axel Dörfler, axeld@xxxxxxxxxxxxxxxxx * Distributed under the terms of the MIT License. */ @@ -12,6 +12,7 @@ #include <OS.h> + #ifdef __cplusplus extern "C" { #endif @@ -27,6 +28,58 @@ int32 get_rounded_cpu_speed(void); #endif +#if __INTEL__ +/*! Tries to parse an Intel CPU ID string to match our usual naming scheme. + Note, this function is not thread safe, and must only be called once + at a time. +*/ +static const char* +parse_intel(const char* name) +{ + static char buffer[49]; + + // ignore initial spaces + int index = 0; + for (; name[index] != '\0'; index++) { + if (name[index] != ' ') + break; + } + + // ignore vendor + for (; name[index] != '\0'; index++) { + if (name[index] == ' ') { + index++; + break; + } + } + + // parse model + int outIndex = 0; + for (; name[index] != '\0'; index++) { + if (!strncmp(&name[index], "(R)", 3)) { + outIndex += strlcpy(&buffer[outIndex], "®", + sizeof(buffer) - outIndex); + index += 2; + } else if (!strncmp(&name[index], "(TM)", 4)) { + outIndex += strlcpy(&buffer[outIndex], "™", + sizeof(buffer) - outIndex); + index += 3; + } else if (!strncmp(&name[index], " CPU", 4)) { + // Cut out the CPU string + index += 3; + } else if (!strncmp(&name[index], " @", 2)) { + // Cut off the remainder + break; + } else + buffer[outIndex++] = name[index]; + } + + buffer[outIndex] = '\0'; + return buffer; +} +#endif + + const char * get_cpu_vendor_string(enum cpu_types type) { @@ -61,7 +114,7 @@ get_cpu_vendor_string(enum cpu_types type) #ifdef __INTEL__ -/* Parameter 'name' needs to point to an allocated array of 49 characters. */ +/*! Parameter 'name' needs to point to an allocated array of 49 characters. */ void get_cpuid_model_string(char *name) { @@ -345,6 +398,11 @@ get_cpu_model_string(system_info *info) #endif /* __INTEL__ */ default: + if ((info->cpu_type & B_CPU_x86_VENDOR_MASK) == B_CPU_INTEL_x86) { + // Fallback to manual parsing of the model string + get_cpuid_model_string(cpuidName); + return parse_intel(cpuidName); + } return NULL; } } ############################################################################ Commit: 994ed1bff9b219e6127f11ccf9aa884b8c5d32a9 URL: http://cgit.haiku-os.org/haiku/commit/?id=994ed1b Author: Hamish Morrison <hamish@xxxxxxxxxxx> Date: Thu Sep 6 16:53:58 2012 UTC Committer: Ryan Leavengood <leavengood@xxxxxxxxx> Commit-Date: Sun Sep 9 23:12:33 2012 UTC VM Preflet: Add support for device selection * Enables swap file to be placed on non-boot partition * Changes tied closely to recent kernel virtual memory change ---------------------------------------------------------------------------- diff --git a/src/preferences/virtualmemory/Jamfile b/src/preferences/virtualmemory/Jamfile index ca114bd..672552e 100644 --- a/src/preferences/virtualmemory/Jamfile +++ b/src/preferences/virtualmemory/Jamfile @@ -1,23 +1,25 @@ SubDir HAIKU_TOP src preferences virtualmemory ; -Preference VirtualMemory : +UsePrivateHeaders shared system ; + +Preference VirtualMemory : VirtualMemory.cpp SettingsWindow.cpp Settings.cpp $(DRIVER_SETTINGS) - : be $(TARGET_LIBSTDC++) $(HAIKU_LOCALE_LIBS) + : be libshared.a $(TARGET_LIBSTDC++) $(HAIKU_LOCALE_LIBS) : VirtualMemory.rdef - ; +; if ! $(TARGET_PLATFORM_HAIKU_COMPATIBLE) { - SEARCH on [ FGristFiles driver_settings.c ] += + SEARCH on [ FGristFiles driver_settings.c ] += [ FDirName $(HAIKU_TOP) src system libroot os ] ; } -DoCatalogs VirtualMemory : - x-vnd.Haiku-VirtualMemory - : - VirtualMemory.cpp - SettingsWindow.cpp -; +DoCatalogs VirtualMemory : + x-vnd.Haiku-VirtualMemory + : + VirtualMemory.cpp + SettingsWindow.cpp +; diff --git a/src/preferences/virtualmemory/Settings.cpp b/src/preferences/virtualmemory/Settings.cpp index 4706248..89d39f8 100644 --- a/src/preferences/virtualmemory/Settings.cpp +++ b/src/preferences/virtualmemory/Settings.cpp @@ -7,186 +7,179 @@ #include "Settings.h" +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + #include <File.h> -#include <Entry.h> #include <FindDirectory.h> #include <Path.h> -#include <Volume.h> #include <VolumeRoster.h> -#include <driver_settings.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> +#include <driver_settings.h> -static const char* kWindowSettingsFile = "VM_data"; -static const char* kVirtualMemorySettings = "virtual_memory"; -static const int64 kMegaByte = 1024 * 1024; +static const char* const kWindowSettingsFile = "VM_data"; +static const char* const kVirtualMemorySettings = "virtual_memory"; +static const off_t kMegaByte = 1024 * 1024; Settings::Settings() - : - fPositionUpdated(false) { - _ReadWindowSettings(); - _ReadSwapSettings(); -} + fDefaultSettings.enabled = true; - -Settings::~Settings() -{ - _WriteWindowSettings(); - _WriteSwapSettings(); + system_info sysInfo; + get_system_info(&sysInfo); + fDefaultSettings.size = (off_t)sysInfo.max_pages * B_PAGE_SIZE * 2; + fDefaultSettings.volume = dev_for_path("/boot"); } void -Settings::SetWindowPosition(BPoint position) +Settings::SetSwapEnabled(bool enabled, bool revertable) { - if (position == fWindowPosition) - return; - - fWindowPosition = position; - fPositionUpdated = true; + fCurrentSettings.enabled = enabled; + if (!revertable) + fInitialSettings.enabled = enabled; } void -Settings::SetSwapEnabled(bool enabled) +Settings::SetSwapSize(off_t size, bool revertable) { - fSwapEnabled = enabled; + fCurrentSettings.size = size; + if (!revertable) + fInitialSettings.size = size; } void -Settings::SetSwapSize(off_t size) +Settings::SetSwapVolume(dev_t volume, bool revertable) { - fSwapSize = size; -} - - -void -Settings::SetSwapVolume(BVolume &volume) -{ - if (volume.Device() == SwapVolume().Device() - || volume.InitCheck() != B_OK) - return; + fCurrentSettings.volume = volume; + if (!revertable) + fInitialSettings.volume = volume; - fSwapVolume.SetTo(volume.Device()); } void -Settings::RevertSwapChanges() -{ - fSwapEnabled = fInitialSwapEnabled; - fSwapSize = fInitialSwapSize; - fSwapVolume.SetTo(fInitialSwapVolume); -} - - -bool -Settings::IsRevertible() +Settings::SetWindowPosition(BPoint position) { - return fSwapEnabled != fInitialSwapEnabled - || fSwapSize != fInitialSwapSize - || fSwapVolume.Device() != fInitialSwapVolume; + fWindowPosition = position; } -void -Settings::_ReadWindowSettings() +status_t +Settings::ReadWindowSettings() { - bool success = false; - BPath path; - if (find_directory(B_USER_SETTINGS_DIRECTORY, &path) == B_OK) { - path.Append(kWindowSettingsFile); - BFile file; - if (file.SetTo(path.Path(), B_READ_ONLY) == B_OK) - if (file.Read(&fWindowPosition, sizeof(BPoint)) == sizeof(BPoint)) - success = true; - } + if (find_directory(B_USER_SETTINGS_DIRECTORY, &path) != B_OK) + return B_ERROR; - if (!success) - fWindowPosition.Set(-1, -1); + path.Append(kWindowSettingsFile); + BFile file; + if (file.SetTo(path.Path(), B_READ_ONLY) != B_OK) + return B_ERROR; + + if (file.Read(&fWindowPosition, sizeof(BPoint)) == sizeof(BPoint)) + return B_OK; + else + return B_ERROR; } -void -Settings::_WriteWindowSettings() +status_t +Settings::WriteWindowSettings() { - if (!fPositionUpdated) - return; - BPath path; if (find_directory(B_USER_SETTINGS_DIRECTORY, &path) < B_OK) - return; + return B_ERROR; path.Append(kWindowSettingsFile); BFile file; - if (file.SetTo(path.Path(), B_WRITE_ONLY | B_CREATE_FILE | B_ERASE_FILE) == B_OK) - file.Write(&fWindowPosition, sizeof(BPoint)); + if (file.SetTo(path.Path(), B_WRITE_ONLY | B_CREATE_FILE | B_ERASE_FILE) + != B_OK) + return B_ERROR; + + file.Write(&fWindowPosition, sizeof(BPoint)); + return B_OK; } -void -Settings::_ReadSwapSettings() +status_t +Settings::ReadSwapSettings() { void* settings = load_driver_settings(kVirtualMemorySettings); - if (settings != NULL) { - SetSwapEnabled(get_driver_boolean_parameter(settings, "vm", false, false)); - const char* swapSize = get_driver_parameter(settings, "swap_size", NULL, NULL); - SetSwapSize(swapSize ? atoll(swapSize) : 0); - -#ifdef SWAP_VOLUME_IMPLEMENTED - // we need to hang onto this one - fBadVolName = strdup(get_driver_parameter(settings, "swap_volume", NULL, NULL)); - - BVolumeRoster volumeRoster; - BVolume temporaryVolume; - - if (fBadVolName != NULL) { - status_t result = volumeRoster.GetNextVolume(&temporaryVolume); - char volumeName[B_FILE_NAME_LENGTH]; - while (result != B_BAD_VALUE) { - temporaryVolume.GetName(volumeName); - if (strcmp(volumeName, fBadVolName) == 0 - && temporaryVolume.IsPersistent() && volumeName[0]) { - SetSwapVolume(temporaryVolume); - break; - } - result = volumeRoster.GetNextVolume(&temporaryVolume); + if (settings == NULL) + return kErrorSettingsNotFound; + + const char* enabled = get_driver_parameter(settings, "vm", NULL, NULL); + 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 (enabled == NULL || size == NULL || device == NULL || volume == NULL + || capacity == NULL || filesystem == NULL) + return kErrorSettingsInvalid; + + off_t volCapacity = atoll(capacity); + + SetSwapEnabled(get_driver_boolean_parameter(settings, + "vm", false, false)); + SetSwapSize(atoll(size)); + unload_driver_settings(settings); + + int32 bestScore = -1; + dev_t bestVol = -1; + + BVolume vol; + fs_info volStat; + BVolumeRoster roster; + while (roster.GetNextVolume(&vol) == B_OK) { + if (!vol.IsPersistent() || vol.IsReadOnly() || vol.IsRemovable() + || vol.IsShared()) + continue; + if (fs_stat_dev(vol.Device(), &volStat) == 0) { + int32 score = 0; + if (strcmp(volume, volStat.volume_name) == 0) + score += 4; + if (strcmp(device, volStat.device_name) == 0) + score += 3; + if (volCapacity == volStat.total_blocks * volStat.block_size) + score += 2; + if (strcmp(filesystem, volStat.fsh_name) == 0) + score += 1; + if (score >= 4 && score > bestScore) { + bestVol = vol.Device(); + bestScore = score; } - } else - volumeRoster.GetBootVolume(&fSwapVolume); -#endif - unload_driver_settings(settings); - } else - _SetSwapNull(); - -#ifndef SWAP_VOLUME_IMPLEMENTED - BVolumeRoster volumeRoster; - volumeRoster.GetBootVolume(&fSwapVolume); -#endif - - fInitialSwapEnabled = fSwapEnabled; - fInitialSwapSize = fSwapSize; - fInitialSwapVolume = fSwapVolume.Device(); -} + } + } + SetSwapVolume(bestVol); + fInitialSettings = fCurrentSettings; + + if (bestVol < 0) + return kErrorVolumeNotFound; + else + return B_OK; +} -void -Settings::_WriteSwapSettings() -{ - if (!IsRevertible()) - return; +status_t +Settings::WriteSwapSettings() +{ BPath path; if (find_directory(B_USER_SETTINGS_DIRECTORY, &path) != B_OK) - return; + return B_ERROR; path.Append("kernel/drivers"); path.Append(kVirtualMemorySettings); @@ -194,36 +187,56 @@ Settings::_WriteSwapSettings() BFile file; if (file.SetTo(path.Path(), B_WRITE_ONLY | B_CREATE_FILE | B_ERASE_FILE) != B_OK) - return; - - char buffer[256]; -#ifdef SWAP_VOLUME_IMPLEMENTED - char volumeName[B_FILE_NAME_LENGTH] = {0}; - if (SwapVolume().InitCheck() != B_NO_INIT) - SwapVolume().GetName(volumeName); - else if (fBadVolName) - strcpy(volumeName, fBadVolName); - snprintf(buffer, sizeof(buffer), "vm %s\nswap_size %Ld\nswap_volume %s\n", - SwapEnabled() ? "on" : "off", SwapSize(), - volumeName[0] ? volumeName : NULL); -#else - snprintf(buffer, sizeof(buffer), "vm %s\nswap_size %Ld\n", - fSwapEnabled ? "on" : "off", fSwapSize); -#endif + return B_ERROR; + + fs_info info; + fs_stat_dev(SwapVolume(), &info); + + char buffer[1024]; + snprintf(buffer, sizeof(buffer), "vm %s\nswap_size %lld\n" + "swap_volume_name %s\nswap_volume_device %s\n" + "swap_volume_filesystem %s\nswap_volume_capacity %lld\n", + SwapEnabled() ? "on" : "off", SwapSize(), info.volume_name, + info.device_name, info.fsh_name, info.total_blocks * info.block_size); file.Write(buffer, strlen(buffer)); + return B_OK; +} + + +bool +Settings::IsRevertable() +{ + return SwapEnabled() != fInitialSettings.enabled + || SwapSize() != fInitialSettings.size + || SwapVolume() != fInitialSettings.volume; } void -Settings::_SetSwapNull() +Settings::RevertSwapSettings() { - SetSwapEnabled(false); - BVolumeRoster volumeRoster; - BVolume temporaryVolume; - volumeRoster.GetBootVolume(&temporaryVolume); - SetSwapVolume(temporaryVolume); - SetSwapSize(0); + SetSwapEnabled(fInitialSettings.enabled); + SetSwapSize(fInitialSettings.size); + SetSwapVolume(fInitialSettings.volume); } +bool +Settings::IsDefaultable() +{ + return SwapEnabled() != fDefaultSettings.enabled + || SwapSize() != fDefaultSettings.size + || SwapVolume() != fDefaultSettings.volume; +} + + +void +Settings::DefaultSwapSettings(bool revertable) +{ + SetSwapEnabled(fDefaultSettings.enabled); + SetSwapSize(fDefaultSettings.size); + SetSwapVolume(fDefaultSettings.volume); + if (!revertable) + fInitialSettings = fDefaultSettings; +} diff --git a/src/preferences/virtualmemory/Settings.h b/src/preferences/virtualmemory/Settings.h index d53e088..20ce0b6 100644 --- a/src/preferences/virtualmemory/Settings.h +++ b/src/preferences/virtualmemory/Settings.h @@ -1,54 +1,63 @@ /* - * Copyright 2005, Axel Dörfler, axeld@xxxxxxxxxxxxxxxxx All rights reserved. - * Distributed under the terms of the MIT License. + * Copyright 2011, Hamish Morrison, hamish@xxxxxxxxxxx + * Copyright 2005, Axel Dörfler, axeld@xxxxxxxxxxxxxxxx + * All rights reserved. Distributed under the terms of the MIT License. */ #ifndef SETTINGS_H #define SETTINGS_H -#include <Point.h> -#include <Volume.h> - - -class Settings { - public : - Settings(); - virtual ~Settings(); - - BPoint WindowPosition() const { return fWindowPosition; } - void SetWindowPosition(BPoint position); +#include <stdio.h> +#include <stdlib.h> - bool SwapEnabled() const { return fSwapEnabled; } - off_t SwapSize() const { return fSwapSize; } - BVolume& SwapVolume() { return fSwapVolume; } - void SetSwapEnabled(bool enabled); - void SetSwapSize(off_t size); - void SetSwapVolume(BVolume& volume); - - void RevertSwapChanges(); - bool IsRevertible(); - - private: - void _ReadWindowSettings(); - void _WriteWindowSettings(); - - void _ReadSwapSettings(); - void _WriteSwapSettings(); +#include <Point.h> - void _SetSwapNull(); - BPoint fWindowPosition; +static const int32 kErrorSettingsNotFound = B_ERRORS_END + 1; +static const int32 kErrorSettingsInvalid = B_ERRORS_END + 2; +static const int32 kErrorVolumeNotFound = B_ERRORS_END + 3; - bool fSwapEnabled; - off_t fSwapSize; - BVolume fSwapVolume; - bool fInitialSwapEnabled; - off_t fInitialSwapSize; - dev_t fInitialSwapVolume; - bool fPositionUpdated; - const char* fBadVolName; +class Settings { +public: + Settings(); + + bool SwapEnabled() const + { return fCurrentSettings.enabled; } + off_t SwapSize() const { return fCurrentSettings.size; } + dev_t SwapVolume() { return fCurrentSettings.volume; } + BPoint WindowPosition() const { return fWindowPosition; } + + void SetSwapEnabled(bool enabled, + bool revertable = true); + void SetSwapSize(off_t size, bool revertable = true); + void SetSwapVolume(dev_t volume, + bool revertable = true); + void SetWindowPosition(BPoint position); + + status_t ReadWindowSettings(); + status_t WriteWindowSettings(); + status_t ReadSwapSettings(); + status_t WriteSwapSettings(); + + bool IsRevertable(); + void RevertSwapSettings(); + + bool IsDefaultable(); + void DefaultSwapSettings(bool revertable = true); +private: + struct SwapSettings { + bool enabled; + off_t size; + dev_t volume; + }; + + BPoint fWindowPosition; + + SwapSettings fCurrentSettings; + SwapSettings fInitialSettings; + SwapSettings fDefaultSettings; }; #endif /* SETTINGS_H */ diff --git a/src/preferences/virtualmemory/SettingsWindow.cpp b/src/preferences/virtualmemory/SettingsWindow.cpp index 3443d9a..f093281 100644 --- a/src/preferences/virtualmemory/SettingsWindow.cpp +++ b/src/preferences/virtualmemory/SettingsWindow.cpp @@ -6,7 +6,6 @@ #include "SettingsWindow.h" -#include "Settings.h" #include <Application.h> #include <Alert.h> @@ -14,22 +13,25 @@ #include <Button.h> #include <Catalog.h> #include <CheckBox.h> -#include <GroupLayout.h> -#include <GroupLayoutBuilder.h> -#include <Locale.h> -#include <StringView.h> -#include <String.h> -#include <Slider.h> -#include <PopUpMenu.h> +#include <Directory.h> +#include <FindDirectory.h> +#include <LayoutBuilder.h> #include <MenuItem.h> #include <MenuField.h> -#include <Screen.h> -#include <FindDirectory.h> +#include <NodeMonitor.h> #include <Path.h> +#include <PopUpMenu.h> +#include <Screen.h> +#include <StringForSize.h> +#include <StringView.h> +#include <String.h> +#include <Slider.h> +#include <system_info.h> #include <Volume.h> #include <VolumeRoster.h> -#include <stdio.h> +#include "Settings.h" + #undef B_TRANSLATION_CONTEXT #define B_TRANSLATION_CONTEXT "SettingsWindow" @@ -40,90 +42,70 @@ static const uint32 kMsgRevert = 'rvrt'; static const uint32 kMsgSliderUpdate = 'slup'; static const uint32 kMsgSwapEnabledUpdate = 'swen'; static const uint32 kMsgVolumeSelected = 'vlsl'; -static const int64 kMegaByte = 1024 * 1024; - - -class SizeSlider : public BSlider { - public: - SizeSlider(const char* name, const char* label, - BMessage* message, int32 min, int32 max, uint32 flags); - virtual ~SizeSlider(); - - virtual const char* UpdateText() const; - - private: - mutable BString fText; -}; +static const off_t kMegaByte = 1024 * 1024; +static dev_t bootDev = -1; SizeSlider::SizeSlider(const char* name, const char* label, BMessage* message, int32 min, int32 max, uint32 flags) - : BSlider(name, label, message, min, max, B_HORIZONTAL, B_BLOCK_THUMB, flags) + : + BSlider(name, label, message, min, max, B_HORIZONTAL, + B_BLOCK_THUMB, flags) { rgb_color color = ui_color(B_CONTROL_HIGHLIGHT_COLOR); UseFillColor(true, &color); } -SizeSlider::~SizeSlider() +const char* +SizeSlider::UpdateText() const { + return string_for_size(Value() * kMegaByte, fText, sizeof(fText)); } -const char* -byte_string(int64 size) +VolumeMenuItem::VolumeMenuItem(BVolume volume, BMessage* message) + : + BMenuItem("", message), + fVolume(volume) { - double value = 1. * size; - static char string[256]; - - if (value < 1024) - snprintf(string, sizeof(string), B_TRANSLATE("%Ld B"), size); - else { - static const char *units[] = { - B_TRANSLATE_MARK("KB"), - B_TRANSLATE_MARK("MB"), - B_TRANSLATE_MARK("GB"), - NULL - }; - int32 i = -1; - - do { - value /= 1024.0; - i++; - } while (value >= 1024 && units[i + 1]); - - off_t rounded = off_t(value * 100LL); [ *** diff truncated: 695 lines dropped *** ] ############################################################################ Commit: df015ac1ce16bbd73327b09f503abb9ead1905a7 URL: http://cgit.haiku-os.org/haiku/commit/?id=df015ac Author: Alexander von Gluck IV <kallisti5@xxxxxxxxxxx> Date: Thu Sep 6 17:23:34 2012 UTC Committer: Ryan Leavengood <leavengood@xxxxxxxxx> Commit-Date: Sun Sep 9 23:12:37 2012 UTC VM Preflet: More throughly translate BAlert window titles * Ensure we call translate BAlert window titles ---------------------------------------------------------------------------- ############################################################################ Commit: 749ab628209de7bc532a9609a043ab10543fbcdc URL: http://cgit.haiku-os.org/haiku/commit/?id=749ab62 Author: Alexander von Gluck IV <kallisti5@xxxxxxxxxxx> Date: Thu Sep 6 17:28:24 2012 UTC Committer: Ryan Leavengood <leavengood@xxxxxxxxx> Commit-Date: Sun Sep 9 23:12:40 2012 UTC VM Preflet: Style fix. bootDev to gBootDev. No functional change ---------------------------------------------------------------------------- ############################################################################ Commit: a9816d43728c43beef4b974503e4db24bf97b7e4 URL: http://cgit.haiku-os.org/haiku/commit/?id=a9816d4 Author: Alexander von Gluck IV <kallisti5@xxxxxxxxxxx> Date: Thu Sep 6 19:53:03 2012 UTC Committer: Ryan Leavengood <leavengood@xxxxxxxxx> Commit-Date: Sun Sep 9 23:12:42 2012 UTC VM Preflet: Add an automatic swap option swap_auto * Add swap_auto to the virtual memory settings file * Disable controls based on the context of what is enabled * hamishm gave permission to adjust his copyrights to Haiku, Inc. ---------------------------------------------------------------------------- ############################################################################ Commit: 39792a320892ddbe253ab85815cee7f96b84a13e URL: http://cgit.haiku-os.org/haiku/commit/?id=39792a3 Author: Alexander von Gluck IV <kallisti5@xxxxxxxxxxx> Date: Thu Sep 6 20:37:58 2012 UTC Committer: Ryan Leavengood <leavengood@xxxxxxxxx> Commit-Date: Sun Sep 9 23:12:49 2012 UTC Kernel VM: Utilize swap_auto option * Refine the swap logic a little * Refine header copyright to preferred format I had hamishm's verbal permission to change his entry ---------------------------------------------------------------------------- ############################################################################ Commit: 45f231f0b5d6e1d6b8048a217c861c4f785ff2de URL: http://cgit.haiku-os.org/haiku/commit/?id=45f231f Author: Alexander von Gluck IV <kallisti5@xxxxxxxxxxx> Date: Fri Sep 7 00:34:00 2012 UTC Committer: Ryan Leavengood <leavengood@xxxxxxxxx> Commit-Date: Sun Sep 9 23:12:52 2012 UTC VM Preflet: Center properly on screen * On first run, dialog was at 0,0 * Rename window location/settings file from VM_data to virtualmemory_preferences ---------------------------------------------------------------------------- ############################################################################ Commit: c6a63ebb278ef82884c1e58acf99a9d22b252b59 URL: http://cgit.haiku-os.org/haiku/commit/?id=c6a63eb Author: Alexander von Gluck IV <kallisti5@xxxxxxxxxxx> Date: Fri Sep 7 00:46:14 2012 UTC Committer: Ryan Leavengood <leavengood@xxxxxxxxx> Commit-Date: Sun Sep 9 23:12:55 2012 UTC VM Preflet: More correctly calculate default swap ---------------------------------------------------------------------------- ############################################################################ Commit: c7df01860aa029959512e984aceb76b21b2d9bf2 URL: http://cgit.haiku-os.org/haiku/commit/?id=c7df018 Author: Alexander von Gluck IV <kallisti5@xxxxxxxxxxx> Date: Fri Sep 7 12:18:20 2012 UTC Committer: Ryan Leavengood <leavengood@xxxxxxxxx> Commit-Date: Sun Sep 9 23:13:23 2012 UTC VM Preflet: Style cleanup; check for success of fs_stat_dev * Cleanup as per Axel on the ML * Remove superfluous else statements ---------------------------------------------------------------------------- ############################################################################ Commit: 52d3e2efaeb1be0b473ae4caa517f4e1b85b3c9e URL: http://cgit.haiku-os.org/haiku/commit/?id=52d3e2e Author: Alexander von Gluck IV <kallisti5@xxxxxxxxxxx> Date: Fri Sep 7 17:40:56 2012 UTC Committer: Ryan Leavengood <leavengood@xxxxxxxxx> Commit-Date: Sun Sep 9 23:13:25 2012 UTC VM Preflet: Add a BStatusBar to show swap file usage * Correct a situation where disabling the auto swap without adjusting the swap size would result in an invalid swap size getting written to the configuration ---------------------------------------------------------------------------- ############################################################################ Revision: hrevr1alpha4-44592 Commit: 9f36741b8aefda8e3c8684698c89f9b04dba9040 URL: http://cgit.haiku-os.org/haiku/commit/?id=9f36741 Author: Alexander von Gluck IV <kallisti5@xxxxxxxxxxx> Date: Fri Sep 7 23:04:17 2012 UTC Committer: Ryan Leavengood <leavengood@xxxxxxxxx> Commit-Date: Sun Sep 9 23:13:42 2012 UTC VM Preflet: Fix user prompt string typo. Thanks ttcoder! ----------------------------------------------------------------------------