From fd9e7d443e6ac96f163781a27674c27b43ee101f Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 30 Sep 2015 11:24:54 -0400 Subject: comment --- ...3_bb01c327417848165197405f5f918caf._comment.swp | Bin 0 -> 12288 bytes ...ent_5_dec82cad1490a22c3f2fbbaa4edbd9f0._comment | 44 +++++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 doc/forum/chroot_for_sbuild/.comment_3_bb01c327417848165197405f5f918caf._comment.swp create mode 100644 doc/forum/chroot_for_sbuild/comment_5_dec82cad1490a22c3f2fbbaa4edbd9f0._comment (limited to 'doc/forum/chroot_for_sbuild') diff --git a/doc/forum/chroot_for_sbuild/.comment_3_bb01c327417848165197405f5f918caf._comment.swp b/doc/forum/chroot_for_sbuild/.comment_3_bb01c327417848165197405f5f918caf._comment.swp new file mode 100644 index 00000000..0036d873 Binary files /dev/null and b/doc/forum/chroot_for_sbuild/.comment_3_bb01c327417848165197405f5f918caf._comment.swp differ diff --git a/doc/forum/chroot_for_sbuild/comment_5_dec82cad1490a22c3f2fbbaa4edbd9f0._comment b/doc/forum/chroot_for_sbuild/comment_5_dec82cad1490a22c3f2fbbaa4edbd9f0._comment new file mode 100644 index 00000000..f1bc6717 --- /dev/null +++ b/doc/forum/chroot_for_sbuild/comment_5_dec82cad1490a22c3f2fbbaa4edbd9f0._comment @@ -0,0 +1,44 @@ +[[!comment format=mdwn + username="joey" + subject="""comment 5""" + date="2015-09-30T14:57:26Z" + content=""" +You really have to follow the types here. `withTmpDir` passes a tmp dir to +a monadic action. A RevertableProperty is not a monadic action (although it +does contain one), so your code doesn't type check. + +What you can do is use `ensureProperty` to run a property from within +the Propellor action of an enclosing property. The type of that is +`ensureProperty :: Property NoInfo -> Propellor Result` , +so it can't be used on a RevertableProperty like your `sbuild'`. +If you can get a `foo :: System -> FilePath -> Property NoInfo`, you can +use it with `ensureProperty` like this: + + sbuild system = property "some desc" $ do + ensureProperty $ + withTmpDir "sbuild" $ \tmpdir -> foo system tmpdir + +But .. To get from a RevertableProperty to a Property NoInfo is a fraught +conversion. `toProp` can get to a Property HasInfo. You'd have to use +`ignoreInfo` to get from there to a Property NoInfo, and a lot of care +should be taken when using `ignoreInfo`. + +It *might* be ok to ignoreInfo in this case; the agument would go that this +is a chroot being used to create a sbuild image, so any Info belonging to +properties of the chroot doesn't affect the host that it's built on, +and so it doesn't need to propigate out. But, consider that this would +break any properties inside the chroot that use privdata, since +privdata works via info. + +I'd probably take an alternate tack here. Make `sbuild` use a chroot +directory in a fixed location, instead of a temp directory. It could +base the chroot location on the filename of the tarball it's creating +`(++ ".chroot")`, for example. + +That approach also has the benefit of letting you alter properties of the +chroot and propellor will modify the existing chroot to meet those +properties, which is faster than building a new chroot every time. + +(Then you can use `onChange` to update the schroot tarball anytime the +chroot changes.) +"""]] -- cgit v1.2.3