diff options
author | Samuli Suominen <ssuominen@gentoo.org> | 2008-12-08 10:33:10 +0000 |
---|---|---|
committer | Samuli Suominen <ssuominen@gentoo.org> | 2008-12-08 10:33:10 +0000 |
commit | 172f1e19536e6cc785e78401c07b92f017ec87dd (patch) | |
tree | 7b7d1502dee6a2037d1d2ef29dffdc489dfd76ac | |
parent | fixed MAKEOPTS setting (#250132) (diff) | |
download | gentoo-2-172f1e19536e6cc785e78401c07b92f017ec87dd.tar.gz gentoo-2-172f1e19536e6cc785e78401c07b92f017ec87dd.tar.bz2 gentoo-2-172f1e19536e6cc785e78401c07b92f017ec87dd.zip |
Use system lrmi library to fix building with GLIBC 2.8, incorporated with GCC 3.x and linux-headers patchset. Untested version. Closes bug #240018.
(Portage version: 2.1.6_rc3/cvs/Linux 2.6.27.7 i686)
-rw-r--r-- | app-laptop/lphdisk/ChangeLog | 11 | ||||
-rw-r--r-- | app-laptop/lphdisk/files/lphdisk-0.9.1-gentoo.patch | 252 | ||||
-rw-r--r-- | app-laptop/lphdisk/lphdisk-0.9.1-r2.ebuild | 36 |
3 files changed, 297 insertions, 2 deletions
diff --git a/app-laptop/lphdisk/ChangeLog b/app-laptop/lphdisk/ChangeLog index 347543ff075b..84150bde4761 100644 --- a/app-laptop/lphdisk/ChangeLog +++ b/app-laptop/lphdisk/ChangeLog @@ -1,6 +1,13 @@ # ChangeLog for app-laptop/lphdisk -# Copyright 2002-2007 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/app-laptop/lphdisk/ChangeLog,v 1.6 2007/02/21 22:16:39 peper Exp $ +# Copyright 2002-2008 Gentoo Foundation; Distributed under the GPL v2 +# $Header: /var/cvsroot/gentoo-x86/app-laptop/lphdisk/ChangeLog,v 1.7 2008/12/08 10:33:10 ssuominen Exp $ + +*lphdisk-0.9.1-r2 (08 Dec 2008) + + 08 Dec 2008; <ssuominen@gentoo.org> +files/lphdisk-0.9.1-gentoo.patch, + +lphdisk-0.9.1-r2.ebuild: + Use system lrmi library to fix building with GLIBC 2.8, incorporated with + GCC 3.x and linux-headers patchset. Untested version. Closes bug #240018. 21 Feb 2007; Piotr Jaroszyński <peper@gentoo.org> ChangeLog: Transition to Manifest2. diff --git a/app-laptop/lphdisk/files/lphdisk-0.9.1-gentoo.patch b/app-laptop/lphdisk/files/lphdisk-0.9.1-gentoo.patch new file mode 100644 index 000000000000..07e6423acc73 --- /dev/null +++ b/app-laptop/lphdisk/files/lphdisk-0.9.1-gentoo.patch @@ -0,0 +1,252 @@ +diff -ur lphdisk-0.9.1.orig/lphdisk.c lphdisk-0.9.1/lphdisk.c +--- lphdisk-0.9.1.orig/lphdisk.c 2002-02-12 13:04:27.000000000 +0200 ++++ lphdisk-0.9.1/lphdisk.c 2008-12-08 12:21:29.000000000 +0200 +@@ -19,8 +19,10 @@ + Be careful! + */ + ++#define _LARGEFILE64_SOURCE + #include <stdio.h> + #include <stdlib.h> ++#include <sys/types.h> + #include <unistd.h> + #include <string.h> + #include <stdarg.h> +@@ -29,8 +31,8 @@ + #include <fcntl.h> + #include <sys/stat.h> + #include <sys/io.h> +-#include "lrmi.h" +-#include "vbe.h" ++#include <lrmi.h> ++#include <vbe.h> + + /* General Program Defines: */ + +@@ -100,58 +102,6 @@ + /* General Purpose Utility Routines */ + /*****************************************************************************/ + +-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ +-/* The following is a hack to take advantage of the ext2 "_llseek" system */ +-/* call to do seeks to "long long" offsets under linux (this is needed to */ +-/* seek to sectors beyond 4194303 (2GB)). This isn't directly supported by */ +-/* glibc, so we need to make our own interface function for it. We should */ +-/* be able to get the _NR__llseek define from linux/unistd.h. From this we */ +-/* can construct a wrapper to perform the right system call. */ +- +-#include <linux/unistd.h> /* for __NR__llseek */ +- +-typedef long long lloff_t; +- +-#ifdef __NR__llseek +- +-static _syscall5(int,_llseek, unsigned int,fd, unsigned long,offset_high, +- unsigned long,offset_low, lloff_t *,result, +- unsigned int,origin) +- +-lloff_t llseek (unsigned int fd, lloff_t offset, unsigned int origin) { +- lloff_t result; +- int retval; +- +- retval = _llseek (fd, ((unsigned long long) offset) >> 32, +- ((unsigned long long) offset) & 0xffffffff, +- &result, origin); +- return (retval == -1 ? (lloff_t) retval : result); +-} +- +-#else /* __NR__llseek */ +- +-/* Somehow, __NR__llseek wasn't in linux/unistd.h. This shouldn't ever */ +-/* happen, but better safe than sorry.. The best we can do is emulate it */ +-/* with lseek, and hope we don't get an offset that's too large (throw an */ +-/* error if we do) */ +- +-lloff_t llseek (unsigned int fd, lloff_t offset, unsigned int origin) { +- off_t offt_offset = (off_t) offset; +- +- if ((lloff_t)offt_offset != offset) { +- /* converting to off_t and back yields different result, indicating an */ +- /* overflow.. */ +- errno = EINVAL; +- return -1; +- } else { +- return lseek(fd, offt_offset, origin); +- } +-} +- +-#endif /* __NR__llseek */ +- +-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ +- + #define get16(p) get_int_le(p,2) + #define get32(p) get_int_le(p,4) + +@@ -189,9 +139,9 @@ + /* success, nonzero on error. */ + + int seek_sector (int fd, size_t secno) { +- lloff_t offset = (lloff_t) secno * SECTOR_SIZE; ++ off64_t offset = (off64_t) secno * SECTOR_SIZE; + +- if (llseek(fd, offset, SEEK_SET) == (lloff_t) -1) ++ if (lseek64(fd, offset, SEEK_SET) == (off64_t) -1) + return -1; + + return 0; +@@ -556,25 +506,29 @@ + + int meminfo_physmem(void) { + FILE *f; +- unsigned int size; ++ unsigned int size = 0; + int ramsize; ++ char s[128]; + + if (!(f = fopen(meminfo_filename, "r"))) { + debug("Unable to open %s: %s\n", meminfo_filename, strerror(errno)); + return 0; + } +- fscanf(f, "%*[^\n]\n"); /* Read the header line and discard it */ + +- if (fscanf(f, "Mem: %u", &size) != 1) { ++ while (fgets(s, sizeof(s), f)) { ++ if (sscanf(s, "MemTotal: %u", &size) == 1) { ++ break; ++ } ++ } ++ if (size == 0) { + debug("Parse of %s failed.\n", meminfo_filename); + return 0; + } + fclose(f); + +- /* convert to KB and then round up to the next power of 2 (since RAM */ ++ /* size is in KB and then round up to the next power of 2 (since RAM */ + /* sizes don't come in anything else, so this should correct for the */ + /* kernel size, etc) */ +- size >>= 10; + debug("%s reports memory size of %d KB", meminfo_filename, size); + for (ramsize = 1; size; size >>= 1) ramsize <<= 1; + +@@ -718,22 +672,22 @@ + {"force", 0, 0, 'f'}, + {0,0,0,0}}; + +-const char usage_string[] = "\ +-Usage: %1$s [options] [device] +-Prepare a hibernation partition for APM suspend-to-disk. +- +-options: +- -h, --help Display brief usage and option information (this screen) +- -p, --probeonly Only calculate and display required size, do not format +- -q, --quiet Turn off informational messages, useful for scripts +- -d, --debug Turn on (verbose) debugging messages +- -n, --nowrite Do not actually write to the disk +- -f, --force **DANGEROUS** Format without regard to potential problems +- +-'device' should be a raw disk device (not a partition). The default device +-is /dev/hda. +- +-(%2$s)\n\n"; ++const char usage_string[] = "" ++"Usage: %1$s [options] [device]\n" ++"Prepare a hibernation partition for APM suspend-to-disk.\n" ++"\n" ++"options:\n" ++" -h, --help Display brief usage and option information (this screen)\n" ++" -p, --probeonly Only calculate and display required size, do not format\n" ++" -q, --quiet Turn off informational messages, useful for scripts\n" ++" -d, --debug Turn on (verbose) debugging messages\n" ++" -n, --nowrite Do not actually write to the disk\n" ++" -f, --force **DANGEROUS** Format without regard to potential problems\n" ++"\n" ++"'device' should be a raw disk device (not a partition). The default device\n" ++"is /dev/hda.\n" ++"\n" ++"(%2$s)\n\n"; + + void print_usage (void) { + char *progname = rindex(argv0, '/'); +@@ -750,7 +704,7 @@ + dev_t dev; + int partition; + int ramsize, vramsize, required_size; +- size_t required_sectors; ++ size_t required_sectors = 0; + + argv0 = argv[0]; + +@@ -821,9 +775,9 @@ + } + + if (!required_size) { +- if (!quiet_flag) printf("Reccomended partition size is unknown.\n"); ++ if (!quiet_flag) printf("Recommended partition size is unknown.\n"); + } else { +- if (!quiet_flag) printf("Reccomended partition size is %d MB" ++ if (!quiet_flag) printf("Recommended partition size is %d MB" + " (%d sectors)\n", ((required_size+1023) >> 10), + required_sectors); + } +@@ -923,7 +877,7 @@ + + if ((pi[partition-1].size < required_sectors) && !quiet_flag) { + fprintf(stderr, "Warning: hibernate partition size (%d) is smaller than" +- " reccomended size (%d).\n", pi[partition-1].size, ++ " recommended size (%d).\n", pi[partition-1].size, + required_sectors); + } + +diff -ur lphdisk-0.9.1.orig/Makefile lphdisk-0.9.1/Makefile +--- lphdisk-0.9.1.orig/Makefile 2002-02-12 11:06:46.000000000 +0200 ++++ lphdisk-0.9.1/Makefile 2008-12-08 12:26:49.000000000 +0200 +@@ -4,37 +4,28 @@ + # lphdisk 0.9.1 + # + +-INSTALL_PREFIX = /usr/local ++INSTALL_PREFIX = /usr + +-CFLAGS = -g -Wall +-LIBS = +- +-LRMIDIR = lrmi-0.6m ++CFLAGS += -Wall ++LIBS = -llrmi + + all: lphdisk + +-lphdisk: lphdisk.o lrmi.o +- $(CC) $(CFLAGS) -o lphdisk lphdisk.o lrmi.o $(LIBS) +- +-lphdisk.o: lphdisk.c lrmi.h vbe.h +- +-lrmi.o: +- cd $(LRMIDIR) && $(MAKE) $@ +- cp $(LRMIDIR)/lrmi.o . ++lphdisk: lphdisk.o ++ $(CC) $(CFLAGS) -o lphdisk lphdisk.o $(LIBS) + +-%.h: $(LRMIDIR)/%.h +- cp $^ $@ ++lphdisk.o: lphdisk.c + + install: all +- install -m 755 lphdisk $(INSTALL_PREFIX)/sbin +- install -m 644 lphdisk.8 $(INSTALL_PREFIX)/man/man8 ++ mkdir -p $(DESTDIR)$(INSTALL_PREFIX)/sbin ++ install -m 755 lphdisk $(DESTDIR)$(INSTALL_PREFIX)/sbin ++ mkdir -p $(DESTDIR)$(INSTALL_PREFIX)/share/man/man8 ++ install -m 644 lphdisk.8 $(DESTDIR)$(INSTALL_PREFIX)/share/man/man8 + + clean: +- cd $(LRMIDIR) && $(MAKE) $@ +- rm -f *.o lrmi.h vbe.h ++ rm -f *.o + + distclean: clean +- cd $(LRMIDIR) && $(MAKE) $@ + rm -f lphdisk + + .PHONY: all install clean distclean diff --git a/app-laptop/lphdisk/lphdisk-0.9.1-r2.ebuild b/app-laptop/lphdisk/lphdisk-0.9.1-r2.ebuild new file mode 100644 index 000000000000..342efb7a8f05 --- /dev/null +++ b/app-laptop/lphdisk/lphdisk-0.9.1-r2.ebuild @@ -0,0 +1,36 @@ +# Copyright 1999-2008 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/app-laptop/lphdisk/lphdisk-0.9.1-r2.ebuild,v 1.1 2008/12/08 10:33:10 ssuominen Exp $ + +inherit eutils toolchain-funcs + +DESCRIPTION="utility for preparing a hibernation partition for APM Suspend-To-Disk" +HOMEPAGE="http://www.procyon.com/~pda/lphdisk/" +SRC_URI="http://www.procyon.com/~pda/lphdisk/${P}.tar.bz2" + +LICENSE="Artistic" +SLOT="0" +KEYWORDS="~x86" +IUSE="" + +DEPEND="sys-libs/lrmi" + +src_unpack() { + unpack ${A} + cd "${S}" + epatch "${FILESDIR}"/${P}-gentoo.patch +} + +src_compile() { + tc-export CC + emake || die "emake failed." +} + +src_install() { + emake DESTDIR="${D}" install || die "emake install failed." +} + +pkg_postinst() { + ewarn "This package is now using external lrmi library instead of shipped" + ewarn "copy it came with. This package is untested, use at your own risk." +} |