Mailinglist Archive: opensuse-buildservice (262 mails)
| < Previous | Next > |
Re: [opensuse-buildservice] [osc] patch to support overlay filesystem - RFC
- From: Luke Imhoff <luke@xxxxxxxx>
- Date: Tue, 11 Aug 2009 07:57:13 -0500
- Message-id: <4A816AA9.6040503@xxxxxxxx>
Maybe this goes against the philosphy of the build script, but couldn't
you use rsync instead of taring and untaring? This would help with a
use case where our users are complaining about having to tar and untar
big things, like the kernel-source, when doing development. We could
just treat their Subversion workareas as the overlay directory and
overlay it where kernel-source.tar.bz2 would be untarred normally. This
would necessitate specifying the root of the overlay in the chroot
though, so may make this overcomplicated.
Jan-Simon Möller wrote:
--
To unsubscribe, e-mail: opensuse-buildservice+unsubscribe@xxxxxxxxxxxx
For additional commands, e-mail: opensuse-buildservice+help@xxxxxxxxxxxx
Jan-Simon Möller wrote:
Hi !
During work on openSUSE@ARM I frequently wanted to change single files or add single files to the buildroot without recompiling a dependency package or adding the files to a dummy rpm. Thus here are 2 patches for osc and build which will do this:
Take all files in the specified "overlay"-folder and copy them to the buildroot before actually starting the build. This can help especially in local development with osc build if you e.g. want to delpoy a custom debugger, a custom qemu-arm or even a patched file.
Best,
Jan-Simon
Signed-off-by: Jan-Simon Möller <jansimon.moeller@xxxxxxxxxxxx>
Index: build.py
===================================================================
--- build.py (Revision 7845)
+++ build.py (Arbeitskopie)
@@ -511,6 +511,23 @@
vm_options,
build_descr,
buildargs)
+ # special handling for overlay
+ if opts.overlay:
+ myoverlay=os.path.abspath(opts.overlay)
+ if os.path.isdir(myoverlay):
+ cmd = '%s --root=%s --rpmlist=%s --dist=%s --overlay=%s --arch=%s %s %s %s' \
+ % (config['build-cmd'],
+ config['build-root'],
+ rpmlist_file.name,
+ bc_file.name,
+ myoverlay,
+ bi.buildarch,
+ vm_options,
+ build_descr,
+ buildargs)
+ else:
+ print "ERROR: OVERLAY ("+myoverlay+") is no directory."
+ sys.exit(1)
if config['su-wrapper'].startswith('su '):
tmpl = '%s \'%s\''
Index: commandline.py
===================================================================
--- commandline.py (Revision 7845)
+++ commandline.py (Arbeitskopie)
@@ -2238,6 +2238,8 @@
@cmdln.option('--clean', action='store_true',
help='Delete old build root before initializing it')
+ @cmdln.option('--overlay', metavar='OVERLAY',
+ help='Copy overlay filesystem to buildroot after installing all RPMs. This must be a valid directory (e.g. /tmp/overlay-root). The files are copied as-is.')
@cmdln.option('--no-changelog', action='store_true',
help='don\'t update the package changelog from a changes file')
@cmdln.option('--noinit', '--no-init', action='store_true',
Index: build
===================================================================
--- build (Revision 7845)
+++ build (Arbeitskopie)
@@ -63,6 +63,7 @@
INCARNATION=
DISTURL=
CHANGETARGET=
+OVERLAY=
export PATH=$BUILD_DIR:/sbin:/usr/sbin:$PATH
@@ -157,6 +158,9 @@
--icecream N
use N parallel build jobs with icecream
+ --overlay OVERLAY
+ Copy overlay filesystem to buildroot after installing
+ all RPMs. This must be a valid directory.
--debug
enable creation of a debuginfo package
@@ -664,6 +668,10 @@
*-changelog)
CHANGELOG=true
;;
+ --overlay)
+ OVERLAY=$ARG
+ shift
+ ;;
-*)
echo Unknown Option "$PARAM". Exit.
cleanup_and_exit 1
@@ -1332,6 +1340,17 @@
BUILD_SUCCEEDED=false
+ if test -n "$OVERLAY" ; then
+ if test -d "$OVERLAY"; then
+ pushd $OVERLAY
+ echo "Copying overlay to BUILD_ROOT"
+ tar -cpf - . | (cd $BUILD_ROOT ; tar -xf -)
+ popd
+ else
+ echo "OVERLAY ($OVERLAY) is no directory - skipping"
+ fi
+ fi
+
if test "$BUILDTYPE" = spec ; then
test -z "$BUILD_RPM_BUILD_STAGE" && BUILD_RPM_BUILD_STAGE=-ba
--
To unsubscribe, e-mail: opensuse-buildservice+unsubscribe@xxxxxxxxxxxx
For additional commands, e-mail: opensuse-buildservice+help@xxxxxxxxxxxx
| < Previous | Next > |