summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
l---------config.hs2
-rw-r--r--debian/changelog6
-rw-r--r--doc/forum/Sbuild_and_jessie/comment_7_38650a2151201eaf6f40d8becbbe8861._comment10
-rw-r--r--doc/forum/grub-mkconfig_incorrectly_run_by_imageBuiltFor__63__/comment_10_4cfd25f81e2ed3a0cc491558038e347b._comment7
-rw-r--r--doc/forum/grub-mkconfig_incorrectly_run_by_imageBuiltFor__63__/comment_9_b0ebdfabdc973c7e4a24825d5ab327d2._comment9
-rw-r--r--doc/forum/imageBuiltFor_mount_points_not_automatically_created/comment_10_00b4f5d4fd445b8041a2744c2dd755f0._comment36
-rw-r--r--doc/forum/imageBuiltFor_mount_points_not_automatically_created/comment_11_6f691ea981679e92d7c0ae6cf1cfce6f._comment29
-rw-r--r--doc/forum/imageBuiltFor_mount_points_not_automatically_created/comment_12_8717ae3d2e60d07025a11c930cf26b84._comment8
-rw-r--r--doc/forum/imageBuiltFor_mount_points_not_automatically_created/comment_13_10b9bf6e92a80dff2c14f41c22347b3f._comment22
-rw-r--r--doc/forum/imageBuiltFor_mount_points_not_automatically_created/comment_14_d7948bf285cc4769ccd1802a1fa86eee._comment10
-rw-r--r--doc/forum/imageBuiltFor_mount_points_not_automatically_created/comment_15_05bdf475e1a8b5d8d36f88fef0210383._comment7
-rw-r--r--doc/forum/imageBuiltFor_mount_points_not_automatically_created/comment_16_53ec0ff959e60af5382f2b6fd54ced26._comment17
-rw-r--r--doc/forum/imageBuiltFor_mount_points_not_automatically_created/comment_3_f2ec6998ed728f42cdb23116dbce8ade._comment17
-rw-r--r--doc/forum/imageBuiltFor_mount_points_not_automatically_created/comment_4_021311b587601d76c64afe06638e1fef._comment11
-rw-r--r--doc/forum/imageBuiltFor_mount_points_not_automatically_created/comment_5_95af19d3f8e01525a616b48e376c3326._comment8
-rw-r--r--doc/forum/imageBuiltFor_mount_points_not_automatically_created/comment_6_8c454f014e0cf4e6b3af9b8f68f987fa._comment7
-rw-r--r--doc/forum/imageBuiltFor_mount_points_not_automatically_created/comment_7_ad9ea2799890df2dfce4f0cc99e397e9._comment8
-rw-r--r--doc/forum/imageBuiltFor_mount_points_not_automatically_created/comment_8_ad50abb937a9801a4db2293765137b75._comment8
-rw-r--r--doc/forum/imageBuiltFor_mount_points_not_automatically_created/comment_9_68b3d9ca04283c2400f5b23e486bb4b7._comment62
-rw-r--r--doc/forum/secret-project_and_Module___8216__Graphics.UI.Threepenny__8217___does_not_export___8216__loadFile__8217__..mdwn25
-rw-r--r--doc/forum/secret-project_and_Module___8216__Graphics.UI.Threepenny__8217___does_not_export___8216__loadFile__8217__./comment_1_4dea8fc15186923aeffcd0272a8c14c0._comment38
-rw-r--r--doc/forum/secret-project_and_Module___8216__Graphics.UI.Threepenny__8217___does_not_export___8216__loadFile__8217__./comment_2_10e8132f96e66a4c215ed275e22d1bda._comment16
-rw-r--r--doc/forum/secret-project_and_Module___8216__Graphics.UI.Threepenny__8217___does_not_export___8216__loadFile__8217__./comment_3_e288978072a6f38539150be1ebf4b0f2._comment11
-rw-r--r--doc/forum/secret-project_and_Module___8216__Graphics.UI.Threepenny__8217___does_not_export___8216__loadFile__8217__./comment_4_074a7c14425635ddb25b7d3046337533._comment38
-rw-r--r--doc/forum/secret-project_and_Module___8216__Graphics.UI.Threepenny__8217___does_not_export___8216__loadFile__8217__./comment_5_4cda097e7650c4ba46e26c6e3dbbdc75._comment65
-rw-r--r--doc/forum/secret-project_and_Module___8216__Graphics.UI.Threepenny__8217___does_not_export___8216__loadFile__8217__./comment_6_249337c7f647cca8f4e23c99897458d9._comment22
-rw-r--r--doc/forum/secret-project_and_type_constructor_or_class___8216__PartSpec__8217__.mdwn43
-rw-r--r--doc/forum/secret-project_and_type_constructor_or_class___8216__PartSpec__8217__/comment_1_492a5c5297a80f18282361fb5c27ad8a._comment20
-rw-r--r--doc/forum/secret-project_and_type_constructor_or_class___8216__PartSpec__8217__/comment_2_4e2f36fc1de2644c22d69ab9a2d7e94a._comment8
-rw-r--r--doc/forum/secret-project_and_type_constructor_or_class___8216__PartSpec__8217__/comment_3_b436b5eb909dd4b228bb36546f593547._comment17
-rw-r--r--doc/forum/secret-project_and_type_constructor_or_class___8216__PartSpec__8217__/comment_4_568bda577a15f1ef405dd20eec24aa9b._comment19
-rw-r--r--doc/todo/etckeeper/comment_2_69484bfac40de156a4b877f27aa69eca._comment14
-rw-r--r--doc/todo/etckeeper/comment_3_5f62128bdb550de475d22abb35730949._comment7
-rw-r--r--doc/todo/removable_drive_partitioning_and_install.mdwn40
-rw-r--r--privdata/relocate1
-rw-r--r--src/Propellor/Property/DiskImage.hs11
-rw-r--r--src/Propellor/Property/Grub.hs62
-rw-r--r--src/Propellor/Property/Mount.hs2
-rw-r--r--src/Propellor/Property/Parted.hs23
-rw-r--r--src/Propellor/Property/Sbuild.hs15
-rw-r--r--src/Propellor/Property/SiteSpecific/JoeySites.hs2
-rw-r--r--src/Propellor/Types/Bootloader.hs7
42 files changed, 755 insertions, 35 deletions
diff --git a/config.hs b/config.hs
index 97d90636..ec313725 120000
--- a/config.hs
+++ b/config.hs
@@ -1 +1 @@
-joeyconfig.hs \ No newline at end of file
+config-simple.hs \ No newline at end of file
diff --git a/debian/changelog b/debian/changelog
index 3da0622f..c9d86e1a 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,5 +1,6 @@
propellor (5.2.0) UNRELEASED; urgency=medium
+ [ Joey Hess ]
* bootstrappedFrom: Set up local privdata file.
* Parted: Fix names used for FAT and VFAT partitions.
* Parted: Add an Alignment parameter. (API change)
@@ -13,6 +14,11 @@ propellor (5.2.0) UNRELEASED; urgency=medium
chroot.
* Fix bug in unmountBelow that caused unmounting of nested mounts to
fail.
+ * Grub.boots, Grub.bootsMounted: Pass --target to grub-install.
+
+ [ Sean Whitton ]
+ * Sbuild: add notes about Debian jessie hosts and backports of sbuild and
+ autopkgtest.
-- Joey Hess <id@joeyh.name> Wed, 29 Nov 2017 11:45:08 -0400
diff --git a/doc/forum/Sbuild_and_jessie/comment_7_38650a2151201eaf6f40d8becbbe8861._comment b/doc/forum/Sbuild_and_jessie/comment_7_38650a2151201eaf6f40d8becbbe8861._comment
new file mode 100644
index 00000000..12dfbaac
--- /dev/null
+++ b/doc/forum/Sbuild_and_jessie/comment_7_38650a2151201eaf6f40d8becbbe8861._comment
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="spwhitton"
+ avatar="http://cdn.libravatar.org/avatar/9c3f08f80e67733fd506c353239569eb"
+ subject="Patch mailed to propellor@joeyh.name"
+ date="2017-12-22T18:11:07Z"
+ content="""
+I started preparing a patch so that `Sbuild.userConfig` would install the backport on Jessie, but realised that what is probably going on is that you have a backport of sbuild installed -- I assume that the sbuild that comes with jessie tries to invoke `adt-run` not `autopkgtest`. So `Sbuild.userConfig` would have to check the installed version of sbuild before it could determine whether to install the backport of autopkgtest.
+
+I think it would be unwise to incorporate that complexity into Sbuild.hs for the sake of an old release of Debian, so I've mailed a patch to Joey simply documenting the issue.
+"""]]
diff --git a/doc/forum/grub-mkconfig_incorrectly_run_by_imageBuiltFor__63__/comment_10_4cfd25f81e2ed3a0cc491558038e347b._comment b/doc/forum/grub-mkconfig_incorrectly_run_by_imageBuiltFor__63__/comment_10_4cfd25f81e2ed3a0cc491558038e347b._comment
new file mode 100644
index 00000000..a6eb510a
--- /dev/null
+++ b/doc/forum/grub-mkconfig_incorrectly_run_by_imageBuiltFor__63__/comment_10_4cfd25f81e2ed3a0cc491558038e347b._comment
@@ -0,0 +1,7 @@
+[[!comment format=mdwn
+ username="joey"
+ subject="""comment 10"""
+ date="2017-12-21T04:05:40Z"
+ content="""
+Implemented --target passing based on Grub.installed's Info.
+"""]]
diff --git a/doc/forum/grub-mkconfig_incorrectly_run_by_imageBuiltFor__63__/comment_9_b0ebdfabdc973c7e4a24825d5ab327d2._comment b/doc/forum/grub-mkconfig_incorrectly_run_by_imageBuiltFor__63__/comment_9_b0ebdfabdc973c7e4a24825d5ab327d2._comment
new file mode 100644
index 00000000..683e7989
--- /dev/null
+++ b/doc/forum/grub-mkconfig_incorrectly_run_by_imageBuiltFor__63__/comment_9_b0ebdfabdc973c7e4a24825d5ab327d2._comment
@@ -0,0 +1,9 @@
+[[!comment format=mdwn
+ username="joey"
+ subject="""comment 9"""
+ date="2017-12-21T03:32:59Z"
+ content="""
+I forgot -- Grub.installed already sets Info to say what BIOS
+it was installed for. So, bootsMounted can just get that Info and
+pass the appropriate --target.
+"""]]
diff --git a/doc/forum/imageBuiltFor_mount_points_not_automatically_created/comment_10_00b4f5d4fd445b8041a2744c2dd755f0._comment b/doc/forum/imageBuiltFor_mount_points_not_automatically_created/comment_10_00b4f5d4fd445b8041a2744c2dd755f0._comment
new file mode 100644
index 00000000..e38825e1
--- /dev/null
+++ b/doc/forum/imageBuiltFor_mount_points_not_automatically_created/comment_10_00b4f5d4fd445b8041a2744c2dd755f0._comment
@@ -0,0 +1,36 @@
+[[!comment format=mdwn
+ username="gueux"
+ avatar="http://cdn.libravatar.org/avatar/2982bac2c2cd94ab3860efb189deafc8"
+ subject="comment 10"
+ date="2017-12-22T10:21:28Z"
+ content="""
+Ouch, that does not seem like it was easy to debug... Thanks for looking into this!
+
+ src/Propellor/Property/Parted.hs:114:27: warning: [-Wtype-defaults]
+ • Defaulting the following constraints to type ‘Double’
+ (Show a0)
+ arising from a use of ‘show’
+ at src/Propellor/Property/Parted.hs:114:27-57
+ (Fractional a0)
+ arising from a use of ‘/’
+ at src/Propellor/Property/Parted.hs:114:33-56
+ (Num a0)
+ arising from a use of ‘fromIntegral’
+ at src/Propellor/Property/Parted.hs:114:33-46
+ • In the first argument of ‘(++)’, namely
+ ‘show (fromIntegral n / 1000000)’
+ In the expression: show (fromIntegral n / 1000000) ++ \"MB\"
+ In an equation for ‘partposfuzzy’:
+ partposfuzzy n
+ | n > 0 = show (fromIntegral n / 1000000) ++ \"MB\"
+ | otherwise = \"1MB\"
+
+I now get:
+
+ mount: /tmp/mntzZ3vjF: wrong fs type, bad option, bad superblock on /dev/mapper/loop0p2, missing codepage or helper program, or other error.
+ umount: /tmp/mntzZ3vjF: not mounted.
+ ** fatal error: failed unmounting /tmp/mntzZ3vjF
+ propellor: StopPropellorException \"Cannot continue!\"
+
+:(. I'll try to reboot, I don't get how to remove/unmount this /dev/mapper/loop0p2 (I tried \"dmsetup remove\", \"losetup -d\" without success...)
+"""]]
diff --git a/doc/forum/imageBuiltFor_mount_points_not_automatically_created/comment_11_6f691ea981679e92d7c0ae6cf1cfce6f._comment b/doc/forum/imageBuiltFor_mount_points_not_automatically_created/comment_11_6f691ea981679e92d7c0ae6cf1cfce6f._comment
new file mode 100644
index 00000000..8d39744b
--- /dev/null
+++ b/doc/forum/imageBuiltFor_mount_points_not_automatically_created/comment_11_6f691ea981679e92d7c0ae6cf1cfce6f._comment
@@ -0,0 +1,29 @@
+[[!comment format=mdwn
+ username="gueux"
+ avatar="http://cdn.libravatar.org/avatar/2982bac2c2cd94ab3860efb189deafc8"
+ subject="comment 11"
+ date="2017-12-22T12:10:37Z"
+ content="""
+So, I rebooted, but I still had the /dev/mapper/loop problem. I was able to \"dmsetup remove\" these, though...
+
+I deleted router.img and router.img.parttable...
+
+ creating /srv/router.img of size 1.66 gigabytes
+ loop deleted : /dev/loop0
+ mkfs.fat 4.1 (2017-01-24)
+ loop deleted : /dev/loop0
+ 26,456,191 100% 29.82MB/s 0:00:00 (xfr#5, to-chk=0/7)
+ 770,763,841 99% 2.16MB/s 0:05:40 (xfr#26256, to-chk=0/33583)
+ update-initramfs: Generating /boot/initrd.img-4.9.0-4-amd64
+ Generating grub configuration file ...
+ Found linux image: /boot/vmlinuz-4.9.0-4-amd64
+ Found initrd image: /boot/initrd.img-4.9.0-4-amd64
+ done
+ grub-install: error: /usr/lib/grub/i386-efi/modinfo.sh doesn't exist. Please specify --target or --directory.
+ loop deleted : /dev/loop0
+ laptop built disk image /srv/router.img ... failed
+ laptop overall ... failed
+
+
+...and I'm back to the grub-install/grub-update problem, which seems to apply to grub-efi-amd64. It's weird, because it's the version I have on my laptop, and I did not notice this issue (but I installed debian on it a long time ago, so, the bug may have appeared since then).
+"""]]
diff --git a/doc/forum/imageBuiltFor_mount_points_not_automatically_created/comment_12_8717ae3d2e60d07025a11c930cf26b84._comment b/doc/forum/imageBuiltFor_mount_points_not_automatically_created/comment_12_8717ae3d2e60d07025a11c930cf26b84._comment
new file mode 100644
index 00000000..caaa5713
--- /dev/null
+++ b/doc/forum/imageBuiltFor_mount_points_not_automatically_created/comment_12_8717ae3d2e60d07025a11c930cf26b84._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="gueux"
+ avatar="http://cdn.libravatar.org/avatar/2982bac2c2cd94ab3860efb189deafc8"
+ subject="comment 12"
+ date="2017-12-22T12:16:50Z"
+ content="""
+Or not? I found this one: you inverted EFI64 and EFI32 in Grub.targetParam :)
+"""]]
diff --git a/doc/forum/imageBuiltFor_mount_points_not_automatically_created/comment_13_10b9bf6e92a80dff2c14f41c22347b3f._comment b/doc/forum/imageBuiltFor_mount_points_not_automatically_created/comment_13_10b9bf6e92a80dff2c14f41c22347b3f._comment
new file mode 100644
index 00000000..6d8a33eb
--- /dev/null
+++ b/doc/forum/imageBuiltFor_mount_points_not_automatically_created/comment_13_10b9bf6e92a80dff2c14f41c22347b3f._comment
@@ -0,0 +1,22 @@
+[[!comment format=mdwn
+ username="gueux"
+ avatar="http://cdn.libravatar.org/avatar/2982bac2c2cd94ab3860efb189deafc8"
+ subject="comment 13"
+ date="2017-12-22T12:20:57Z"
+ content="""
+ 17,514,598 66% 53.61MB/s 0:00:00 (xfr#1, to-chk=0/7)
+ 129 0% 0.06kB/s 0:00:01 (xfr#3, to-chk=0/33583)
+ update-initramfs: Generating /boot/initrd.img-4.9.0-4-amd64
+ Generating grub configuration file ...
+ Found linux image: /boot/vmlinuz-4.9.0-4-amd64
+ Found initrd image: /boot/initrd.img-4.9.0-4-amd64
+ done
+ Installing for x86_64-efi platform.
+ Installation finished. No error reported.
+ loop deleted : /dev/loop0
+ laptop built disk image /srv/router.img ... done
+ laptop overall ... done
+
+
+\o/. Let's see if it boots... I just have one try, then I'll have to move for a few days...
+"""]]
diff --git a/doc/forum/imageBuiltFor_mount_points_not_automatically_created/comment_14_d7948bf285cc4769ccd1802a1fa86eee._comment b/doc/forum/imageBuiltFor_mount_points_not_automatically_created/comment_14_d7948bf285cc4769ccd1802a1fa86eee._comment
new file mode 100644
index 00000000..88870d0d
--- /dev/null
+++ b/doc/forum/imageBuiltFor_mount_points_not_automatically_created/comment_14_d7948bf285cc4769ccd1802a1fa86eee._comment
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="gueux"
+ avatar="http://cdn.libravatar.org/avatar/2982bac2c2cd94ab3860efb189deafc8"
+ subject="comment 14"
+ date="2017-12-22T12:44:18Z"
+ content="""
+Unfortunately it didn't... But I think it's probably a problem of choosing the right grub version. I did boot a grml64 sdcard, and I think they use hybrid bios/uefi boot. I have to investigate, let's see this in a few days :)
+
+Thanks a lot for your help!
+"""]]
diff --git a/doc/forum/imageBuiltFor_mount_points_not_automatically_created/comment_15_05bdf475e1a8b5d8d36f88fef0210383._comment b/doc/forum/imageBuiltFor_mount_points_not_automatically_created/comment_15_05bdf475e1a8b5d8d36f88fef0210383._comment
new file mode 100644
index 00000000..5bf364ac
--- /dev/null
+++ b/doc/forum/imageBuiltFor_mount_points_not_automatically_created/comment_15_05bdf475e1a8b5d8d36f88fef0210383._comment
@@ -0,0 +1,7 @@
+[[!comment format=mdwn
+ username="joey"
+ subject="""comment 15"""
+ date="2017-12-22T13:24:44Z"
+ content="""
+Oops, fixed the Grub.targetParam inversion.
+"""]]
diff --git a/doc/forum/imageBuiltFor_mount_points_not_automatically_created/comment_16_53ec0ff959e60af5382f2b6fd54ced26._comment b/doc/forum/imageBuiltFor_mount_points_not_automatically_created/comment_16_53ec0ff959e60af5382f2b6fd54ced26._comment
new file mode 100644
index 00000000..e471dfc2
--- /dev/null
+++ b/doc/forum/imageBuiltFor_mount_points_not_automatically_created/comment_16_53ec0ff959e60af5382f2b6fd54ced26._comment
@@ -0,0 +1,17 @@
+[[!comment format=mdwn
+ username="stappers"
+ avatar="http://cdn.libravatar.org/avatar/bf33450acf6fc2a17a8b4e6fc7749c65"
+ subject="the working config"
+ date="2017-12-27T21:26:21Z"
+ content="""
+Is the working config somewhere available?
+
+If yes, where??
+
+
+Yes, I what to reproduce it.
+
+
+Cheers
+Geert Stappers
+"""]]
diff --git a/doc/forum/imageBuiltFor_mount_points_not_automatically_created/comment_3_f2ec6998ed728f42cdb23116dbce8ade._comment b/doc/forum/imageBuiltFor_mount_points_not_automatically_created/comment_3_f2ec6998ed728f42cdb23116dbce8ade._comment
new file mode 100644
index 00000000..8bf91368
--- /dev/null
+++ b/doc/forum/imageBuiltFor_mount_points_not_automatically_created/comment_3_f2ec6998ed728f42cdb23116dbce8ade._comment
@@ -0,0 +1,17 @@
+[[!comment format=mdwn
+ username="gueux"
+ avatar="http://cdn.libravatar.org/avatar/2982bac2c2cd94ab3860efb189deafc8"
+ subject="comment 3"
+ date="2017-12-21T09:11:23Z"
+ content="""
+OK.
+I tried to run propellor again, I got a new error (probably related to the recent alignment changes):
+
+ ...
+ creating /srv/router.img of size 1.66 gigabytes
+ Error: You requested a partition from 168MB to 1661MB (sectors 327680..3244031).
+ The closest location we can manage is 168MB to 1661MB (sectors 327680..3243998).
+ laptop built disk image /srv/router.img ... failed
+ laptop overall ... failed
+
+"""]]
diff --git a/doc/forum/imageBuiltFor_mount_points_not_automatically_created/comment_4_021311b587601d76c64afe06638e1fef._comment b/doc/forum/imageBuiltFor_mount_points_not_automatically_created/comment_4_021311b587601d76c64afe06638e1fef._comment
new file mode 100644
index 00000000..ae5f6463
--- /dev/null
+++ b/doc/forum/imageBuiltFor_mount_points_not_automatically_created/comment_4_021311b587601d76c64afe06638e1fef._comment
@@ -0,0 +1,11 @@
+[[!comment format=mdwn
+ username="joey"
+ subject="""comment 4"""
+ date="2017-12-21T16:06:56Z"
+ content="""
+That's definitely due to the alignment changes, I knew those changes
+could run afoul of parted's checks, but in my tests they seemed to work.
+
+Could you paste /srv/router.img.parttable, that should have enough
+infromation for me to reproduce the problem.
+"""]]
diff --git a/doc/forum/imageBuiltFor_mount_points_not_automatically_created/comment_5_95af19d3f8e01525a616b48e376c3326._comment b/doc/forum/imageBuiltFor_mount_points_not_automatically_created/comment_5_95af19d3f8e01525a616b48e376c3326._comment
new file mode 100644
index 00000000..6eaa60ab
--- /dev/null
+++ b/doc/forum/imageBuiltFor_mount_points_not_automatically_created/comment_5_95af19d3f8e01525a616b48e376c3326._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="gueux"
+ avatar="http://cdn.libravatar.org/avatar/2982bac2c2cd94ab3860efb189deafc8"
+ subject="comment 5"
+ date="2017-12-21T16:21:50Z"
+ content="""
+ PartTable GPT (Alignment 4194304) [Partition {partType = Primary, partSize = MegaBytes 10, partFs = VFAT, partMkFsOpts = [], partFlags = [(EspFlag,True)], partName = Nothing},Partition {partType = Primary, partSize = MegaBytes 150, partFs = EXT2, partMkFsOpts = [], partFlags = [], partName = Nothing},Partition {partType = Primary, partSize = MegaBytes 1489, partFs = EXT4, partMkFsOpts = [], partFlags = [], partName = Nothing}]
+"""]]
diff --git a/doc/forum/imageBuiltFor_mount_points_not_automatically_created/comment_6_8c454f014e0cf4e6b3af9b8f68f987fa._comment b/doc/forum/imageBuiltFor_mount_points_not_automatically_created/comment_6_8c454f014e0cf4e6b3af9b8f68f987fa._comment
new file mode 100644
index 00000000..711fc21e
--- /dev/null
+++ b/doc/forum/imageBuiltFor_mount_points_not_automatically_created/comment_6_8c454f014e0cf4e6b3af9b8f68f987fa._comment
@@ -0,0 +1,7 @@
+[[!comment format=mdwn
+ username="joey"
+ subject="""comment 6"""
+ date="2017-12-21T18:51:01Z"
+ content="""
+Oh also need the size of /srv/router.img in bytes.
+"""]]
diff --git a/doc/forum/imageBuiltFor_mount_points_not_automatically_created/comment_7_ad9ea2799890df2dfce4f0cc99e397e9._comment b/doc/forum/imageBuiltFor_mount_points_not_automatically_created/comment_7_ad9ea2799890df2dfce4f0cc99e397e9._comment
new file mode 100644
index 00000000..f273d3b0
--- /dev/null
+++ b/doc/forum/imageBuiltFor_mount_points_not_automatically_created/comment_7_ad9ea2799890df2dfce4f0cc99e397e9._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="gueux"
+ avatar="http://cdn.libravatar.org/avatar/2982bac2c2cd94ab3860efb189deafc8"
+ subject="comment 7"
+ date="2017-12-21T18:54:32Z"
+ content="""
+1660944384
+"""]]
diff --git a/doc/forum/imageBuiltFor_mount_points_not_automatically_created/comment_8_ad50abb937a9801a4db2293765137b75._comment b/doc/forum/imageBuiltFor_mount_points_not_automatically_created/comment_8_ad50abb937a9801a4db2293765137b75._comment
new file mode 100644
index 00000000..4e102a26
--- /dev/null
+++ b/doc/forum/imageBuiltFor_mount_points_not_automatically_created/comment_8_ad50abb937a9801a4db2293765137b75._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="gueux"
+ avatar="http://cdn.libravatar.org/avatar/2982bac2c2cd94ab3860efb189deafc8"
+ subject="comment 8"
+ date="2017-12-21T20:40:56Z"
+ content="""
+parted seems pretty hairy with partition alignment. In case it's too hard to integrate parted with propellor, maybe fdisk would be easier?
+"""]]
diff --git a/doc/forum/imageBuiltFor_mount_points_not_automatically_created/comment_9_68b3d9ca04283c2400f5b23e486bb4b7._comment b/doc/forum/imageBuiltFor_mount_points_not_automatically_created/comment_9_68b3d9ca04283c2400f5b23e486bb4b7._comment
new file mode 100644
index 00000000..fd5b25e4
--- /dev/null
+++ b/doc/forum/imageBuiltFor_mount_points_not_automatically_created/comment_9_68b3d9ca04283c2400f5b23e486bb4b7._comment
@@ -0,0 +1,62 @@
+[[!comment format=mdwn
+ username="joey"
+ subject="""comment 1"""
+ date="2017-12-21T19:44:45Z"
+ content="""
+Reproduced it with that information.
+
+ ghci> calcPartedParamsSize guexPartTable
+ (["mklabel","gpt","mkpart","primary","fat32","4194304B","16777215B","set","1","esp","on","mkpart","primary","ext2","16777216B","167772159B","mkpart","primary","ext4","167772160B","1660944383B"],1660944384)
+ joey@darkstar:~>dd if=/dev/zero of=test bs=1M count=1584
+ joey@darkstar:~>parted test
+ (parted) p
+ Model: (file)
+ Disk /home/joey/test: 1661MB
+ Sector size (logical/physical): 512B/512B
+ (parted) mklabel gpt
+ (parted) mkpart primary fat32 4194304B 16777215B
+ (parted) mkpart primary ext2 16777216B 167772159B
+ (parted) mkpart primary ext4 167772160B 1660944383B
+ Warning: You requested a partition from 168MB to 1661MB (sectors 327680..3244031).
+ The closest location we can manage is 168MB to 1661MB (sectors 327680..3243998).
+
+The problem only occurs with the gpt partition table. With "mklabel msdos",
+the mkpart command succeeds.
+
+So, gpt must have an additional restriction
+of some kind. I don't know what. The highest end position that parted
+will accept for that partition is 1660927487B; slightly smaller partitions
+are accepted. It's not a requirement that the position or size be divisible
+by anything in particular. Perhaps gpt needs some amount of reserved space
+at the end of the disk or something.
+
+Before 4MiB alignment was added, here's what
+propellor did for the same PartTable, which worked.
+
+ mkpart primary ext4 160MB 1649MB
+
+It would be good for propellor to not need to know about all the minutia of
+partition tables. Seems that the way it used to call parted gave it enough
+wiggle room that it avoided this kind of problem.
+
+To make parititions well aligned, propellor needs to precisely control where
+they begin (since parted does not have a way to configure modern
+alignment requirments). Perhaps propellor could precisely specify where a
+partition begins, but use the "MB" to leave wiggle room in where it ends
+so parted can pick a suitable end point.
+
+Let's see.. this works with the gpt example:
+
+ (parted) mkpart primary fat32 4194304B 16.777215MB
+ (parted) mkpart primary ext2 16777216B 167.772159MB
+ (parted) mkpart primary ext4 167772160B 1660.944383MB
+
+That lets parted end the last partition right at the ideal 1660927487B.
+The previous two partitions end right where propellor expects.
+(Hopefully parted never rounds a MB value *up*!)
+
+Ok, I've convinced myself to make propellor use this wacky technique
+of B for the start position and fractional MB for the end position!
+I've implemented it, hopefully my analysis above is good to make
+this work with all the different kinds of partition tables.
+"""]]
diff --git a/doc/forum/secret-project_and_Module___8216__Graphics.UI.Threepenny__8217___does_not_export___8216__loadFile__8217__..mdwn b/doc/forum/secret-project_and_Module___8216__Graphics.UI.Threepenny__8217___does_not_export___8216__loadFile__8217__..mdwn
new file mode 100644
index 00000000..ca665c3c
--- /dev/null
+++ b/doc/forum/secret-project_and_Module___8216__Graphics.UI.Threepenny__8217___does_not_export___8216__loadFile__8217__..mdwn
@@ -0,0 +1,25 @@
+Hi,
+
+While attempting to build "secret-project" I encountered this
+
+ [ 7 of 10] Compiling Installer.UI ( Installer/UI.hs, .stack-work/dist/x86_64-linux-nopie/Cabal-1.24.2.0/build/propellor-config/propellor-config-tmp/Installer/UI.o )
+
+ /home/stappers/src/secret-project/Installer/UI.hs:228:14: error:
+ Not in scope: ‘UI.loadFile’
+ Module ‘Graphics.UI.Threepenny’ does not export ‘loadFile’.
+
+ -- While building custom Setup.hs for package secret-project-0.0 using:
+ /root/.stack/setup-exe-cache/x86_64-linux-nopie/Cabal-simple_mPHDZzAJ_1.24.2.0_ghc-8.0.2 --builddir=.stack-work/dist/x86_64-linux-nopie/Cabal-1.24.2.0 build exe:propellor-config --ghc-options " -ddump-hi -ddump-to-file"
+ Process exited with code: ExitFailure 1
+
+
+From <http://propellor.branchable.com/forum/secret-project_and_type_constructor_or_class___8216__PartSpec__8217__/#comment-179662ace1bc9a24782d60e73f2a5a4e>
+I understand that a UI patch to threepenny-gui is needed.
+But I don't understand that request.
+
+How to patch the threepenny-gui??
+
+
+Cheers
+
+Geert Stappers
diff --git a/doc/forum/secret-project_and_Module___8216__Graphics.UI.Threepenny__8217___does_not_export___8216__loadFile__8217__./comment_1_4dea8fc15186923aeffcd0272a8c14c0._comment b/doc/forum/secret-project_and_Module___8216__Graphics.UI.Threepenny__8217___does_not_export___8216__loadFile__8217__./comment_1_4dea8fc15186923aeffcd0272a8c14c0._comment
new file mode 100644
index 00000000..58543ee5
--- /dev/null
+++ b/doc/forum/secret-project_and_Module___8216__Graphics.UI.Threepenny__8217___does_not_export___8216__loadFile__8217__./comment_1_4dea8fc15186923aeffcd0272a8c14c0._comment
@@ -0,0 +1,38 @@
+[[!comment format=mdwn
+ username="stappers@eb96885816da287c29f6f699999434d532149234"
+ nickname="stappers"
+ avatar="http://cdn.libravatar.org/avatar/bf33450acf6fc2a17a8b4e6fc7749c65"
+ subject="additional information"
+ date="2017-12-28T12:44:23Z"
+ content="""
+There was another error before the error reported above. It was
+
+ Error: While constructing the build plan, the following exceptions were encountered:
+
+ In the dependencies for secret-project-0.0:
+ threepenny-gui-0.7.0.1 from stack configuration does not match (==0.8.0.0) (latest matching version
+ is 0.8.0.0)
+ needed since secret-project is a build target.
+
+My workaround was
+
+ --- a/secret-project.cabal
+ +++ b/secret-project.cabal
+ @@ -21,7 +21,7 @@ Executable propellor-config
+ Build-Depends:
+ base (>= 4.9 && < 5.0)
+ , propellor >= 4.7.6
+ - , threepenny-gui (== 0.8.0.0)
+ + , threepenny-gui (== 0.7.0.1)
+ , random (>= 1.1)
+ , random-shuffle (>= 0.0.4)
+ , filepath (>= 1.4)
+
+That because `stack.yaml` has a package line
+
+ - http://github.com/joeyh/threepenny-gui/archive/59242cf93bdb8eaa805f5c2b0241e9a1cba9a70f.zip
+
+where I think/assume the 0.7.0.1 comes from.
+
+
+"""]]
diff --git a/doc/forum/secret-project_and_Module___8216__Graphics.UI.Threepenny__8217___does_not_export___8216__loadFile__8217__./comment_2_10e8132f96e66a4c215ed275e22d1bda._comment b/doc/forum/secret-project_and_Module___8216__Graphics.UI.Threepenny__8217___does_not_export___8216__loadFile__8217__./comment_2_10e8132f96e66a4c215ed275e22d1bda._comment
new file mode 100644
index 00000000..f25b614b
--- /dev/null
+++ b/doc/forum/secret-project_and_Module___8216__Graphics.UI.Threepenny__8217___does_not_export___8216__loadFile__8217__./comment_2_10e8132f96e66a4c215ed275e22d1bda._comment
@@ -0,0 +1,16 @@
+[[!comment format=mdwn
+ username="joey"
+ subject="""comment 1"""
+ date="2017-12-28T17:01:21Z"
+ content="""
+The zip file pointed to by the stack.yaml file contains a patched version
+of threepenny-gui 0.8.0.0, the same as the cabal file requires.
+
+Downgrading the dependency won't work, thus your build problems. All I can
+tell you is it's built successfully with stack every time I've tried to
+build it, and stack pins all package versions to ensure a reproducible
+build.
+
+It may be that you're using too old a version of stack or
+something like that; I've used stack 1.1.2.
+"""]]
diff --git a/doc/forum/secret-project_and_Module___8216__Graphics.UI.Threepenny__8217___does_not_export___8216__loadFile__8217__./comment_3_e288978072a6f38539150be1ebf4b0f2._comment b/doc/forum/secret-project_and_Module___8216__Graphics.UI.Threepenny__8217___does_not_export___8216__loadFile__8217__./comment_3_e288978072a6f38539150be1ebf4b0f2._comment
new file mode 100644
index 00000000..5dc314de
--- /dev/null
+++ b/doc/forum/secret-project_and_Module___8216__Graphics.UI.Threepenny__8217___does_not_export___8216__loadFile__8217__./comment_3_e288978072a6f38539150be1ebf4b0f2._comment
@@ -0,0 +1,11 @@
+[[!comment format=mdwn
+ username="stappers@eb96885816da287c29f6f699999434d532149234"
+ nickname="stappers"
+ avatar="http://cdn.libravatar.org/avatar/bf33450acf6fc2a17a8b4e6fc7749c65"
+ subject="my stack version"
+ date="2017-12-28T22:13:21Z"
+ content="""
+ $ stack --version
+ Version 1.6.3, Git revision b27e629b8c4ce369e3b8273f04db193b060000db (5454 commits) x86_64 hpack-0.20.0
+
+"""]]
diff --git a/doc/forum/secret-project_and_Module___8216__Graphics.UI.Threepenny__8217___does_not_export___8216__loadFile__8217__./comment_4_074a7c14425635ddb25b7d3046337533._comment b/doc/forum/secret-project_and_Module___8216__Graphics.UI.Threepenny__8217___does_not_export___8216__loadFile__8217__./comment_4_074a7c14425635ddb25b7d3046337533._comment
new file mode 100644
index 00000000..4ea04076
--- /dev/null
+++ b/doc/forum/secret-project_and_Module___8216__Graphics.UI.Threepenny__8217___does_not_export___8216__loadFile__8217__./comment_4_074a7c14425635ddb25b7d3046337533._comment
@@ -0,0 +1,38 @@
+[[!comment format=mdwn
+ username="stappers@eb96885816da287c29f6f699999434d532149234"
+ nickname="stappers"
+ avatar="http://cdn.libravatar.org/avatar/bf33450acf6fc2a17a8b4e6fc7749c65"
+ subject="threepenny-ui in cabal"
+ date="2017-12-29T08:46:19Z"
+ content="""
+Without a version for threepenny-ui in secret-project.cabal gets 0.7.0.1 installed by `stack build`.
+
+Where 0.7.0.1 comes from is unclear to me.
+Downloading and unzipping <https://github.com/joeyh/threepenny-gui/archive/59242cf93bdb8eaa805f5c2b0241e9a1cba9a70f.zip> didn't reveal any 0.7.0.1.
+
+Having `threepenny-gui (>= 0.8.0.0)` in secret-project.cabal gives this compile error:
+
+
+ Error: While constructing the build plan, the following exceptions were encountered:
+
+ In the dependencies for secret-project-0.0:
+ threepenny-gui-0.7.0.1 from stack configuration does not match (>=0.8.0.0) (latest matching version
+ is 0.8.2.0)
+ needed since secret-project is a build target.
+
+ Some potential ways to resolve this:
+
+ * Recommended action: try adding the following to your extra-deps
+ in /home/stappers/src/secret-project/stack.yaml:
+
+ - threepenny-gui-0.8.2.0
+
+ * Set 'allow-newer: true' to ignore all version constraints and build anyway.
+
+ * You may also want to try using the 'stack solver' command.
+
+ Plan construction failed.
+
+
+
+"""]]
diff --git a/doc/forum/secret-project_and_Module___8216__Graphics.UI.Threepenny__8217___does_not_export___8216__loadFile__8217__./comment_5_4cda097e7650c4ba46e26c6e3dbbdc75._comment b/doc/forum/secret-project_and_Module___8216__Graphics.UI.Threepenny__8217___does_not_export___8216__loadFile__8217__./comment_5_4cda097e7650c4ba46e26c6e3dbbdc75._comment
new file mode 100644
index 00000000..608e0bb1
--- /dev/null
+++ b/doc/forum/secret-project_and_Module___8216__Graphics.UI.Threepenny__8217___does_not_export___8216__loadFile__8217__./comment_5_4cda097e7650c4ba46e26c6e3dbbdc75._comment
@@ -0,0 +1,65 @@
+[[!comment format=mdwn
+ username="stappers@eb96885816da287c29f6f699999434d532149234"
+ nickname="stappers"
+ avatar="http://cdn.libravatar.org/avatar/bf33450acf6fc2a17a8b4e6fc7749c65"
+ subject="stack extra dep threepenny-gui-0.8.2.0 compile error"
+ date="2017-12-29T09:22:34Z"
+ content="""
+With having
+
+ extra-deps:
+ - propellor-5.1.0
+ - threepenny-gui-0.8.2.0
+
+in `stack.yaml` gives me this compile error:
+
+ Preprocessing executable 'propellor-config' for secret-project-0.0...
+ [ 7 of 10] Compiling Installer.UI ( Installer/UI.hs, .stack-work/dist/x86_64-linux-nopie/Cabal-1.24.2.0/build/propellor-config/propellor-config-tmp/Installer/UI.o )
+
+ /home/stappers/src/secret-project/Installer/UI.hs:282:32: error:
+ • Couldn't match type ‘(t1, (Int, Int))’ with ‘[Char]’
+ Expected type: UI.DragData
+ Actual type: (t1, (Int, Int))
+ • In the pattern: (_d, (x, y))
+ In the second argument of ‘($)’, namely
+ ‘\ (_d, (x, y))
+ -> void
+ $ do { now <- getTime clock;
+ liftIO $ writeIORef draginfo (x, y, now);
+ .... }’
+ In a stmt of a 'do' block:
+ on UI.dragStart elt
+ $ \ (_d, (x, y))
+ -> void
+ $ do { now <- getTime clock;
+ liftIO $ writeIORef draginfo (x, y, now);
+ .... }
+
+ /home/stappers/src/secret-project/Installer/UI.hs:487:27: error:
+ • Couldn't match type ‘(t0 a0, (Int, Int))’ with ‘[Char]’
+ Expected type: UI.DragData
+ Actual type: (t0 a0, (Int, Int))
+ • In the pattern: (d, (x, y))
+ In the second argument of ‘($)’, namely
+ ‘\ (d, (x, y))
+ -> when (not (null d))
+ $ liftIO $ writeIORef dropSuccess (True, (x, y))’
+ In a stmt of a 'do' block:
+ on UI.drop elt
+ $ \ (d, (x, y))
+ -> when (not (null d))
+ $ liftIO $ writeIORef dropSuccess (True, (x, y))
+
+ -- While building custom Setup.hs for package secret-project-0.0 using:
+ /root/.stack/setup-exe-cache/x86_64-linux-nopie/Cabal-simple_mPHDZzAJ_1.24.2.0_ghc-8.0.2 --builddir=.stack-work/dist/x86_64-linux-nopie/Cabal-1.24.2.0 build exe:propellor-config --ghc-options \" -ddump-hi -ddump-to-file\"
+ Process exited with code: ExitFailure 1
+
+I hope it is reproduceable and that it can be fixed.
+
+Thank you
+
+Groeten
+
+Geert Stappers
+
+"""]]
diff --git a/doc/forum/secret-project_and_Module___8216__Graphics.UI.Threepenny__8217___does_not_export___8216__loadFile__8217__./comment_6_249337c7f647cca8f4e23c99897458d9._comment b/doc/forum/secret-project_and_Module___8216__Graphics.UI.Threepenny__8217___does_not_export___8216__loadFile__8217__./comment_6_249337c7f647cca8f4e23c99897458d9._comment
new file mode 100644
index 00000000..9d540993
--- /dev/null
+++ b/doc/forum/secret-project_and_Module___8216__Graphics.UI.Threepenny__8217___does_not_export___8216__loadFile__8217__./comment_6_249337c7f647cca8f4e23c99897458d9._comment
@@ -0,0 +1,22 @@
+[[!comment format=mdwn
+ username="joey"
+ subject="""comment 6"""
+ date="2017-12-29T15:56:21Z"
+ content="""
+You need this for it to build with the newer stack:
+
+ --- a/stack.yaml
+ +++ b/stack.yaml
+ @@ -4,4 +4,5 @@ packages:
+ resolver: lts-8.12
+ extra-deps:
+ - propellor-5.1.0
+ +- archive: http://github.com/joeyh/threepenny-gui/archive/59242cf93bdb8eaa805f5c2b0241e9a1cba9a70f.zip
+ explicit-setup-deps:
+
+However, that won't work with the
+[stack currently in debian](http://package.debian.org/haskell-stack)
+and since secret-project later installs that version of stack and runs
+it against the same stack.yaml file, I can't commit that change until
+Debian gets around to [upgrading haskell-stack](http://bugs.debian.org/877256)
+"""]]
diff --git a/doc/forum/secret-project_and_type_constructor_or_class___8216__PartSpec__8217__.mdwn b/doc/forum/secret-project_and_type_constructor_or_class___8216__PartSpec__8217__.mdwn
new file mode 100644
index 00000000..94d58f2b
--- /dev/null
+++ b/doc/forum/secret-project_and_type_constructor_or_class___8216__PartSpec__8217__.mdwn
@@ -0,0 +1,43 @@
+Hi,
+
+After
+ git clone https://git.joeyh.name/git/secret-project.git
+
+plus
+ --- a/secret-project.cabal
+ +++ b/secret-project.cabal
+ @@ -21,7 +21,7 @@ Executable propellor-config
+ Build-Depends:
+ base (>= 4.9 && < 5.0)
+ , propellor >= 4.7.6
+ - , threepenny-gui (== 0.8.0.0)
+ + , threepenny-gui (>= 0.8.0.0)
+ , random (>= 1.1)
+ , random-shuffle (>= 0.0.4)
+ , filepath (>= 1.4)
+
+
+Gives `propellor spin` me this
+
+[ 5 of 10] Compiling Installer.Target ( Installer/Target.hs, dist/build/propellor-config/propellor-config-tmp/Installer/Target.o )
+
+Installer/Target.hs:28:51: error:
+ Not in scope: type constructor or class ‘PartSpec’
+
+Installer/Target.hs:97:30: error:
+ Not in scope: type constructor or class ‘PartSpec’
+
+Installer/Target.hs:178:51: error:
+ Not in scope: type constructor or class ‘PartSpec’
+propellor: cabal build failed
+CallStack (from HasCallStack):
+ error, called at src/Propellor/Bootstrap.hs:259:25 in main:Propellor.Bootstrap
+
+
+
+How to get beyond that compile error?
+
+
+Cheers
+Geert Stappers
+
diff --git a/doc/forum/secret-project_and_type_constructor_or_class___8216__PartSpec__8217__/comment_1_492a5c5297a80f18282361fb5c27ad8a._comment b/doc/forum/secret-project_and_type_constructor_or_class___8216__PartSpec__8217__/comment_1_492a5c5297a80f18282361fb5c27ad8a._comment
new file mode 100644
index 00000000..5fbd00ff
--- /dev/null
+++ b/doc/forum/secret-project_and_type_constructor_or_class___8216__PartSpec__8217__/comment_1_492a5c5297a80f18282361fb5c27ad8a._comment
@@ -0,0 +1,20 @@
+[[!comment format=mdwn
+ username="stappers@eb96885816da287c29f6f699999434d532149234"
+ nickname="stappers"
+ avatar="http://cdn.libravatar.org/avatar/bf33450acf6fc2a17a8b4e6fc7749c65"
+ subject="patch, sorry for the previous line wraps"
+ date="2017-12-27T23:14:22Z"
+ content="""
+ --- a/secret-project.cabal
+ +++ b/secret-project.cabal
+ @@ -21,7 +21,7 @@ Executable propellor-config
+ Build-Depends:
+ base (>= 4.9 && < 5.0)
+ , propellor >= 4.7.6
+ - , threepenny-gui (== 0.8.0.0)
+ + , threepenny-gui (>= 0.8.0.0)
+ , random (>= 1.1)
+ , random-shuffle (>= 0.0.4)
+ , filepath (>= 1.4)
+
+"""]]
diff --git a/doc/forum/secret-project_and_type_constructor_or_class___8216__PartSpec__8217__/comment_2_4e2f36fc1de2644c22d69ab9a2d7e94a._comment b/doc/forum/secret-project_and_type_constructor_or_class___8216__PartSpec__8217__/comment_2_4e2f36fc1de2644c22d69ab9a2d7e94a._comment
new file mode 100644
index 00000000..a5e48372
--- /dev/null
+++ b/doc/forum/secret-project_and_type_constructor_or_class___8216__PartSpec__8217__/comment_2_4e2f36fc1de2644c22d69ab9a2d7e94a._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="joey"
+ subject="""comment 2"""
+ date="2017-12-27T23:42:50Z"
+ content="""
+You need to build secret-project using stack, to get the right version
+of propellor and also a UI patch to threepenny-gui.
+"""]]
diff --git a/doc/forum/secret-project_and_type_constructor_or_class___8216__PartSpec__8217__/comment_3_b436b5eb909dd4b228bb36546f593547._comment b/doc/forum/secret-project_and_type_constructor_or_class___8216__PartSpec__8217__/comment_3_b436b5eb909dd4b228bb36546f593547._comment
new file mode 100644
index 00000000..3380be42
--- /dev/null
+++ b/doc/forum/secret-project_and_type_constructor_or_class___8216__PartSpec__8217__/comment_3_b436b5eb909dd4b228bb36546f593547._comment
@@ -0,0 +1,17 @@
+[[!comment format=mdwn
+ username="stappers@eb96885816da287c29f6f699999434d532149234"
+ nickname="stappers"
+ avatar="http://cdn.libravatar.org/avatar/bf33450acf6fc2a17a8b4e6fc7749c65"
+ subject="README.mdwn"
+ date="2017-12-28T12:02:17Z"
+ content="""
+
+Use `stack` for building.
+Find stack at <https://docs.haskellstack.org/en/stable/README/>
+
+After installing `stack` do
+
+ stack build
+
+in this directory.
+"""]]
diff --git a/doc/forum/secret-project_and_type_constructor_or_class___8216__PartSpec__8217__/comment_4_568bda577a15f1ef405dd20eec24aa9b._comment b/doc/forum/secret-project_and_type_constructor_or_class___8216__PartSpec__8217__/comment_4_568bda577a15f1ef405dd20eec24aa9b._comment
new file mode 100644
index 00000000..52726dc1
--- /dev/null
+++ b/doc/forum/secret-project_and_type_constructor_or_class___8216__PartSpec__8217__/comment_4_568bda577a15f1ef405dd20eec24aa9b._comment
@@ -0,0 +1,19 @@
+[[!comment format=mdwn
+ username="stappers@eb96885816da287c29f6f699999434d532149234"
+ nickname="stappers"
+ avatar="http://cdn.libravatar.org/avatar/bf33450acf6fc2a17a8b4e6fc7749c65"
+ subject="patch"
+ date="2017-12-28T13:08:12Z"
+ content="""
+patch against the now existing README file
+
+ --- a/README
+ +++ b/README
+ @@ -4,3 +4,5 @@ based GUI. I ran it live in my \"Life After Debian\" talk at DebConf 17.
+ http://meetings-archive.debian.net/pub/debian-meetings/2017/debconf17/life-after-debian.vp8.webm
+
+ If you would like to build this, use stack, eg \"stack build\"
+ +
+ +FYI stack homepage is https://docs.haskellstack.org/en/stable/README/
+
+"""]]
diff --git a/doc/todo/etckeeper/comment_2_69484bfac40de156a4b877f27aa69eca._comment b/doc/todo/etckeeper/comment_2_69484bfac40de156a4b877f27aa69eca._comment
new file mode 100644
index 00000000..dfb9f9df
--- /dev/null
+++ b/doc/todo/etckeeper/comment_2_69484bfac40de156a4b877f27aa69eca._comment
@@ -0,0 +1,14 @@
+[[!comment format=mdwn
+ username="stappers@eb96885816da287c29f6f699999434d532149234"
+ nickname="stappers"
+ avatar="http://cdn.libravatar.org/avatar/bf33450acf6fc2a17a8b4e6fc7749c65"
+ subject="why still on todo list"
+ date="2017-12-27T23:00:58Z"
+ content="""
+the 'all needed apt.installed[\"etckeeper\"]' seems to me that the etckeeper is available.
+
+Why is this still on the todo list?
+
+What kind of patches are wanted??
+
+"""]]
diff --git a/doc/todo/etckeeper/comment_3_5f62128bdb550de475d22abb35730949._comment b/doc/todo/etckeeper/comment_3_5f62128bdb550de475d22abb35730949._comment
new file mode 100644
index 00000000..7d2f8d43
--- /dev/null
+++ b/doc/todo/etckeeper/comment_3_5f62128bdb550de475d22abb35730949._comment
@@ -0,0 +1,7 @@
+[[!comment format=mdwn
+ username="joey"
+ subject="""comment 3"""
+ date="2017-12-27T23:35:16Z"
+ content="""
+Yeah, just been waiting to hear back from the issue submitter.
+"""]]
diff --git a/doc/todo/removable_drive_partitioning_and_install.mdwn b/doc/todo/removable_drive_partitioning_and_install.mdwn
new file mode 100644
index 00000000..891c3b92
--- /dev/null
+++ b/doc/todo/removable_drive_partitioning_and_install.mdwn
@@ -0,0 +1,40 @@
+I want to be able to temporarily plug in the root drive of another host
+to my laptop and run propellor to re-image the drive with the properties of
+the host it belongs to. This is especially useful when the drive is too
+large to make a DiskImage on my laptop.
+
+Open design questions:
+
+* How to uniquely identify which removable drive belongs to which Host?
+ Could use partition uuids for updating an already imaged drive, but not
+ for the initial build.
+
+ /dev/disk/by-id/ seems a good way to go. Eg for a USB drive I have,
+ "/dev/disk/by-id/usb-LaCie_iamaKey_37637172f536ba-0:0" probably uniquely
+ identifies it, at least as long as the manufacturer is not reusing serial
+ numbers.
+
+ One problem with /dev/disk/by-id/ is, if a removable drive is attached
+ on a different bus (ie, a SATA drive might be connected via SATA or a USB
+ dock), it won't appear the same there.
+
+ Could instead use eg `udevadm info --query=all -n /dev/sdb`, which
+ breaks out `ID_SERIAL`. However, this would be harder for the user to
+ look up. Or, could parse the /dev/disk/by-id/ name, excluding the bus
+ part of it.
+
+ Question: When using microsd card adapter, does the serial number pass
+ through so different microsds can be distinguished?
+ > Checked this, and two microsd card adapters from different
+ > manufacturers with different microsd cards have the same by-id.
+ > Those must have no serial number..
+
+* Should an already imaged drive be updated incrementally or re-imaged?
+ Seems both cases would be useful, the former especially for incrementally
+ configuring it, the latter to bring it up from a clean state.
+ If it defaults to updating, the user could force a re-image by deleting
+ the partitions from the drive manually.
+
+secret-project has some code for /target which might be reusable here.
+
+--[[Joey]]
diff --git a/privdata/relocate b/privdata/relocate
deleted file mode 100644
index 271692d8..00000000
--- a/privdata/relocate
+++ /dev/null
@@ -1 +0,0 @@
-.joeyconfig
diff --git a/src/Propellor/Property/DiskImage.hs b/src/Propellor/Property/DiskImage.hs
index 1f4f8118..24459476 100644
--- a/src/Propellor/Property/DiskImage.hs
+++ b/src/Propellor/Property/DiskImage.hs
@@ -17,7 +17,7 @@ module Propellor.Property.DiskImage (
imageRebuiltFor,
imageBuiltFrom,
imageExists,
- Grub.BIOS(..),
+ GrubTarget(..),
) where
import Propellor.Base
@@ -221,7 +221,7 @@ imageBuilt' rebuild img mkchroot tabletype partspec =
-- installed.
final = case fromInfo (containerInfo chroot) of
[] -> unbootable "no bootloader is installed"
- [GrubInstalled] -> grubFinalized
+ [GrubInstalled grubtarget] -> grubFinalized grubtarget
[UbootInstalled p] -> ubootFinalized p
[FlashKernelInstalled] -> flashKernelFinalized
[UbootInstalled p, FlashKernelInstalled] ->
@@ -454,9 +454,10 @@ unbootable msg = \_ _ _ -> property desc $ do
where
desc = "image is not bootable"
-grubFinalized :: Finalization
-grubFinalized _img mnt loopdevs = Grub.bootsMounted mnt wholediskloopdev
- `describe` "disk image boots using grub"
+grubFinalized :: GrubTarget -> Finalization
+grubFinalized grubtarget _img mnt loopdevs =
+ Grub.bootsMounted mnt wholediskloopdev grubtarget
+ `describe` "disk image boots using grub"
where
-- It doesn't matter which loopdev we use; all
-- come from the same disk image, and it's the loop dev
diff --git a/src/Propellor/Property/Grub.hs b/src/Propellor/Property/Grub.hs
index d0516dc8..5cb9077d 100644
--- a/src/Propellor/Property/Grub.hs
+++ b/src/Propellor/Property/Grub.hs
@@ -1,4 +1,15 @@
-module Propellor.Property.Grub where
+module Propellor.Property.Grub (
+ GrubDevice,
+ OSDevice,
+ GrubTarget(..),
+ installed,
+ mkConfig,
+ installed',
+ boots,
+ bootsMounted,
+ TimeoutSecs,
+ chainPVGrub
+) where
import Propellor.Base
import qualified Propellor.Property.File as File
@@ -14,40 +25,36 @@ type GrubDevice = String
-- | Eg, \"\/dev/sda\"
type OSDevice = String
-type TimeoutSecs = Int
-
--- | Types of machines that grub can boot.
-data BIOS = PC | EFI64 | EFI32 | Coreboot | Xen
-
-- | Installs the grub package. This does not make grub be used as the
-- bootloader.
--
-- This includes running update-grub, unless it's run in a chroot.
-installed :: BIOS -> Property (HasInfo + DebianLike)
-installed bios = installed' bios
+installed :: GrubTarget -> Property (HasInfo + DebianLike)
+installed grubtarget = installed' grubtarget
`onChange` (check (not <$> inChroot) mkConfig)
--- Run update-grub, to generate the grub boot menu. It will be
+-- | Run update-grub, to generate the grub boot menu. It will be
-- automatically updated when kernel packages are installed.
mkConfig :: Property DebianLike
mkConfig = tightenTargets $ cmdProperty "update-grub" []
`assume` MadeChange
-- | Installs grub; does not run update-grub.
-installed' :: BIOS -> Property (HasInfo + DebianLike)
-installed' bios = setInfoProperty aptinstall
- (toInfo [GrubInstalled])
+installed' :: GrubTarget -> Property (HasInfo + DebianLike)
+installed' grubtarget = setInfoProperty aptinstall
+ (toInfo [GrubInstalled grubtarget])
`describe` "grub package installed"
where
aptinstall = Apt.installed [debpkg]
- debpkg = case bios of
+ debpkg = case grubtarget of
PC -> "grub-pc"
EFI64 -> "grub-efi-amd64"
EFI32 -> "grub-efi-ia32"
Coreboot -> "grub-coreboot"
Xen -> "grub-xen"
--- | Installs grub onto a device, so the system can boot from that device.
+-- | Installs grub onto a device's boot loader,
+-- so the system can boot from that device.
--
-- You may want to install grub to multiple devices; eg for a system
-- that uses software RAID.
@@ -57,9 +64,24 @@ installed' bios = setInfoProperty aptinstall
-- to arrange for this property to only run once, by eg making it be run
-- onChange after OS.cleanInstallOnce.
boots :: OSDevice -> Property Linux
-boots dev = tightenTargets $ cmdProperty "grub-install" [dev]
- `assume` MadeChange
- `describe` ("grub boots " ++ dev)
+boots dev = property' ("grub boots " ++ dev) $ \w -> do
+ grubtarget <- askInfo
+ let ps = case grubtarget of
+ [GrubInstalled t] -> [targetParam t]
+ _ -> []
+ ensureProperty w $
+ cmdProperty "grub-install" (ps ++ [dev])
+ `assume` MadeChange
+
+targetParam :: GrubTarget -> String
+targetParam t = "--target=" ++ case t of
+ PC -> "i386-pc"
+ EFI32 -> "i386-efi"
+ EFI64 -> "x86_64-efi"
+ Coreboot -> "i386-coreboot"
+ Xen -> "x86_64-xen"
+
+type TimeoutSecs = Int
-- | Use PV-grub chaining to boot
--
@@ -95,8 +117,8 @@ chainPVGrub rootdev bootdev timeout = combineProperties desc $ props
-- at a particular directory. The OSDevice should be the underlying disk
-- device that grub will be installed to (generally a whole disk,
-- not a partition).
-bootsMounted :: FilePath -> OSDevice -> Property Linux
-bootsMounted mnt wholediskdev = combineProperties desc $ props
+bootsMounted :: FilePath -> OSDevice -> GrubTarget -> Property Linux
+bootsMounted mnt wholediskdev grubtarget = combineProperties desc $ props
-- remove mounts that are done below to make sure the right thing
-- gets mounted
& cleanupmounts
@@ -112,7 +134,7 @@ bootsMounted mnt wholediskdev = combineProperties desc $ props
& inchroot "update-grub" []
`assume` MadeChange
& check haveosprober (inchroot "chmod" ["+x", osprober])
- & inchroot "grub-install" [wholediskdev]
+ & inchroot "grub-install" [targetParam grubtarget, wholediskdev]
`assume` MadeChange
& cleanupmounts
-- sync all buffered changes out to the disk in case it's
diff --git a/src/Propellor/Property/Mount.hs b/src/Propellor/Property/Mount.hs
index e8f3f092..71f1733e 100644
--- a/src/Propellor/Property/Mount.hs
+++ b/src/Propellor/Property/Mount.hs
@@ -151,4 +151,4 @@ unmountBelow d = do
submnts <- mountPointsBelow d
-- sort so sub-mounts are unmounted before the mount point
-- containing them
- forM_ (sort submnts) umountLazy
+ forM_ (reverse (sort submnts)) umountLazy
diff --git a/src/Propellor/Property/Parted.hs b/src/Propellor/Property/Parted.hs
index 38c55b93..97cf815e 100644
--- a/src/Propellor/Property/Parted.hs
+++ b/src/Propellor/Property/Parted.hs
@@ -85,8 +85,8 @@ calcPartedParamsSize (PartTable tabletype alignment parts) =
[ "mkpart"
, pval (partType p)
, pval (partFs p)
- , partpos startpos
- , partpos endpos
+ , partposexact startpos
+ , partposfuzzy endpos
] ++ case partName p of
Just n -> ["name", show partnum, n]
Nothing -> []
@@ -95,14 +95,29 @@ calcPartedParamsSize (PartTable tabletype alignment parts) =
in calcparts (partnum+1) endpos ps
(c ++ mkpart partnum startpos (endpos-1) p : map (mkflag partnum) (partFlags p))
calcparts _ endpos [] c = (c, endpos)
- partpos n
- | n > 0 = val n ++ "B"
+
+ -- Exact partition position value for parted.
+ -- For alignment to work, the start of a partition must be
+ -- specified exactly.
+ partposexact n
+ | n > 0 = show n ++ "B"
-- parted can't make partitions smaller than 1MB;
-- avoid failure in edge cases
| otherwise = "1MB"
+
+ -- Fuzzy partition position valie for parted.
+ -- This is used to specify the end of the partition,
+ -- parted takes the "MB" as license to slightly reduce the
+ -- partition size when something about the partition table
+ -- does not allow the partition to end exactly at the position.
+ partposfuzzy n
+ | n > 0 = show (fromIntegral n / 1000000 :: Double) ++ "MB"
+ | otherwise = "1MB"
+
-- Location of the start of the first partition,
-- leaving space for the partition table, and aligning.
firstpos = align partitionTableOverhead
+
align = alignTo alignment
-- | Runs parted on a disk with the specified parameters.
diff --git a/src/Propellor/Property/Sbuild.hs b/src/Propellor/Property/Sbuild.hs
index d323ee67..8cc2e3be 100644
--- a/src/Propellor/Property/Sbuild.hs
+++ b/src/Propellor/Property/Sbuild.hs
@@ -48,6 +48,14 @@ To take advantage of the piuparts and autopkgtest support, add to your
>
> $autopkgtest_root_args = "";
> $autopkgtest_opts = ["--", "schroot", "%r-%a-sbuild"];
+
+On Debian jessie hosts, you should ensure that sbuild and autopkgtest come from
+the same suite. This is because the autopkgtest binary changed its name between
+jessie and stretch. If you have not installed backports of sbuild or
+autopkgtest, you don't need to do anything. But if you have installed either
+package from jessie-backports (with Propellor or otherwise), you should install
+the other from jessie-backports, too.
+
-}
module Propellor.Property.Sbuild (
@@ -376,6 +384,13 @@ ccachePrepared = propertyList "sbuild group ccache configured" $ props
--
-- You probably want a custom ~/.sbuildrc on your workstation, but
-- this property is handy for quickly setting up build boxes.
+--
+-- On Debian jessie hosts, you should ensure that sbuild and autopkgtest come
+-- from the same suite. This is because the autopkgtest binary changed its name
+-- between jessie and stretch. If you have not installed backports of sbuild or
+-- autopkgtest, you don't need to do anything. But if you have installed either
+-- package from jessie-backports (with Propellor or otherwise), you should
+-- install the other from jessie-backports, too.
userConfig :: User -> Property DebianLike
userConfig user@(User u) = go
`requires` usableBy user
diff --git a/src/Propellor/Property/SiteSpecific/JoeySites.hs b/src/Propellor/Property/SiteSpecific/JoeySites.hs
index 03e9c3f7..019d2209 100644
--- a/src/Propellor/Property/SiteSpecific/JoeySites.hs
+++ b/src/Propellor/Property/SiteSpecific/JoeySites.hs
@@ -646,7 +646,7 @@ dkimInstalled = go `onChange` Service.restarted "opendkim"
& Apt.serviceInstalledRunning "opendkim"
& File.dirExists "/etc/mail"
& File.hasPrivContent "/etc/mail/dkim.key" (Context "kitenet.net")
- & File.ownerGroup "/etc/mail/dkim.key" (User "opendkim") (Group "opendkim")
+ & File.ownerGroup "/etc/mail/dkim.key" (User "root") (Group "root")
& "/etc/default/opendkim" `File.containsLine`
"SOCKET=\"inet:8891@localhost\""
`onChange`
diff --git a/src/Propellor/Types/Bootloader.hs b/src/Propellor/Types/Bootloader.hs
index fd929d7e..65117bd2 100644
--- a/src/Propellor/Types/Bootloader.hs
+++ b/src/Propellor/Types/Bootloader.hs
@@ -7,13 +7,16 @@ import Propellor.Types.Info
-- | Boot loader installed on a host.
data BootloaderInstalled
- = GrubInstalled
+ = GrubInstalled GrubTarget
| FlashKernelInstalled
| UbootInstalled (FilePath -> FilePath -> Property Linux)
deriving (Typeable)
+-- | Platforms that grub can boot.
+data GrubTarget = PC | EFI64 | EFI32 | Coreboot | Xen
+
instance Show BootloaderInstalled where
- show GrubInstalled = "GrubInstalled"
+ show (GrubInstalled _) = "GrubInstalled"
show FlashKernelInstalled = "FlashKernelInstalled"
show (UbootInstalled _) = "UbootInstalled"