summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys-fs/btrfs-progs/ChangeLog11
-rw-r--r--sys-fs/btrfs-progs/Manifest5
-rw-r--r--sys-fs/btrfs-progs/btrfs-progs-0.14.ebuild36
-rw-r--r--sys-fs/btrfs-progs/files/btrfs-progs-0.14-hotfix.patch268
-rw-r--r--sys-fs/btrfs-progs/metadata.xml8
5 files changed, 328 insertions, 0 deletions
diff --git a/sys-fs/btrfs-progs/ChangeLog b/sys-fs/btrfs-progs/ChangeLog
new file mode 100644
index 000000000000..e86d63340b1c
--- /dev/null
+++ b/sys-fs/btrfs-progs/ChangeLog
@@ -0,0 +1,11 @@
+# ChangeLog for sys-fs/btrfs-progs
+# Copyright 1999-2008 Gentoo Foundation; Distributed under the GPL v2
+# $Header: /var/cvsroot/gentoo-x86/sys-fs/btrfs-progs/ChangeLog,v 1.1 2008/05/24 19:50:05 lavajoe Exp $
+
+*btrfs-progs-0.14 (24 May 2008)
+
+ 24 May 2008; Joe Peterson <lavajoe@gentoo.org>
+ +files/btrfs-progs-0.14-hotfix.patch, +metadata.xml,
+ +btrfs-progs-0.14.ebuild:
+ New package: Btrfs utilities
+
diff --git a/sys-fs/btrfs-progs/Manifest b/sys-fs/btrfs-progs/Manifest
new file mode 100644
index 000000000000..e85a7b0ec4af
--- /dev/null
+++ b/sys-fs/btrfs-progs/Manifest
@@ -0,0 +1,5 @@
+AUX btrfs-progs-0.14-hotfix.patch 9100 RMD160 695024c56629fd37559f74f82ff0f2c338e1564f SHA1 486fdb9a44f2eddc2f1bb6e6b8487001e3666478 SHA256 28ef6ff950e71b1125a7b370f17c01fb0b3a7c5f6bd2b345fae5f227149ed4dd
+DIST btrfs-progs-0.14.tar.bz2 95035 RMD160 2855a3859e8482212788538d6a49f3cb992c9316 SHA1 f66640ecad03f3a2bb4c69e0092433e39a8dcff7 SHA256 a91efe78248127a62fd4cb6bc782e2d2205ea2c7c5de334f0c02268d9eeab562
+EBUILD btrfs-progs-0.14.ebuild 640 RMD160 3793e7a6f330197020c1b6ef1f79d3dc83fdd48c SHA1 efdea184ad267def34b36f0f72a0322a025a62ab SHA256 c5966159287d1107fd40e0a17198e3ce3dace31b0375458c88c653a41be1117f
+MISC ChangeLog 316 RMD160 a52f4a9e045cc7375cb80d9b2750f7fbf230ec46 SHA1 b93ee56678e88ca64c4129643dad6c8fa06ae2de SHA256 d61b4c5aa1fbdcb654b35f64e33633db7b34d23ba13bf1922dfe50b0c6aa3c91
+MISC metadata.xml 223 RMD160 0c9c59654305e8789fe6c93fd07c561cfe003f54 SHA1 7904e6fb45104baf2cb67fb9886c633af4dc7056 SHA256 a24b49fe5448d4cb329acf1d8113ac30eb1d61d63a7319b66c077d3f1775d055
diff --git a/sys-fs/btrfs-progs/btrfs-progs-0.14.ebuild b/sys-fs/btrfs-progs/btrfs-progs-0.14.ebuild
new file mode 100644
index 000000000000..df97437314ab
--- /dev/null
+++ b/sys-fs/btrfs-progs/btrfs-progs-0.14.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/sys-fs/btrfs-progs/btrfs-progs-0.14.ebuild,v 1.1 2008/05/24 19:50:05 lavajoe Exp $
+
+inherit eutils
+
+DESCRIPTION="Btrfs filesystem utilities"
+HOMEPAGE="http://btrfs.wiki.kernel.org/"
+SRC_URI="http://www.kernel.org/pub/linux/kernel/people/mason/btrfs/${P}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE=""
+
+RDEPEND="=sys-fs/btrfs-${PV}"
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+
+ epatch "${FILESDIR}/${P}-hotfix.patch"
+}
+
+src_install() {
+ into /
+ dosbin btrfs-show
+ dosbin btrfs-vol
+ dosbin btrfsctl
+ dosbin btrfsck
+ dosbin debug-tree
+ dosbin mkfs.btrfs
+ dosbin show-blocks
+
+ dodoc INSTALL
+}
diff --git a/sys-fs/btrfs-progs/files/btrfs-progs-0.14-hotfix.patch b/sys-fs/btrfs-progs/files/btrfs-progs-0.14-hotfix.patch
new file mode 100644
index 000000000000..5d40cf72151d
--- /dev/null
+++ b/sys-fs/btrfs-progs/files/btrfs-progs-0.14-hotfix.patch
@@ -0,0 +1,268 @@
+diff -Nur btrfs-progs-0.14/.hg_archival.txt progs-c0d6cfa51166/.hg_archival.txt
+--- btrfs-progs-0.14/.hg_archival.txt 2008-04-29 12:29:18.000000000 -0600
++++ progs-c0d6cfa51166/.hg_archival.txt 2008-05-02 14:12:02.000000000 -0600
+@@ -1,2 +1,2 @@
+ repo: 972e56533d49456b288abe364ba0295fa8c0e0ad
+-node: 9a59768215d93fa8a3dcdcabe17d6555028ebbec
++node: c0d6cfa51166d680173dbe5b3dd283acbfe2265e
+diff -Nur btrfs-progs-0.14/Makefile progs-c0d6cfa51166/Makefile
+--- btrfs-progs-0.14/Makefile 2008-04-29 12:29:18.000000000 -0600
++++ progs-c0d6cfa51166/Makefile 2008-05-02 14:12:02.000000000 -0600
+@@ -1,6 +1,6 @@
+ CC=gcc
+ AM_CFLAGS = -Wall -fno-strict-aliasing -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2
+-CFLAGS = -g -Werror
++CFLAGS = -g -Werror -Os
+ objects = ctree.o disk-io.o radix-tree.o extent-tree.o print-tree.o \
+ root-tree.o dir-item.o hash.o file-item.o inode-item.o \
+ inode-map.o crc32c.o rbtree.o extent-cache.o extent_io.o \
+diff -Nur btrfs-progs-0.14/bcp progs-c0d6cfa51166/bcp
+--- btrfs-progs-0.14/bcp 1969-12-31 17:00:00.000000000 -0700
++++ progs-c0d6cfa51166/bcp 2008-05-02 14:12:02.000000000 -0600
+@@ -0,0 +1,161 @@
++#!/usr/bin/env python
++# Copyright (C) 2007 Oracle. All rights reserved.
++#
++# This program is free software; you can redistribute it and/or
++# modify it under the terms of the GNU General Public
++# License v2 as published by the Free Software Foundation.
++#
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++# General Public License for more details.
++#
++# You should have received a copy of the GNU General Public
++# License along with this program; if not, write to the
++# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
++# Boston, MA 021110-1307, USA.
++#
++import sys, os, stat, fcntl
++from optparse import OptionParser
++
++def copylink(srcname, dst, filename, statinfo, force_name):
++ dstname = os.path.join(dst, force_name or filename)
++ if not os.path.exists(dstname):
++ link_target = os.readlink(srcname)
++ os.symlink(link_target, dstname)
++
++def copydev(srcname, dst, filename, statinfo, force_name):
++ devbits = statinfo.st_mode & (stat.S_IFBLK | stat.S_IFCHR)
++ mode = stat.S_IMODE(statinfo.st_mode) | devbits
++ dstname = os.path.join(dst, force_name or filename)
++ if not os.path.exists(dstname):
++ os.mknod(dstname, mode, statinfo.st_rdev)
++
++def copyfile(srcname, dst, filename, statinfo, force_name):
++ written = 0
++ dstname = os.path.join(dst, force_name or filename)
++
++ st_mode = statinfo.st_mode
++ if stat.S_ISLNK(st_mode):
++ copylink(srcname, dst, part, statinfo, None)
++ return
++ elif stat.S_ISBLK(st_mode) or stat.S_ISCHR(st_mode):
++ copydev(srcname, dst, part, statinfo, None)
++ return
++ elif not stat.S_ISREG(st_mode):
++ return
++
++ try:
++ os.unlink(dstname)
++ except:
++ pass
++
++ if options.link:
++ os.link(srcname, dstname)
++ return
++
++ dstf = file(dstname, 'w')
++ srcf = file(srcname, 'r')
++
++ ret = 1
++
++ try:
++ if not options.copy:
++ ret = fcntl.ioctl(dstf.fileno(), 1074041865, srcf.fileno())
++ except:
++ pass
++
++ if ret != 0:
++ while True:
++ buf = srcf.read(256 * 1024)
++ if not buf:
++ break
++ written += len(buf)
++ dstf.write(buf)
++
++ os.chmod(dstname, stat.S_IMODE(statinfo.st_mode))
++ os.chown(dstname, statinfo.st_uid, statinfo.st_gid)
++
++
++usage = "usage: %prog [options]"
++parser = OptionParser(usage=usage)
++parser.add_option("-l", "--link", help="Create hard links", default=False,
++ action="store_true")
++parser.add_option("-c", "--copy", help="Copy file bytes (don't cow)",
++ default=False, action="store_true")
++
++(options,args) = parser.parse_args()
++
++if len(args) < 2:
++ sys.stderr.write("source or destination not specified\n")
++ sys.exit(1)
++
++if options.link and options.copy:
++ sys.stderr.write("Both -l and -c specified, using copy mode\n")
++ options.link = False
++
++
++total_args = len(args)
++src_args = total_args - 1
++orig_dst = args[-1]
++
++if src_args > 1:
++ if not os.path.exists(orig_dst):
++ os.makedirs(orig_dst)
++ if not os.path.isdir(orig_dst):
++ sys.stderr.write("Destination %s is not a directory\n" % orig_dst)
++ exit(1)
++
++for srci in xrange(0, src_args):
++ src = args[srci]
++ if os.path.isfile(src):
++ statinfo = os.lstat(src)
++ force_name = None
++ if src_args == 1:
++ if not os.path.isdir(orig_dst):
++ force_name = os.path.basename(orig_dst)
++ orig_dst = os.path.dirname(orig_dst) or '.'
++ copyfile(src, orig_dst, os.path.basename(src), statinfo, force_name)
++ continue
++
++ if src_args > 1 or os.path.exists(orig_dst):
++ dst = os.path.join(orig_dst, os.path.basename(src))
++ else:
++ dst = orig_dst
++
++ if not os.path.exists(dst):
++ os.makedirs(dst)
++ statinfo = os.stat(src)
++ os.chmod(dst, stat.S_IMODE(statinfo.st_mode))
++ os.chown(dst, statinfo.st_uid, statinfo.st_gid)
++
++ iter = os.walk(src, topdown=True)
++
++ for (dirpath, dirnames, filenames) in iter:
++ for x in dirnames:
++ srcname = os.path.join(dirpath, x)
++ statinfo = os.lstat(srcname)
++
++ if srcname.startswith(src):
++ part = srcname[len(src) + 1:]
++
++ if stat.S_ISLNK(statinfo.st_mode):
++ copylink(srcname, dst, part, statinfo, None)
++ continue
++
++ dst_dir = os.path.join(dst, part)
++ if not os.path.exists(dst_dir):
++ os.makedirs(dst_dir)
++
++ os.chmod(dst_dir, stat.S_IMODE(statinfo.st_mode))
++ os.chown(dst_dir, statinfo.st_uid, statinfo.st_gid)
++
++ for f in filenames:
++ srcname = os.path.join(dirpath, f)
++ if srcname.startswith(src):
++ part = srcname[len(src) + 1:]
++
++ statinfo = os.lstat(srcname)
++ copyfile(srcname, dst, part, statinfo, None)
++
++
+diff -Nur btrfs-progs-0.14/btrfs-vol.c progs-c0d6cfa51166/btrfs-vol.c
+--- btrfs-progs-0.14/btrfs-vol.c 2008-04-29 12:29:18.000000000 -0600
++++ progs-c0d6cfa51166/btrfs-vol.c 2008-05-02 14:12:02.000000000 -0600
+@@ -71,9 +71,9 @@
+ char *mnt = NULL;
+ int ret;
+ int option_index = 0;
+- int cmd;
++ int cmd = 0;
+ int fd;
+- int devfd;
++ int devfd = 0;
+ DIR *dirstream;
+ struct btrfs_ioctl_vol_args args;
+ u64 dev_block_count = 0;
+diff -Nur btrfs-progs-0.14/btrfsck.c progs-c0d6cfa51166/btrfsck.c
+--- btrfs-progs-0.14/btrfsck.c 2008-04-29 12:29:18.000000000 -0600
++++ progs-c0d6cfa51166/btrfsck.c 2008-05-02 14:12:02.000000000 -0600
+@@ -606,6 +606,9 @@
+
+ data_bytes_allocated +=
+ btrfs_file_extent_disk_num_bytes(buf, fi);
++ if (data_bytes_allocated < root->sectorsize) {
++ abort();
++ }
+ data_bytes_referenced +=
+ btrfs_file_extent_num_bytes(buf, fi);
+ ret = add_extent_rec(extent_cache, NULL, bytenr,
+diff -Nur btrfs-progs-0.14/ioctl.h progs-c0d6cfa51166/ioctl.h
+--- btrfs-progs-0.14/ioctl.h 2008-04-29 12:29:18.000000000 -0600
++++ progs-c0d6cfa51166/ioctl.h 2008-05-02 14:12:02.000000000 -0600
+@@ -36,6 +36,7 @@
+ struct btrfs_ioctl_vol_args)
+ #define BTRFS_IOC_SCAN_DEV _IOW(BTRFS_IOCTL_MAGIC, 4, \
+ struct btrfs_ioctl_vol_args)
++#define BTRFS_IOC_CLONE _IOW(BTRFS_IOCTL_MAGIC, 9, int)
+ #define BTRFS_IOC_ADD_DEV _IOW(BTRFS_IOCTL_MAGIC, 10, \
+ struct btrfs_ioctl_vol_args)
+ #define BTRFS_IOC_RM_DEV _IOW(BTRFS_IOCTL_MAGIC, 11, \
+diff -Nur btrfs-progs-0.14/mkfs.c progs-c0d6cfa51166/mkfs.c
+--- btrfs-progs-0.14/mkfs.c 2008-04-29 12:29:18.000000000 -0600
++++ progs-c0d6cfa51166/mkfs.c 2008-05-02 14:12:02.000000000 -0600
+@@ -308,7 +308,7 @@
+ u64 block_count = 0;
+ u64 dev_block_count = 0;
+ u64 blocks[6];
+- u64 alloc_start;
++ u64 alloc_start = 0;
+ u64 metadata_profile = BTRFS_BLOCK_GROUP_RAID1 | BTRFS_BLOCK_GROUP_DUP;
+ u64 data_profile = BTRFS_BLOCK_GROUP_RAID0;
+ u32 leafsize = getpagesize();
+diff -Nur btrfs-progs-0.14/utils.c progs-c0d6cfa51166/utils.c
+--- btrfs-progs-0.14/utils.c 2008-04-29 12:29:18.000000000 -0600
++++ progs-c0d6cfa51166/utils.c 2008-05-02 14:12:02.000000000 -0600
+@@ -645,7 +645,7 @@
+
+ int btrfs_scan_one_dir(char *dirname, int run_ioctl)
+ {
+- DIR *dirp;
++ DIR *dirp = NULL;
+ struct dirent *dirent;
+ struct pending_dir *pending;
+ struct stat st;
+@@ -734,7 +734,8 @@
+ ret = 0;
+ fail:
+ free(pending);
+- closedir(dirp);
++ if (dirp)
++ closedir(dirp);
+ return ret;
+ }
+
+diff -Nur btrfs-progs-0.14/volumes.c progs-c0d6cfa51166/volumes.c
+--- btrfs-progs-0.14/volumes.c 2008-04-29 12:29:18.000000000 -0600
++++ progs-c0d6cfa51166/volumes.c 2008-05-02 14:12:02.000000000 -0600
+@@ -478,7 +478,7 @@
+ struct extent_buffer *leaf;
+ struct btrfs_key key;
+ unsigned long ptr;
+- u64 free_devid;
++ u64 free_devid = 0;
+
+ root = root->fs_info->chunk_root;
+
diff --git a/sys-fs/btrfs-progs/metadata.xml b/sys-fs/btrfs-progs/metadata.xml
new file mode 100644
index 000000000000..fa0705095167
--- /dev/null
+++ b/sys-fs/btrfs-progs/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<herd>no-herd</herd>
+<maintainer>
+ <email>lavajoe@gentoo.org</email>
+</maintainer>
+</pkgmetadata>