summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
l---------config.hs2
-rw-r--r--doc/forum/Git_repo_updating/comment_2_d83a481b0a82ed1ad5446010c6b88485._comment8
-rw-r--r--doc/todo/HostingProvider_for_AWS/comment_2_bc4fdd34c10aa3d3846818baf7b07dc7._comment8
-rw-r--r--doc/todo/HostingProvider_for_AWS/comment_3_062f85b8358930759b498b613c5599cd._comment10
-rw-r--r--doc/todo/HostingProvider_for_AWS/comment_4_7fb00a5629b390c658fcf3569d49d2c2._comment8
-rw-r--r--doc/todo/detect_and_use___96__GHC__95__PACKAGE__95__PATH__96__/comment_6_36e0123127b60d1d9e9cf38783dc0c2c._comment9
-rw-r--r--doc/todo/detect_and_use___96__GHC__95__PACKAGE__95__PATH__96__/comment_6_73842a5ea0d791cd05621778803e0b69._comment8
-rw-r--r--doc/todo/type_level_OS_requirements.mdwn13
-rw-r--r--doc/todo/type_level_OS_requirements/.comment_1_507e3b74c2a3b8f41da5d3eddf197c6f._comment.swpbin0 -> 12288 bytes
-rw-r--r--doc/todo/type_level_OS_requirements/comment_2_5a1c0c54db25b039eda28e213e1e6263._comment43
-rw-r--r--doc/todo/type_level_OS_requirements/comment_3_124ceb79eaa4eacc9636147dde4c262c._comment8
-rw-r--r--doc/todo/type_level_OS_requirements/comment_4_8d14bbbec4e219015a80f80bf6124181._comment12
-rw-r--r--doc/todo/type_level_OS_requirements/comment_5_35dbd3a2eb073f4c456ac567aec569bd._comment16
-rw-r--r--doc/todo/type_level_OS_requirements/comment_6_b10cb4445eb2519c8b3f7f080c975113._comment21
-rw-r--r--privdata/relocate1
15 files changed, 160 insertions, 7 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/doc/forum/Git_repo_updating/comment_2_d83a481b0a82ed1ad5446010c6b88485._comment b/doc/forum/Git_repo_updating/comment_2_d83a481b0a82ed1ad5446010c6b88485._comment
new file mode 100644
index 00000000..34c93aa9
--- /dev/null
+++ b/doc/forum/Git_repo_updating/comment_2_d83a481b0a82ed1ad5446010c6b88485._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="mithrandi@311efa1b2b5c4999c2edae7da06fb825899e8a82"
+ nickname="mithrandi"
+ subject="comment 2"
+ date="2016-03-08T02:52:40Z"
+ content="""
+In the end, I took the approach of making the thing that used the git repo update it before using it (since the use case was amenable to such a thing).
+"""]]
diff --git a/doc/todo/HostingProvider_for_AWS/comment_2_bc4fdd34c10aa3d3846818baf7b07dc7._comment b/doc/todo/HostingProvider_for_AWS/comment_2_bc4fdd34c10aa3d3846818baf7b07dc7._comment
new file mode 100644
index 00000000..38037bbe
--- /dev/null
+++ b/doc/todo/HostingProvider_for_AWS/comment_2_bc4fdd34c10aa3d3846818baf7b07dc7._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="evan@0e4cded17eab71af967a38b123fbc211cf215421"
+ nickname="evan"
+ subject="AWS Instances"
+ date="2016-03-08T02:53:16Z"
+ content="""
+It just so happens I have a use case for this, and it'll also involve specifics for VPCs, Encryption at Rest, public vs private subnets, and a whole lot of other compliance stuff that would be great to be able to express as properties. I'll start in on something probably shortly. It's either that or try and make Chef compliant, and that's literally completely unappealing.
+"""]]
diff --git a/doc/todo/HostingProvider_for_AWS/comment_3_062f85b8358930759b498b613c5599cd._comment b/doc/todo/HostingProvider_for_AWS/comment_3_062f85b8358930759b498b613c5599cd._comment
new file mode 100644
index 00000000..db7bc2f0
--- /dev/null
+++ b/doc/todo/HostingProvider_for_AWS/comment_3_062f85b8358930759b498b613c5599cd._comment
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="evan@0e4cded17eab71af967a38b123fbc211cf215421"
+ nickname="evan"
+ subject="Container Service"
+ date="2016-03-08T02:54:27Z"
+ content="""
+I forgot to mention that as well. Scheduling Docker containers with the container service on dedicated instances with AWS.
+
+I have needs, and a lot of stubbornness.
+"""]]
diff --git a/doc/todo/HostingProvider_for_AWS/comment_4_7fb00a5629b390c658fcf3569d49d2c2._comment b/doc/todo/HostingProvider_for_AWS/comment_4_7fb00a5629b390c658fcf3569d49d2c2._comment
new file mode 100644
index 00000000..1a37a08c
--- /dev/null
+++ b/doc/todo/HostingProvider_for_AWS/comment_4_7fb00a5629b390c658fcf3569d49d2c2._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="joey"
+ subject="""comment 4"""
+ date="2016-03-08T03:40:07Z"
+ content="""
+Well Evan, I know you already have been in the guts of the spin code, so I
+know you can manage it! Looking forward to this.
+"""]]
diff --git a/doc/todo/detect_and_use___96__GHC__95__PACKAGE__95__PATH__96__/comment_6_36e0123127b60d1d9e9cf38783dc0c2c._comment b/doc/todo/detect_and_use___96__GHC__95__PACKAGE__95__PATH__96__/comment_6_36e0123127b60d1d9e9cf38783dc0c2c._comment
new file mode 100644
index 00000000..28d39bc0
--- /dev/null
+++ b/doc/todo/detect_and_use___96__GHC__95__PACKAGE__95__PATH__96__/comment_6_36e0123127b60d1d9e9cf38783dc0c2c._comment
@@ -0,0 +1,9 @@
+[[!comment format=mdwn
+ username="joey"
+ subject="""comment 6"""
+ date="2016-03-08T22:00:37Z"
+ content="""
+When stack.yaml exists, using --spin would need to get stack installed
+on the remote host, and use it to build propellor. Much as --spin currently
+gets cabal and ghc installed and uses them to build.
+"""]]
diff --git a/doc/todo/detect_and_use___96__GHC__95__PACKAGE__95__PATH__96__/comment_6_73842a5ea0d791cd05621778803e0b69._comment b/doc/todo/detect_and_use___96__GHC__95__PACKAGE__95__PATH__96__/comment_6_73842a5ea0d791cd05621778803e0b69._comment
new file mode 100644
index 00000000..c56d2b7c
--- /dev/null
+++ b/doc/todo/detect_and_use___96__GHC__95__PACKAGE__95__PATH__96__/comment_6_73842a5ea0d791cd05621778803e0b69._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="mithrandi@311efa1b2b5c4999c2edae7da06fb825899e8a82"
+ nickname="mithrandi"
+ subject="comment 6"
+ date="2016-03-08T21:16:30Z"
+ content="""
+That sounds reasonable to me. One question, though; would this mean that if you commit stack.yaml to your repo (which I currently don't do), you have to have Propellor available on all the hosts you deploy to?
+"""]]
diff --git a/doc/todo/type_level_OS_requirements.mdwn b/doc/todo/type_level_OS_requirements.mdwn
index 65e6099f..3cd6e97d 100644
--- a/doc/todo/type_level_OS_requirements.mdwn
+++ b/doc/todo/type_level_OS_requirements.mdwn
@@ -12,10 +12,7 @@ yields a `Property i '[Debian]` -- the intersection of the OS's supported by
the combined properties.
And, combining two properties that demand different OS's would need to be a
-type error. Can a type level function combine two types successfully, and
-fail to combine two others somehow? Don't know. Maybe combine to an
-IncoherentOS and don't allow a `Property i IncoherentOS` to be used in a
-Host?
+type error.
Another kind of property combination would be to glue two properties that
support different OS's together, yielding a property that supports both,
@@ -35,7 +32,7 @@ the OS of the Host is indeterminite. Which would be fixed by using the `os`
property to specify.
On the other hand, if a Host's list of properties yields a single OS
-(or perhaps no OS requirement), the type needs to be just `Host`.
+the type needs to be just `Host`.
After all, propellor operates on a `[Host]`; if we had `Host OS`,
the list couldn't contain host's with different OS's.
@@ -47,4 +44,10 @@ the Propellor Result extracted from the resulting single property.
This is somewhat similar to [[type_level_port_conflict_detection]].
+----
+
+Note that propellor needs to remain buildable with Debian stable's
+ghc 7.6.3. I was able to get the type level OS implementation backported to
+work with that version, with some added ugliness.
+
--[[Joey]]
diff --git a/doc/todo/type_level_OS_requirements/.comment_1_507e3b74c2a3b8f41da5d3eddf197c6f._comment.swp b/doc/todo/type_level_OS_requirements/.comment_1_507e3b74c2a3b8f41da5d3eddf197c6f._comment.swp
new file mode 100644
index 00000000..79380a08
--- /dev/null
+++ b/doc/todo/type_level_OS_requirements/.comment_1_507e3b74c2a3b8f41da5d3eddf197c6f._comment.swp
Binary files differ
diff --git a/doc/todo/type_level_OS_requirements/comment_2_5a1c0c54db25b039eda28e213e1e6263._comment b/doc/todo/type_level_OS_requirements/comment_2_5a1c0c54db25b039eda28e213e1e6263._comment
new file mode 100644
index 00000000..27aaf0cd
--- /dev/null
+++ b/doc/todo/type_level_OS_requirements/comment_2_5a1c0c54db25b039eda28e213e1e6263._comment
@@ -0,0 +1,43 @@
+[[!comment format=mdwn
+ username="joey"
+ subject="""comment 2"""
+ date="2016-03-08T18:44:25Z"
+ content="""
+I've made a typed-os-requirements branch that has type-level
+OS lists implemented.
+
+For example:
+
+ *Propellor.Types.OS.TypeLevel> let l = (debian `combineSupportedOS` freeBSD ) `intersectSupportedOS` unixlike
+ *Propellor.Types.OS.TypeLevel> l
+ OSList [OSDebian,OSFreeBSD]
+ *Propellor.Types.OS.TypeLevel> :t l
+ l :: OSList
+ (IntersectOSList
+ '[] '['OSDebian, 'OSFreeBSD] '['OSDebian, 'OSBuntish, 'OSFreeBSD])
+
+What this is lacking is type-level equality for OSList.
+The complicated type above should be equivilant to `OSList '[OSDebian, OSFreeBSD]`
+
+So, this doesn't type check yet:
+
+ foo :: OSList '[OSDebian, OSFreeBSD]
+ foo = (debian `combineSupportedOS` freeBSD ) `intersectSupportedOS` unixlike
+
+ src/Propellor/Types/OS/Typelevel.hs:47:46:
+ Couldn't match expected type ‘IntersectOSList
+ '[]
+ '['OSDebian, 'OSFreeBSD]
+ '['OSDebian, 'OSBuntish, 'OSFreeBSD]’
+ with actual type ‘'['OSDebian, 'OSFreeBSD]’
+ In the expression:
+ (debian `combineSupportedOS` freeBSD)
+ `intersectSupportedOS` unixlike
+ In an equation for ‘foo’:
+ foo
+ = (debian `combineSupportedOS` freeBSD)
+ `intersectSupportedOS` unixlike
+
+Also, `intersectSupportedOS` should have an additional constraint,
+to prevent it from generating an empty type-level list.
+"""]]
diff --git a/doc/todo/type_level_OS_requirements/comment_3_124ceb79eaa4eacc9636147dde4c262c._comment b/doc/todo/type_level_OS_requirements/comment_3_124ceb79eaa4eacc9636147dde4c262c._comment
new file mode 100644
index 00000000..230eccab
--- /dev/null
+++ b/doc/todo/type_level_OS_requirements/comment_3_124ceb79eaa4eacc9636147dde4c262c._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="joey"
+ subject="""comment 3"""
+ date="2016-03-08T21:06:08Z"
+ content="""
+Asked about what I'm stuck on:
+<http://stackoverflow.com/questions/35878018/how-to-write-an-intersection-function-for-type-level-lists>
+"""]]
diff --git a/doc/todo/type_level_OS_requirements/comment_4_8d14bbbec4e219015a80f80bf6124181._comment b/doc/todo/type_level_OS_requirements/comment_4_8d14bbbec4e219015a80f80bf6124181._comment
new file mode 100644
index 00000000..5db7b68b
--- /dev/null
+++ b/doc/todo/type_level_OS_requirements/comment_4_8d14bbbec4e219015a80f80bf6124181._comment
@@ -0,0 +1,12 @@
+[[!comment format=mdwn
+ username="joey"
+ subject="""comment 4"""
+ date="2016-03-08T21:19:01Z"
+ content="""
+Ok, got intersectSupportedOS fixed.
+
+ *Propellor.Types.OS.TypeLevel> :t (intersectSupportedOS (combineSupportedOS freeBSD debian) debian)
+ (intersectSupportedOS (combineSupportedOS freeBSD debian) debian) :: OSList '['OSDebian]
+
+So, the type level OS lists are ready, on to the next step ... eventually ...
+"""]]
diff --git a/doc/todo/type_level_OS_requirements/comment_5_35dbd3a2eb073f4c456ac567aec569bd._comment b/doc/todo/type_level_OS_requirements/comment_5_35dbd3a2eb073f4c456ac567aec569bd._comment
new file mode 100644
index 00000000..e95a88c8
--- /dev/null
+++ b/doc/todo/type_level_OS_requirements/comment_5_35dbd3a2eb073f4c456ac567aec569bd._comment
@@ -0,0 +1,16 @@
+[[!comment format=mdwn
+ username="joey"
+ subject="""comment 5"""
+ date="2016-03-08T21:56:26Z"
+ content="""
+I got it to throw a nice type error when intersection of two OS lists
+yields an empty list:
+
+ Couldn't match type ‘'CannotCombineOS’ with ‘'CanCombineOS’
+ Expected type: 'CanCombineOS
+ Actual type: CannotCombineOS '['OSDebian] '['OSFreeBSD] '[]
+ In the expression: intersectSupportedOS debian freeBSD
+
+I think the next step would be actually adding the OSList to Property
+and making combining properties combine their OS lists at the type level.
+"""]]
diff --git a/doc/todo/type_level_OS_requirements/comment_6_b10cb4445eb2519c8b3f7f080c975113._comment b/doc/todo/type_level_OS_requirements/comment_6_b10cb4445eb2519c8b3f7f080c975113._comment
new file mode 100644
index 00000000..9741de20
--- /dev/null
+++ b/doc/todo/type_level_OS_requirements/comment_6_b10cb4445eb2519c8b3f7f080c975113._comment
@@ -0,0 +1,21 @@
+[[!comment format=mdwn
+ username="joey"
+ subject="""comment 6"""
+ date="2016-03-09T15:01:05Z"
+ content="""
+I've added a prototype of `ensureProperty` that enforces at the type level
+that the property it runs will work on an OS that's passed to it.
+
+It was easier than I thought; I didn't turn out to need reification. Just
+pass in the outer OS:
+
+ ensureProperty
+ :: (CannotCombineOS outeros inneros (IntersectOSList outeros inneros) ~ CanCombineOS)
+ => OSList outeros
+ -> Property (OSList inneros)
+ -> IO ()
+ ensureProperty outeros (Property inneros a) = a
+
+At this point, I'm confident this can be rolled out into propellor;
+there should be no big bumps in the road ahead.
+"""]]
diff --git a/privdata/relocate b/privdata/relocate
deleted file mode 100644
index 271692d8..00000000
--- a/privdata/relocate
+++ /dev/null
@@ -1 +0,0 @@
-.joeyconfig