{"projects": [{"components": [], "description": "", "externalName": "Leatherman", "issues": [{"affectedVersions": [], "assignee": "61bb63041baa2b0069ef30a1", "attachments": [], "comments": [], "components": [], "created": "2022-07-12T13:02:00.000000", "creator": "5a1beb0b007eb21a79e5d6de", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "leatherman no longer uses TravisCI or AppVeyor and instead uses GitHub Actions"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2b960ae6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PA-4557"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0jfny:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_57939249_*|*_1_*:*_1_*:*_3764304_*|*_10007_*:*_2_*:*_338433201_*|*_3_*:*_2_*:*_285578700_*|*_5_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_5351467784"}], "description": "Convert CI performed by TravisCI and AppVeyor in https://github.com/puppetlabs/leatherman to GitHub Actions", "epicLinkSummary": "Replace TravisCI with GitHub Actions", "estimate": "PT0S", "externalId": "48202", "fixedVersions": ["LTH 1.12.9"], "id": "48202", "issueType": "Task", "key": "LTH-174", "labels": [], "originalEstimate": "PT0S", "parent": "59969", "parentSummary": "Replace TravisCI with GitHub Actions", "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "5a1beb0b007eb21a79e5d6de", "resolution": "Fixed", "resolutionDate": "2022-09-20T10:02:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Switch to GitHub Actions for leatherman", "timeSpent": "PT0S", "updated": "2022-10-05T16:27:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "/cc [~accountid:70121:4596f954-1fdf-472f-a700-6b7c2ffbc525]", "created": "2021-12-16T18:03:00.000000"}], "components": [], "created": "2021-12-16T17:57:00.000000", "creator": "557058:91233464-4152-4228-81dd-172d43a52a03", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4139349d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PA-4115"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0d5cw:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_367801075_*|*_5_*:*_1_*:*_0"}], "description": "Leatherman relies on an old vendored version of Catch 1.10. That version relies on the SIGSTKSZ being defined at compile time, but newer versions of glibc changed it to be a syscall causing compilation to fail:\n\n{noformat}\n# make\ncd /var/tmp/tmp.psx33Hq4Wh/leatherman/tests && /usr/bin/c++ -DBOOST_ALL_DYN_LINK -DBOOST_LOG_WITHOUT_WCHAR_T -DBOOST_SYSTEM_NO_DEPRECATED -DLEATHERMAN_LOCALE_INSTALL=\\\"/opt/puppetlabs/puppet/share/locale\\\" -DLEATHERMAN_LOGGING_NAMESPACE=\\\"leatherman.test\\\" -DLEATHERMAN_USE_LOCALES -DPROJECT_DIR=\\\"/var/tmp/tmp.psx33Hq4Wh/leatherman\\\" -DPROJECT_NAME=\\\"leatherman\\\" -I/var/tmp/tmp.psx33Hq4Wh/leatherman/ruby/inc -I/var/tmp/tmp.psx33Hq4Wh/leatherman/execution/inc -I/var/tmp/tmp.psx33Hq4Wh/leatherman/dynamic_library/inc -I/var/tmp/tmp.psx33Hq4Wh/leatherman/curl/inc -I/var/tmp/tmp.psx33Hq4Wh/leatherman/file_util/inc -I/var/tmp/tmp.psx33Hq4Wh/leatherman/json_container/inc -I/var/tmp/tmp.psx33Hq4Wh/leatherman/src/rapidjson/include -I/var/tmp/tmp.psx33Hq4Wh/leatherman/rapidjson/inc -I/var/tmp/tmp.psx33Hq4Wh/leatherman/logging/inc -I/var/tmp/tmp.psx33Hq4Wh/leatherman/locale/inc -I/var/tmp/tmp.psx33Hq4Wh/leatherman/util/inc -I/var/tmp/tmp.psx33Hq4Wh/leatherman/nowide/../vendor/nowide/include -I/var/tmp/tmp.psx33Hq4Wh/leatherman/nowide/inc -I/var/tmp/tmp.psx33Hq4Wh/leatherman/src/Catch-1.10.0/single_include -I/var/tmp/tmp.psx33Hq4Wh/leatherman/catch/inc -Wno-maybe-uninitialized -I/opt/puppetlabs/puppet/include -I/opt/pl-build-tools/include -fno-strict-overflow -O3 -DNDEBUG -Wextra -std=c++11 -Wall -Wno-unused-parameter -Wno-unused-local-typedefs -Wno-unknown-pragmas -Wno-missing-field-initializers -Wno-maybe-uninitialized -I/opt/puppetlabs/puppet/include -I/opt/pl-build-tools/include -fno-strict-overflow -MD -MT tests/CMakeFiles/leatherman_test.dir/main.cc.o -MF CMakeFiles/leatherman_test.dir/main.cc.o.d -o CMakeFiles/leatherman_test.dir/main.cc.o -c /var/tmp/tmp.psx33Hq4Wh/leatherman/tests/main.cc\nIn file included from /usr/include/signal.h:328,\n                 from /var/tmp/tmp.psx33Hq4Wh/leatherman/src/Catch-1.10.0/single_include/catch.hpp:6450,\n                 from /var/tmp/tmp.psx33Hq4Wh/leatherman/tests/main.cc:2:\n/var/tmp/tmp.psx33Hq4Wh/leatherman/src/Catch-1.10.0/single_include/catch.hpp:6473:33: error: size of array \u2018altStackMem\u2019 is not an integral constant-expression\n 6473 |         static char altStackMem[SIGSTKSZ];\n      |                                 ^~~~~~~~\n/var/tmp/tmp.psx33Hq4Wh/leatherman/src/Catch-1.10.0/single_include/catch.hpp:6524:45: error: size of array \u2018altStackMem\u2019 is not an integral constant-expression\n 6524 |     char FatalConditionHandler::altStackMem[SIGSTKSZ] = {};\n      |                                             ^~~~~~~~\nmake[2]: *** [tests/CMakeFiles/leatherman_test.dir/build.make:79: tests/CMakeFiles/leatherman_test.dir/main.cc.o] Error 1\nmake[2]: Leaving directory '/var/tmp/tmp.psx33Hq4Wh/leatherman'\nmake[1]: *** [CMakeFiles/Makefile2:1020: tests/CMakeFiles/leatherman_test.dir/all] Error 2\nmake[1]: Leaving directory '/var/tmp/tmp.psx33Hq4Wh/leatherman'\nmake: *** [Makefile:149: all] Error 2\n{noformat}\n\nThis issue was reported against cpp-hocon https://github.com/puppetlabs/cpp-hocon/issues/132 on Fedora 34/35, but is now a blocker for puppet-agent support on RHEL9.\n\nWe tried hardcoding the constant:\n\n{code:c}\n#ifndef SIGSTKSZ\n#   define SIGSTKSZ 32768\n#endif\n{code}\n\nto the two files that use it:\n\nCatch-1.10.0/include/internal/catch_fatal_condition.hpp\nCatch-1.10.0/single_include/catch.hpp\n\nAnd updating the vendored zip file, but something in the build process clobbers the change.", "epicLinkSummary": "Add RedHat 9(x86_64) FOSS support", "estimate": "PT0S", "externalId": "48121", "fixedVersions": ["7.15.0", "LTH 1.12.7"], "id": "48121", "issueType": "Bug", "key": "LTH-172", "labels": [], "originalEstimate": "PT0S", "parent": "59039", "parentSummary": "Add RedHat 9(x86_64) FOSS support", "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:91233464-4152-4228-81dd-172d43a52a03", "resolution": "Fixed", "resolutionDate": "2021-12-21T00:07:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Leatherman doesn't compile on RHEL9", "timeSpent": "PT0S", "updated": "2022-02-22T12:10:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:ede92dff-cc7b-4a0e-9ea1-e6d39be6ea56", "attachments": [], "comments": [], "components": [], "created": "2020-06-05T17:54:00.000000", "creator": "5d52935d92705e0c1c5e6b25", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5c254aea"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o02djc:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Builtin command checks were failing due to the output of the `type` command being larger than the allocated buffer. To fix this, the buffer size was increased."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_101560770_*|*_1_*:*_1_*:*_312186803_*|*_10007_*:*_1_*:*_240833137_*|*_3_*:*_1_*:*_84122892_*|*_5_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_167217980"}], "description": "Test host: Ubuntu 18.04, kernel release \"4.15.0-101-generic\"\n\nWhen executing the command \".\" (source), is_builtin() fails to detect \".\" is a built-in function because of a hardcoded buffer size\n{code:java}\nconst int buffer_offset = 25;\nconst int max_buffer = buffer_offset + file.length();\nchar buffer[max_buffer];{code}\nthat is too small for the stream read after.\n\nReturns incorrect result at: https://github.com/puppetlabs/leatherman/blob/master/execution/src/posix/execution.cc#L160\n{code:java}\nreturn contains(data, \"builtin\");{code}\nIssue: variable data copies\n{noformat}\n. is a special shell bui{noformat}\nfrom the stream instead of\n{noformat}\n. is a special shell builtin{noformat}\n\u00a0\n\nTest: increasing buffer size confirms entire result is written to data\nNote: On an older kernel release (i.e. 3.10.0-957.1.3.el7.x86_64), the stream would have contained \". is a shell builtin\" instead", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48225", "fixedVersions": ["LTH 1.12.1", "LTH 1.4.13"], "id": "48225", "issueType": "Bug", "key": "LTH-170", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "5d52935d92705e0c1c5e6b25", "resolution": "Fixed", "resolutionDate": "2020-06-16T05:33:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Buffer size issue causes incorrect result returned in is_builtin()", "timeSpent": "PT0S", "updated": "2020-07-08T07:51:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "5aa6cd9bfe2b4b24ab21c2f7", "attachments": [], "comments": [{"author": "70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8", "body": "https://github.com/puppetlabs/leatherman/blob/master/json_container/src/json_container.cc#L121 is where we incorrectly try to cast all integers to an {{int}}\n\nhttps://github.com/puppetlabs/leatherman/blob/master/json_container/src/json_container.cc#L366-L377 is what we need to duplicate to get an {{int64_t}} instead. If I'm reading the RapidJson source correctly, we should call {{GetInt64}} there.\n\n", "created": "2019-10-18T10:34:00.000000"}, {"author": "5aa6cd9bfe2b4b24ab21c2f7", "body": "It looks like leatherman does not auto promote as part of the client-tools process, so there is still engineering work to do here. Kicking back to ready-for-engineering.", "created": "2019-10-29T13:53:00.000000"}, {"author": "557058:3bbf1c83-df0e-4372-887d-cfc38dee9330", "body": "Assigning back to [~accountid:5aa6cd9bfe2b4b24ab21c2f7] to take care of manual promotion to pe-client-tools. ", "created": "2019-10-29T19:05:00.000000"}], "components": [], "created": "2019-10-18T10:30:00.000000", "creator": "70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@87ec07c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykb9z:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Previously, toPrettyString printed integers as int. For integers larger than the 32-bit maximum of 2^(31), toPrettyString would raise an exception. This release fixes toPrettyString to print integers as int64_t. We still keep getValue<int> for backwards compatibility to handle non-pretty printing use-cases."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "29/Oct/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_353332320_*|*_1_*:*_1_*:*_246779_*|*_10007_*:*_2_*:*_263971044_*|*_3_*:*_1_*:*_46623662_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_376089975"}], "description": "The underlying rapidjson library can decode numbers in JSON as signed or unsigned 32- or 64-bit integers (in addition to floats and doubles, if needed).\n\nJsonContainer attempts to flatten the number namespace a bit - it returns only {{double}} or {{int}}. A double can hold any float, but an {{int}} is too small for many integers - for example, There is a {{memorysize_bytes}} fact which is frequently greater than 2^31.\n\nWe could probably get away with {{double}} and {{int64_t}} as our two value types while pretty-printing. That doesn't *quite* give us the full unsigned integer range of the underlying rapidjson library, but it's good enough.\n\nWe will have to preserve the ability to return an Integer as an {{int}} for backwards compatibility with non-pretty-printing use cases.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48201", "fixedVersions": ["LTH 1.4.9", "LTH 1.6.3", "LTH 1.9.0"], "id": "48201", "issueType": "Bug", "key": "LTH-169", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8", "resolution": "Fixed", "resolutionDate": "2019-10-30T11:28:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "JsonContainer cannot pretty-print integers larger than 2^31", "timeSpent": "PT0S", "updated": "2020-01-15T11:34:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:ede92dff-cc7b-4a0e-9ea1-e6d39be6ea56", "attachments": [], "comments": [], "components": [], "created": "2019-10-18T02:50:00.000000", "creator": "70121:ede92dff-cc7b-4a0e-9ea1-e6d39be6ea56", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@611231ad"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzxtvb:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Added a function to query DWORD values from the Windows Registry"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_4977_*|*_10007_*:*_1_*:*_245129255_*|*_3_*:*_1_*:*_13416600_*|*_6_*:*_1_*:*_0"}], "description": "Currently getting values from the Windows Registry is limited to strings (RRF_RT_REG_EXPAND_SZ, RRF_RT_REG_MULTI_SZ, and RRF_RT_REG_SZ).\n\nWhile we're at it we can also add a bool getter that converts the DWORD to a boolean value (in case we're checking for Enabled/Disabled values).", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48142", "fixedVersions": ["LTH 1.4.9", "LTH 1.6.3", "LTH 1.9.0"], "id": "48142", "issueType": "New Feature", "key": "LTH-168", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "70121:ede92dff-cc7b-4a0e-9ea1-e6d39be6ea56", "resolution": "Fixed", "resolutionDate": "2019-10-21T02:39:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Get DWORD values from the Windows Registry", "timeSpent": "PT0S", "updated": "2019-10-21T02:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:ede92dff-cc7b-4a0e-9ea1-e6d39be6ea56", "attachments": [], "comments": [], "components": [], "created": "2019-09-23T03:03:00.000000", "creator": "70121:ede92dff-cc7b-4a0e-9ea1-e6d39be6ea56", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3a0bacb3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzx54n:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Add support for compiling the test executable using boost 1.71"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_16892_*|*_10009_*:*_1_*:*_175050233_*|*_5_*:*_1_*:*_0"}], "description": "Currently using boost 1.71 compiling the test executable results in cmake errors for not using find_package for the required boost components for proper discovery.\n\nCommunity PR that solves the issue: https://github.com/puppetlabs/leatherman/pull/306", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48140", "fixedVersions": [], "id": "48140", "issueType": "Bug", "key": "LTH-167", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "70121:ede92dff-cc7b-4a0e-9ea1-e6d39be6ea56", "resolution": "Fixed", "resolutionDate": "2019-09-25T03:41:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Cannot compile Leatherman with boost 1.71", "timeSpent": "PT0S", "updated": "2019-09-25T03:41:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:ede92dff-cc7b-4a0e-9ea1-e6d39be6ea56", "attachments": [], "comments": [{"author": "557058:c97862e4-abdd-4410-850d-0f710d0309d3", "body": "Just to clarify, using the debug flag on the client side, I get:\n\n{{Debug: Facter: fact \"os\" has resolved to {}}\n{{\u00a0\u00a0 architecture => \"amd64\",}}\n{{\u00a0\u00a0 family => \"FreeBSD\",}}\n{{\u00a0\u00a0 hardware => \"amd64\",}}\n{{\u00a0\u00a0 name => \"FreeBSD\",}}\n{{\u00a0\u00a0 release => {}}\n{{\u00a0\u00a0\u00a0\u00a0 full => \"11.2-RELEASE-p14\",}}\n{{\u00a0\u00a0\u00a0\u00a0 major => \"11\",}}\n{{\u00a0\u00a0\u00a0\u00a0 minor => \"2-RELEASE-p14\"}}\n{{\u00a0\u00a0 }}}\n{{}.}}\n\nWhich means the fact works correctly with regards to getting the info out of the operating system. Furthermore, other nodes which use older puppet versions such as 4, work correctly. Since the debug flag at the client alters the behaviour, I'd say this is a bug not of the puppetmaster but of the client.\n\n\u00a0\n\nFurthermore, I've been playing with some notice messages on the side of the puppetmaster to understand what's being transmitted by the buggy client to the master. Here's what comes across without the debug flag:\n\n{{os is a Struct[\\{'architecture' => String, 'family' => String, 'hardware' => String, 'name' => String}]}}\n\nand here is what comes across with the debug flag:\n\n{{os is a Struct[\\{'architecture' => String, 'family' => String, 'hardware' => String, 'name' => String, 'release' => Struct[{'full' => String, 'major' => String, 'minor' => String}]}]}}\n\nSo as you can see, when running without the debug flag, the nested Struct (the release key) gets swallowed somewhere along the way.\n\n\u00a0\n\n\u00a0\n\n\u00a0", "created": "2019-09-13T04:44:00.000000"}, {"author": "557058:c97862e4-abdd-4410-850d-0f710d0309d3", "body": "...and, running on the client the command\n\nfacter os\n\nyields:\n\n{{{}}\n{{ architecture => \"amd64\",}}\n{{ family => \"FreeBSD\",}}\n{{ hardware => \"amd64\",}}\n{{ name => \"FreeBSD\"}}\n{{}}}\n\nand the release key is missing. But if I run\n\n{{facter os --debug}}\n\nyields:\n\n{{{}}\n{{\u00a0 architecture => \"amd64\",}}\n{{\u00a0 family => \"FreeBSD\",}}\n{{\u00a0 hardware => \"amd64\",}}\n{{\u00a0 name => \"FreeBSD\",}}\n{{ release => {}}\n{{\u00a0\u00a0\u00a0 full => \"11.2-RELEASE-p14\",}}\n{{\u00a0\u00a0\u00a0 major => \"11\",}}\n{{\u00a0\u00a0\u00a0 minor => \"2-RELEASE-p14\"}}\n{{\u00a0 }}}\n{{}}}\n\nI checked with dwatch and both cases (with debug and without) execute the same /bin/freebsd-version command.\n\nSo, in a nutshell, without the debug flag the release nested key is somehow lost. This is evidently a bug in facter.", "created": "2019-09-13T05:26:00.000000"}, {"author": "557058:c97862e4-abdd-4410-850d-0f710d0309d3", "body": "Okay, I think I found the bug.\n\nhttps://github.com/puppetlabs/leatherman/pull/305\n\nUsing the debug flag was slightly altering the process timing, so the signal was not arriving in time to wreak havoc. Without the debug flag, it was able to cause mischief in a more consistent way.", "created": "2019-09-13T07:23:00.000000"}, {"author": "557058:c97862e4-abdd-4410-850d-0f710d0309d3", "body": "Hello,\n\nReally don't want to nitpick here, but I'd like to respectfully submit that\nthis is not specifically about BSD, any platform using the posix version of\nthat instrumentation (which uses waitpid) would be suspect to this bug. And\nthe version of Ruby shouldn't make any difference.\n\nMany thanks for your time,\n--\nAthanasios Douitsis\n\n\u03a3\u03c4\u03b9\u03c2 \u03a4\u03b5\u03c4, 18 \u03a3\u03b5\u03c0 2019, 16:44 \u03bf \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7\u03c2 Gabriel Nagy (JIRA) <\n\n", "created": "2019-09-18T09:30:00.000000"}], "components": [], "created": "2019-09-12T06:49:00.000000", "creator": "557058:c97862e4-abdd-4410-850d-0f710d0309d3", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@393ea712"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzwz8v:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Using facter/leatherman with ruby 2.6 on BSD causes some facts not to show up as expected due to how  the waitpid system call is handled inside leatherman.\nThis fix implies running the syscall inside a while loop and continuing to loop while waitpid returns -1 with the errno variable is set to EINTR."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Sep/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_425109371_*|*_1_*:*_1_*:*_336448152_*|*_5_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_185220592"}], "description": "I use $os[release][major] inside one of my manifests. Running\n\n{{puppet agent -t}}\n\nyields the error: Operator '[]' is not applicable to an Undef Value\n\nHowever, running\n\n{{puppet agent -t --debug----}}\n\nyields the value correctly and the manifest gets applied okay.\n\n\u00a0", "environment": "FreeBSD 11.2-RELEASE-p14, puppet5-5.5.16, facter-3.14.3.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48138", "fixedVersions": ["LTH 1.4.8", "LTH 1.6.2", "LTH 1.7.3"], "id": "48138", "issueType": "Bug", "key": "LTH-166", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Critical", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:c97862e4-abdd-4410-850d-0f710d0309d3", "resolution": "Fixed", "resolutionDate": "2019-09-23T05:48:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "puppet agent -t --debug resolves fact, without --debug it doesn't", "timeSpent": "PT0S", "updated": "2019-10-11T02:18:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2019-08-23T08:46:00.000000", "creator": "70121:ede92dff-cc7b-4a0e-9ea1-e6d39be6ea56", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@431b2cf6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyk67k:4"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2056797956_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_14799461538"}], "description": "LTH-162 provides a better way to close open file descriptors for Linux-based platforms (with /proc available).\n\nOn BSD/Solaris we should be covered by LTH-160.\n\nOn the other POSIX platforms we support (AIX, OS X) we should investigate and provide the same improvements. Currently we iterate to the max fd limit which for large numbers takes about 2 seconds per shell out (i.e. usually when network facts are queried).\n\nOn Linux with an open fd limit of 1,000,000 the whole facter run took around 10 seconds. With the fix from LTH-162 it takes 0.2 seconds.\n\nWays to get file descriptors on different platforms: [https://stackoverflow.com/questions/899038/getting-the-highest-allocated-file-descriptor]", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48200", "fixedVersions": [], "id": "48200", "issueType": "Improvement", "key": "LTH-165", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "70121:ede92dff-cc7b-4a0e-9ea1-e6d39be6ea56", "resolution": "Won't Fix", "resolutionDate": "2020-03-05T10:04:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Optimize closing file descriptors on other POSIX platforms (AIX, Solaris, OS X)", "timeSpent": "PT0S", "updated": "2020-11-05T01:51:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:ede92dff-cc7b-4a0e-9ea1-e6d39be6ea56", "attachments": [], "comments": [], "components": [], "created": "2019-08-01T05:45:00.000000", "creator": "70121:ede92dff-cc7b-4a0e-9ea1-e6d39be6ea56", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@93ee1b0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzw3x3:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Ruby versions starting with 2.5 have changed how the Windows sockets are started, requiring a call to an additional function for starting them.\n\nNot having this call causes segmentation faults when querying custom facts that use Windows Sockets with Ruby versions 2.5 and higher (i.e. custom facts that make HTTP requests)."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_504561240_*|*_1_*:*_1_*:*_1692487_*|*_10007_*:*_1_*:*_106114415_*|*_3_*:*_1_*:*_8124851_*|*_5_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_321203424"}], "description": "Ruby versions starting with 2.5 have changed how the Windows sockets are started, requiring a call to an additional function for starting them.\n\nNot having this call causes segmentation faults when querying custom facts that use Windows Sockets with Ruby versions 2.5 and higher (i.e. custom facts that make HTTP requests).", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48213", "fixedVersions": ["LTH 1.6.2", "LTH 1.7.1"], "id": "48213", "issueType": "Bug", "key": "LTH-163", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "70121:ede92dff-cc7b-4a0e-9ea1-e6d39be6ea56", "resolution": "Fixed", "resolutionDate": "2019-08-12T03:19:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Call ruby_sysinit to initialize Windows sockets", "timeSpent": "PT0S", "updated": "2019-10-11T02:10:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:ede92dff-cc7b-4a0e-9ea1-e6d39be6ea56", "attachments": [], "comments": [{"author": "5bba538fad2bbf5129914869", "body": "[~accountid:5abd613dd4cf3c56be24b70d]\n\nHi, is there any ETA for looking/fixing this issue?\n\nThanks.", "created": "2019-05-30T05:49:00.000000"}, {"author": "5abd613dd4cf3c56be24b70d", "body": "Hi [~accountid:5bba538fad2bbf5129914869]\n\nI cannot give an ETA right now, we're going to start working on this as soon as we find the time.\n\nIf you decide to further investigate this, we're happy to accept pull requests and provide agent builds.\n\nApologies for the inconvenience,\nMihai", "created": "2019-05-31T06:11:00.000000"}, {"author": "70121:4596f954-1fdf-472f-a700-6b7c2ffbc525", "body": "[~accountid:5bba538fad2bbf5129914869],\n\nThe max value for nofile should be lower or equal than 1048576 (1024*1024). See also [https://unix.stackexchange.com/questions/127777/how-to-configure-the-process-open-file-limit-of-a-user]\n\nCan check with this value?\n\nThank you,\nCiprian\n\n\u00a0", "created": "2019-08-21T07:45:00.000000"}, {"author": "70121:4596f954-1fdf-472f-a700-6b7c2ffbc525", "body": "Still, it could be linked to: https://puppet.atlassian.net/browse/FACT-1904 / https://puppet.atlassian.net/browse/FACT-1853", "created": "2019-08-23T01:39:00.000000"}], "components": [], "created": "2019-03-26T11:11:00.000000", "creator": "5bba538fad2bbf5129914869", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6dd8b925"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzw5cv:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Enhancement"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "On POSIX systems with a high file descriptor limit, leatherman shell outs would take a long time, due to the way file descriptors are closed. In the original implementation, leatherman iterated over the max file descriptor limit and attempted to close everything. This could cause issues with large limits (over 1 million).\n\nTo optimize closing file descriptors on Linux-based systems, we use {{/proc/self/fd}} to get and close them. "}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "31/May/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_781300022_*|*_1_*:*_1_*:*_2991337867_*|*_10007_*:*_1_*:*_342030929_*|*_3_*:*_1_*:*_164891357_*|*_5_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_9785955559"}], "description": "*Puppet Version: 5.5.10*\n *OS Name/Version: Centos 7.4 - kernel 3.10.0-957.10.1.el7.x86_64*\n\nAfter doing upgrade from Centos 6 to Centos 7.4, when running facter command to fetch a single fact (for ex.: 'facter -p role'), it takes very long time to complete.\u00a0\n\nAfter some analysis, it looks like an bug with leatherman, pam_limits, and the kernel on Centos 7.4.\n\n*Desired Behavior:*\n\nThere should be no significant\u00a0delay when running facter to fetch a fact.\n\n*Actual Behavior:*\n\n\u00a0There is a significant delay when using facter.\n\nFrom puppet debug log:\n\n2019-03-26 12:54:43.255656 DEBUG leatherman.execution:559 - process exited with status code 0.\n 2019-03-26 12:54:43.255749 DEBUG leatherman.execution:93 - executing command: /usr/sbin/ip -6 route show\n 2019-03-26 12:54:45.612204 DEBUG | - unreachable ::/96 dev lo metric 1024 error -113 pref medium\n\nNotice the delay (~2 secs) between the command execution and the next line above.\n\nUsing strace to run facter I saw the root cause for delays:\n\n12:58:40.383917 getrlimit(RLIMIT_NOFILE, \\{rlim_cur=10000000, rlim_max=10000000}) = 0\n 12:58:40.383964 vfork() = 21781\n 12:58:42.739790 close(9)\n\nNotice the call to getrlimit which gets the current pam_limits configuration for open files from /etc/security/limits.conf.\n\nlimits.conf is configured to enforce the following on the affected server:\n * soft nofile 10000000\n * hard nofile 10000000\n\nWhen the above limits are removed from the server, the execution works flawlessly.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48212", "fixedVersions": ["LTH 1.4.8", "LTH 1.7.2"], "id": "48212", "issueType": "Bug", "key": "LTH-162", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "5bba538fad2bbf5129914869", "resolution": "Fixed", "resolutionDate": "2019-09-05T06:16:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "leatherman executions are slow with pam_limits config for open files", "timeSpent": "PT0S", "updated": "2019-10-11T02:37:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:3bbf1c83-df0e-4372-887d-cfc38dee9330", "body": "fyi [~accountid:5abd613dd4cf3c56be24b70d]", "created": "2018-11-26T11:55:00.000000"}, {"author": "557058:d494f5f9-7e70-4298-bf72-c8f9e7cca4db", "body": "https://github.com/nlohmann/json might be a good candidate -- latest release was a month ago, pretty active development, + a lot of stars. Haven't played around with it yet though.", "created": "2018-11-27T02:26:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "I would consider https://github.com/miloyip/nativejson-benchmark when evaluating new JSON libraries.", "created": "2018-11-27T11:10:00.000000"}, {"author": "557058:d494f5f9-7e70-4298-bf72-c8f9e7cca4db", "body": "After some discussion with [~accountid:557058:2d7665f0-9d98-407f-86d7-8c4ec6a18b20], the best path forward here is:\n* Find an alternative to rapid JSON. https://github.com/miloyip/nativejson-benchmark has some good options.\n* Include that alternative as a dependency in puppet-runtime and build LTH with it (making the necessary modifications to JsonContainer)\n** The reason for including it as a dependency in puppet-runtime is to facilitate https://puppet.atlassian.net/browse/LTH-130\n* Remove rapid JSON from the vendored libraries\n\nIf this work ends up being pretty painful, then it may be worth having a discussion around whether we should go ahead and implement JsonContainer from scratch instead of relying on a third-party library.", "created": "2018-11-27T11:29:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "We should not implement our own JSON parser.\n\nWhat were the issues with rapidJSON that make it incompatible with GCC 8? I would've expected them to be pretty minor, and I see signs there is some activity fixing it for newer compilers (there was a Clang 7 fix merged a week ago).", "created": "2018-11-27T12:07:00.000000"}, {"author": "557058:2d7665f0-9d98-407f-86d7-8c4ec6a18b20", "body": "[~accountid:557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e] that's totally fine, we can stick with vendored libs.\n\n[~accountid:5abd613dd4cf3c56be24b70d] and [~accountid:5b9fcedc03b52466f05c4510] would have better information about the specific failures we are seeing with GCC 8. From my conversations with them it appears that leatherman would build, but once the leatherman tests would run it would just hang.\n\nThey made attempts to both build with rapidJSON#1.1.0 and the master branch, and we even tried to turn down the optimization during the builld, with the same result.", "created": "2018-11-27T12:16:00.000000"}, {"author": "557058:d494f5f9-7e70-4298-bf72-c8f9e7cca4db", "body": "Looking at https://github.com/miloyip/nativejson-benchmark, Rapid JSON is substantially better than its competitors, so it might be good to just extract that into puppet-runtime and then patch it for GCC 8, unless the patch is very painful. Might try that first.", "created": "2018-11-27T12:40:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "miloyip does appear to be a primary maintainer for rapidjson, so there's a chance the benchmarks are influenced by that. https://github.com/miloyip/nativejson-benchmark#disclaimer\n\nThose benchmarks were one of the primary drivers behind choosing that library.", "created": "2018-11-27T13:10:00.000000"}, {"author": "5b9fcedc03b52466f05c4510", "body": "[~accountid:557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e] [~accountid:557058:2d7665f0-9d98-407f-86d7-8c4ec6a18b20] yes, i managed to go over the build part after adding some\u00a0*-Wno-error=*\u00a0flags:\n\n\u00a0 -Wno-error=class-memaccess -Wno-error=ignored-qualifiers -Wno-error=stringop-truncation -Wno-error=catch-value\u00a0-Wno-error=parentheses\n\nIt gets to the part of running the tests it just get stuck.\n\nThe errors before adding the \u00a0*-Wno-error*\u00a0flags where\u00a0like:\n{code:java}\n/var/tmp/tmp.WCJBtoeN5a/leatherman/src/rapidjson/include/rapidjson/document.h:1647:24: error: \u2018void* memcpy(void*, const void*, size_t)\u2019 writing to an object of type \u2018rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::CrtAllocator>::Member\u2019 {aka \u2018struct rapidjson::GenericMember<rapidjson::UTF8<char>, rapidjson::CrtAllocator>\u2019} with no trivial copy-assignment", "created": "2018-11-28T01:39:00.000000"}, {"author": "557058:d494f5f9-7e70-4298-bf72-c8f9e7cca4db", "body": "[~accountid:5b9fcedc03b52466f05c4510] [~accountid:557058:2d7665f0-9d98-407f-86d7-8c4ec6a18b20] I'm able to get leatherman working with\n{code}\nspecial_flags = \"-DCMAKE_CXX_FLAGS='-Wno-error=parentheses -Wno-error=class-memaccess -Wno-error=ignored-qualifiers -Wno-error=catch-value -O1'\"\n{code}\n\n(i.e. only O1 optimization enabled -- O2+ is when the tests hang).", "created": "2018-12-04T00:20:00.000000"}, {"author": "5b9fcedc03b52466f05c4510", "body": "[~accountid:557058:d494f5f9-7e70-4298-bf72-c8f9e7cca4db] where there any changes necessary on leatherman?\n\n[~accountid:557058:d494f5f9-7e70-4298-bf72-c8f9e7cca4db] [~accountid:557058:2d7665f0-9d98-407f-86d7-8c4ec6a18b20] should we proceed with this approach and build agent with gcc 8(add\n\n-Wno-error) or is there any plan to fix the issues inside the libraries(leatherman, cpp-hocon) that we're using?", "created": "2018-12-04T01:38:00.000000"}, {"author": "557058:d494f5f9-7e70-4298-bf72-c8f9e7cca4db", "body": "[~accountid:5b9fcedc03b52466f05c4510] That's the only one.", "created": "2018-12-04T02:29:00.000000"}, {"author": "557058:d494f5f9-7e70-4298-bf72-c8f9e7cca4db", "body": "After some discussion with my team, https://github.com/puppetlabs/leatherman/pull/288 is the likely path forward for now, especially since it unblocks Fedora 29's enablement. However, this ticket's still open in case we do want to possibly remove/replace RapidJSON in the future.", "created": "2018-12-04T14:47:00.000000"}, {"author": "5b9fcedc03b52466f05c4510", "body": "[~accountid:557058:d494f5f9-7e70-4298-bf72-c8f9e7cca4db] so you guys are planning on releasing a new version of leatherman after that PR is merged and that version will be set in leatherman.json in puppet-agent and will be used for all builds of puppet-agent(on all platforms)?", "created": "2018-12-05T07:09:00.000000"}, {"author": "557058:d494f5f9-7e70-4298-bf72-c8f9e7cca4db", "body": "[~accountid:5b9fcedc03b52466f05c4510] Yes.", "created": "2018-12-05T11:58:00.000000"}], "components": [], "created": "2018-11-21T15:49:00.000000", "creator": "557058:2d7665f0-9d98-407f-86d7-8c4ec6a18b20", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6b25b848"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzrbhz:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "26/Nov/18"}], "description": "Rapid JSON no longer compiles with GCC 8, and since we are moving to system tools for newer OS releases GCC 8 is _already_ a requirement for all of our vendored tools.\n\nRapid JSONs last release was in 2016, and though commits still land for the project they can be few and far between and there have been long periods of no development at all.\n\nWe should investigate if there are any alternatives to using rapid JSON and identify if it's worth it to continue to patch/update the tool ourselves.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48136", "fixedVersions": [], "id": "48136", "issueType": "Task", "key": "LTH-161", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:2d7665f0-9d98-407f-86d7-8c4ec6a18b20", "status": "Needs Information", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Investigate an alternative/removal of rapid JSON from leatherman", "timeSpent": "PT0S", "updated": "2019-01-28T12:48:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": "70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8", "attachments": [], "comments": [], "components": [], "created": "2018-11-05T06:13:00.000000", "creator": "5edf82b7f557470abaf7bf71", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@19f25030"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzqyrj:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_2406856892_*|*_1_*:*_1_*:*_7968586722_*|*_10007_*:*_1_*:*_1229362243_*|*_5_*:*_1_*:*_0"}], "description": "Currently leatherman built in the default form attempts to close open file descriptors, which,\u00a0on FreeBSD, can take excessive time when closing large quantities of descriptors.\n\nSee [https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=232538]\u00a0for more info.\n\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48243", "fixedVersions": [], "id": "48243", "issueType": "Bug", "key": "LTH-160", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "5edf82b7f557470abaf7bf71", "resolution": "Fixed", "resolutionDate": "2019-03-19T14:46:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "do_exec_child slow on FreeBSD", "timeSpent": "PT0S", "updated": "2019-09-12T03:15:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "What version of GCC does fedora 28 use? That looks like a fairly new GCC enforcing something that used to be allowed.\n\nWe should look at upgrading to rapidjson 1.1, unfortunately that hasn't been a trivial upgrade so I've never finished it.", "created": "2018-06-26T09:09:00.000000"}, {"author": "557058:c7e2df03-377d-4bf0-9407-106b8483430d", "body": "{code}\n$ gcc --version\ngcc (GCC) 8.1.1 20180502 (Red Hat 8.1.1-1)\n{code}", "created": "2018-06-26T09:17:00.000000"}, {"author": "557058:75cf0874-3831-4bb6-a7ff-b655ecaa1a81", "body": "Not sure how related this is, but puppet-agent 5.5.x with leatherman 1.4.x seems to be building successfully on Fedora 28 with system gcc", "created": "2018-06-27T12:33:00.000000"}, {"author": "5abd613dd4cf3c56be24b70d", "body": "fixed in: https://github.com/puppetlabs/leatherman/pull/288", "created": "2019-09-16T03:58:00.000000"}], "components": [], "created": "2018-06-26T03:26:00.000000", "creator": "557058:c7e2df03-377d-4bf0-9407-106b8483430d", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@24c83924"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hznwxb:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "26/Jun/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_38622740084_*|*_6_*:*_1_*:*_0"}], "description": "An attempt to build Leatherman on Fedora 28 results in the following error:\n{code:java}\n[ 27%] Building CXX object json_container/CMakeFiles/leatherman_json_container.dir/src/json_container.cc.o\nIn file included from /home/thhal/git/leatherman/json_container/src/json_container.cc:4:\n/home/thhal/git/leatherman/build/src/rapidjson/include/rapidjson/document.h: In instantiation of \u2018void rapidjson::GenericValue<Encoding, Allocator>::SetObjectRaw(rapidjson::GenericValue<Encoding, Allocator>::Member*, rapidjson::SizeType, Allocator&) [with Encoding = rapidjson::UTF8<char>; Allocator = rapidjson::CrtAllocator; rapidjson::GenericValue<Encoding, Allocator>::Member = rapidjson::GenericMember<rapidjson::UTF8<char>, rapidjson::CrtAllocator>; rapidjson::SizeType = unsigned int]\u2019:\n/home/thhal/git/leatherman/build/src/rapidjson/include/rapidjson/document.h:1939:9:   required from \u2018bool rapidjson::GenericDocument<Encoding, Allocator, StackAllocator>::EndObject(rapidjson::SizeType) [with Encoding = rapidjson::UTF8<char>; Allocator = rapidjson::CrtAllocator; StackAllocator = rapidjson::CrtAllocator; rapidjson::SizeType = unsigned int]\u2019\n/home/thhal/git/leatherman/build/src/rapidjson/include/rapidjson/document.h:1500:50:   required from \u2018bool rapidjson::GenericValue<Encoding, Allocator>::Accept(Handler&) const [with Handler = rapidjson::GenericDocument<rapidjson::UTF8<char>, rapidjson::CrtAllocator, rapidjson::CrtAllocator>; Encoding = rapidjson::UTF8<char>; Allocator = rapidjson::CrtAllocator]\u2019\n/home/thhal/git/leatherman/build/src/rapidjson/include/rapidjson/document.h:1990:13:   required from \u2018rapidjson::GenericValue<Encoding, Allocator>::GenericValue(const rapidjson::GenericValue<Encoding, SourceAllocator>&, Allocator&) [with SourceAllocator = rapidjson::CrtAllocator; Encoding = rapidjson::UTF8<char>; Allocator = rapidjson::CrtAllocator]\u2019\n/home/thhal/git/leatherman/json_container/src/json_container.cc:435:72:   required from here\n/home/thhal/git/leatherman/build/src/rapidjson/include/rapidjson/document.h:1647:24: error: \u2018void* memcpy(void*, const void*, size_t)\u2019 writing to an object of type \u2018rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::CrtAllocator>::Member\u2019 {aka \u2018struct rapidjson::GenericMember<rapidjson::UTF8<char>, rapidjson::CrtAllocator>\u2019} with no trivial copy-assignment; use copy-assignment instead [-Werror=class-memaccess]\n             std::memcpy(data_.o.members, members, count * sizeof(Member));\n             ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n {code}\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48134", "fixedVersions": [], "id": "48134", "issueType": "Bug", "key": "LTH-159", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:c7e2df03-377d-4bf0-9407-106b8483430d", "resolution": "Fixed", "resolutionDate": "2019-09-16T03:58:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Unable to build on Fedora 28.", "timeSpent": "PT0S", "updated": "2019-09-16T03:58:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-06-20T16:57:00.000000", "creator": "5ade3a9f91bc312e6a4a30f3", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4e9017aa"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hznstj:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}], "description": "Add ability to use proxy with curl through the leatherman interface. See PCP-848.\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48161", "fixedVersions": ["LTH 1.4.2"], "id": "48161", "issueType": "Improvement", "key": "LTH-158", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "5ade3a9f91bc312e6a4a30f3", "status": "Ready for Merge", "statusCategory": "In Progress", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Add proxy support for curl wrapper", "timeSpent": "PT0S", "updated": "2021-04-16T07:12:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8", "attachments": [], "comments": [{"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Did you set anything special for CFLAGS or CXXFLAGS when building Boost? That error isn't one I've seen before, and we build on CentOS 7 regularly.\n\nIt looks like pl-build-tools sets Boost up with fPIC, which I would expect to avoid any relocation problems. Maybe [~accountid:70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8] has some ideas.\n\nHave you successfully built a previous version of puppet-agent this way before?", "created": "2018-04-25T10:19:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "https://stackoverflow.com/questions/48706962/unresolvable-r-x86-64-none-relocation seems related. I'm not sure why you're experiencing this, but rpm packaging may be stripping some needed symbol information.", "created": "2018-04-25T10:21:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "There's a chance https://github.com/puppetlabs/vanagon/commit/9636da796662cd99386600340346c61fe023bcc0 is causing it, and that we last built pl-boost with an older version of Vanagon. I'd suggest rebuilding pl-boost with Vanagon 0.14.3 and see if that helps. /cc [~accountid:557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4]", "created": "2018-04-25T10:25:00.000000"}, {"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "[~accountid:557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e] Honestly, I've never been able to build anything based on {{vanagon}} but I wanted to give it another try now that some time has passed. I'll try 0.14.3 and see if it works.\n\nThere are far too many internally hard coded puppetlabs network links for the general public to be able to repeat builds but I'm going at it with a sledgehammer to see if I can make it work at all.", "created": "2018-04-25T10:32:00.000000"}, {"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "[~accountid:557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e] Just tried with Vanagon {{0.14.3}} with no change in behavior.", "created": "2018-04-25T13:16:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": ":( I'm out of ideas at the moment.", "created": "2018-04-25T14:07:00.000000"}, {"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "[~accountid:557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e] Have you all tried building it outside of the internal network?\n\nThis is my current set of notes, maybe you'll see something that I'm missing:\n{code:java}\n  * export VANAGON_LOCATION=git@github.com:puppetlabs/vanagon#0.14.3\n  * Create target VM\n    * Ensure you can login via SSH as root without a password\n    * Set `%global __brp_strip_static_archive %{nil}` in `~/.rpmmacros`\n      * This didn't work :-(\n  \n  * Download `pl-build-tools-vanagon`\n    * RPMs are dropped in random places in /var/tmp\n    * You'll need to install them on the target build box\n    * For each project you build, you'll need to go through and disable all\n      mirrors and/or update the URL to be the public source\n  \n  * Start building\n    * Might have issues with ordering\n    * ``for x in configs/projects/*.rb", "created": "2018-04-25T14:16:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "I haven't tried externally. I've done manual builds of everything on different platforms at some point. My most recent is on Alpine via https://github.com/puppetlabs/cpp-project-template/blob/master/docker/Dockerfile and https://github.com/puppetlabs/leatherman/blob/master/.travis.yml. Of course that wasn't building Boost from source.\n\nI've taken a look at what we build internally, and put the dependency versions and output of {{nm /opt/pl-build-tools/lib/libboost_locale.a | grep _ZNSs4_Rep20_S_empty_rep_storageE}} in https://gist.github.com/MikaelSmith/d0bd46b4c12a48e372d2f0884a47ffb0.\n\nIf I look at libstdc++ (both system and built with gcc 4.8) I see\n{code}\n[root@y44n2qx6m3dn4md ~]# readelf -Ws /usr/lib64/libstdc++.so.6 | grep _ZNSs4_Rep20_S_empty_rep_storageE\n  2398: 00000000003073e0    32 OBJECT  UNIQUE DEFAULT   28 _ZNSs4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4\n[root@y44n2qx6m3dn4md ~]# readelf -Ws /opt/pl-build-tools/lib64/libstdc++.so | grep _ZNSs4_Rep20_S_empty_rep_storageE\n  1625: 000000000032f780    32 OBJECT  UNIQUE DEFAULT   26 _ZNSs4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4\n{code}\n\nI'm curious how all of those appear in your builds.\n\nhttps://forums.gentoo.org/viewtopic-t-1066000-start-0.html may also have some suggestions.", "created": "2018-04-26T16:07:00.000000"}, {"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "[~accountid:557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e] Thanks for the feedback. I'm not seeing anything crazy compared with your output.\n\nMy {{nm}} output:\n\n{code}\n[root@centos ~]# nm /opt/pl-build-tools/lib/libboost_locale.a | grep _ZNSs4_Rep20_S_empty_rep_storageE\n                 U _ZNSs4_Rep20_S_empty_rep_storageE\n                 U _ZNSs4_Rep20_S_empty_rep_storageE\n                 U _ZNSs4_Rep20_S_empty_rep_storageE\n                 U _ZNSs4_Rep20_S_empty_rep_storageE\n                 U _ZNSs4_Rep20_S_empty_rep_storageE\n                 U _ZNSs4_Rep20_S_empty_rep_storageE\n                 U _ZNSs4_Rep20_S_empty_rep_storageE\n                 U _ZNSs4_Rep20_S_empty_rep_storageE\n                 U _ZNSs4_Rep20_S_empty_rep_storageE\n                 U _ZNSs4_Rep20_S_empty_rep_storageE\n                 U _ZNSs4_Rep20_S_empty_rep_storageE\n                 U _ZNSs4_Rep20_S_empty_rep_storageE\n                 U _ZNSs4_Rep20_S_empty_rep_storageE\n                 U _ZNSs4_Rep20_S_empty_rep_storageE\n                 U _ZNSs4_Rep20_S_empty_rep_storageE\n                 U _ZNSs4_Rep20_S_empty_rep_storageE\n                 U _ZNSs4_Rep20_S_empty_rep_storageE\n                 U _ZNSs4_Rep20_S_empty_rep_storageE\n                 U _ZNSs4_Rep20_S_empty_rep_storageE\n                 U _ZNSs4_Rep20_S_empty_rep_storageE\n{code}\n\nMy {{readelf}} output:\n\n{code}\n[root@centos ~]# readelf -Ws /usr/lib64/libstdc++.so.6 | grep _ZNSs4_Rep20_S_empty_rep_storageE\n  2398: 00000000003073e0    32 OBJECT  UNIQUE DEFAULT   28 _ZNSs4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4\n[root@centos ~]# readelf -Ws /opt/pl-build-tools/lib64/libstdc++.so | grep _ZNSs4_Rep20_S_empty_rep_storageE\n  1625: 000000000032f780    32 OBJECT  UNIQUE DEFAULT   26 _ZNSs4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4\n  3059: 000000000032f780    32 OBJECT  UNIQUE DEFAULT   26 _ZNSs4_Rep20_S_empty_rep_storageE\n{code}\n\nI am noting that I have the additional {{3059}} line in the second command above but I'm not quite sure what that would indicate.\n\nUnfortunately, I haven't been able to untangle everything from the {{vanagon}} sprawl to be able to attempt to build anything by hand at this point.\n\nI did note that {{vanagon}} appears to support outputting SRPM files. Would it be possible to get a copy of those somewhere for the stack? https://github.com/puppetlabs/vanagon/blob/master/lib/vanagon/platform/rpm.rb#L11\n\n", "created": "2018-04-27T07:51:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "[~accountid:557058:3bbf1c83-df0e-4372-887d-cfc38dee9330] can you find someone to help look into this?", "created": "2018-04-27T17:45:00.000000"}, {"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "[~accountid:557058:3bbf1c83-df0e-4372-887d-cfc38dee9330] or [~accountid:557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e] Just wondering if you managed to garner any hints?", "created": "2018-05-14T11:05:00.000000"}, {"author": "70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8", "body": "I'm wondering if perhaps the Leatherman or Boost builds somehow managed to pick up the wrong GCC? If one of them accidentally built with the system compiler I'd expect to see weird linker errors regarding libstdc++\n\nThat's sort of a WAG - I'm going to spend more time trying to do a full reproduction build for you, but as you know it's a slow process :/", "created": "2018-05-14T11:59:00.000000"}, {"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "[~accountid:70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8] Thanks! Once I have it down, it won't be a slow process at least for CentOS after that. The biggest issue is finding all the hard-coded stuff that you have to munge. I'm hoping that you can shed some light on some magic sauce to make that not horrible as well.", "created": "2018-05-14T12:02:00.000000"}, {"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "[~accountid:70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8] Any updates here?", "created": "2018-06-06T20:21:00.000000"}, {"author": "70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8", "body": "Nope, sorry. I got swamped by work on the latest round of security fixes (emails just went out about them). I'm gonna try to pick this back up next week.", "created": "2018-06-07T16:29:00.000000"}, {"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "[~accountid:70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8] Just my monthly ping on this issue.", "created": "2018-07-05T06:55:00.000000"}], "components": [], "created": "2018-04-24T20:22:00.000000", "creator": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The following command succeeds in the puppet-agent project: {{bundle exec build puppet-agent el-7-x86_64 <BUILD SYSTEM}} IP>"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@30c02730"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PA-184"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzo7e7:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Apr/18"}], "description": "I'm attempting to build the puppet-agent using vanagon and it is failing on leatherman.\n\nI've compiled and installed the pl-build tools as well as the agent-runtime.\n\nThe error is as follows:\n{code:java}\n Linking CXX shared library ../lib/leatherman_locale.so                                        \ncd /var/tmp/tmp.G1HfmnkoA9/leatherman/locale && /opt/pl-build-tools/bin/cmake -E cmake_link_script CMakeFiles/leatherman_locale.dir/link.txt --verbose=1                                     \n/opt/pl-build-tools/bin/g++  -fPIC -Wno-maybe-uninitialized -fPIC -pthread -fPIC -pthread  -fPIC -pthread   -O3 -DNDEBUG  -shared -Wl,-soname,leatherman_locale.so.1.4.1 -o ../lib/leatherman_locale.so.1.4.1 CMakeFiles/leatherman_locale.dir/src/locale.cc.o -Wl,-Bstatic -lboost_locale -lboost_system -Wl,-Bdynamic ../lib/leatherman_util.so.1.4.1 -Wl,-rpath,/var/tmp/tmp.G1HfmnkoA9/leatherman/lib: \n/opt/pl-build-tools/bin/ld: /opt/pl-build-tools/lib/gcc/x86_64-unknown-linux-gnu/4.8.2/../../../libboost_locale.a(generator.o)(.text+0x72): unresolvable R_X86_64_NONE relocation against symbol `_ZNSs4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4'\n/opt/pl-build-tools/bin/ld: final link failed: Nonrepresentable section on output             \ncollect2: error: ld returned 1 exit status{code}\n\nI think that this is due to something in the {{agent-runtime}} linking, but there simply isn't enough documentation to determine how to fix the issue.", "environment": "The build system is CentOS 7 Virtual Machine with all patches as of the time of writing.\n\nThe agent-runtime is 5.5.x.\n\nThe following pl-build RPMs are installed:\n\n* pl-boost-1.58.0-7.el7.x86_64 \n* pl-yaml-cpp-0.5.1-6.el7.x86_64 \n* pl-binutils-2.26-4.el7.x86_64 \n* pl-autotools-1.15-1.el7.x86_64 \n* pl-gcc-4.8.2-9.el7.x86_64 \n* pl-cmake-3.2.3-19.el7.x86_64 \n* pl-curl-7.46.0-1.el7.x86_64 \n* pl-make-4.1-1.el7.x86_64 \n* pl-toolchain-2015.12.01-1.el7.x86_64 \n* pl-gettext-0.19.8-3.el7.x86_64 \n* pl-libffi-3.0.13-1.el7.x86_64 \n* pl-pdcurses-3.4-1.el7.x86_64 \n* pl-rust-1.18.0-1.el7.x86_64 \n* pl-openssl-1.0.24-1.el7.x86_64 \n* pl-zlib-1.2.8-1.el7.x86_64 \n* pl-ruby-2.1.9-4.el7.x86_64 \n* pl-tar-1.28-2.el7.x86_64", "epicLinkSummary": "Puppet Agent should be easily buildable by anybody", "estimate": "PT0S", "externalId": "48254", "fixedVersions": [], "id": "48254", "issueType": "Bug", "key": "LTH-156", "labels": [], "originalEstimate": "PT0S", "parent": "55872", "parentSummary": "Puppet Agent should be easily buildable by anybody", "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "status": "Ready for Engineering", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Unable to build Leatherman on EL7", "timeSpent": "PT0S", "updated": "2018-07-16T15:09:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:093475a3-6bc8-4a70-8034-ae5a2ea66512", "body": "[~accountid:557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e], would you know whether we rely on the current behavior somewhere?", "created": "2018-03-05T10:36:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "I'm not sure. It's possible pxp-agent expects missing keys to appear as empty objects. We could fix that if it comes up.", "created": "2018-03-05T11:47:00.000000"}], "components": [], "created": "2018-03-05T07:00:00.000000", "creator": "557058:093475a3-6bc8-4a70-8034-ae5a2ea66512", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2744a9f4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzkeen:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "05/Mar/18"}], "description": "The Leatherman's {{leatherman::json_container::JsonContainer::getValue}} method with the following signature:\n{code:c++}\ntemplate<> JsonContainer getValue<>(const json_value& value) const;\n{code}\ncontains the following code ([see at GitHub|https://github.com/puppetlabs/leatherman/blob/1.4.0/json_container/src/json_container.cc#L420-L423]):\n{code:c++}\nif (value.IsNull()) {\n    JsonContainer container {};\n    return container;\n}\n{code}\nwhich effectively coerces any\u00a0JSON {{null}} value into an empty {{JsonContainer}}\u00a0/ empty JSON object.\n This piece of code makes it impossible to retrieve a JsonContainer representation of the JSON {{null}} value using any of the {{JsonContainer}}'s {{get}} methods.\n\nI don't know whether we rely on this behavior somewhere but I do know we have to work around it at several places by testing the value type before retrieving it, e.g. [here|https://github.com/puppetlabs/orchestrator-client/blob/2.1.0/lib/src/json_job_printer_base.cc#L91-L95].\n\nWe should consider removing the above special case for the JSON {{null}} values returning them as such from the method instead.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48160", "fixedVersions": [], "id": "48160", "issueType": "Improvement", "key": "LTH-155", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:093475a3-6bc8-4a70-8034-ae5a2ea66512", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Do not coerce JSON null values to empty objects", "timeSpent": "PT0S", "updated": "2019-09-16T03:58:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-03-02T18:03:00.000000", "creator": "557058:093475a3-6bc8-4a70-8034-ae5a2ea66512", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2954fcaa"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzkdw7:"}], "description": "The signature of the existing Leatherman's {{leatherman::json_container::JsonContainer}} method:\n{code:c++}\ntemplate <typename T> void set(std::vector<JsonContainerKey> keys, T value);\n{code}\nshould be changed to:\n{code:c++}\ntemplate <typename T> void set(const std::vector<JsonContainerKey>& keys, T value);\n{code}\nto avoid creation of {{std::vector<JsonContainerKey>}}\u00a0temporaries during calls of the function.\n\nAdditionally a new {{set}} method with the following signature:\n{code:c++}\ntemplate <typename T> void set(T value);\n{code}\nshould be added to the {{leatherman::json_container::JsonContainer}} class to complement the existing {{get}} method:\n{code:c++}\ntemplate <typename T> T get() const;\n{code}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48119", "fixedVersions": [], "id": "48119", "issueType": "Improvement", "key": "LTH-154", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:093475a3-6bc8-4a70-8034-ae5a2ea66512", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Optimized JSON container set methods", "timeSpent": "PT0S", "updated": "2019-09-16T03:57:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-03-02T10:22:00.000000", "creator": "557058:093475a3-6bc8-4a70-8034-ae5a2ea66512", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1677742c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzkdav:"}], "description": "Leatherman does not support NUL characters in JSON object keys. In the past it did not support the NUL characters in the values either but that was fixed in\u00a0LTH-116, similar fix is needed for the keys too.\n\nThe {{struct\u00a0leatherman::json_container::JsonContainerKey}} type should have a new constructor added:\n{code:c++}\nJsonContainerKey(const char* value, size_t len);\n{code}\nand more importantly all the uses of the type should be updated to make sure the key length information is passed to RapidJSON calls as appropriate so that keys containing NUL characters are not truncated at first such character.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48199", "fixedVersions": [], "id": "48199", "issueType": "Improvement", "key": "LTH-153", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:093475a3-6bc8-4a70-8034-ae5a2ea66512", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Support JSON object keys containing NUL characters", "timeSpent": "PT0S", "updated": "2019-09-16T03:57:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "5abd613dd4cf3c56be24b70d", "body": "fixed in: https://github.com/puppetlabs/leatherman/pull/288", "created": "2019-09-16T03:54:00.000000"}], "components": [], "created": "2018-02-11T11:48:00.000000", "creator": "5c4f05605f99774462dc0c98", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@42ceeaf9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzjypz:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Sep/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_50252799990_*|*_6_*:*_1_*:*_0"}], "environment": "There are multiple failures for the same issue but here is one instance:\n{code:java}\n[ 38%] Building CXX object json_container/CMakeFiles/leatherman_json_container.dir/src/json_container.cc.o cd /builddir/build/BUILD/leatherman-1.3.0/json_container && /usr/bin/c++ -DBOOST_ALL_DYN_LINK -DBOOST_LOG_WITHOUT_WCHAR_T -DBOOST_SYSTEM_NO_DEPRECATED -DLEATHERMAN_LOCALE_INSTALL=\\\"/usr/share/locale\\\" -DLEATHERMAN_USE_LOCALES -DPROJECT_DIR=\\\"/builddir/build/BUILD/leatherman-1.3.0\\\" -DPROJECT_NAME=\\\"leatherman\\\" -Dleatherman_json_container_EXPORTS -I/builddir/build/BUILD/leatherman-1.3.0/nowide/inc -I/builddir/build/BUILD/leatherman-1.3.0/util/inc -I/builddir/build/BUILD/leatherman-1.3.0/locale/inc -I/builddir/build/BUILD/leatherman-1.3.0/src/rapidjson/include -I/builddir/build/BUILD/leatherman-1.3.0/rapidjson/inc -I/builddir/build/BUILD/leatherman-1.3.0/json_container/inc -Wno-maybe-uninitialized -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -mcet -fcf-protection -DNDEBUG -fPIC -Wextra -std=c++11 -Wall -Werror -Wno-unused-parameter -Wno-unused-local-typedefs -Wno-unknown-pragmas -Wno-missing-field-initializers -Wno-maybe-uninitialized -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -mcet -fcf-protection -fPIC -nostdlib -nodefaultlibs -o CMakeFiles/leatherman_json_container.dir/src/json_container.cc.o -c /builddir/build/BUILD/leatherman-1.3.0/json_container/src/json_container.cc make[2]: Leaving directory '/builddir/build/BUILD/leatherman-1.3.0' In file included from /builddir/build/BUILD/leatherman-1.3.0/json_container/src/json_container.cc:4: /builddir/build/BUILD/leatherman-1.3.0/src/rapidjson/include/rapidjson/document.h: In instantiation of 'void rapidjson::GenericValue<Encoding, Allocator>::SetObjectRaw(rapidjson::GenericValue<Encoding, Allocator>::Member*, rapidjson::SizeType, Allocator&) [with Encoding = rapidjson::UTF8<char>; Allocator = rapidjson::CrtAllocator; rapidjson::GenericValue<Encoding, Allocator>::Member = rapidjson::GenericMember<rapidjson::UTF8<char>, rapidjson::CrtAllocator>; rapidjson::SizeType = unsigned int]': /builddir/build/BUILD/leatherman-1.3.0/src/rapidjson/include/rapidjson/document.h:1939:9: required from 'bool rapidjson::GenericDocument<Encoding, Allocator, StackAllocator>::EndObject(rapidjson::SizeType) [with Encoding = rapidjson::UTF8<char>; Allocator = rapidjson::CrtAllocator; StackAllocator = rapidjson::CrtAllocator; rapidjson::SizeType = unsigned int]' /builddir/build/BUILD/leatherman-1.3.0/src/rapidjson/include/rapidjson/document.h:1500:50: required from 'bool rapidjson::GenericValue<Encoding, Allocator>::Accept(Handler&) const [with Handler = rapidjson::GenericDocument<rapidjson::UTF8<char>, rapidjson::CrtAllocator, rapidjson::CrtAllocator>; Encoding = rapidjson::UTF8<char>; Allocator = rapidjson::CrtAllocator]' /builddir/build/BUILD/leatherman-1.3.0/src/rapidjson/include/rapidjson/document.h:1990:13: required from 'rapidjson::GenericValue<Encoding, Allocator>::GenericValue(const rapidjson::GenericValue<Encoding, SourceAllocator>&, Allocator&) [with SourceAllocator = rapidjson::CrtAllocator; Encoding = rapidjson::UTF8<char>; Allocator = rapidjson::CrtAllocator]' /builddir/build/BUILD/leatherman-1.3.0/json_container/src/json_container.cc:435:72: required from here /builddir/build/BUILD/leatherman-1.3.0/src/rapidjson/include/rapidjson/document.h:1647:24: error: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::CrtAllocator>::Member' {aka 'struct rapidjson::GenericMember<rapidjson::UTF8<char>, rapidjson::CrtAllocator>'} with no trivial copy-assignment; use copy-assignment instead [-Werror=class-memaccess] std::memcpy(data_.o.members, members, count * sizeof(Member)); ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n{code}\nFull log here:\n\nhttps://kojipkgs.fedoraproject.org//work/tasks/8536/24948536/build.log", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48159", "fixedVersions": [], "id": "48159", "issueType": "Bug", "key": "LTH-152", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "5c4f05605f99774462dc0c98", "resolution": "Fixed", "resolutionDate": "2019-09-16T03:54:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Leatherman fails to build with GCC 8.0.1 prerelease on Fedora Rawhide", "timeSpent": "PT0S", "updated": "2019-09-16T03:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:75cf0874-3831-4bb6-a7ff-b655ecaa1a81", "body": "Here's another instance from the 5.4.x pipeline:\nhttps://jenkins-master-prod-1.delivery.puppetlabs.net/view/puppet-agent/view/Public%20Suites/view/5.4.x/view/Suite/job/platform_puppet-agent_puppet-agent-packaging_daily-5.4.x/1/BUILD_TARGET=windows-2012r2-x64,SLAVE_LABEL=worker/console", "created": "2018-02-09T21:13:00.000000"}, {"author": "557058:3bbf1c83-df0e-4372-887d-cfc38dee9330", "body": "We haven't seen this for a while, closing for now.", "created": "2018-05-15T15:24:00.000000"}], "components": [], "created": "2018-01-30T10:49:00.000000", "creator": "557058:d494f5f9-7e70-4298-bf72-c8f9e7cca4db", "customFieldValues": [{"fieldName": "CI Pipeline/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "platform puppet-agent"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2f78f834"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzjmpr:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Feb/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_9084855522_*|*_6_*:*_1_*:*_0"}], "description": "Happened on both the 1.10.x and master foss pipelines:\n\nhttps://jenkins-master-prod-1.delivery.puppetlabs.net/view/puppet-agent/view/Public%20Suites/view/1.10.x/view/Suite/job/platform_puppet-agent_puppet-agent-packaging_daily-1.10.x/59/BUILD_TARGET=windows-2012r2-x86,SLAVE_LABEL=worker/\n\nhttps://jenkins-master-prod-1.delivery.puppetlabs.net/view/puppet-agent/view/Public%20Suites/view/master/view/Suite/job/platform_puppet-agent_puppet-agent-packaging_daily-master/85/BUILD_TARGET=windows-2012r2-x86,SLAVE_LABEL=worker/\n\nSample output (using the 1.10.x link):\n{code}\n00:05:56 1: lth_file::atomic_write_to_file\n00:05:56 1:   it can write to a regular file, ensure it exists, and delete it\n00:05:56 1: -------------------------------------------------------------------------------\n00:05:56 1: C:\\cygwin64\\var\\tmp\\tmp.Ie9lPF8nTm\\leatherman\\file_util\\tests\\file_utils_test.cc:112\n00:05:56 1: ...............................................................................\n00:05:56 1: \n00:05:56 1: C:\\cygwin64\\var\\tmp\\tmp.Ie9lPF8nTm\\leatherman\\file_util\\tests\\file_utils_test.cc:113: FAILED:\n00:05:56 1: due to unexpected exception with message:\n00:05:56 1:   boost::filesystem::unique_path: Access is denied\n{code}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48101", "fixedVersions": [], "id": "48101", "issueType": "CI Blocker", "key": "LTH-150", "labels": ["ci", "transient", "triaged"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:d494f5f9-7e70-4298-bf72-c8f9e7cca4db", "resolution": "Cannot Reproduce", "resolutionDate": "2018-05-15T15:24:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Leatherman unit tests fail with boost::filesystem::unique_path: Access is denied on Windows 2012r2-x86", "timeSpent": "PT0S", "updated": "2018-05-15T15:24:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8", "attachments": [], "comments": [{"author": "70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8", "body": "Changes from 0.12.2 are purely Travis-related", "created": "2017-10-26T16:29:00.000000"}], "components": [], "created": "2017-10-25T17:20:00.000000", "creator": "557058:2d7665f0-9d98-407f-86d7-8c4ec6a18b20", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3f045680"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzhri7:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "26/Oct/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_27456_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_83266382"}], "description": "1) Check that the version number in source for leatherman is correct\n  \nversion for leatherman should be 0.12.3\n  \n* check {{CMakeLists.txt}} for the {{project(leatherman VERSION X.Y.Z)}} variable\n* check {{locales/leatherman.pot}}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48253", "fixedVersions": [], "id": "48253", "issueType": "Task", "key": "LTH-148", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:2d7665f0-9d98-407f-86d7-8c4ec6a18b20", "resolution": "Won't Do", "resolutionDate": "2017-10-26T16:29:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Bump leatherman to 0.12.3", "timeSpent": "PT0S", "updated": "2017-10-26T16:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:d494f5f9-7e70-4298-bf72-c8f9e7cca4db", "attachments": [], "comments": [{"author": "557058:d494f5f9-7e70-4298-bf72-c8f9e7cca4db", "body": "Pinning this back to the previous tag of 1.2.1 instead because the new commits consist of fixes to Travis and appropriate merge commits.", "created": "2017-10-26T11:37:00.000000"}], "components": [], "created": "2017-10-25T16:01:00.000000", "creator": "557058:2d7665f0-9d98-407f-86d7-8c4ec6a18b20", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@118d0162"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzhra7:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "26/Oct/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_16279_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_70541440"}], "description": "1) Check that the version number in source for leatherman is correct\n\n  version for leatherman should be 1.2.2\n\n  * check {{CMakeLists.txt}} for the {{project(leatherman VERSION X.Y.Z)}} variable\n  * check {{locales/leatherman.pot}} for the {{Project-Id-Version}} variable\n  * check {{CHANGELOG.md}} for relevant notes", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48164", "fixedVersions": ["LTH 1.2.2"], "id": "48164", "issueType": "Task", "key": "LTH-147", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:2d7665f0-9d98-407f-86d7-8c4ec6a18b20", "resolution": "Won't Do", "resolutionDate": "2017-10-26T11:37:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Bump leatherman to 1.2.2", "timeSpent": "PT0S", "updated": "2017-10-26T11:40:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:75cf0874-3831-4bb6-a7ff-b655ecaa1a81", "body": "Here's another instance from today: https://jenkins-master-prod-1.delivery.puppetlabs.net/view/puppet-agent/view/5.3.x/view/Suite/job/platform_puppet-agent_puppet-agent-packaging_daily-5.3.x/19/BUILD_TARGET=windows-2012r2-x64,SLAVE_LABEL=beaker/", "created": "2017-11-03T08:25:00.000000"}, {"author": "557058:3bbf1c83-df0e-4372-887d-cfc38dee9330", "body": "Closing in favor of LTH-150.", "created": "2018-02-06T18:32:00.000000"}], "components": [], "created": "2017-10-10T10:07:00.000000", "creator": "557058:d494f5f9-7e70-4298-bf72-c8f9e7cca4db", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@63fade6f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PA-1021"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzhxlr:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Nov/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_10315535584_*|*_6_*:*_1_*:*_0"}], "description": "Link to the failing job:\nhttps://jenkins-master-prod-1.delivery.puppetlabs.net/view/puppet-agent/view/5.3.x/view/Suite/job/platform_puppet-agent_pkg-van-ship_daily-5.3.x/33/BUILD_TARGET=windows-2012r2-x64,SLAVE_LABEL=beaker/\n\nRelevant part of the output:\n{code}\n08:02:16 test 1\n08:02:16     Start 1: leatherman tests\n08:02:16 \n08:02:16 1: Test command: C:\\cygwin64\\var\\tmp\\tmp.Sk7YaLfi9D\\leatherman\\bin\\leatherman_test.exe\n08:02:16 1: Test timeout computed to be: 9.99988e+006\n08:02:18 1: \n08:02:18 1: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n08:02:18 1: leatherman_test.exe is a Catch v1.4.0 host application.\n08:02:18 1: Run with -? for options\n08:02:18 1: \n08:02:18 1: -------------------------------------------------------------------------------\n08:02:18 1: file_util::each_file\n08:02:18 1: -------------------------------------------------------------------------------\n08:02:18 1: C:\\cygwin64\\var\\tmp\\tmp.Sk7YaLfi9D\\leatherman\\file_util\\tests\\directory_utils_test.cc:9\n08:02:18 1: ...............................................................................\n08:02:18 1: \n08:02:18 1: C:\\cygwin64\\var\\tmp\\tmp.Sk7YaLfi9D\\leatherman\\file_util\\tests\\directory_utils_test.cc:9: FAILED:\n08:02:18 1: due to unexpected exception with message:\n08:02:18 1:   boost::filesystem::unique_path: Access is denied\n08:02:18 1: \n08:02:18 1: -------------------------------------------------------------------------------\n08:02:18 1: file_util::each_subdirectory\n08:02:18 1: -------------------------------------------------------------------------------\n08:02:18 1: C:\\cygwin64\\var\\tmp\\tmp.Sk7YaLfi9D\\leatherman\\file_util\\tests\\directory_utils_test.cc:47\n08:02:18 1: ...............................................................................\n08:02:18 1: \n08:02:18 1: C:\\cygwin64\\var\\tmp\\tmp.Sk7YaLfi9D\\leatherman\\file_util\\tests\\directory_utils_test.cc:47: FAILED:\n08:02:18 1: due to unexpected exception with message:\n08:02:18 1:   boost::filesystem::unique_path: Access is denied\n08:02:18 1: \n08:02:18 1: -------------------------------------------------------------------------------\n08:02:18 1: lth_file::file_readable\n08:02:18 1:   it can check that a file does not exist\n08:02:18 1: -------------------------------------------------------------------------------\n08:02:18 1: C:\\cygwin64\\var\\tmp\\tmp.Sk7YaLfi9D\\leatherman\\file_util\\tests\\file_utils_test.cc:99\n08:02:18 1: ...............................................................................\n08:02:18 1: \n08:02:18 1: C:\\cygwin64\\var\\tmp\\tmp.Sk7YaLfi9D\\leatherman\\file_util\\tests\\file_utils_test.cc:100: FAILED:\n08:02:18 1: due to unexpected exception with message:\n08:02:18 1:   boost::filesystem::unique_path: Access is denied\n08:02:18 1: \n08:02:18 1: -------------------------------------------------------------------------------\n08:02:18 1: lth_file::file_readable\n08:02:18 1:   directories are not readable\n08:02:18 1: -------------------------------------------------------------------------------\n08:02:18 1: C:\\cygwin64\\var\\tmp\\tmp.Sk7YaLfi9D\\leatherman\\file_util\\tests\\file_utils_test.cc:99\n08:02:18 1: ...............................................................................\n08:02:18 1: \n08:02:18 1: C:\\cygwin64\\var\\tmp\\tmp.Sk7YaLfi9D\\leatherman\\file_util\\tests\\file_utils_test.cc:106: FAILED:\n08:02:18 1: due to unexpected exception with message:\n08:02:18 1:   boost::filesystem::unique_path: Access is denied\n08:02:18 1: \n08:02:18 1: -------------------------------------------------------------------------------\n08:02:18 1: lth_file::atomic_write_to_file\n08:02:18 1:   it can write to a regular file, ensure it exists, and delete it\n08:02:18 1: -------------------------------------------------------------------------------\n08:02:18 1: C:\\cygwin64\\var\\tmp\\tmp.Sk7YaLfi9D\\leatherman\\file_util\\tests\\file_utils_test.cc:112\n08:02:18 1: ...............................................................................\n08:02:18 1: \n08:02:18 1: C:\\cygwin64\\var\\tmp\\tmp.Sk7YaLfi9D\\leatherman\\file_util\\tests\\file_utils_test.cc:113: FAILED:\n08:02:18 1: due to unexpected exception with message:\n08:02:18 1:   boost::filesystem::unique_path: Access is denied\n08:02:18 1: \n08:02:18 1: -------------------------------------------------------------------------------\n08:02:18 1: lth_file::atomic_write_to_file\n08:02:18 1:   can write to an existing file\n08:02:18 1: -------------------------------------------------------------------------------\n08:02:18 1: C:\\cygwin64\\var\\tmp\\tmp.Sk7YaLfi9D\\leatherman\\file_util\\tests\\file_utils_test.cc:112\n08:02:18 1: ...............................................................................\n08:02:18 1: \n08:02:18 1: C:\\cygwin64\\var\\tmp\\tmp.Sk7YaLfi9D\\leatherman\\file_util\\tests\\file_utils_test.cc:122: FAILED:\n08:02:18 1: due to unexpected exception with message:\n08:02:18 1:   boost::filesystem::unique_path: Access is denied\n08:02:18 1: \n08:02:18 1: -------------------------------------------------------------------------------\n08:02:18 1: file_util::read\n08:02:18 1:   it can read from a file\n08:02:18 1: -------------------------------------------------------------------------------\n08:02:18 1: C:\\cygwin64\\var\\tmp\\tmp.Sk7YaLfi9D\\leatherman\\file_util\\tests\\file_utils_test.cc:145\n08:02:18 1: ...............................................................................\n08:02:18 1: \n08:02:18 1: C:\\cygwin64\\var\\tmp\\tmp.Sk7YaLfi9D\\leatherman\\file_util\\tests\\file_utils_test.cc:154: FAILED:\n08:02:18 1: due to unexpected exception with message:\n08:02:18 1:   boost::filesystem::unique_path: Access is denied\n08:02:18 1: \n08:02:18 1: -------------------------------------------------------------------------------\n08:02:18 1: file_util::each_line\n08:02:18 1:   an action is performed on each line of a file\n08:02:18 1: -------------------------------------------------------------------------------\n08:02:18 1: C:\\cygwin64\\var\\tmp\\tmp.Sk7YaLfi9D\\leatherman\\file_util\\tests\\file_utils_test.cc:166\n08:02:18 1: ...............................................................................\n08:02:18 1: \n08:02:18 1: C:\\cygwin64\\var\\tmp\\tmp.Sk7YaLfi9D\\leatherman\\file_util\\tests\\file_utils_test.cc:175: FAILED:\n08:02:18 1: due to unexpected exception with message:\n08:02:18 1:   boost::filesystem::unique_path: Access is denied\n08:02:18 1: \n08:02:18 1: -------------------------------------------------------------------------------\n08:02:18 1: file_util::each_line\n08:02:18 1:   a callback that returns false stops at the first line\n08:02:18 1: -------------------------------------------------------------------------------\n08:02:18 1: C:\\cygwin64\\var\\tmp\\tmp.Sk7YaLfi9D\\leatherman\\file_util\\tests\\file_utils_test.cc:166\n08:02:18 1: ...............................................................................\n08:02:18 1: \n08:02:18 1: C:\\cygwin64\\var\\tmp\\tmp.Sk7YaLfi9D\\leatherman\\file_util\\tests\\file_utils_test.cc:185: FAILED:\n08:02:18 1: due to unexpected exception with message:\n08:02:18 1:   boost::filesystem::unique_path: Access is denied\n08:02:18 1: \n08:02:19 1: ===============================================================================\n08:02:19 1: test cases:   81 |   75 passed | 6 failed\n08:02:19 1: assertions: 1320 | 1311 passed | 9 failed\n08:02:19 1: \n08:02:19 1/1 Test #1: leatherman tests .................***Failed    2.70 sec\n08:02:19 \n08:02:19 0% tests passed, 1 tests failed out of 1\n08:02:19 \n08:02:19 Total Test time (real) =   2.72 sec\n08:02:19 \n08:02:19 The following tests FAILED:\n08:02:19 Errors while running CTest\n08:02:19 mingw32-make[1]: *** [test] Error 8\n08:02:19 make: *** [leatherman-check] Error 2\n08:02:19 \t  1 - leatherman tests (Failed)\n08:02:19 makefile:118: recipe for target 'test' failed\n08:02:19 mingw32-make[1]: Leaving directory 'C:/cygwin64/var/tmp/tmp.Sk7YaLfi9D/leatherman'\n08:02:19 Makefile:327: recipe for target 'leatherman-check' failed\n08:02:19 Remote ssh command ((cd /var/tmp/tmp.Sk7YaLfi9D; /usr/bin/make)) failed on 'Administrator@rve30bs2p6bt9k9.delivery.puppetlabs.net'.\n{code}", "epicLinkSummary": "Platform OS Team - CI Blockers and Transients", "estimate": "PT0S", "externalId": "48158", "fixedVersions": [], "id": "48158", "issueType": "Bug", "key": "LTH-146", "labels": ["transient"], "originalEstimate": "PT0S", "parent": "59209", "parentSummary": "Platform OS Team - CI Blockers and Transients", "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:d494f5f9-7e70-4298-bf72-c8f9e7cca4db", "resolution": "Duplicate", "resolutionDate": "2018-02-06T18:32:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Leatherman unit tests fail on Windows 2012r2 x86_64", "timeSpent": "PT0S", "updated": "2018-02-06T18:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:d494f5f9-7e70-4298-bf72-c8f9e7cca4db", "attachments": [], "comments": [], "components": [], "created": "2017-09-15T11:34:00.000000", "creator": "557058:d494f5f9-7e70-4298-bf72-c8f9e7cca4db", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@a025cd7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzgqbr:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Leatherman's JsonContainer now has a 'toPrettyString' method that pretty prints the JSON object such that the pretty printed string is valid JSON."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_2180840_*|*_1_*:*_1_*:*_18548_*|*_10007_*:*_1_*:*_3454676_*|*_3_*:*_1_*:*_271630139_*|*_5_*:*_1_*:*_12932153938_*|*_6_*:*_1_*:*_0"}], "description": "Currently, JsonContainer's \"toPrettyString\" method returns a string that is not valid JSON. Thus, a new method \"toPrettyJson\" will be added that pretty prints the JSON object such that the pretty printed string is a valid JSON string. I.e., it maintains the following property for a JsonContainer jc:\n    jc == JsonContainer(jc.toPrettyJson())", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48196", "fixedVersions": ["LTH 1.3.0", "LTH 1.4.0"], "id": "48196", "issueType": "New Feature", "key": "LTH-145", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:d494f5f9-7e70-4298-bf72-c8f9e7cca4db", "resolution": "Fixed", "resolutionDate": "2017-09-18T16:35:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Add toPrettyJson to json_container", "timeSpent": "PT0S", "updated": "2018-03-14T01:25:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8", "body": "I believe the french file was created by us during the initial setup of translations. It can proably be removed at this point", "created": "2018-05-14T13:47:00.000000"}], "components": [], "created": "2017-09-08T10:32:00.000000", "creator": "557058:89341248-d23e-4b19-a2b6-66b9bb55eb83", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@343501ee"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Manual Test"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:89341248-d23e-4b19-a2b6-66b9bb55eb83"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Manual"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzgjtb:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/May/18"}], "description": "I was testing the master branch (5.2.0) when I noticed that we include mo files for french which we are not adding language support for. So the french 'fr' files should not be being included.\n\n[root@jrtoktjo21jq94d locale]# pwd\n/opt/puppetlabs/puppet/share/locale\n[root@jrtoktjo21jq94d locale]# ls -Flas\ntotal 264\n  4 drwxr-xr-x. 4 root root   4096 Sep  8 08:40 ./\n  4 drwxr-xr-x. 8 root root   4096 Sep  8 08:40 ../\n  4 -rw-r--r--. 1 root root   1256 Sep  7 15:59 config.yaml\n  4 drwxr-xr-x. 3 root root   4096 Sep  8 08:40 fr/\n  4 drwxr-xr-x. 3 root root   4096 Sep  8 08:40 ja/\n244 -rw-r--r--. 1 root root 246360 Sep  7 15:59 puppet.pot\n[root@jrtoktjo21jq94d locale]# find . -print\n.\n./ja\n./ja/puppet.po\n./ja/LC_MESSAGES\n./ja/LC_MESSAGES/puppet.mo\n./config.yaml\n./puppet.pot\n./fr\n./fr/LC_MESSAGES\n./fr/LC_MESSAGES/whereami.mo\n./fr/LC_MESSAGES/leatherman_logging.mo\n./fr/LC_MESSAGES/leatherman_locale.mo\n[root@jrtoktjo21jq94d locale]# find `pwd`/fr -print\n/opt/puppetlabs/puppet/share/locale/fr\n/opt/puppetlabs/puppet/share/locale/fr/LC_MESSAGES\n/opt/puppetlabs/puppet/share/locale/fr/LC_MESSAGES/whereami.mo\n/opt/puppetlabs/puppet/share/locale/fr/LC_MESSAGES/leatherman_logging.mo\n/opt/puppetlabs/puppet/share/locale/fr/LC_MESSAGES/leatherman_locale.mo\n[root@jrtoktjo21jq94d locale]#", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48186", "fixedVersions": [], "id": "48186", "issueType": "Bug", "key": "LTH-144", "labels": ["Easy", "i18", "l10n"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:89341248-d23e-4b19-a2b6-66b9bb55eb83", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "We shouldn't be included a french translation file for leatherman in the the agent", "timeSpent": "PT0S", "updated": "2018-05-21T13:28:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2017-08-30T12:38:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@62f37821"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzgcyf:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_30950_*|*_10007_*:*_1_*:*_1117544286_*|*_5_*:*_1_*:*_0"}], "description": "Add a utility for parsing a URI to examine individual components, such as host and port.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48118", "fixedVersions": ["LTH 1.2.0"], "id": "48118", "issueType": "New Feature", "key": "LTH-143", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Fixed", "resolutionDate": "2017-09-12T11:05:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Add uri parsing utility", "timeSpent": "PT0S", "updated": "2017-09-12T11:05:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:d494f5f9-7e70-4298-bf72-c8f9e7cca4db", "attachments": [], "comments": [{"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e] please provide release notes for this issue, if needed. Thanks!", "created": "2017-09-04T08:20:00.000000"}], "components": [], "created": "2017-08-24T12:56:00.000000", "creator": "557058:d494f5f9-7e70-4298-bf72-c8f9e7cca4db", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@671c0ddc"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzg7z3:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Noted in library changelog, no direct user-facing change."}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "04/Sep/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_515320529_*|*_1_*:*_1_*:*_12196_*|*_10007_*:*_1_*:*_73846233_*|*_3_*:*_1_*:*_7648502_*|*_5_*:*_1_*:*_1212944829_*|*_6_*:*_1_*:*_0"}], "description": "Currently, both file operation errors and server side errors are encapsulated in a single exception - http_file_download_exception with the client having no way of figuring out which is which. It is desirable to distinguish between both cases. Specifically, there are three cases:\n\n(1) A filesystem error is thrown by boost. Here, we define that as a file operation failure.\n\n(2) curl_easy_perform returns CURL_WRITE_ERROR. That is also a file operation failure\n\n(3) Otherwise, everything else is a server error.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48252", "fixedVersions": ["LTH 1.1.2"], "id": "48252", "issueType": "Bug", "key": "LTH-142", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:d494f5f9-7e70-4298-bf72-c8f9e7cca4db", "resolution": "Fixed", "resolutionDate": "2017-08-31T10:44:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Distinguish between file operation errors and server-side errors", "timeSpent": "PT0S", "updated": "2017-09-14T11:39:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Is this also a problem with puppet-job/task?", "created": "2018-02-20T17:25:00.000000"}], "components": [], "created": "2017-08-23T14:51:00.000000", "creator": "557058:89341248-d23e-4b19-a2b6-66b9bb55eb83", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1232eb1d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Manual Test"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzg6mn:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Feb/18"}], "description": "While testing facter I noticed that it doesn't use the Windows code page as a fall back when determining the language of the system. It would be nice if we did this so that puppet and facter would be more consistent in how they determine the language to use.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48117", "fixedVersions": [], "id": "48117", "issueType": "Bug", "key": "LTH-141", "labels": ["i18n", "windows"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:89341248-d23e-4b19-a2b6-66b9bb55eb83", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "leatherman should detect and use the windows code page as the default language", "timeSpent": "PT0S", "updated": "2018-05-21T13:27:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:d494f5f9-7e70-4298-bf72-c8f9e7cca4db", "attachments": [], "comments": [], "components": [], "created": "2017-08-17T12:02:00.000000", "creator": "557058:d494f5f9-7e70-4298-bf72-c8f9e7cca4db", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@291c29ba"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzg293:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Handled in library CHANGELOG."}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_265459672_*|*_1_*:*_1_*:*_56951878_*|*_10007_*:*_1_*:*_48775248_*|*_5_*:*_1_*:*_0"}], "description": "Leatherman.curl should be able to download a file from a given URL and write its contents to the user-provided filename. During download, it will write chunks of the downloaded contents to a temporary file. If download fails, then the temporary file is removed and a new, custom exception, http_file_download_exception is thrown. If the download succeeds, then the temporary file is renamed to the user-provided filename.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48251", "fixedVersions": ["LTH 1.1.0"], "id": "48251", "issueType": "New Feature", "key": "LTH-140", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:d494f5f9-7e70-4298-bf72-c8f9e7cca4db", "resolution": "Fixed", "resolutionDate": "2017-08-21T19:08:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Download file from a given URL", "timeSpent": "PT0S", "updated": "2017-08-21T19:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2017-08-16T12:01:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3c35be4f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzg3in:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Docs in CHANGELOG."}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_228277_*|*_10007_*:*_1_*:*_513154683_*|*_5_*:*_1_*:*_1990904942_*|*_6_*:*_1_*:*_0"}], "description": "We want to ensure stdout/stderr from an executing process is written with a restricted set of permissions. Add a new call signature that allows setting permissions on those files.\n\nAlso allow setting permissions as part of atomic_write_to_file.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48198", "fixedVersions": ["LTH 1.1.0"], "id": "48198", "issueType": "New Feature", "key": "LTH-139", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Fixed", "resolutionDate": "2017-08-22T10:38:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Support setting permissions when writing files in Leatherman", "timeSpent": "PT0S", "updated": "2017-09-14T11:39:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "attachments": [], "comments": [{"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Found while working on PCP-767.", "created": "2017-08-15T13:21:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "This didn't do the right thing on Windows. Multiple lines add an extra newline after every line.", "created": "2017-08-17T11:54:00.000000"}], "components": [], "created": "2017-08-15T12:47:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4a9dee7b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hym9lj:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_676657380_*|*_1_*:*_1_*:*_139981_*|*_10007_*:*_2_*:*_19397281_*|*_3_*:*_2_*:*_5592814_*|*_4_*:*_1_*:*_2164_*|*_5_*:*_2_*:*_156613320"}], "description": "When not using {{leatherman::execution::execution_options::trim_output}} (used by default) and iterating over each line, we can get extra newlines printed at the end because the last one isn't properly removed during the last callback.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48115", "fixedVersions": ["LTH 1.1.0"], "id": "48115", "issueType": "Bug", "key": "LTH-138", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Fixed", "resolutionDate": "2017-08-25T11:13:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Extra newline printed when not trimming execution output", "timeSpent": "PT0S", "updated": "2017-08-25T11:13:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:71582ab7-ed41-48f8-a53e-545356d7dee4", "body": "PR: https://github.com/puppetlabs/leatherman/pull/247", "created": "2017-08-14T16:47:00.000000"}, {"author": "557058:3bbf1c83-df0e-4372-887d-cfc38dee9330", "body": "[~accountid:557058:71582ab7-ed41-48f8-a53e-545356d7dee4], can this be resolved?", "created": "2017-08-27T17:13:00.000000"}], "components": [], "created": "2017-08-14T11:08:00.000000", "creator": "557058:71582ab7-ed41-48f8-a53e-545356d7dee4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "All leatherman dll's should have NXCOMPAT and ASLR flags enabled.  "}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2b25a3d4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzfz07:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Aug/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_1105353454_*|*_1_*:*_1_*:*_20259893_*|*_10009_*:*_2_*:*_79884459_*|*_5_*:*_1_*:*_0"}], "description": " Being done to meet some customer's security audit requirements.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48157", "fixedVersions": ["LTH 0.12.2", "LTH 1.1.0"], "id": "48157", "issueType": "Task", "key": "LTH-137", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:71582ab7-ed41-48f8-a53e-545356d7dee4", "resolution": "Fixed", "resolutionDate": "2017-08-28T10:00:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Enable DEP support in Windows version of leatherman binaries", "timeSpent": "PT0S", "updated": "2017-08-28T10:00:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Hard to debug without more context. However, this sometimes happens if you run out of memory trying to build in parallel.", "created": "2017-05-01T13:09:00.000000"}, {"author": "557058:4b936310-f648-4d94-b03e-54858f771aef", "body": "Added a full log from the moment when the problems start.\nFree memory at the time of building is enough.\nIf I need to provide a log of the whole build process.", "created": "2017-05-01T21:46:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "What version of boost are you using? Does it have shared libraries, static libraries, or both?\n\nThis could be an issue with the version of boost, or with how it's built.", "created": "2017-05-02T11:35:00.000000"}, {"author": "557058:4b936310-f648-4d94-b03e-54858f771aef", "body": "I`ve install a more recent version of boost and this solved the problem.\nThanks for the help.", "created": "2017-05-02T23:36:00.000000"}], "components": [], "created": "2017-04-26T00:04:00.000000", "creator": "557058:4b936310-f648-4d94-b03e-54858f771aef", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2ce70da3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzdl4n:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/May/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_571476668_*|*_6_*:*_2_*:*_31672597"}], "description": "{code}\n  Finished prerequisites of target file 'bin/leatherman_test'.\n  Must remake target 'bin/leatherman_test'.\nPutting child 0x1c30620 (bin/leatherman_test) PID 11540 on the chain.\nLive child 0x1c30620 (bin/leatherman_test) PID 11540\n[ 64%] Linking CXX executable ../bin/leatherman_test\nReaping winning child 0x1c30620 PID 11540\nLive child 0x1c30620 (bin/leatherman_test) PID 11541\nCMakeFiles/leatherman_test.dir/__/locale/tests/locale.cc.o: In function `boost::locale::basic_format<char>::format_output(std::ostream&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const':\nlocale.cc:(.text._ZNK5boost6locale12basic_formatIcE13format_outputERSoRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE[_ZNK5boost6locale12basic_formatIcE13format_outputERSoRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE]+0x469): undefined reference to `boost::locale::details::format_parser::set_one_flag(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'\nCMakeFiles/leatherman_test.dir/__/locale/tests/format.cc.o: In function `bool boost::regex_search<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >(__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::match_results<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >&, boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constants::_match_flags, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >)':\nformat.cc:(.text._ZN5boost12regex_searchIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaINS_9sub_matchISB_EEEcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEEEbT_SJ_RNS_13match_resultsISJ_T0_EERKNS_11basic_regexIT1_T2_EENS_15regex_constants12_match_flagsESJ_[_ZN5boost12regex_searchIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaINS_9sub_matchISB_EEEcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEEEbT_SJ_RNS_13match_resultsISJ_T0_EERKNS_11basic_regexIT1_T2_EENS_15regex_constants12_match_flagsESJ_]+0xba): undefined reference to `boost::re_detail_106200::perl_matcher<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::find()'\nCMakeFiles/leatherman_test.dir/__/locale/tests/format.cc.o: In function `boost::re_detail_106200::perl_matcher<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::perl_matcher(__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::match_results<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >&, boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constants::_match_flags, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >)':\nformat.cc:(.text._ZN5boost16re_detail_10620012perl_matcherIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaINS_9sub_matchISC_EEENS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEEC2ESC_SC_RNS_13match_resultsISC_SF_EERKNS_11basic_regexIcSJ_EENS_15regex_constants12_match_flagsESC_[_ZN5boost16re_detail_10620012perl_matcherIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaINS_9sub_matchISC_EEENS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEEC5ESC_SC_RNS_13match_resultsISC_SF_EERKNS_11basic_regexIcSJ_EENS_15regex_constants12_match_flagsESC_]+0x116): undefined reference to `boost::re_detail_106200::perl_matcher<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::construct_init(boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constants::_match_flags)'\nCMakeFiles/leatherman_test.dir/__/logging/tests/logging.cc.o: In function `bool boost::regex_match<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >(__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::match_results<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >&, boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constants::_match_flags)':\nlogging.cc:(.text._ZN5boost11regex_matchIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaINS_9sub_matchISB_EEEcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEEEbT_SJ_RNS_13match_resultsISJ_T0_EERKNS_11basic_regexIT1_T2_EENS_15regex_constants12_match_flagsE[_ZN5boost11regex_matchIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaINS_9sub_matchISB_EEEcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEEEbT_SJ_RNS_13match_resultsISJ_T0_EERKNS_11basic_regexIT1_T2_EENS_15regex_constants12_match_flagsE]+0x8f): undefined reference to `boost::re_detail_106200::perl_matcher<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::match()'\n../locale/leatherman_locale.a(locale.cc.o): In function `leatherman::locale::get_locale(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&)':\nlocale.cc:(.text+0x10b): undefined reference to `boost::locale::generator::add_messages_path(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'\nlocale.cc:(.text+0x1a0): undefined reference to `boost::locale::generator::add_messages_path(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'\nlocale.cc:(.text+0x1ca): undefined reference to `boost::locale::generator::add_messages_domain(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'\n../locale/leatherman_locale.a(locale.cc.o): In function `boost::locale::generator::operator()(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const':\nlocale.cc:(.text._ZNK5boost6locale9generatorclERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE[_ZNK5boost6locale9generatorclERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE]+0x27): undefined reference to `boost::locale::generator::generate(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const'\ncollect2: error: ld returned 1 exit status\nReaping losing child 0x1c30620 PID 11541\nmake[2]: *** [tests/CMakeFiles/leatherman_test.dir/build.make:765: bin/leatherman_test] Error 1\nRemoving child 0x1c30620 PID 11541 from chain.\nReaping losing child 0xbaf1d0 PID 11539\nmake[1]: *** [CMakeFiles/Makefile2:1221: tests/CMakeFiles/leatherman_test.dir/all] Error 2\nRemoving child 0xbaf1d0 PID 11539 from chain.\nReaping losing child 0x1f417d0 PID 11440\nmake: *** [Makefile:139: all] Error 2\nRemoving child 0x1f417d0 PID 11440 from chain.\n{code}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48156", "fixedVersions": [], "id": "48156", "issueType": "Bug", "key": "LTH-136", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:4b936310-f648-4d94-b03e-54858f771aef", "resolution": "Fixed", "resolutionDate": "2017-05-02T23:36:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Calculate linux bug", "timeSpent": "PT0S", "updated": "2017-05-02T23:36:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [], "components": [], "created": "2017-04-12T15:27:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "- leatherman respects LOCAL CMake vars when installing locale files"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@b8462d0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PA-1024"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:89341248-d23e-4b19-a2b6-66b9bb55eb83"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzdhqn:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_441341045_*|*_1_*:*_1_*:*_6469_*|*_10007_*:*_2_*:*_335788180_*|*_3_*:*_1_*:*_947841876_*|*_5_*:*_1_*:*_0"}], "description": "A [recent commit|https://github.com/puppetlabs/leatherman/commit/7a18ae4f875aa4ea6a2543f2325ad7291f68a685] allowed the use of CMake variables to customize where Leatherman looks up translations when gettext is in use. This is accomplished via the combination of looking up Leatherman's installed location via an environment variable at run time, plus a path to the locale directory relative to this install location. However, this did not affect where translation files got installed to, so if the user installed their locales files for either Leatherman itself or a project consuming Leatherman to somewhere custom through the use of the second argument to the {{gettext_compile}} cmake helper, Leatherman would not necessarily look for them in the right spot. We need to be able to install locale files from all consuming projects to the same directory where Leatherman is looking for them.", "epicLinkSummary": "Translate Puppet Agent components - Phase 1", "estimate": "PT0S", "externalId": "48197", "fixedVersions": [], "id": "48197", "issueType": "Bug", "key": "LTH-135", "labels": [], "originalEstimate": "PT0S", "parent": "59550", "parentSummary": "Translate Puppet Agent components - Phase 1", "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2017-05-02T14:37:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Installing locale files should respect LOCALE cmake vars", "timeSpent": "PT0S", "updated": "2017-05-02T14:37:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Ugh, we didn't fix all these yet?", "created": "2017-04-07T08:41:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "Merged to stable in https://github.com/puppetlabs/leatherman/commit/3af2d8ce86a843a199c0f312949027f63877b695.", "created": "2017-04-11T17:31:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "Passed CI in 4ccdc198.", "created": "2017-04-13T23:44:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:63d40628f6e1b543161789a7] what kind of review is needed for this (or can it just be resolved)?", "created": "2017-04-18T08:41:00.000000"}, {"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "We can resolve this, as facter is using the newly added API and facter passed CI.", "created": "2017-04-18T15:07:00.000000"}], "components": [], "created": "2017-04-06T14:30:00.000000", "creator": "70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7e80cf63"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzd6br:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Apr/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_286023805_*|*_1_*:*_1_*:*_344867316_*|*_10007_*:*_1_*:*_7182560_*|*_10009_*:*_1_*:*_400928683_*|*_5_*:*_1_*:*_1961843085_*|*_6_*:*_1_*:*_0"}], "description": "rb_int2inum accepts a \"long\", which can actually be 32 bits on some platforms. We need to expose rb_ll2inum to allow 64-bit values to be passed to ruby from native code.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48224", "fixedVersions": ["LTH 0.11.2", "LTH 0.12.1"], "id": "48224", "issueType": "Improvement", "key": "LTH-134", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8", "resolution": "Fixed", "resolutionDate": "2017-04-18T15:07:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Add rb_ll2inum to Ruby bindings", "timeSpent": "PT0S", "updated": "2017-05-11T08:04:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "attachments": [], "comments": [{"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "I went with using a relative path from environment variables we set in environment.bat (specified at compile time by the packaging project). [~accountid:557058:263afade-3e4f-46c6-b50a-cf2982192562] have any concerns about that approach?", "created": "2017-03-30T15:47:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Or [~accountid:63d40628f6e1b543161789a7], have any long-term concerns about relying on the environment variables in environment.bat? I guess registry queries wouldn't be too hard...", "created": "2017-03-31T13:56:00.000000"}, {"author": "557058:263afade-3e4f-46c6-b50a-cf2982192562", "body": "If I'm understanding this correctly (given code in https://github.com/puppetlabs/leatherman/pull/233/files)... a build time definition of {{LEATHERMAN_LOCALE_VAR}} enables Leatherman to find files at runtime based on the existence of {{LEATHERMAN_LOCALE_VAR}} in the environment (combined with the value from {{LEATHERMAN_LOCALE_INSTALL}}?", "created": "2017-04-04T17:21:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Almost. LEATHERMAN_LOCALE_VAR is used to define the environment variable to use at runtime - such as PE_BASEDIR or PL_BASEDIR.", "created": "2017-04-04T17:23:00.000000"}, {"author": "557058:263afade-3e4f-46c6-b50a-cf2982192562", "body": "That requires us to add {{LEATHERMAN_LOCALE_VAR}} to every project that has translations that uses an {{environment.bat}}?  i.e. Puppet, client tools, etc?\n\nhttps://github.com/puppetlabs/puppet-agent/blob/master/resources/files/windows/environment.bat#L20\nhttps://github.com/puppetlabs/pe-client-tools-vanagon/blob/glisan/resources/files/windows/environment.bat#L5\n\nMaybe I'm not understanding, but even when relocated, isn't the relative pathing structure the same on Windows (per the file path spec at https://github.com/puppetlabs/puppet-specifications/blob/master/file_paths.md)?", "created": "2017-04-04T17:24:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "No, see https://github.com/puppetlabs/pe-client-tools-vanagon/blob/glisan/configs/components/leatherman.rb#L47 for an example. We set LEATHERMAN_LOCALE_VAR=PE_BASEDIR, so that the project uses PE_BASEDIR from environment.bat to find a starting point. I made the relative location configurable because it's different between puppet-agent and pe-client-tools.\n\nUnlike Ruby, I don't have a good way to find a relative location without relying on environment variables or the registry. I think the registry is probably a better solution, but I was a little strapped for time.", "created": "2017-04-04T17:33:00.000000"}], "components": [], "created": "2017-03-27T13:06:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@a066b15"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzcwrj:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "04/Apr/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_665030_*|*_1_*:*_1_*:*_4545606_*|*_10007_*:*_1_*:*_84370849_*|*_3_*:*_1_*:*_185477605_*|*_6_*:*_1_*:*_0"}], "description": "Locale files on Windows aren't properly configured. They currently rely on a path generated at compile-time, and that path doesn't match our default install location.\n\nUpdate the lookup path on Windows to use a relative path, or read the registry.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48155", "fixedVersions": ["LTH 0.12.0"], "id": "48155", "issueType": "Improvement", "key": "LTH-133", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Done", "resolutionDate": "2017-03-30T17:31:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Windows locale files aren't found", "timeSpent": "PT0S", "updated": "2017-04-04T17:33:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Decided on sticking with generating MO files during compilation to avoid checking binary files into git. Premised on the hope that building gettext everywhere won't be too onerous.", "created": "2017-03-23T20:43:00.000000"}], "components": [], "created": "2017-03-22T11:04:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@559b075d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzctqf:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_121140279_*|*_6_*:*_1_*:*_0"}], "description": "Install MO files if present. Skip generating them from PO files as part of the default {{make}} target.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48223", "fixedVersions": [], "id": "48223", "issueType": "Improvement", "key": "LTH-132", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Won't Do", "resolutionDate": "2017-03-23T20:43:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Install gettext MO files if present", "timeSpent": "PT0S", "updated": "2017-03-23T20:43:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Merged to leatherman#master at https://github.com/puppetlabs/leatherman/commit/84ad3bfe34ec445ec705d3157e057caca6c17096", "created": "2017-08-17T15:44:00.000000"}], "components": [], "created": "2017-03-06T15:15:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5a74138d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzcdhr:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Aug/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_674976832_*|*_1_*:*_1_*:*_428649_*|*_10007_*:*_1_*:*_14167287927_*|*_5_*:*_1_*:*_0"}], "description": "https://github.com/puppetlabs/leatherman/pull/231 requested disabling {{-Werror}}. Leatherman currently doesn't provide any way for a compiler to do that without changing the CMake config. We should modify how flags are configured so that they can be overridden on the command-line.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48250", "fixedVersions": ["LTH 1.1.0"], "id": "48250", "issueType": "Bug", "key": "LTH-131", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Fixed", "resolutionDate": "2017-08-25T11:13:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Unable to override CXXFLAGS for Leatherman projects", "timeSpent": "PT0S", "updated": "2017-08-25T11:13:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "5b859b1795627d2a57240c10", "attachments": [], "comments": [{"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "rapidjson should be pretty straight-forward, and wouldn't present a barrier to developer bootstrapping. I don't see Catch packaged as widely, and it's also used only for testing. I'd support moving rapidjson out, but the others don't seem worth it.\n\nIf Catch were present in Homebrew as well, I'd probably support removing it.", "created": "2017-02-25T16:25:00.000000"}, {"author": "557058:62da8387-4424-4e58-941d-8b034d0b9f7f", "body": "This jumped out at me as I'm putting together an update in Fedora from facter 2.4 to 3.8 in order to get off the net-tools dependency.\n\nThis was discussed in https://pagure.io/packaging-committee/issue/692 with a similar issue with watchman. The clear preference is unbundling where possible, but for some things in Fedora it's now understandable and accepted.\n\nGoing by that for the Fedora package I'd expect it to be acceptable to leave ... but the preference would be to unbundle it.\n\nFor now I'm going to build it as is, but as soon as this is an option we'll want to provide appropriate CMAKE options to use at least system rapidjson.", "created": "2017-08-31T04:40:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "My main barrier on making this happen has been getting it updated to work with rapidjson 1.1.0. I'll try to work on that, but any help would also be appreciated.", "created": "2017-08-31T10:46:00.000000"}], "components": [], "created": "2017-02-24T16:22:00.000000", "creator": "5d7ed266b29eab0c3cba3c72", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@215c6329"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzu3an:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Feb/17"}], "description": "Leatherman ships with three vendored libraries: rapidjson, catch and nowide. catch has been part of modern distributions for a while (Ubuntu trusty and Debian jessie ship with it) and rapidjson seems to be packaged in more recent ones as well (Ubuntu 16.04 and Debian stretch include it; we could easily include it in jessie-backports too). nowide isn't available widely but it's also much more trivial and with less licensing issues than e.g. rapidjson.\n\nEmbedded libraries are a pain for downstream distributors and forbidden by most of the packaging policies (e.g. [in Debian|https://www.debian.org/doc/debian-policy/ch-source.html#s-embeddedfiles], but I know Fedora is similar). They also represent security risks as they represent code that isn't usually tracked by distributors (e.g. imagine if a vulnerability is found on rapidjson; would anyone think of rebuilding Leatherman? how easy would it be to patch it when Leatherman only ships a .tar.gz?).\n\nPlease consider not shipping embedded libraries but providing instructions for fetching those, like all other dependencies (curl, boost etc.)", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48099", "fixedVersions": [], "id": "48099", "issueType": "Bug", "key": "LTH-130", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "5d7ed266b29eab0c3cba3c72", "status": "In Progress", "statusCategory": "In Progress", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Consider dropping vendored libraries", "timeSpent": "PT0S", "updated": "2019-05-02T01:25:00.000000", "votes": "2", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2017-02-24T16:14:00.000000", "creator": "5d7ed266b29eab0c3cba3c72", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6324281a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymbbj:"}], "description": "Building Leatherman now with -DLEATHERMAN_SHARED:BOOL=ON results in shared libraries that have a SOVERSION of (e.g.) 0.11.0, i.e. a SONAME of leatherman_util.so.0.11.0 etc.\n\nThis is unfortunate, as it means that on every version bump (even a minor one!), applications need to be rebuilt. It's also prohibitive for binary distributions, like Debian, for which I'm trying to package Leatherman.\n\nIt'd be great if Leatherman commited to stable ABI and shipped with a stable SONAME. (Breaking the ABI infrequently while bumping the SONAME is always fine). I also see that Leatherman has some code for symbol versioning -- that'd be even better!\n\nNote that we had [a similar discussion on GitHub about cpp-hocon|https://github.com/puppetlabs/cpp-hocon/pull/91] and it looks like this is eventually happening for cpp-hocon.\n\n(while we're at it, cpp-hocon supports CMake's [BUILD_SHARED_LIBS|https://cmake.org/cmake/help/v3.0/variable/BUILD_SHARED_LIBS.html], but Leatherman needs LEATHERMAN_SHARED:BOOL instead; perhaps these should be aligned?)\n\nFinally, the fact that Leatherman is split into so many different shared objects is also sort of problematic (but not as serious) for distributing it. Plus, leatherman_dynamic_library.so sounds a little redundant and weird :) If you're considering a stable ABI, it might make sense to think of an ABI in a single binary object, possibly with verisoned symbols and definitely with a longer-term SONAME.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48241", "fixedVersions": [], "id": "48241", "issueType": "Bug", "key": "LTH-129", "labels": ["abi", "packaging"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "5d7ed266b29eab0c3cba3c72", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Provide a stable ABI/SONAME", "timeSpent": "PT0S", "updated": "2018-05-21T13:27:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2017-02-21T18:55:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@42af7b25"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hym9d3:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_200487_*|*_10007_*:*_1_*:*_173156715_*|*_3_*:*_1_*:*_63618190_*|*_5_*:*_1_*:*_600433955_*|*_6_*:*_1_*:*_0"}], "description": "The severity logger on AIX, when used with pxp-agent, doesn't correctly store the log level. This causes no logging to occur.\n\nI currently only have a work-around by using our own attributes rather than the severity logger. I suspect, but have not confirmed, that something happening here has to do with attempting to do logging from an {{.exe}} rather than a {{.so}} (as Facter behaves correctly, but pxp-agent doesn't). The work-around seems reasonable, as it removes some of the magic of Boost.Log in favor of things we already do for other attributes.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48097", "fixedVersions": ["LTH 0.11.1"], "id": "48097", "issueType": "Bug", "key": "LTH-128", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Fixed", "resolutionDate": "2017-02-24T12:44:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Logging on AIX doesn't work in some scenarios", "timeSpent": "PT0S", "updated": "2017-03-03T11:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:315adc9a-49dc-4753-86d1-4536fc30e3f3", "body": "This looks like maintenance work, removing the Foundational Features team for now.", "created": "2017-02-14T10:26:00.000000"}], "components": [], "created": "2017-02-02T14:35:00.000000", "creator": "557058:093475a3-6bc8-4a70-8034-ae5a2ea66512", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@b3791f7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzbq0f:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Feb/17"}], "description": "The implementation of the command timeout in {{leatherman::execution::execute()}} is based on {{setitimer()}} & {{SIGALRM}}. This is not thread safe as those facilities are shared by all threads so whichever thread sets the timer last, wins (and resets the timeout for all the other threads).\nWe need to reimplement the command timeout handling in a thread safe way.\n\nAFAIK we currently don't use the command timeout in multi threaded processes that's why I set the priority to \"Minor\".", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48222", "fixedVersions": [], "id": "48222", "issueType": "Bug", "key": "LTH-127", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Minor", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:093475a3-6bc8-4a70-8034-ae5a2ea66512", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Command timeout implementation not thread safe in leatherman::execution", "timeSpent": "PT0S", "updated": "2017-02-14T10:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:093475a3-6bc8-4a70-8034-ae5a2ea66512", "attachments": [], "comments": [{"author": "557058:093475a3-6bc8-4a70-8034-ae5a2ea66512", "body": "I'm in the process of implementing yet another approach recommended in http://www.oracle.com/technetwork/server-storage/solaris10/subprocess-136439.html, which is to spawn a child process before threads are started and do any fork/exec from that process. This should be safe as the spawned child process is single threaded so can't run into the deadlock when forking but it requires quite a bit of synchronization between the multi threaded master and the single threaded executor processes.", "created": "2017-01-27T09:45:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "That sounds fairly similar to having a separate child process you can invoke to handle the ctrun behavior. I guess from a packaging perspective that's easier, but may be trickier to provide as a general solution.", "created": "2017-01-27T09:57:00.000000"}, {"author": "557058:093475a3-6bc8-4a70-8034-ae5a2ea66512", "body": "[~accountid:557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e] suggested yet another approach: Using plain {{fork()}} instead of the {{vfork()}}.\nWhile the {{fork()}} is typically slower and requires more virtual memory because it creates a copy of the parent's address space for the child process (the {{vfork()}} lets the child process re-use its parent's address space), it is safer from deadlocks when called from multi-threaded processes. Most importantly it should not be prone to the deadlock which was causing PCP-695.\nSince in {{pxp-agent}} we don't expect to be executing child processes at a high rate and the {{pxp-agent}}'s memory footprint is not prohibitively large either, we should not experience any significant performance hit by switching to the {{fork()}} there. This is in contrast to for example {{facter}} which spawns many child processes in a short period of time and can have a bigger memory footprint due to the collected data, so is much more sensitive to the {{fork()}} performance and memory requirements.\nTo be able to cater for both of these cases we introduce a new execution option - {{thread_safe}} - which when specified will cause the {{leatherman::execution}} to use the slower but safer {{fork()}} on POSIX systems. If the option is not specified, {{vfork()}} will be used to preserve backwards compatibility.", "created": "2017-01-31T13:44:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "The {{fork}} vs {{vfork}} issue was specifically related to using {{fork}} from within a process using most of the system memory (i.e. puppetserver). See FACT-1083.", "created": "2017-01-31T13:52:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e] is the plan still to get this fixed in time for puppet-agent 1.9.1, in which case this should be pulled into the current sprint?", "created": "2017-02-02T08:01:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Not sure if this will be in 1.9.1, but pulled it into our sprint since we're still working on it.", "created": "2017-02-02T11:18:00.000000"}], "components": [], "created": "2017-01-26T16:46:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4383982e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:a47681f7-b1ba-4803-a48e-fe7a8d10171b"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "QA Risk Assessment Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Difficult to explicitly test in pxp-agent, because fixing LTH-125 made PCP-695 unreproducible. Existing CI acceptance testing will give assurance for this change"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzbjnr:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Jan/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_423045210_*|*_10007_*:*_1_*:*_514605095_*|*_5_*:*_1_*:*_1881446631_*|*_6_*:*_1_*:*_0"}], "description": "The solution implemented in LTH-125 should reduce the frequency, but we believe it's still possible for a deadlock to occur due to http://www.oracle.com/technetwork/server-storage/solaris10/subprocess-136439.html.\n\nThe best general solution we can come up with this is to use posix_spawn (with the various special arguments needed on different OS to make it behave like our current vfork-based implementation) with a custom child process to handle Solaris' contract releases.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48096", "fixedVersions": ["LTH 0.11.0"], "id": "48096", "issueType": "Bug", "key": "LTH-126", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Fixed", "resolutionDate": "2017-02-06T13:13:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Leatherman.Execution - use fork() on demand to avoid deadlocks", "timeSpent": "PT0S", "updated": "2017-02-28T07:51:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "http://stackoverflow.com/questions/21950549/close-all-file-handles-when-calling-posix-spawn presents some alternatives to closing file descriptors after vfork.\n\nI'm referring to the OpenSolaris implementation of posix_spawn (which is supposed to avoid the bug with vfork) at https://java.net/projects/solaris/sources/on-src/content/usr/src/lib/libc/port/threads/spawn.c?rev=13149 for some things that might work.", "created": "2017-01-26T11:31:00.000000"}], "components": [], "created": "2017-01-26T11:27:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3d794d7c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzbj8n:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Avoids a deadlock on Solaris when executing a new process from a process running multiple threads."}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_164769_*|*_10007_*:*_1_*:*_9101176_*|*_3_*:*_1_*:*_12278783_*|*_5_*:*_1_*:*_568477418_*|*_6_*:*_1_*:*_0"}], "description": "When using Leatherman.Execution on Solaris in a process that has multiple threads we can encounter a deadlock - noted in http://www.oracle.com/technetwork/server-storage/solaris10/subprocess-136439.html - that happens when dynamic loading occurs between vfork and exec. This appears in pxp-agent, and was likely exacerbated by changes in LTH-120, but seems like it could've been a problem before that as well.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48239", "fixedVersions": ["LTH 0.10.2"], "id": "48239", "issueType": "Bug", "key": "LTH-125", "labels": ["DOCS"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Fixed", "resolutionDate": "2017-01-26T17:26:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Leatherman.Execution hits deadlock in Solaris vfork/exec", "timeSpent": "PT0S", "updated": "2017-02-02T07:20:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "This is unfortunate. The {{LOAD_SYMBOL}} macro is designed to support aliases, so if the names are changed but the call signature remains the same we might be able to add aliases to {{rb_cInteger}}.\n\nIn practice it looks like we mostly use bignum and fixednum together, so maybe in Leatherman 1.0 we can drop the is_bignum and is_fixednum interfaces for an is_integer.", "created": "2017-01-11T13:27:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Thanks for filing the issue. Just have to deal with function changes every y release.", "created": "2017-01-11T13:32:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "So I'm pretty sure in the Ruby 2.4 world where there is no distinction between large and small integers, this test will always fail: https://github.com/puppetlabs/leatherman/blob/master/ruby/tests/api-test.cc#L55. How do we want to handle that?", "created": "2017-05-01T17:16:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Since this lines up with a Puppet 5 release, I suggest we just target this as LTH 1.0 and make it a breaking change. We drop is_bignum and is_fixnum, and use is_integer instead. In Facter we only use those in {{is_bignum || is_fixnum}}.", "created": "2017-05-01T17:20:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "Sounds good to me, that will definitely make this cleaner.", "created": "2017-05-01T17:25:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This is going to continue to fail in CI (and therefore not promote into the Agent) until FACT-1624 is merged. At that time, I will open a PR to bump both SHAs in the Agent together directly, because the Agent cannot build with only one or the other (as it would have to in the respective component pipelines).", "created": "2017-05-03T10:07:00.000000"}], "components": [], "created": "2017-01-11T02:19:00.000000", "creator": "557058:0a1cf8f4-94b6-41cc-9975-49c8ed7f2a0a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@62dfb8b3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:89341248-d23e-4b19-a2b6-66b9bb55eb83"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "QA Risk Assessment Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "This is change will be covered by existing tests"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylzkn:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Jan/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_144543319_*|*_1_*:*_1_*:*_30368372_*|*_10007_*:*_1_*:*_880869_*|*_3_*:*_1_*:*_10715050_*|*_5_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_100390369_*|*_10006_*:*_1_*:*_9504627121_*|*_10005_*:*_2_*:*_10032084"}], "description": "I installed ruby-2.4 and now leatherman test fails:\n\n\n/home/anatol/sources/arch/community/leatherman/trunk/src/leatherman-0.9.1/ruby/tests/api-test.cc:9: FAILED:\ndue to unexpected exception with message:\n  symbol rb_cFixnum was not found in /usr/lib/libruby.so.2.4.0.\n\n\nThat most probably comes from ruby-2.4 API changes https://bugs.ruby-lang.org/issues/12005", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48154", "fixedVersions": ["LTH 1.0.0"], "id": "48154", "issueType": "Bug", "key": "LTH-124", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:0a1cf8f4-94b6-41cc-9975-49c8ed7f2a0a", "resolution": "Fixed", "resolutionDate": "2017-05-04T13:59:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Leatherman fails with Ruby-2.4", "timeSpent": "PT0S", "updated": "2017-05-04T13:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "5cd7057fe826800fcda58676", "created": "2016-12-25T04:06:00.000000", "name": "0001-Update-rapidjson-to-1.1.0.patch", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/13963"}], "comments": [{"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "A pull request to Leatherman would probably speed up when this gets merged. If you do so, please observe the guidelines in https://github.com/puppetlabs/leatherman/blob/master/CONTRIBUTING.md (mostly around how commit messages are structured).", "created": "2016-12-28T12:04:00.000000"}], "components": [], "created": "2016-12-25T04:07:00.000000", "creator": "5cd7057fe826800fcda58676", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@a4d8848"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylyk7:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "28/Dec/16"}], "description": "Rapidjson is vendored by Leatherman. It would be nice to have latest rapidjson.\n\nRapidjson downloaded from https://github.com/miloyip/rapidjson/archive/v1.1.0.zip\n\nLeatherman compiles, tests pass.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48195", "fixedVersions": [], "id": "48195", "issueType": "Improvement", "key": "LTH-123", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Minor", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "5cd7057fe826800fcda58676", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Update rapidjson to v1.1.0", "timeSpent": "PT0S", "updated": "2017-07-22T05:25:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "attachments": [], "comments": [{"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Released 0.8.2 and 0.9.4.", "created": "2016-12-01T17:39:00.000000"}], "components": [], "created": "2016-11-30T12:25:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7f431432"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzag7r:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_37427_*|*_3_*:*_1_*:*_11996421_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_93212299"}], "description": "Release LTH-116 in a Leatherman 0.8.2 for the next LTS release of puppet-agent. This should be done off a new LTS-1.7 branch started from 0.8.1.\n\nThen merge the fix up to leatherman#master and release in Leatherman 0.9.4 for the next puppet-agent bug fix release.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48184", "fixedVersions": [], "id": "48184", "issueType": "Task", "key": "LTH-121", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Fixed", "resolutionDate": "2016-12-01T17:39:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Release LTH-116 in Leatherman 0.8.2 and 0.9.4", "timeSpent": "PT0S", "updated": "2016-12-01T17:39:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:093475a3-6bc8-4a70-8034-ae5a2ea66512", "attachments": [], "comments": [{"author": "557058:093475a3-6bc8-4a70-8034-ae5a2ea66512", "body": "The Solaris implementation as originally merged unfortunately caused large file support C defines to leak to other projects' builds which broke the facter build.\nChanges need to be made to the CMake files to prevent that leak.", "created": "2016-12-05T17:31:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "CMake changes constrained in Leatherman 0.10.1.", "created": "2016-12-06T11:03:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:093475a3-6bc8-4a70-8034-ae5a2ea66512] can you please provide release notes for this issue? Also, which team and sprint should it have been assigned to?", "created": "2016-12-07T12:15:00.000000"}, {"author": "557058:093475a3-6bc8-4a70-8034-ae5a2ea66512", "body": "[~accountid:557058:3da95088-202d-4082-a15a-eb2e812f2578] I've added the release notes.", "created": "2016-12-07T12:43:00.000000"}], "components": [], "created": "2016-11-28T12:33:00.000000", "creator": "557058:093475a3-6bc8-4a70-8034-ae5a2ea66512", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@428e8620"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzadiv:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The create_new_process_group execution option defined in the leatherman::execution namespace has been renamed to create_detached_process to make it more broadly applicable. Subsequently a Solaris implementation of that option was provided which ensures the executed child processes run in separate process contracts when the option is specified."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "06/Dec/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_58489426_*|*_1_*:*_1_*:*_21307_*|*_10007_*:*_1_*:*_21840215_*|*_3_*:*_1_*:*_258248225_*|*_4_*:*_1_*:*_5049464_*|*_5_*:*_2_*:*_4049152795_*|*_6_*:*_1_*:*_0"}], "description": "leatherman::execution currently supports the {{create_new_process_group}} option which is used (or at least was intended to be used) to create processes detached from the parent process on Windows.\nSince there is a similar need on Solaris, let's generalize the concept:\n* rename the option to {{create_detached_process}}\n* provide the Solaris implementation of it (model it after: https://github.com/openssh/openssh-portable/blob/V_7_3/openbsd-compat/port-solaris.c#L42-L198)", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48182", "fixedVersions": ["LTH 0.10.0", "LTH 0.10.1"], "id": "48182", "issueType": "New Feature", "key": "LTH-120", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:093475a3-6bc8-4a70-8034-ae5a2ea66512", "resolution": "Fixed", "resolutionDate": "2016-12-06T11:02:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Generalize the concept of executing detached processes", "timeSpent": "PT0S", "updated": "2017-01-26T11:27:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-10-24T16:53:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@49c27685"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9qhz:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_31944_*|*_10007_*:*_1_*:*_61468370_*|*_3_*:*_1_*:*_142637_*|*_6_*:*_1_*:*_0"}], "description": "https://paste.pound-python.org/show/phutyGAn8sJvajgZb9yw/ shows a make job failing because it tries to compile json_container.cc before rapidjson has been unpacked. I'm not able to find any way in CMake to declare dependency ordering between these two.\n\nSwitch to compile-time unpacking of vendored components. This potentially adds extra work each time CMake is run (or requires you to explicitly run CMake when the package version changes). However, either of those issues should be minor.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48095", "fixedVersions": [], "id": "48095", "issueType": "Bug", "key": "LTH-119", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Duplicate", "resolutionDate": "2016-10-25T10:00:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "rapidjson not consistently unpacked before use", "timeSpent": "PT0S", "updated": "2016-10-25T10:00:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "70121:c64bbcbb-be9c-4db9-9ed3-e9ffe9010ee5", "body": "[~accountid:557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e] So, I nuked the lines out of leatherman_install that are doing it, but that causes issues elsewhere.  Namely it seems things like CPP-HOCON work AROUND that behavior by prefixing lib in the cpp-hocon package with lib.  There is a big rabbit hole in undoing that.\n\n", "created": "2016-10-24T10:56:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "That probably deserves to be removed. There's not a huge rabbit hole, but several projects currently rely on that behavior (cpp-hocon, facter, cpp-pcp-client, pxp-agent). I can help unravel them.", "created": "2016-10-24T11:10:00.000000"}, {"author": "70121:c64bbcbb-be9c-4db9-9ed3-e9ffe9010ee5", "body": "Ok - yeah - it breaks CPP-HOCON because it prepends lib to all of it's pieces.  I'm working through that now, but the cmake foo is not strong in me.\n\nI'm going to end up backporting the solution to 0.9.1 and 0.1.4 so I can get FreeBSD updated to facter 3.4.1 in ports.", "created": "2016-10-24T12:29:00.000000"}, {"author": "5d7ed266b29eab0c3cba3c72", "body": "I'd like to echo this request. LIbraries without a \"lib\" prefix are highly un-Unixy and the fact that \"lib\" needs to be prepended in cpp-hocon is another piece of evidence of how unexpected this behavior can be. I'm working on Debian packages and this is definitely a blocker for us.\n\nNote that the cpp-hocon breakage mentioned above is fixed by the (currently pending) patch https://github.com/puppetlabs/cpp-hocon/pull/86 and I can confirm that with this plus https://github.com/puppetlabs/leatherman/pull/213 the leatherman + cpp-hocon + facter stack builds properly.", "created": "2017-02-24T15:59:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "We should also look at using GNUInstallDirs, as in https://github.com/puppetlabs/leatherman/pull/230.", "created": "2017-02-27T18:07:00.000000"}, {"author": "70121:ede92dff-cc7b-4a0e-9ea1-e6d39be6ea56", "body": "Since we're looking to remove cpp projects from our pipeline (as we're introducing facter-ng) I'm not sure we want to make these changes (impacted projects are cpp-hocon, cpp-pcp-client, leatherman, libwhereami, facter).", "created": "2019-08-28T08:15:00.000000"}], "components": [], "created": "2016-10-23T19:13:00.000000", "creator": "70121:c64bbcbb-be9c-4db9-9ed3-e9ffe9010ee5", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@368f0b92"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylyjz:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "24/Oct/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_52902946_*|*_10007_*:*_1_*:*_88202453685_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_1474778144"}], "description": "It is a generally accepted unix convention that libraries are prefixed with lib.  There are a few cases where this is not followed, but I believe leatherman is in error here.\n\nIt's impacting the ability to depend on the library for build in FreeBSD ports, or include it with -lleatherman_util for instance.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48113", "fixedVersions": [], "id": "48113", "issueType": "Bug", "key": "LTH-118", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "70121:c64bbcbb-be9c-4db9-9ed3-e9ffe9010ee5", "resolution": "Won't Fix", "resolutionDate": "2019-08-28T08:15:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Leatherman installs shared libraries with no lib prefix", "timeSpent": "PT0S", "updated": "2019-08-28T08:15:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "557058:bff845c1-08a9-44e6-9a36-115b25b2e2de", "created": "2016-10-22T18:51:00.000000", "name": "build.log", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/13964"}], "comments": [{"author": "70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8", "body": "This is in Leatherman master and will go out with the next release (either 0.10 or 1.0)", "created": "2016-11-07T12:43:00.000000"}], "components": [], "created": "2016-10-22T18:57:00.000000", "creator": "557058:bff845c1-08a9-44e6-9a36-115b25b2e2de", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6c233ecd"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9ppb:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Nov/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_226998100_*|*_10007_*:*_1_*:*_1124342483_*|*_3_*:*_1_*:*_12251703_*|*_5_*:*_2_*:*_169936512_*|*_6_*:*_1_*:*_0"}], "description": "I made no changes between the build env for 0.9.1 and 0.9.2.\n\nI've attached the build log, but it appears to not prepare the json bundled libs.\n\n/var/tmp/portage/dev-libs/leatherman-0.9.2/work/all/leatherman-0.9.2/json_container/src/json_container.cc:4:32: fatal error: rapidjson/document.h: No such file or directory\n", "environment": "-DCMAKE_VERBOSE_MAKEFILE=ON\n-DCMAKE_BUILD_TYPE=None\n-DCMAKE_INSTALL_PREFIX=/usr\n-DCMAKE_INSTALL_SYSCONFDIR=/etc\n-DCMAKE_INSTALL_LOCALSTATEDIR=/var", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48132", "fixedVersions": ["LTH 0.9.3"], "id": "48132", "issueType": "Bug", "key": "LTH-117", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:bff845c1-08a9-44e6-9a36-115b25b2e2de", "resolution": "Fixed", "resolutionDate": "2016-11-07T12:43:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Leatherman-0.9.2 fails to build", "timeSpent": "PT0S", "updated": "2016-11-09T11:55:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "This will need to be manually bumped in the puppet-agent branch.", "created": "2016-10-12T18:21:00.000000"}, {"author": "557058:3da95088-202d-4082-a15a-eb2e812f2578", "body": "[~accountid:557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e] can you please provide release notes for this issue?", "created": "2016-12-07T12:15:00.000000"}], "components": [], "created": "2016-10-11T11:45:00.000000", "creator": "557058:093475a3-6bc8-4a70-8034-ae5a2ea66512", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@40328f5d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9h27:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Oct/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_573639625_*|*_1_*:*_1_*:*_100136826_*|*_10007_*:*_1_*:*_9979475_*|*_5_*:*_1_*:*_7862724813_*|*_6_*:*_1_*:*_0"}], "description": "To handle the null characters ({{\\u0000}}) Leatherman needs to use the two argument {{std::string}} constructor whenever it creates a {{std::string}} instance out of a value returned by the [RapidJSON library|https://github.com/miloyip/rapidjson]'s {{GetString()}} API as explained here: https://github.com/miloyip/rapidjson/blob/v1.1.0/doc/tutorial.md#query-string-querystring\notherwise the created {{std::string}} is truncated at the first null character.\n\nCare should also be taken to avoid similar problem in the inverse situation - i.e. when handing over {{std::string}} values to the RapidJSON library.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48248", "fixedVersions": ["LTH 0.8.2", "LTH 0.9.4"], "id": "48248", "issueType": "Bug", "key": "LTH-116", "labels": ["product-security"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:093475a3-6bc8-4a70-8034-ae5a2ea66512", "resolution": "Fixed", "resolutionDate": "2016-10-19T09:41:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Handle null characters in JSON strings", "timeSpent": "PT0S", "updated": "2017-01-18T08:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "I suspect that's an issue with the CMake version not being new enough to support Boost 1.62. CMake has internal helpers that require knowledge of Boost version numbers.", "created": "2016-10-12T16:58:00.000000"}, {"author": "70121:c657e6d9-21a0-455d-9832-92cad4ae1d36", "body": "I'm using CMake 3.6.2 and about 90 other packages have built fine with this and boost 1.62: https://www.archlinux.org/todo/boost-162-rebuild/", "created": "2016-10-13T01:38:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Thanks for reporting then. Hopefully someone will get time to look at it.", "created": "2016-10-13T09:18:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "The warning about not supporting imported targets is probably not relevant. That should be fixed in CMake 3.7.0, and we shouldn't be depending on imported targets.\n\nMore likely some incompatible change was made in Boost.Log.", "created": "2016-10-13T14:27:00.000000"}, {"author": "70121:c657e6d9-21a0-455d-9832-92cad4ae1d36", "body": "Thanks for the fix", "created": "2016-10-14T02:49:00.000000"}], "components": [], "created": "2016-10-10T03:13:00.000000", "creator": "70121:c657e6d9-21a0-455d-9832-92cad4ae1d36", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2e9cecba"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9d07:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Oct/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_281008768_*|*_10007_*:*_1_*:*_1628137378_*|*_5_*:*_1_*:*_694367494_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_23408099"}], "description": "Building against boost 1.62 fails. Please add support. Building against boost 1.61 is fine. Here is my build log: https://bpaste.net/show/c578c18081d6", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48153", "fixedVersions": ["LTH 0.9.3"], "id": "48153", "issueType": "Bug", "key": "LTH-115", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "70121:c657e6d9-21a0-455d-9832-92cad4ae1d36", "resolution": "Fixed", "resolutionDate": "2016-11-01T12:02:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Building against boost 1.62 fails", "timeSpent": "PT0S", "updated": "2016-11-09T11:55:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-09-16T14:59:00.000000", "creator": "70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@109e3d2e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8xzj:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_34617_*|*_1_*:*_1_*:*_8600_*|*_10007_*:*_2_*:*_851570512_*|*_3_*:*_2_*:*_345637364_*|*_5_*:*_1_*:*_2836545454_*|*_6_*:*_1_*:*_0"}], "description": "Currently, {{leatherman::execution}} has two operating modes:\n\n* the {{each_line}} method, which calls a lambda for every line out output\n* the {{execute}} method, which treats the output of the called program as \"binary\"\n\nSometimes, though, one wants to get the full output of the program, then potentially act on it in a line-oriented way based on what the output looks like. An example of this is FACT-1356, which will attempt to parse the output as structured data before falling back to key/value pairs on separate lines.\n\nIn this case, being able to tell {{leatherman::execution::execute}} that the output should be converted to standard line-endings is very useful.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48246", "fixedVersions": ["LTH 0.9.2"], "id": "48246", "issueType": "New Feature", "key": "LTH-114", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8", "resolution": "Fixed", "resolutionDate": "2016-09-30T11:33:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Leatherman should allow newline conversion on Windows", "timeSpent": "PT0S", "updated": "2016-11-09T11:57:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-08-31T15:01:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Should be able to build a project including Leatherman headers (such as {{leatherman/locale/locale.hpp}}) by only including the header path. For example:\n{code:title=test.cpp}\n#include <leatherman/locale/locale.hpp>\nint main(int argc, char** argv) {\n  return 0;\n}\n{code}\ncompiled with {{g++ test.cpp -I/path/to/leatherman/includes -std=c++11}}."}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5e036ee7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8m9z:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_20811_*|*_10007_*:*_1_*:*_3189181558_*|*_3_*:*_1_*:*_106526_*|*_5_*:*_1_*:*_2851271681_*|*_6_*:*_1_*:*_0"}], "description": "Leatherman headers depend on PROJECT_DIR, even when not using LEATHERMAN_I18N. The cflags file sets this up, but we shouldn't require consumers to setup variables that aren't being used.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48221", "fixedVersions": ["LTH 0.9.1"], "id": "48221", "issueType": "Bug", "key": "LTH-113", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Fixed", "resolutionDate": "2016-10-07T12:56:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Leatherman include headers depend on PROJECT_DIR", "timeSpent": "PT0S", "updated": "2016-11-09T11:57:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-08-23T14:22:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4af164b4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8t5z:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "PCP"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}], "description": "Migrate cpp-pcp-client's thread/chrono utility wrappers and schema validation code (for json_container) to Leatherman.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48194", "fixedVersions": [], "id": "48194", "issueType": "Task", "key": "LTH-112", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "status": "Ready for Merge", "statusCategory": "In Progress", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Add thread and schema validation utilities", "timeSpent": "PT0S", "updated": "2017-02-21T18:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-08-10T17:19:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2755715d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz85e7:"}], "description": "http://www.transmissionzero.co.uk/computing/building-dlls-with-mingw/ seems to have some information on how to do this.\n\nThis should be added as a utility in Leatherman, and used everywhere.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48149", "fixedVersions": [], "id": "48149", "issueType": "Improvement", "key": "LTH-110", "labels": ["maintenance", "windows"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Windows DLLs should include version information", "timeSpent": "PT0S", "updated": "2016-10-07T12:55:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-08-02T13:32:00.000000", "creator": "557058:ee5c1409-5f9d-4dd8-9c22-21070ef94edb", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@72f51229"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz7wrr:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Foundational work for existing sprint ticket"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_50635_*|*_10007_*:*_1_*:*_153444318_*|*_3_*:*_1_*:*_100090584_*|*_5_*:*_1_*:*_1041065257_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2873384"}], "description": "Add gettext-style string externalization helpers \\_(...), n\\_(...), c_(...), etc. to leatherman::locale. Rather than macros, these should be implemented as template functions in the leatherman::locale namespace.\n\nCurrently, format(...) does not work together with the plural form of translate(). Fix this and extend translate and format methods/templates to provide variants for standard, plural, and context translations. Also, fix cmake target that runs xgettext (in cmake/leatherman.cmake).\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48152", "fixedVersions": ["LTH 0.9.0"], "id": "48152", "issueType": "Improvement", "key": "LTH-109", "labels": ["i18n"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:ee5c1409-5f9d-4dd8-9c22-21070ef94edb", "resolution": "Fixed", "resolutionDate": "2016-08-05T12:46:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Add translate helper templates and plural format support to leatherman::locale", "timeSpent": "PT0S", "updated": "2016-08-17T13:57:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:bff845c1-08a9-44e6-9a36-115b25b2e2de", "body": "we hit this in Gentoo, had to block installation of the latest curl :(\n\nhttps://bugs.gentoo.org/show_bug.cgi?id=590020", "created": "2016-08-01T10:08:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "I reproduced on Mac when building against curl 7.50.0. Put up a fix PR.", "created": "2016-08-01T12:25:00.000000"}], "components": [], "created": "2016-08-01T05:17:00.000000", "creator": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:ee9ec188-2ce9-4d3e-985f-b58fd7e1aaf5", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@143a18e3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz7uvr:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Community request, avoid encountering this when updating curl"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "PCP"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/Aug/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_25560784_*|*_10007_*:*_1_*:*_8447581_*|*_5_*:*_1_*:*_581361_*|*_6_*:*_1_*:*_0"}], "description": "Casting errors appear when compiling against the latest curl - 7.50.0. I'm using cmake -DLEATHERMAN_MOCK_CURL=OFF as a workaround for now.\n\n{code}\nScanning dependencies of target leatherman_curl\n[ 30%] Building CXX object curl/CMakeFiles/leatherman_curl.dir/src/client.cc.o\n[ 31%] Building CXX object curl/CMakeFiles/leatherman_curl.dir/src/request.cc.o\n[ 33%] Building CXX object curl/CMakeFiles/leatherman_curl.dir/src/response.cc.o\n[ 34%] Linking CXX static library leatherman_curl.a\n[ 34%] Built target leatherman_curl\nScanning dependencies of target mock_curl\n[ 36%] Building CXX object curl/tests/CMakeFiles/mock_curl.dir/mock_curl.cc.o\n/tmp/nix-build-leatherman-0.7.5.drv-0/leatherman-0.7.5-src/curl/tests/mock_curl.cc: In function 'CURL* curl_easy_init()':\n/tmp/nix-build-leatherman-0.7.5.drv-0/leatherman-0.7.5-src/curl/tests/mock_curl.cc:82:30: error: cannot convert 'curl_impl*' to 'CURL* {aka Curl_easy*}' in return\n         return new curl_impl();\n                              ^\n/tmp/nix-build-leatherman-0.7.5.drv-0/leatherman-0.7.5-src/curl/tests/mock_curl.cc: In function 'CURLcode curl_easy_setopt(CURL*, CURLoption, ...)':\n/tmp/nix-build-leatherman-0.7.5.drv-0/leatherman-0.7.5-src/curl/tests/mock_curl.cc:100:44: error: invalid static_cast from type 'CURL* {aka Curl_easy*}' to type 'curl_impl*'\n     auto h = static_cast<curl_impl*>(handle);\n                                            ^\n/tmp/nix-build-leatherman-0.7.5.drv-0/leatherman-0.7.5-src/curl/tests/mock_curl.cc: In function 'CURLcode curl_easy_perform(CURL*)':\n/tmp/nix-build-leatherman-0.7.5.drv-0/leatherman-0.7.5-src/curl/tests/mock_curl.cc:250:49: error: invalid static_cast from type 'CURL* {aka Curl_easy*}' to type 'curl_impl*'\n     auto h = static_cast<curl_impl*>(easy_handle);\n                                                 ^\nmake[2]: *** [curl/tests/CMakeFiles/mock_curl.dir/build.make:63: curl/tests/CMakeFiles/mock_curl.dir/mock_curl.cc.o] Error 1\nmake[1]: *** [CMakeFiles/Makefile2:562: curl/tests/CMakeFiles/mock_curl.dir/all] Error 2\nmake: *** [Makefile:139: all] Error 2\nbuilder for \u2018/nix/store/f5kafrbfjb8nzd3ckhz0nsplh7njmfg8-leatherman-0.7.5.drv\u2019 failed with exit code 2\n{code}\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48094", "fixedVersions": ["LTH 0.8.1"], "id": "48094", "issueType": "Bug", "key": "LTH-108", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:ee9ec188-2ce9-4d3e-985f-b58fd7e1aaf5", "resolution": "Fixed", "resolutionDate": "2016-08-01T14:44:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "curl mock code does not compile against latest curl 7.50.0", "timeSpent": "PT0S", "updated": "2016-08-02T08:10:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-07-15T18:08:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5706019c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyn1pb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "PCP"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_86539_*|*_10007_*:*_1_*:*_413175794_*|*_3_*:*_1_*:*_16260955_*|*_5_*:*_1_*:*_14294769_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1013055512"}], "description": "Leatherman.execution sets {{LANG=C}} and {{LC_ALL=C}}. This was done to support Facter's prior execution behavior.\n\nOther use cases - pxp-agent - need to inherit the system locale. We should support disabling that override without having to explicitly specify an environment.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48131", "fixedVersions": ["LTH 0.8.0"], "id": "48131", "issueType": "Bug", "key": "LTH-107", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Fixed", "resolutionDate": "2016-08-01T10:51:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Allow using parent process's locale", "timeSpent": "PT0S", "updated": "2016-08-09T16:39:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-06-23T12:10:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "CI Pipeline/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "platform puppet-agent suite"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@729ab263"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz60zj:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Caused by LTH-103, CI blocker."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "PCP"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_11802_*|*_10007_*:*_1_*:*_11876557_*|*_3_*:*_1_*:*_6143495_*|*_5_*:*_1_*:*_0"}], "description": "We're seeing frequent failures in AppVeyor and Travis CI of\n{code\n/usr/bin/xgettext: option '--add-location' doesn't allow an argument\nTry `/usr/bin/xgettext --help' for more information.\n{code}\n\nLTH-103 added use of {{--add-location}}, which appears to only be supported in very recent gettext versions. We need updated versions in CI for these to work.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48093", "fixedVersions": [], "id": "48093", "issueType": "CI Blocker", "key": "LTH-105", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Fixed", "resolutionDate": "2016-06-23T17:10:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "gettext in AppVeyor/Travis CI is out-of-date", "timeSpent": "PT0S", "updated": "2016-06-24T08:27:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-06-17T17:07:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1f5d1cea"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz60yv:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Low cost, has useful things to release."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "PCP"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "0.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_2691648_*|*_1_*:*_1_*:*_315687790_*|*_10007_*:*_1_*:*_4271632_*|*_3_*:*_1_*:*_1260259_*|*_5_*:*_1_*:*_0"}], "description": "Release Leatherman 0.7.3 with fixes around gettext usage.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48092", "fixedVersions": ["LTH 0.7.3"], "id": "48092", "issueType": "Task", "key": "LTH-104", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Done", "resolutionDate": "2016-06-21T11:05:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Release Leatherman 0.7.3", "timeSpent": "PT0S", "updated": "2016-06-22T08:30:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-06-15T11:57:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3eada9ee"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz70rr:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "i18n activity"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "PCP"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_150247_*|*_1_*:*_1_*:*_87821889_*|*_10007_*:*_1_*:*_77925243_*|*_3_*:*_1_*:*_1138616_*|*_5_*:*_1_*:*_0"}], "description": "The source line number isn't needed in final packaging, and causes a lot of churn in Git history. Remove it by default; developers can add it in if they so choose.\n\nThe {{--add-location}} flag takes arguments, allowing us to choose file-only (no line numbers) output as well.\n{quote}\n\u2018--add-location=type\u2019\nGenerate \u2018#: filename:line\u2019 lines (default).\n\nThe optional type can be either \u2018full\u2019, \u2018file\u2019, or \u2018never\u2019. If it is not given or \u2018full\u2019, it generates the lines with both file name and line number. If it is \u2018file\u2019, the line number part is omitted. If it is \u2018never\u2019, it completely suppresses the lines (same as --no-location).\n{quote}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48220", "fixedVersions": ["LTH 0.7.3"], "id": "48220", "issueType": "Improvement", "key": "LTH-103", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Fixed", "resolutionDate": "2016-06-17T10:21:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Don't include line numbers in gettext template files", "timeSpent": "PT0S", "updated": "2016-06-22T08:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:32db392f-020e-4db0-9049-e89c6555d277", "attachments": [], "comments": [{"author": "557058:32db392f-020e-4db0-9049-e89c6555d277", "body": "This ticket *was* a direct copy of PE-16039, but now has become the leatherman work necessary to propogate correct handling of exceptions into puppet-access, and then both of those can be propagated into puppet-code and puppet-job.\n\nThe leatherman work entails the correct determination of the ProgramData directory in a \"Windows\" friendly fashion so that the correct exceptions are thrown and the client tools can be accessed through cygwin.\n\nThe puppet-access work is in PE-16053.", "created": "2016-06-28T16:16:00.000000"}, {"author": "557058:f1e252bd-73da-4e0e-90f7-f0aefb98d28c", "body": "Changed original title to reflect that this ticket now represents the leatherman piece of the puzzle. \n\nOriginal title: Windows CLI support - Exceptions thrown from puppet-code, puppet-access, puppet-job CLI tools crash kernelbase.dll / ntdll.dll", "created": "2016-06-28T16:17:00.000000"}], "components": [], "created": "2016-06-06T10:47:00.000000", "creator": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Leatherman now provides function to locate the ProgramData dir on Windows."}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@611b0a4d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:669d4655-0c85-469a-a11c-e5290cf2955d"}, {"fieldName": "QA Risk Probability", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "High"}, {"fieldName": "QA Risk Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "High"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyn3xr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Code Management"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "28/Jun/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1092305_*|*_10007_*:*_1_*:*_586831158_*|*_5_*:*_1_*:*_805099216_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1915381481_*|*_10005_*:*_1_*:*_87658834"}], "description": "As part of the investigation into the original defect, it was decided that the fix would be in leatherman library. That library would then need to be included into puppet access, puppet code and puppet job. (See linked tickets). As such the original description copied from the PE ticket below is still a valid description of the problem, but not the actual work for this specific ticket. Left here for now while we are trying to clear up the ticket confusion. \n\n\n\nWill need to bump the dependency on Puppet Access and Leatherman\n\n\nOriginal notes....\n\nWhen exceptions are thrown from the CLI tools on Windows (for instance, when validation of a command line call fails), the applications will crash.  When run interactively over RDP in a shell like {{cmd.exe}}, Windows crash dialogs are presented and 4 events are added to the {{Application}} event log.  When run over SSH (through Cygwin), the applications fail silently, and no event log information is even recorded.\n\nI was able to successfully get output at the CLI, only when {{windbg}} was debugging the failing process, and was able to continue past the exceptions that would typically be terminating.\n\nExceptions in puppet-access are defined at:\nhttps://github.com/puppetlabs/puppet-access/blob/42828fcb434a4813e3e94aa09b8358caf2a2572d/lib/inc/puppet-access/error.hpp#L10-L58\n\nAnd the top-level exception handler is at:\nhttps://github.com/puppetlabs/puppet-access/blob/42828fcb434a4813e3e94aa09b8358caf2a2572d/exe/puppet-access.cc#L462-L472\n\n\nIn contrast, exceptions thrown from Facter are handled properly, and propagate error information to the console as expected, without causing hard crashes.  So this should be fixable within the {{puppet-access}} code / project.\n\nThe Facter exceptions are defined in a number of places, like:\nhttps://github.com/puppetlabs/facter/blob/4a495e877d68648b6315b1a68755627de4c3c52d/lib/src/facts/external/resolver.cc\n\n\nThe Facter catch block is at https://github.com/puppetlabs/facter/blob/15df61276074d73663d70cb7fc0b6038cdd38929/exe/facter.cc#L290-L292\n\n/cc [~accountid:557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e] [~accountid:557058:669d4655-0c85-469a-a11c-e5290cf2955d]", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48147", "fixedVersions": ["LTH 0.7.5"], "id": "48147", "issueType": "Bug", "key": "LTH-106", "labels": ["Product-Initiative", "windows"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:4786f794-5167-4041-b3c0-deb1e8ba3438", "resolution": "Fixed", "resolutionDate": "2016-07-06T10:29:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Add function to get ProgramData using SHGetKnownFolderPath from Windows API", "timeSpent": "PT0S", "updated": "2016-07-15T18:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "This does not add useful information to user logs. If a developer needs this information, there are thread debugging tools available.", "created": "2016-10-07T12:52:00.000000"}], "components": [], "created": "2016-05-26T07:24:00.000000", "creator": "557058:29f801b5-e0f5-4278-a19b-0e5101f2094d", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@45dd6d72"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyo3hz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "PCP"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Oct/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_11597244231_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48219", "fixedVersions": [], "id": "48219", "issueType": "New Feature", "key": "LTH-102", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:29f801b5-e0f5-4278-a19b-0e5101f2094d", "resolution": "Won't Fix", "resolutionDate": "2016-10-07T12:52:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Add option to logging library for adding thread ID to log headers", "timeSpent": "PT0S", "updated": "2016-10-07T12:52:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4", "body": "Building against the branch at https://github.com/shrug/puppet-agent/tree/maint/master/ruby-2.3", "created": "2016-05-24T10:39:00.000000"}, {"author": "63d40635a05386069cdb69d6", "body": "I had {\"url\": \"git://github.com/MikaelSmith/leatherman.git\", \"ref\": \"fc5314812dec312b9ef62301949c8875c672973a\"} from Michael Smith that I think fixes the issue, but hasn't gone into mainline yet. ", "created": "2016-05-24T11:44:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Fixed in LTH-99.", "created": "2016-06-27T11:28:00.000000"}], "components": [], "created": "2016-05-24T10:38:00.000000", "creator": "557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@578b5966"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PA-476"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz6k1b:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "24/May/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2940618213_*|*_6_*:*_1_*:*_0"}], "description": "https://jenkins.puppetlabs.com/view/puppet-agent/view/ad%20hoc/job/platform_puppet-agent_pkg-van-ship_manual-ad-hoc/134/BUILD_TARGET=el-7-x86_64,SLAVE_LABEL=beaker/console\n\n{code}\n08:59:43 Cloning ref '79c501db43be899230899b5c61b3ef094542f186' from url 'git://github.com/puppetlabs/leatherman.git'\n08:59:46 Note: checking out '79c501db43be899230899b5c61b3ef094542f186'.\n{code}\n\n{code}\n09:13:01 Running tests...\n09:13:01 /opt/pl-build-tools/bin/ctest --force-new-ctest-process -V\n09:13:01 UpdateCTestConfiguration  from :/var/tmp/tmp.xonhK5Qr9M/leatherman/DartConfiguration.tcl\n09:13:01 UpdateCTestConfiguration  from :/var/tmp/tmp.xonhK5Qr9M/leatherman/DartConfiguration.tcl\n09:13:01 Test project /var/tmp/tmp.xonhK5Qr9M/leatherman\n09:13:01 Constructing a list of tests\n09:13:01 Done constructing a list of tests\n09:13:01 Checking test dependency graph...\n09:13:01 Checking test dependency graph end\n09:13:01 test 1\n09:13:01     Start 1: leatherman tests\n09:13:01 \n09:13:01 1: Test command: /var/tmp/tmp.xonhK5Qr9M/leatherman/bin/leatherman_test\n09:13:01 1: Test timeout computed to be: 9.99988e+06\n09:13:04 1: \n09:13:04 1: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n09:13:04 1: leatherman_test is a Catch v1.4.0 host application.\n09:13:04 1: Run with -? for options\n09:13:04 1: \n09:13:04 1: -------------------------------------------------------------------------------\n09:13:04 1: api::eval\n09:13:04 1:   can load api and evaluate ruby code\n09:13:04 1: -------------------------------------------------------------------------------\n09:13:04 1: /var/tmp/tmp.xonhK5Qr9M/leatherman/ruby/tests/api-test.cc:8\n09:13:04 1: ...............................................................................\n09:13:04 1: \n09:13:04 1: /var/tmp/tmp.xonhK5Qr9M/leatherman/ruby/tests/api-test.cc:9: FAILED:\n09:13:04 1: due to unexpected exception with message:\n09:13:04 1:   symbol rb_data_object_alloc was not found in /opt/puppetlabs/puppet/lib\n09:13:04 1:   /libruby.so.2.3.0.\n09:13:04 1: \n09:13:04 1: -------------------------------------------------------------------------------\n09:13:04 1: api::is_*\n09:13:04 1: -------------------------------------------------------------------------------\n09:13:04 1: /var/tmp/tmp.xonhK5Qr9M/leatherman/ruby/tests/api-test.cc:20\n09:13:04 1: ...............................................................................\n09:13:04 1: \n09:13:04 1: /var/tmp/tmp.xonhK5Qr9M/leatherman/ruby/tests/api-test.cc:20: FAILED:\n09:13:04 1: due to unexpected exception with message:\n09:13:04 1:   symbol rb_data_object_alloc was not found in /opt/puppetlabs/puppet/lib\n09:13:04 1:   /libruby.so.2.3.0.\n09:13:04 1: \n09:13:04 1: -------------------------------------------------------------------------------\n09:13:04 1: api::equals\n09:13:04 1: -------------------------------------------------------------------------------\n09:13:04 1: /var/tmp/tmp.xonhK5Qr9M/leatherman/ruby/tests/api-test.cc:75\n09:13:04 1: ...............................................................................\n09:13:04 1: \n09:13:04 1: /var/tmp/tmp.xonhK5Qr9M/leatherman/ruby/tests/api-test.cc:75: FAILED:\n09:13:04 1: due to unexpected exception with message:\n09:13:04 1:   symbol rb_data_object_alloc was not found in /opt/puppetlabs/puppet/lib\n09:13:04 1:   /libruby.so.2.3.0.\n09:13:04 1: \n09:13:04 1: -------------------------------------------------------------------------------\n09:13:04 1: api::case_equals\n09:13:04 1: -------------------------------------------------------------------------------\n09:13:04 1: /var/tmp/tmp.xonhK5Qr9M/leatherman/ruby/tests/api-test.cc:107\n09:13:04 1: ...............................................................................\n09:13:04 1: \n09:13:04 1: /var/tmp/tmp.xonhK5Qr9M/leatherman/ruby/tests/api-test.cc:107: FAILED:\n09:13:04 1: due to unexpected exception with message:\n09:13:04 1:   symbol rb_data_object_alloc was not found in /opt/puppetlabs/puppet/lib\n09:13:04 1:   /libruby.so.2.3.0.\n09:13:04 1: \n09:13:04 1: -------------------------------------------------------------------------------\n09:13:04 1: api::rb_define_singleton_method\n09:13:04 1:   can define a new module with a new method\n09:13:04 1: -------------------------------------------------------------------------------\n09:13:04 1: /var/tmp/tmp.xonhK5Qr9M/leatherman/ruby/tests/api-test.cc:124\n09:13:04 1: ...............................................................................\n09:13:04 1: \n09:13:04 1: /var/tmp/tmp.xonhK5Qr9M/leatherman/ruby/tests/api-test.cc:125: FAILED:\n09:13:04 1: due to unexpected exception with message:\n09:13:04 1:   symbol rb_data_object_alloc was not found in /opt/puppetlabs/puppet/lib\n09:13:04 1:   /libruby.so.2.3.0.\n09:13:04 1: \n09:13:04 1: -------------------------------------------------------------------------------\n09:13:04 1: api::exception_to_string\n09:13:04 1: -------------------------------------------------------------------------------\n09:13:04 1: /var/tmp/tmp.xonhK5Qr9M/leatherman/ruby/tests/api-test.cc:137\n09:13:04 1: ...............................................................................\n09:13:04 1: \n09:13:04 1: /var/tmp/tmp.xonhK5Qr9M/leatherman/ruby/tests/api-test.cc:137: FAILED:\n09:13:04 1: due to unexpected exception with message:\n09:13:04 1:   symbol rb_data_object_alloc was not found in /opt/puppetlabs/puppet/lib\n09:13:04 1:   /libruby.so.2.3.0.\n09:13:04 1: \n09:13:04 1: -------------------------------------------------------------------------------\n09:13:04 1: api::lookup\n09:13:04 1: -------------------------------------------------------------------------------\n09:13:04 1: /var/tmp/tmp.xonhK5Qr9M/leatherman/ruby/tests/api-test.cc:160\n09:13:04 1: ...............................................................................\n09:13:04 1: \n09:13:04 1: /var/tmp/tmp.xonhK5Qr9M/leatherman/ruby/tests/api-test.cc:160: FAILED:\n09:13:04 1: due to unexpected exception with message:\n09:13:04 1:   symbol rb_data_object_alloc was not found in /opt/puppetlabs/puppet/lib\n09:13:04 1:   /libruby.so.2.3.0.\n09:13:04 1: \n09:13:04 1: -------------------------------------------------------------------------------\n09:13:04 1: api::to_string\n09:13:04 1: -------------------------------------------------------------------------------\n09:13:04 1: /var/tmp/tmp.xonhK5Qr9M/leatherman/ruby/tests/api-test.cc:172\n09:13:04 1: ...............................................................................\n09:13:04 1: \n09:13:04 1: /var/tmp/tmp.xonhK5Qr9M/leatherman/ruby/tests/api-test.cc:172: FAILED:\n09:13:04 1: due to unexpected exception with message:\n09:13:04 1:   symbol rb_data_object_alloc was not found in /opt/puppetlabs/puppet/lib\n09:13:04 1:   /libruby.so.2.3.0.\n09:13:04 1: \n09:13:04 1: -------------------------------------------------------------------------------\n09:13:04 1: api::num2size_t\n09:13:04 1: -------------------------------------------------------------------------------\n09:13:04 1: /var/tmp/tmp.xonhK5Qr9M/leatherman/ruby/tests/api-test.cc:185\n09:13:04 1: ...............................................................................\n09:13:04 1: \n09:13:04 1: /var/tmp/tmp.xonhK5Qr9M/leatherman/ruby/tests/api-test.cc:185: FAILED:\n09:13:04 1: due to unexpected exception with message:\n09:13:04 1:   symbol rb_data_object_alloc was not found in /opt/puppetlabs/puppet/lib\n09:13:04 1:   /libruby.so.2.3.0.\n09:13:04 1: \n09:13:04 1: ===============================================================================\n09:13:04 1: test cases:   85 |   76 passed | 9 failed\n09:13:04 1: assertions: 1272 | 1263 passed | 9 failed\n09:13:04 1: \n09:13:04 1/1 Test #1: leatherman tests .................***Failed    2.18 sec\n09:13:04 \n09:13:04 0% tests passed, 1 tests failed out of 1\n09:13:04 \n09:13:04 Total Test time (real) =   2.19 sec\n09:13:04 \n09:13:04 The following tests FAILED:\n09:13:04 \t  1 - leatherman tests (Failed)\n09:13:04 Errors while running CTest\n09:13:04 make[1]: Leaving directory `/var/tmp/tmp.xonhK5Qr9M/leatherman'\n09:13:04 make[1]: *** [test] Error 8\n09:13:04 make: *** [leatherman-build] Error 2\n{code}", "epicLinkSummary": "Update puppet-agent to use Ruby 2.4", "estimate": "PT0S", "externalId": "48111", "fixedVersions": [], "id": "48111", "issueType": "Bug", "key": "LTH-101", "labels": [], "originalEstimate": "PT0S", "parent": "58231", "parentSummary": "Update puppet-agent to use Ruby 2.4", "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:ab1874a9-45ab-4efc-91aa-5200c165b2c4", "resolution": "Duplicate", "resolutionDate": "2016-06-27T11:28:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Test failures building with Ruby 2.3.0", "timeSpent": "PT0S", "updated": "2016-08-15T13:51:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "557058:29f801b5-e0f5-4278-a19b-0e5101f2094d", "created": "2016-05-18T10:41:00.000000", "name": "puppet_agent_master_integ_rhel4.out", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/13965"}], "comments": [{"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Fixed with https://github.com/puppetlabs/leatherman/commit/53d4aa775b32486cc4d240bfd53c98efe1c5a762.", "created": "2016-06-27T11:32:00.000000"}], "components": [], "created": "2016-05-18T10:44:00.000000", "creator": "557058:29f801b5-e0f5-4278-a19b-0e5101f2094d", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3a93b4bf"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz6f33:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Jun/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_3458849817_*|*_6_*:*_1_*:*_0"}], "description": "Saw this on CI: puppet-agent#stable, Integration Packaging on RHEL4:\n{code}\n17:01:00 /usr/bin/xgettext: unrecognized option `--package-name=leatherman'\n17:01:00 Try `/usr/bin/xgettext --help' for more information.\n17:01:00 make[3]: make[3]: Leaving directory `/var/tmp/tmp.ojbXAH7061/leatherman'\n17:01:00 *** [locales/leatherman.pot] Error 1\n17:01:00 make[2]: *** [locales/CMakeFiles/leatherman.pot.dir/all] Error 2\n17:01:00 make[2]: *** Waiting for unfinished jobs....\n{code}\n\nLonger output attached.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48238", "fixedVersions": ["LTH 0.7.3"], "id": "48238", "issueType": "Bug", "key": "LTH-100", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:29f801b5-e0f5-4278-a19b-0e5101f2094d", "resolution": "Fixed", "resolutionDate": "2016-06-27T11:32:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Locale transalations: transient CI failures on RHEL4", "timeSpent": "PT0S", "updated": "2016-06-27T11:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Put up a [branch|https://github.com/MikaelSmith/leatherman/tree/LTH-99] that works around it for further testing of Ruby 2.3. More work is needed to understand the deprecation, and make a change that's backwards compatible.", "created": "2016-05-16T15:48:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "This should be trivial using {{LOAD_ALIASED_SYMBOL}}.", "created": "2016-06-21T12:36:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Need to decide when to do a new Leatherman release.", "created": "2016-06-27T10:58:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Released in 0.7.4.", "created": "2016-06-27T15:24:00.000000"}], "components": [], "created": "2016-05-16T15:38:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@14da630d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PA-476"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz6cyf:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Trivial"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "PCP"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "0.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_31231_*|*_1_*:*_1_*:*_632686_*|*_10007_*:*_1_*:*_511733737_*|*_10009_*:*_1_*:*_15929648_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_800680_*|*_10005_*:*_1_*:*_3098814510"}], "description": "Leatherman.Ruby fails with an undefined symbol error loading Ruby 2.3 libraries because {{rb_data_object_alloc}} is no longer a symbol. Ruby 2.3.0 deprecates it, and has changed it to macro referring to another function.", "epicLinkSummary": "Update puppet-agent to use Ruby 2.4", "estimate": "PT0S", "externalId": "48236", "fixedVersions": ["LTH 0.7.4"], "id": "48236", "issueType": "Bug", "key": "LTH-99", "labels": [], "originalEstimate": "PT0S", "parent": "58231", "parentSummary": "Update puppet-agent to use Ruby 2.4", "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Fixed", "resolutionDate": "2016-06-27T15:24:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Leatherman.Ruby fails loading Ruby 2.3", "timeSpent": "PT0S", "updated": "2016-08-15T13:51:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:263afade-3e4f-46c6-b50a-cf2982192562", "attachments": [], "comments": [{"author": "557058:263afade-3e4f-46c6-b50a-cf2982192562", "body": "Merged to master in https://github.com/puppetlabs/leatherman/commit/14969a14938fab3b9cbd1b889e33b2d1a6eb267e", "created": "2016-05-31T15:05:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Once Leatherman is updated in puppet-agent, we should check back that Facter WMI queries work in Nano Server.", "created": "2016-06-02T11:45:00.000000"}], "components": [], "created": "2016-05-13T15:35:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@770fec09"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz6bzb:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "31/May/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_156494110_*|*_1_*:*_1_*:*_16290_*|*_10007_*:*_1_*:*_1553421928_*|*_5_*:*_1_*:*_0"}], "description": "Ruby and Puppet currently call CoInitialize and OleInitialize, which setup single-threaded apartments (STA, or COINIT_APARTMENTTHREADED) on Windows. This is incompatible with COINIT_MULTITHREADED (MTA), which is the only supported option on Nano Server.\n\nOn Nano Server, CoInitializeEx returns an error if you try to initialize with STA. CoInitialize and OleInitialize appear to do something special to continue working there, but https://bugs.ruby-lang.org/issues/12371 may result in changing to explicitly using MTA in Ruby.\n\nUpdate Leatherman's WMI setup to fallback to MTA when STA fails. If COM was previously initialized, we still proceed as if CoInitializeEx succeeded; we support this two-tier attempt so that we'll use whichever Ruby and Puppet will end up using (as Facter may be initialized first). This will likely need to change again if Ruby/Puppet change how they initialize COM.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48129", "fixedVersions": ["LTH 0.7.2"], "id": "48129", "issueType": "Bug", "key": "LTH-98", "labels": ["Windows"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Fixed", "resolutionDate": "2016-06-02T10:34:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Fix WMI setup on Microsoft Nano Server", "timeSpent": "PT0S", "updated": "2017-05-25T07:41:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-05-05T11:38:00.000000", "creator": "70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@33f729d9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyng7b:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Bandwidth"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_11397_*|*_1_*:*_1_*:*_213020_*|*_10007_*:*_1_*:*_69482275_*|*_10009_*:*_1_*:*_97182627_*|*_5_*:*_1_*:*_1289046921_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_965268791"}], "description": "Currently, locale support is enabled at compile time, and it is assumed that if we built it, the platform supports it.\n\nUnfortunately, in some container environments the locale support files have simply been removed. This causes logging initialization to fail, since we assume that if the platform is misconfigured we should abort.\n\nInstead, we should allow consuming applications to detect a situation where locale setup will fail, and they should tell Leatherman to skip that locale setup.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48193", "fixedVersions": ["LTH 0.7.0"], "id": "48193", "issueType": "Bug", "key": "LTH-97", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8", "resolution": "Fixed", "resolutionDate": "2016-05-18T14:07:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "It should be possible for an application to disable locale integration at runtime", "timeSpent": "PT0S", "updated": "2016-06-02T12:11:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:f1e252bd-73da-4e0e-90f7-f0aefb98d28c", "body": "Does this need a docs bug fix release note or not needed because in LTH??", "created": "2016-05-04T08:58:00.000000"}], "components": [], "created": "2016-04-22T17:21:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1aec110e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz5vnr:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "PCP-371 work"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "PCP"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "04/May/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_5937_*|*_10007_*:*_2_*:*_236182337_*|*_3_*:*_1_*:*_262482274_*|*_10009_*:*_1_*:*_508148981_*|*_5_*:*_1_*:*_0"}], "description": "Log messages, as in {{LOG_INFO(\"hello\");}} are not translated, where-as {{LOG_INFO(\"hello {1}\", \"person\");}} is.\n\nAlso, when using LEATHERMAN_LOCALES, I need to run {{cmake}} twice to get {{.mo}} files generated for the new locales.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48244", "fixedVersions": ["LTH 0.6.3"], "id": "48244", "issueType": "Bug", "key": "LTH-96", "labels": ["i18n"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Fixed", "resolutionDate": "2016-05-04T09:02:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Log messages without substitution are not translated", "timeSpent": "PT0S", "updated": "2016-08-04T14:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-04-22T17:10:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3e4c878d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz5vnb:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Needed by PCP-372"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "PCP"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_12416601_*|*_1_*:*_1_*:*_3573_*|*_10007_*:*_1_*:*_309893692_*|*_3_*:*_1_*:*_4222_*|*_5_*:*_1_*:*_1884388324_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_3589927"}], "description": "Looking to use shared libraries in puppet-agent, so tests should pass.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48145", "fixedVersions": ["LTH 0.6.3"], "id": "48145", "issueType": "Bug", "key": "LTH-95", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Fixed", "resolutionDate": "2016-04-26T11:42:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Unit tests fail using shared libraries on Windows", "timeSpent": "PT0S", "updated": "2016-05-18T07:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-04-20T18:06:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@48037ed0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz5tj3:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Found issues from Client work, dropped in PCP because I'm fixing them"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "PCP"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_4945_*|*_10007_*:*_1_*:*_5409880_*|*_3_*:*_1_*:*_2017064_*|*_5_*:*_1_*:*_0"}], "description": "Leatherman 0.5 removed many implicit dependencies being brought along with shared libraries when building them in Leatherman. On most platforms, Boost symbols present in those libraries would still be used to resolve required symbols building new shared libraries.\n\nOn AIX, that's not the case, but it's not detected until runtime, when an executable using Boost libraries tries to load those libraries. The result is an error message about being unable to find runtime versions of symbols (mostly Boost Regex symbols).", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48190", "fixedVersions": ["LTH 0.6.2"], "id": "48190", "issueType": "Bug", "key": "LTH-94", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Fixed", "resolutionDate": "2016-04-20T20:10:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Dependent projects fail to load shared libraries at runtime", "timeSpent": "PT0S", "updated": "2016-04-20T20:10:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-04-18T16:01:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@208f0137"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynfbz:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Nano Server investigation"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1688414_*|*_10007_*:*_1_*:*_77750933_*|*_3_*:*_1_*:*_1296667_*|*_5_*:*_1_*:*_0"}], "description": "Leatherman currently uses several APIs that are not available on Nano Server. Replace those API calls or make them optional.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48242", "fixedVersions": ["LTH 0.6.0"], "id": "48242", "issueType": "Bug", "key": "LTH-93", "labels": [], "originalEstimate": "PT0S", "parent": "55888", "parentSummary": "Support Windows Nano Server", "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Fixed", "resolutionDate": "2016-04-19T14:27:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Support Nano Server", "timeSpent": "PT0S", "updated": "2017-07-25T07:51:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8", "attachments": [], "comments": [{"author": "557058:29f801b5-e0f5-4278-a19b-0e5101f2094d", "body": "[~accountid:70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8], [~accountid:557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e] I don't know whether you want to bump a minor or patch version", "created": "2016-04-14T05:17:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "[~accountid:557058:29f801b5-e0f5-4278-a19b-0e5101f2094d] this didn't happen today, but it should be ready for release. If you'd like to do so, the instructions are at https://github.com/puppetlabs/leatherman#how-to-release. Just send out an announcement e-mail afterward. And the version should be 0.5.0.", "created": "2016-04-14T18:50:00.000000"}, {"author": "70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8", "body": "[~accountid:557058:29f801b5-e0f5-4278-a19b-0e5101f2094d] If you don't get to it during your Friday, I'll get to it during mine - I just got sucked up writing acceptance tests today", "created": "2016-04-14T18:56:00.000000"}, {"author": "70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8", "body": "Hailee needs to make another leatherman change for her ticket, so we're holding off on the tag until that's in", "created": "2016-04-15T16:01:00.000000"}, {"author": "557058:29f801b5-e0f5-4278-a19b-0e5101f2094d", "body": "[~accountid:70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8] thanks!  [~accountid:623cffe88d8b9c0068b93ebf], there's absolutely no rush for this on my side.", "created": "2016-04-16T08:50:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Needed to release a 0.5.1 due to some issues with {{[skip ci]}}.", "created": "2016-04-18T17:30:00.000000"}], "components": [], "created": "2016-04-14T05:15:00.000000", "creator": "557058:29f801b5-e0f5-4278-a19b-0e5101f2094d", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@243b63"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz5om7:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Release needed for LTH changes required by FACT tickets"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Apr/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_113805693_*|*_3_*:*_2_*:*_34024528_*|*_5_*:*_1_*:*_2556019164_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_241830247"}], "description": "Creating this ticket as a reminder to merge the PCP components changes for Catch 1.4.0 after bumping leatherman's version in puppet-agent#master:\nhttps://github.com/puppetlabs/pxp-agent/pull/389\nhttps://github.com/puppetlabs/cpp-pcp-client/pull/148", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48143", "fixedVersions": [], "id": "48143", "issueType": "Task", "key": "LTH-92", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:29f801b5-e0f5-4278-a19b-0e5101f2094d", "resolution": "Fixed", "resolutionDate": "2016-05-18T07:30:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Release Leatherman 0.5.0", "timeSpent": "PT0S", "updated": "2016-05-18T07:30:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-04-07T10:43:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6a9894ed"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz5jon:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Supports Facter fixes"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_4162_*|*_10007_*:*_1_*:*_524513210_*|*_5_*:*_1_*:*_3006325025_*|*_6_*:*_1_*:*_0"}], "description": "Ruby 2.2 [changes|https://github.com/ruby/ruby/commit/a6024cdc1bc1ff792fc07a728e8156c71a891d48] rb_num2long to return a long. That's a dangerous operation to use in a cross-platform 64-bit application, because on Windows it'll be a 32-bit int and on most other platforms a 64-bit int.\n\nChange to force use of rb_num2ll and rb_num2ull instead to avoid issues with long return values (and the inconsistency between Ruby 2.1 and 2.2).", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48180", "fixedVersions": ["LTH 0.5.0"], "id": "48180", "issueType": "Improvement", "key": "LTH-91", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Fixed", "resolutionDate": "2016-04-13T12:25:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Add long long accessors for Ruby numbers", "timeSpent": "PT0S", "updated": "2016-05-18T07:30:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-03-15T11:18:00.000000", "creator": "557058:29f801b5-e0f5-4278-a19b-0e5101f2094d", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@76420e82"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz52jb:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Adding a Windows-specific option to leatherman::execution for creating child processes with a new Process Group and without a Job Object. This allows a parent process to maintain communication channels with a child, then exit without causing the child process to terminate."}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Part of PCP-276"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "PCP"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "0.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_9192_*|*_10007_*:*_1_*:*_2854879_*|*_10009_*:*_1_*:*_680155395_*|*_5_*:*_1_*:*_0"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48218", "fixedVersions": ["LTH 0.5.0"], "id": "48218", "issueType": "Improvement", "key": "LTH-90", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:29f801b5-e0f5-4278-a19b-0e5101f2094d", "resolution": "Fixed", "resolutionDate": "2016-03-23T09:02:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Add new process group option to the execution library", "timeSpent": "PT0S", "updated": "2016-04-14T10:11:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Testing is all done in Travis/AppVeyor CI.", "created": "2016-04-06T14:38:00.000000"}], "components": [], "created": "2016-03-11T11:12:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@37294f70"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz4vin:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_2376231_*|*_1_*:*_1_*:*_1746415439_*|*_10007_*:*_1_*:*_506327775_*|*_5_*:*_1_*:*_18118272668_*|*_6_*:*_1_*:*_0"}], "description": "Now that we've dropped support for Windows Server 2003, we can enable Windows Vista API support (which brings in many improved APIs). We can now uncomment https://github.com/puppetlabs/leatherman/blob/0.4.2/cmake/cflags.cmake#L73.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48234", "fixedVersions": ["LTH 0.5.0"], "id": "48234", "issueType": "Improvement", "key": "LTH-89", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Fixed", "resolutionDate": "2016-04-06T14:38:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Build with Windows Vista API support", "timeSpent": "PT0S", "updated": "2016-11-02T07:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:3bbf1c83-df0e-4372-887d-cfc38dee9330", "body": "We've decided to defer bumping our toolchain's GCC/Boost versions until sometime after Puppet (Agent) 5. \n\nIs this something we should consider doing independently of a GCC update?", "created": "2017-03-07T23:02:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "I think this could still be valuable, but tempted to close this ticket for now.", "created": "2017-03-08T10:01:00.000000"}], "components": [], "created": "2016-03-03T11:53:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@338314c5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynjn3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Mar/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_19347186721_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_2_*:*_12614113595"}], "description": "Add GCC 6.1.0 testing to AppVeyor and Travis CI (while preserving GCC 4.8) to ensure we don't backslide while preparing to switch packaging to GCC 6.\n\nAlso update the README to build with GCC 6 (particularly Windows instructions).\n\nTo support dual version CI, we'll need to start labeling Leatherman release artifacts.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48127", "fixedVersions": [], "id": "48127", "issueType": "Task", "key": "LTH-88", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Incomplete", "resolutionDate": "2017-03-08T10:01:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Add GCC 6.1.0 testing to CI, update README", "timeSpent": "PT0S", "updated": "2017-03-08T10:01:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-03-02T15:04:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2031d349"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz4uxj:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Done in Leatherman repo."}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Blocks using Leatherman 0.4.0 in puppet-agent"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_4318_*|*_10007_*:*_1_*:*_6995067_*|*_3_*:*_1_*:*_552558_*|*_10009_*:*_1_*:*_151247887_*|*_5_*:*_1_*:*_1451100388_*|*_6_*:*_1_*:*_0"}], "description": "Building with static boost libraries on Mac OS X fails because Boost.Locale requires iconv.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48188", "fixedVersions": ["LTH 0.4.1"], "id": "48188", "issueType": "Bug", "key": "LTH-87", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Fixed", "resolutionDate": "2016-03-04T11:11:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Build on Mac OS X with static boost fails", "timeSpent": "PT0S", "updated": "2016-04-19T16:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "This release will go into puppet-agent 1.4.1, so put up a PR but hold off merging until the puppet-agent 1.4.0 release goes out.", "created": "2016-02-25T12:54:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Split this into multiple tasks across PA and FACT.", "created": "2016-02-26T10:48:00.000000"}], "components": [], "created": "2016-02-24T16:21:00.000000", "creator": "70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@10b0dca7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynn5z:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Feb/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_118955_*|*_10007_*:*_1_*:*_151176863_*|*_3_*:*_1_*:*_529778_*|*_10009_*:*_1_*:*_606057484_*|*_5_*:*_1_*:*_1451200508_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_994753"}], "description": "* Tag the release\n* Bump version in puppet-agent\n* Bump travis and appveyor artifacts for Facter", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48185", "fixedVersions": ["LTH 0.4.0"], "id": "48185", "issueType": "Task", "key": "LTH-86", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8", "resolution": "Fixed", "resolutionDate": "2016-03-04T11:09:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Release Leatherman 0.4.0", "timeSpent": "PT0S", "updated": "2016-03-21T07:16:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-02-13T19:32:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@599e1995"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz4itz:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Fixed an issue where C++ code accessing Ruby strings, when called from a Ruby interpreter configured with a non-UTF-8 locale, would interpret the string incorrectly."}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Facter encoding issue found while trying to ensure we work well in German locales"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_784970_*|*_1_*:*_1_*:*_34132_*|*_10007_*:*_1_*:*_607320026_*|*_3_*:*_1_*:*_153397057_*|*_5_*:*_1_*:*_2387513026_*|*_6_*:*_1_*:*_0"}], "description": "The Ruby API's to_string method doesn't account for string encoding when retrieving values. The C++ interface expects UTF-8 encoding; if another encoding is used, the string will be copied as bytes and interpreted incorrectly in C++ programs expecting UTF-8.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48183", "fixedVersions": ["LTH 0.4.0"], "id": "48183", "issueType": "Bug", "key": "LTH-84", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Fixed", "resolutionDate": "2016-02-22T15:04:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Ruby API to_string does not handle encodings", "timeSpent": "PT0S", "updated": "2016-03-21T07:16:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-02-10T15:31:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Developers can implement pluralization using Leatherman.Locale."}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@28bf7625"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyn8pr:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Spare bandwidth"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "PCP"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_22007611_*|*_1_*:*_1_*:*_6050239029_*|*_10007_*:*_1_*:*_1334779954_*|*_3_*:*_1_*:*_4483983_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2327376970"}], "description": "The {{leatherman::locale::translate}} interface doesn't provide a way to use {{boost::locale::translate}}'s call signatures that support context and pluralization. See http://www.boost.org/doc/libs/1_58_0/libs/locale/doc/html/messages_formatting.html#plural_forms for more detail.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48178", "fixedVersions": ["LTH 0.7.2"], "id": "48178", "issueType": "Bug", "key": "LTH-83", "labels": ["i18n"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Fixed", "resolutionDate": "2016-06-02T09:46:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Unable to use boost::locale::translate's context or plural support", "timeSpent": "PT0S", "updated": "2016-08-12T13:55:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8", "attachments": [], "comments": [{"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Cleanup after FACT-1338. Facter specifies more dependencies than it needs to, but they can't be cleaned up until this Leatherman issue is resolved.", "created": "2016-02-01T15:23:00.000000"}], "components": [], "created": "2016-02-01T15:15:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7feb4f28"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynikf:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_528851_*|*_10007_*:*_1_*:*_5610041137_*|*_3_*:*_1_*:*_4713187_*|*_5_*:*_1_*:*_0"}], "description": "When Leatherman is built as a set of shared libraries, all required dependencies are accounted for in the binary files. However the {{LEATHERMAN_LIBS}} and {{LEATHERMAN_\\*\\_LIBS}} variables still included dependent libraries, which could be static libraries. When the dependencies are static libraries, linking using {{LEATHERMAN_*_LIBS}} can result in missing symbols.\n\nFixing this appears to have an impact on all users of Leatherman.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48177", "fixedVersions": ["LTH 0.5.0"], "id": "48177", "issueType": "Bug", "key": "LTH-81", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Fixed", "resolutionDate": "2016-04-06T16:03:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "LEATHERMAN_SHARED includes unnecessary dependencies", "timeSpent": "PT0S", "updated": "2016-04-20T18:06:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Started with something like\n{code}\nif (CMAKE_EXPORT_COMPILE_COMMANDS)\n    add_custom_target(tidy COMMAND /usr/local/opt/llvm/bin/clang-tidy -p compile_commands.json ${ALL_LEATHERMAN_SOURCES})\nendif()\n{code}\n\nNeed a way to exclude certain check types (vfork in Leatherman.Execution), get just source files being compiled on that platform (because compile_commands.json won't have entries for others), and find the clang-tidy executable.", "created": "2016-01-27T16:11:00.000000"}], "components": [], "created": "2016-01-27T16:10:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@35f16d49"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz45xj:"}], "description": "Add macro for running [clang-tidy|http://clang.llvm.org/extra/clang-tidy/] on projects, and as part of CI.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48240", "fixedVersions": [], "id": "48240", "issueType": "New Feature", "key": "LTH-79", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Add support for clang-tidy", "timeSpent": "PT0S", "updated": "2016-10-07T12:40:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Not causing issues currently, so closing until we need it.", "created": "2017-05-05T16:23:00.000000"}], "components": [], "created": "2016-01-27T16:00:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@61964744"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymsuv:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_21853526031_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_18233850494"}], "description": "The unit tests in LTH-58 demonstrate an inconsistency with Boost.Locale's behavior across platforms, isolated and referred to [boost-users|http://lists.boost.org/boost-users/2016/01/85624.php]. Investigate this behavior, and also test the formatting behavior in a thorough and systematic way.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48141", "fixedVersions": [], "id": "48141", "issueType": "Bug", "key": "LTH-78", "labels": ["i18n"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Won't Fix", "resolutionDate": "2017-05-05T16:23:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Investigate Boost.Locale formatting inconsistencies", "timeSpent": "PT0S", "updated": "2017-05-05T16:23:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:43c81f8c-ae3f-46d9-84b0-c9c65e1da709", "body": "This is great [~accountid:557058:ee5c1409-5f9d-4dd8-9c22-21070ef94edb]. I just started creating some very simple quick start pages in the i18n section on Confluence. See https://confluence.puppetlabs.com/pages/viewpage.action?pageId=93488726 as an example. I'll scrape from the documentation you've done to create the C++ page.", "created": "2016-09-06T18:24:00.000000"}], "components": [], "created": "2016-01-27T15:56:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5c6c67e1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymycn:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "06/Sep/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_17960812257_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_2_*:*_3970528707"}], "description": "LTH-58 introduces tools for using i18n with some basic documentation. Add more complete documentation and examples for preparing a project for i18n based on Boost.Locale's documentation.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48109", "fixedVersions": [], "id": "48109", "issueType": "Task", "key": "LTH-77", "labels": ["i18n"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Done", "resolutionDate": "2016-10-07T12:58:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Document i18n guidelines", "timeSpent": "PT0S", "updated": "2016-10-07T12:58:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "[~accountid:70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8] maybe we should be checking {{Leatherman_FIND_COMPONENTS}} in {{leatherman_component}}.", "created": "2016-01-19T10:44:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We need to make sure this is still an issue. We have added some logic around requiring curl that may have fixed this.", "created": "2016-10-07T12:46:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "I've confirmed this is still an issue, and I believe Michael's suggestion above is correct: we are currently including the cmake files for components we don't need, and that should probably be avoided.", "created": "2016-10-07T16:09:00.000000"}], "components": [], "created": "2016-01-19T10:37:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@a1d5084"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynjmn:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Oct/16"}], "description": "Shown in https://ci.appveyor.com/project/puppetlabs/cpp-pcp-client/build/1.0.116. cpp-pcp-client doesn't use curl, but it still hit {{find_package(CURL REQUIRED)}}.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48116", "fixedVersions": [], "id": "48116", "issueType": "Bug", "key": "LTH-76", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Stand-alone Leatherman requires libcurl even if the Leatherman.curl component isn't requested", "timeSpent": "PT0S", "updated": "2016-10-07T16:09:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-01-14T18:14:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4b6e7f22"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3ybb:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_12695_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48181", "fixedVersions": ["LTH 0.3.2"], "id": "48181", "issueType": "Task", "key": "LTH-75", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Done", "resolutionDate": "2016-01-14T18:14:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Leatherman 0.3.2", "timeSpent": "PT0S", "updated": "2016-03-22T15:24:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Need to rebuild Linux Boost binaries with static libraries.", "created": "2016-04-06T12:17:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Probably moving to using dynamic libraries with Boost 1.61, so won't fix this.", "created": "2016-06-27T11:27:00.000000"}], "components": [], "created": "2016-01-13T11:16:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@fc3c5cd"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynghz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_6757123493_*|*_10007_*:*_1_*:*_500386242_*|*_3_*:*_1_*:*_146017_*|*_4_*:*_1_*:*_7081758958_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_25568"}], "description": "Our packaging builds use Boost static linking. Developers have run into issues where they use dynamic linking locally, and end up with a CMake config that doesn't work in the packaging build.\n\nWe should switch BOOST_STATIC to ON by default, and document the flag in the Leatherman README. Developers who want to test with dynamic linking would set BOOST_STATIC to OFF.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48217", "fixedVersions": [], "id": "48217", "issueType": "Improvement", "key": "LTH-74", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Won't Fix", "resolutionDate": "2016-06-27T11:27:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Switch BOOST_STATIC to ON by default", "timeSpent": "PT0S", "updated": "2016-06-27T11:27:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-01-12T17:55:00.000000", "creator": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@383f9ad8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynjmv:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}], "description": "The {{leatherman::curl::request#add_header}} method permits arbitrary strings and does no input checking/validation/transformation. This means that adding a header with a newline will cause any following headers to be ignored.\n\n{code}\nrequest.add_header(\"X-Authentication\", \"my-token\\n\")\n{code}\n\nThis results in the following:\n\n{noformat}\nPOST /code-manager/v1/deploys HTTP/1.1\nHost: code-manager:8170\nAccept: */*\nCookie: \nContent-Type: application/json\nUser-Agent: CodeManagerCLI/0.1.0 (commit a14a41b00545486a81740db8578bb34c16eb206a)\nX-Authentication: my-token\n\nContent-Length: 19\n\n{\"deploy-all\":true}\n{noformat}\n\nThe newline following X-Authentication causes the Content-Length header to be ignored; if this field is missing then some HTTP parsers will not properly parse the HTTP request body.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48125", "fixedVersions": [], "id": "48125", "issueType": "Bug", "key": "LTH-73", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "curl/request permits header values that can mangle the HTTP request", "timeSpent": "PT0S", "updated": "2016-10-07T12:43:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Consider rapidjson perfromance and conformance compared to alternatives. https://github.com/miloyip/nativejson-benchmark", "created": "2016-03-16T16:53:00.000000"}, {"author": "70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8", "body": "While we should always be open-minded about replacing the libraries we use, I don't think anyone is going to have the bandwidth to work on replacing rapidjson anytime soon, especially with how many client tools are using it now. I'm just gonna close this, and we can re-open if we decide re-evaluating that is worthwhile.", "created": "2016-04-21T10:36:00.000000"}], "components": [], "created": "2016-01-07T03:27:00.000000", "creator": "557058:29f801b5-e0f5-4278-a19b-0e5101f2094d", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3229be9e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3m9b:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Mar/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_9094166383_*|*_6_*:*_1_*:*_0"}], "description": "Consider using a better JSON library.\nEvaluate alternatives, possibly https://github.com/nlohmann/json.\n\nThis would have an direct impact on cpp-pcp-client as it relies on valijson for JSON schema validation (https://github.com/tristanpenman/valijson/tree/master/include/valijson/adapters).\nNote that PCP-210 is about improving JSON validation and perhaps replace valijson.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48237", "fixedVersions": [], "id": "48237", "issueType": "Improvement", "key": "LTH-72", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:29f801b5-e0f5-4278-a19b-0e5101f2094d", "resolution": "Won't Fix", "resolutionDate": "2016-04-21T10:37:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Consider replacing rapidjson", "timeSpent": "PT0S", "updated": "2016-04-21T10:37:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Needs a release of Leatherman to pull into dependent projects.", "created": "2016-01-05T15:39:00.000000"}], "components": [], "created": "2015-12-23T14:53:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@59d39f72"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3okf:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_80108238_*|*_1_*:*_1_*:*_21453_*|*_10007_*:*_1_*:*_3186_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1045791438"}], "description": "When building with shared libraries on Windows, Ruby is not found in either unit tests or when used within Facter:\n{code}\ndue to unexpected exception with message:\n  symbol rb_intern was not found in .\n{code}\n\nThe lookup rules to check if Ruby has already been loaded don't seem to work when leatherman_ruby is a shared library.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48139", "fixedVersions": ["LTH 0.3.5"], "id": "48139", "issueType": "Bug", "key": "LTH-71", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Fixed", "resolutionDate": "2016-01-05T15:39:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Shared libraries fail to find Ruby on Windows", "timeSpent": "PT0S", "updated": "2016-01-14T18:10:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "This also affects using a libcurl DLL when also building shared Leatherman libraries.", "created": "2016-05-03T12:48:00.000000"}], "components": [], "created": "2015-12-23T14:51:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6ef2e990"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymsgn:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_135756_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_3635869390"}], "description": "The stubbing used for curl tests fail on Windows when built with a static libcurl, as libcurl is compiled into leatherman_curl.dll and so can't be stubbed out. I'm not sure there's a work-around for this, other than use a shared build of libcurl. Our most likely action is to disable the tests in this configuration, or leave them failing and not build or ship with static libcurl.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48107", "fixedVersions": [], "id": "48107", "issueType": "Bug", "key": "LTH-70", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Won't Fix", "resolutionDate": "2016-02-03T16:51:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Shared libraries with libcurl.a on Windows cause curl tests to fail", "timeSpent": "PT0S", "updated": "2016-10-05T12:43:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-12-23T12:19:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6d4ced0b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyo3b3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}], "description": "Leatherman.curl consumers need a way to test REST calls without setting up a server. We should provide a way to use the curl API with mocking, so consumers can provide mock behavior for Leatherman.curl calls.\n\nWe currently have a way to stub out curl within the Leatherman test suite. This ticket is intended to add a way for users of Leatherman to mock out API endpoints with curl.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48235", "fixedVersions": [], "id": "48235", "issueType": "New Feature", "key": "LTH-69", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Provide mocking interface for Leatherman.curl", "timeSpent": "PT0S", "updated": "2016-10-07T12:42:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Started work in https://github.com/puppetlabs/leatherman/pull/116, but decided to ticket it and make the transition more complete.", "created": "2015-12-16T17:03:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "We never completely moved off GCC 4.8/C++11. But this doesn't need to be a ticket either, we'll get to it when it seems possible and important.", "created": "2019-09-23T15:52:00.000000"}], "components": [], "created": "2015-12-16T17:02:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7644bfe5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyo3bj:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Sep/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_96993439398_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_14584476530_*|*_10005_*:*_1_*:*_6739053771"}], "description": "Disable GCC 4.8 testing in Travis/AppVeyor CI. Update cflags to C++14.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48192", "fixedVersions": [], "id": "48192", "issueType": "Task", "key": "LTH-68", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Won't Fix", "resolutionDate": "2019-09-16T03:51:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Updates post-GCC 6", "timeSpent": "PT0S", "updated": "2019-09-23T15:52:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "attachments": [], "comments": [{"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Tagged at https://github.com/puppetlabs/leatherman/releases/tag/0.3.1.", "created": "2015-12-16T16:18:00.000000"}], "components": [], "created": "2015-12-16T16:04:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@790b05d1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3lw7:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "In repo"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Continuing LTH-62 support"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_3154_*|*_6_*:*_1_*:*_0_*|*_10014_*:*_1_*:*_898327"}], "description": "Tag Leatherman 0.3.1", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48105", "fixedVersions": ["LTH 0.3.1"], "id": "48105", "issueType": "Task", "key": "LTH-67", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Done", "resolutionDate": "2015-12-16T16:19:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Leatherman 0.3.1", "timeSpent": "PT0S", "updated": "2016-03-22T15:24:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "attachments": [], "comments": [{"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Tagged at https://github.com/puppetlabs/leatherman/releases/tag/0.3.0.", "created": "2015-12-16T15:50:00.000000"}], "components": [], "created": "2015-12-16T14:44:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7debfe97"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3lqn:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Handled in the repo."}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Part of verifying LTH-62"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_233511_*|*_6_*:*_1_*:*_0_*|*_10014_*:*_1_*:*_3952572"}], "description": "Tag Leatherman 0.3.0.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48179", "fixedVersions": ["LTH 0.3.0"], "id": "48179", "issueType": "Task", "key": "LTH-66", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Done", "resolutionDate": "2015-12-16T15:54:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Leatherman 0.3.0", "timeSpent": "PT0S", "updated": "2016-03-22T15:24:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-12-16T11:55:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@37129e87"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyonyn:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Slack time"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_441544650_*|*_1_*:*_1_*:*_171230484_*|*_10007_*:*_1_*:*_442064979_*|*_3_*:*_1_*:*_233604_*|*_6_*:*_1_*:*_0"}], "description": "Includes C++11 function implementations. All fixes to halex/boost-nowide have been incorporated in https://github.com/artyom-beilis/nowide.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48211", "fixedVersions": ["LTH 0.3.3"], "id": "48211", "issueType": "Improvement", "key": "LTH-65", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Fixed", "resolutionDate": "2015-12-28T17:00:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Switch nowide source to artyom-beilis/nowide", "timeSpent": "PT0S", "updated": "2016-01-14T18:10:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-12-11T16:15:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1e7942a5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyo22v:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Working in related code"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_441566927_*|*_1_*:*_1_*:*_6084_*|*_10007_*:*_1_*:*_1027482591_*|*_3_*:*_1_*:*_2457155_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_6191"}], "description": "Major RPM distributions define the CMake variable LIB_SUFFIX to determine if libraries should be shipped in /usr/lib64 or /usr/lib. There's no way currently to specify that libraries should be installed to /usr/lib64.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48210", "fixedVersions": ["LTH 0.3.3"], "id": "48210", "issueType": "Improvement", "key": "LTH-64", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Fixed", "resolutionDate": "2015-12-28T17:00:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Support multilib installation on RPM distributions", "timeSpent": "PT0S", "updated": "2016-01-14T18:10:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-12-11T16:08:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6abaad6b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3jdj:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Handled in repo"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Needed by FACT-950 using dynamic libraries"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_436327138_*|*_1_*:*_1_*:*_869778016_*|*_10007_*:*_1_*:*_165709459_*|*_5_*:*_1_*:*_0"}], "description": "The reason behind this isn't clear. The error is\n\n{code}\n[100%] Linking CXX executable ..\\bin\\leatherman_test.exe\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x1cc): undefined reference to `leatherman::curl::client::client()'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x251): undefined reference to `leatherman::curl::request::request(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x417): undefined reference to `leatherman::curl::client::get(leatherman::curl::request const&)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x47e): undefined reference to `leatherman::curl::response::status_code() const'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x705): undefined reference to `leatherman::curl::client::post(leatherman::curl::request const&)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x76c): undefined reference to `leatherman::curl::response::status_code() const'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x9ef): undefined reference to `leatherman::curl::client::put(leatherman::curl::request const&)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0xa56): undefined reference to `leatherman::curl::response::status_code() const'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0xd5a): undefined reference to `leatherman::curl::request::request(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0xd80): undefined reference to `leatherman::curl::client::get(leatherman::curl::request const&)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0xde8): undefined reference to `leatherman::curl::response::status_code() const'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x13d4): undefined reference to `leatherman::curl::client::client()'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x1449): undefined reference to `leatherman::curl::request::request(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x162c): undefined reference to `leatherman::curl::client::get(leatherman::curl::request const&)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x1634): undefined reference to `leatherman::curl::client::get_handle()'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x18e2): undefined reference to `leatherman::curl::request::add_cookie(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x1924): undefined reference to `leatherman::curl::client::get(leatherman::curl::request const&)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x192c): undefined reference to `leatherman::curl::client::get_handle()'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x1bc6): undefined reference to `leatherman::curl::request::add_cookie(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x1c2e): undefined reference to `leatherman::curl::request::add_cookie(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x1c7c): undefined reference to `leatherman::curl::request::remove_cookie(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x1ca8): undefined reference to `leatherman::curl::client::get(leatherman::curl::request const&)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x1cb0): undefined reference to `leatherman::curl::client::get_handle()'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x1f58): undefined reference to `leatherman::curl::request::add_cookie(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x1fc0): undefined reference to `leatherman::curl::request::add_cookie(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x1ffa): undefined reference to `leatherman::curl::client::get(leatherman::curl::request const&)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x2002): undefined reference to `leatherman::curl::client::get_handle()'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x269d): undefined reference to `leatherman::curl::client::client()'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x2887): undefined reference to `leatherman::curl::request::request(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x28d9): undefined reference to `leatherman::curl::request::add_header(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x291b): undefined reference to `leatherman::curl::client::get(leatherman::curl::request const&)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x2923): undefined reference to `leatherman::curl::client::get_handle()'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x2d65): undefined reference to `leatherman::curl::request::request(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x2d91): undefined reference to `leatherman::curl::client::get(leatherman::curl::request const&)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x2d99): undefined reference to `leatherman::curl::client::get_handle()'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x2ddd): undefined reference to `leatherman::curl::response::each_header(std::function<bool (std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)>) const'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x30b0): undefined reference to `leatherman::curl::request::request(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x30dc): undefined reference to `leatherman::curl::client::get(leatherman::curl::request const&)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x30e4): undefined reference to `leatherman::curl::client::get_handle()'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x315a): undefined reference to `leatherman::curl::response::header(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x325a): undefined reference to `leatherman::curl::response::header(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x3412): undefined reference to `leatherman::curl::request::request(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x343e): undefined reference to `leatherman::curl::client::get(leatherman::curl::request const&)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x3446): undefined reference to `leatherman::curl::client::get_handle()'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x3482): undefined reference to `leatherman::curl::response::each_header(std::function<bool (std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)>) const'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x372a): undefined reference to `leatherman::curl::request::request(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x3783): undefined reference to `leatherman::curl::request::body(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x37c2): undefined reference to `leatherman::curl::client::get(leatherman::curl::request const&)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x37ca): undefined reference to `leatherman::curl::client::get_handle()'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x3a62): undefined reference to `leatherman::curl::client::get_handle()'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x3aac): undefined reference to `leatherman::curl::request::request(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x3ad0): undefined reference to `leatherman::curl::client::get(leatherman::curl::request const&)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x3b2c): undefined reference to `leatherman::curl::response::body[abi:cxx11]() const'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x44d4): undefined reference to `leatherman::curl::client::client()'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x4549): undefined reference to `leatherman::curl::request::request(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x4722): undefined reference to `leatherman::curl::client::get(leatherman::curl::request const&)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x472a): undefined reference to `leatherman::curl::client::get_handle()'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x4a2c): undefined reference to `leatherman::curl::client::post(leatherman::curl::request const&)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x4a34): undefined reference to `leatherman::curl::client::get_handle()'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x4d35): undefined reference to `leatherman::curl::client::put(leatherman::curl::request const&)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x4d3d): undefined reference to `leatherman::curl::client::get_handle()'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x502b): undefined reference to `leatherman::curl::client::get(leatherman::curl::request const&)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x5033): undefined reference to `leatherman::curl::client::get_handle()'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x57bd): undefined reference to `leatherman::curl::client::client()'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x583e): undefined reference to `leatherman::curl::request::request(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x5a32): undefined reference to `leatherman::curl::client::get(leatherman::curl::request const&)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x5a3a): undefined reference to `leatherman::curl::client::get_handle()'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x5cfa): undefined reference to `leatherman::curl::client::set_ca_cert(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x5d26): undefined reference to `leatherman::curl::client::get(leatherman::curl::request const&)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x5d2e): undefined reference to `leatherman::curl::client::get_handle()'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x5faf): undefined reference to `leatherman::curl::client::get(leatherman::curl::request const&)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x5fb7): undefined reference to `leatherman::curl::client::get_handle()'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x627a): undefined reference to `leatherman::curl::client::set_client_cert(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x62bc): undefined reference to `leatherman::curl::client::get(leatherman::curl::request const&)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x62c4): undefined reference to `leatherman::curl::client::get_handle()'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x654a): undefined reference to `leatherman::curl::client::get(leatherman::curl::request const&)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x6552): undefined reference to `leatherman::curl::client::get_handle()'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x681d): undefined reference to `leatherman::curl::client::set_client_cert(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x685f): undefined reference to `leatherman::curl::client::get(leatherman::curl::request const&)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x6867): undefined reference to `leatherman::curl::client::get_handle()'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x6b15): undefined reference to `leatherman::curl::client::set_supported_protocols(long)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x6b2b): undefined reference to `leatherman::curl::client::get(leatherman::curl::request const&)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x6b33): undefined reference to `leatherman::curl::client::get_handle()'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x6dd9): undefined reference to `leatherman::curl::client::get(leatherman::curl::request const&)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x6de1): undefined reference to `leatherman::curl::client::get_handle()'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x76ca): undefined reference to `leatherman::curl::client::client()'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x76ec): undefined reference to `leatherman::curl::request::request(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x7707): undefined reference to `leatherman::curl::client::get_handle()'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x786f): undefined reference to `leatherman::curl::client::client()'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x7bd0): undefined reference to `leatherman::curl::client::post(leatherman::curl::request const&)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x7eef): undefined reference to `leatherman::curl::client::get(leatherman::curl::request const&)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x820e): undefined reference to `leatherman::curl::client::get(leatherman::curl::request const&)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x882b): undefined reference to `leatherman::curl::client::get(leatherman::curl::request const&)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x8b4a): undefined reference to `leatherman::curl::client::get(leatherman::curl::request const&)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x8e69): undefined reference to `leatherman::curl::client::get(leatherman::curl::request const&)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x8fab): undefined reference to `leatherman::curl::client::set_ca_cert(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x9041): undefined reference to `leatherman::curl::client::get(leatherman::curl::request const&)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x919d): undefined reference to `leatherman::curl::client::set_client_cert(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x9384): undefined reference to `leatherman::curl::client::set_client_cert(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x9430): undefined reference to `leatherman::curl::client::get(leatherman::curl::request const&)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x9555): undefined reference to `leatherman::curl::client::set_supported_protocols(long)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x9632): undefined reference to `leatherman::curl::client::get(leatherman::curl::request const&)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x9662): undefined reference to `leatherman::curl::client::get(leatherman::curl::request const&)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x96a2): undefined reference to `leatherman::curl::client::get(leatherman::curl::request const&)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x96d2): undefined reference to `leatherman::curl::client::get(leatherman::curl::request const&)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x9702): undefined reference to `leatherman::curl::client::get(leatherman::curl::request const&)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x9732): more undefined references to `leatherman::curl::client::get(leatherman::curl::request const&)' follow\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x9762): undefined reference to `leatherman::curl::client::put(leatherman::curl::request const&)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x97c2): undefined reference to `leatherman::curl::client::get(leatherman::curl::request const&)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x9802): undefined reference to `leatherman::curl::client::get(leatherman::curl::request const&)'\nCMakeFiles\\leatherman_test.dir/objects.a(client_test.cc.obj):client_test.cc:(.text+0x9872): undefined reference to `leatherman::curl::client::get(leatherman::curl::request const&)'\nCMakeFiles\\leatherman_test.dir/objects.a(request_test.cc.obj):request_test.cc:(.text+0x160d): undefined reference to `leatherman::curl::request::request(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'\nCMakeFiles\\leatherman_test.dir/objects.a(request_test.cc.obj):request_test.cc:(.text+0x1825): undefined reference to `leatherman::curl::request::add_header(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'\nCMakeFiles\\leatherman_test.dir/objects.a(request_test.cc.obj):request_test.cc:(.text+0x1873): undefined reference to `leatherman::curl::request::header(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'\nCMakeFiles\\leatherman_test.dir/objects.a(request_test.cc.obj):request_test.cc:(.text+0x1ef0): undefined reference to `leatherman::curl::request::add_header(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'\nCMakeFiles\\leatherman_test.dir/objects.a(request_test.cc.obj):request_test.cc:(.text+0x1f66): undefined reference to `leatherman::curl::request::remove_header(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'\nCMakeFiles\\leatherman_test.dir/objects.a(request_test.cc.obj):request_test.cc:(.text+0x1f9e): undefined reference to `leatherman::curl::request::header(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'\nCMakeFiles\\leatherman_test.dir/objects.a(request_test.cc.obj):request_test.cc:(.text+0x24f4): undefined reference to `leatherman::curl::request::add_header(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'\nCMakeFiles\\leatherman_test.dir/objects.a(request_test.cc.obj):request_test.cc:(.text+0x25a4): undefined reference to `leatherman::curl::request::add_header(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'\nCMakeFiles\\leatherman_test.dir/objects.a(request_test.cc.obj):request_test.cc:(.text+0x2654): undefined reference to `leatherman::curl::request::add_header(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'\nCMakeFiles\\leatherman_test.dir/objects.a(request_test.cc.obj):request_test.cc:(.text+0x26e2): undefined reference to `leatherman::curl::request::each_header(std::function<bool (std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)>) const'\nCMakeFiles\\leatherman_test.dir/objects.a(request_test.cc.obj):request_test.cc:(.text+0x2936): undefined reference to `leatherman::curl::request::add_cookie(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'\nCMakeFiles\\leatherman_test.dir/objects.a(request_test.cc.obj):request_test.cc:(.text+0x29db): undefined reference to `leatherman::curl::request::add_cookie(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'\nCMakeFiles\\leatherman_test.dir/objects.a(request_test.cc.obj):request_test.cc:(.text+0x2a29): undefined reference to `leatherman::curl::request::cookie(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'\nCMakeFiles\\leatherman_test.dir/objects.a(request_test.cc.obj):request_test.cc:(.text+0x2ad0): undefined reference to `leatherman::curl::request::cookie(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'\nCMakeFiles\\leatherman_test.dir/objects.a(request_test.cc.obj):request_test.cc:(.text+0x2f11): undefined reference to `leatherman::curl::request::add_cookie(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'\nCMakeFiles\\leatherman_test.dir/objects.a(request_test.cc.obj):request_test.cc:(.text+0x2fc1): undefined reference to `leatherman::curl::request::add_cookie(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'\nCMakeFiles\\leatherman_test.dir/objects.a(request_test.cc.obj):request_test.cc:(.text+0x3029): undefined reference to `leatherman::curl::request::add_cookie(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'\nCMakeFiles\\leatherman_test.dir/objects.a(request_test.cc.obj):request_test.cc:(.text+0x30b7): undefined reference to `leatherman::curl::request::each_cookie(std::function<bool (std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)>) const'\nCMakeFiles\\leatherman_test.dir/objects.a(request_test.cc.obj):request_test.cc:(.text+0x3385): undefined reference to `leatherman::curl::request::body(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'\nCMakeFiles\\leatherman_test.dir/objects.a(request_test.cc.obj):request_test.cc:(.text+0x33ba): undefined reference to `leatherman::curl::request::body[abi:cxx11]() const'\nCMakeFiles\\leatherman_test.dir/objects.a(request_test.cc.obj):request_test.cc:(.text+0x37df): undefined reference to `leatherman::curl::request::timeout(long)'\nCMakeFiles\\leatherman_test.dir/objects.a(request_test.cc.obj):request_test.cc:(.text+0x3846): undefined reference to `leatherman::curl::request::timeout() const'\nCMakeFiles\\leatherman_test.dir/objects.a(request_test.cc.obj):request_test.cc:(.text+0x3bcf): undefined reference to `leatherman::curl::request::connection_timeout(long)'\nCMakeFiles\\leatherman_test.dir/objects.a(request_test.cc.obj):request_test.cc:(.text+0x3c2b): undefined reference to `leatherman::curl::request::connection_timeout() const'\nCMakeFiles\\leatherman_test.dir/objects.a(response_test.cc.obj):response_test.cc:(.text+0xaa7): undefined reference to `leatherman::curl::response::response()'\nCMakeFiles\\leatherman_test.dir/objects.a(response_test.cc.obj):response_test.cc:(.text+0xcec): undefined reference to `leatherman::curl::response::add_header(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'\nCMakeFiles\\leatherman_test.dir/objects.a(response_test.cc.obj):response_test.cc:(.text+0xd62): undefined reference to `leatherman::curl::response::header(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const'\nCMakeFiles\\leatherman_test.dir/objects.a(response_test.cc.obj):response_test.cc:(.text+0x14a6): undefined reference to `leatherman::curl::response::add_header(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'\nCMakeFiles\\leatherman_test.dir/objects.a(response_test.cc.obj):response_test.cc:(.text+0x151e): undefined reference to `leatherman::curl::response::remove_header(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'\nCMakeFiles\\leatherman_test.dir/objects.a(response_test.cc.obj):response_test.cc:(.text+0x1580): undefined reference to `leatherman::curl::response::header(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const'\nCMakeFiles\\leatherman_test.dir/objects.a(response_test.cc.obj):response_test.cc:(.text+0x1acf): undefined reference to `leatherman::curl::response::add_header(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'\nCMakeFiles\\leatherman_test.dir/objects.a(response_test.cc.obj):response_test.cc:(.text+0x1b7f): undefined reference to `leatherman::curl::response::add_header(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'\nCMakeFiles\\leatherman_test.dir/objects.a(response_test.cc.obj):response_test.cc:(.text+0x1c2f): undefined reference to `leatherman::curl::response::add_header(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'\nCMakeFiles\\leatherman_test.dir/objects.a(response_test.cc.obj):response_test.cc:(.text+0x1cb5): undefined reference to `leatherman::curl::response::each_header(std::function<bool (std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)>) const'\nCMakeFiles\\leatherman_test.dir/objects.a(response_test.cc.obj):response_test.cc:(.text+0x1f4b): undefined reference to `leatherman::curl::response::body(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'\nCMakeFiles\\leatherman_test.dir/objects.a(response_test.cc.obj):response_test.cc:(.text+0x1f69): undefined reference to `leatherman::curl::response::body[abi:cxx11]() const'\nCMakeFiles\\leatherman_test.dir/objects.a(response_test.cc.obj):response_test.cc:(.text+0x2463): undefined reference to `leatherman::curl::response::status_code(int)'\nCMakeFiles\\leatherman_test.dir/objects.a(response_test.cc.obj):response_test.cc:(.text+0x246b): undefined reference to `leatherman::curl::response::status_code() const'\ncollect2.exe: error: ld returned 1 exit status\ntests\\CMakeFiles\\leatherman_test.dir\\build.make:879: recipe for target 'bin/leatherman_test.exe' failed\nmingw32-make[2]: *** [bin/leatherman_test.exe] Error 1\nCMakeFiles\\Makefile2:950: recipe for target", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48137", "fixedVersions": ["LTH 0.3.3"], "id": "48137", "issueType": "Bug", "key": "LTH-63", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Fixed", "resolutionDate": "2015-12-28T16:58:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Dynamic library build fails on Windows due to missing symbols linking curl test", "timeSpent": "PT0S", "updated": "2016-01-14T18:09:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "[~accountid:70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8] Travis deploy failed: https://travis-ci.org/puppetlabs/leatherman/jobs/97334648\n\nAppVeyor succeeded: https://ci.appveyor.com/project/puppetlabs/leatherman/build/0.1.0.625, with artifact at https://github.com/puppetlabs/leatherman/releases/tag/0.3.0.", "created": "2015-12-16T15:55:00.000000"}, {"author": "70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8", "body": "Incorrectly encrypted GH token was the culprit (I think). New PR is up to update the token.", "created": "2015-12-16T16:13:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Worked in 0.3.1.", "created": "2015-12-16T16:25:00.000000"}], "components": [], "created": "2015-12-11T11:25:00.000000", "creator": "70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@b2acbf0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyo22n:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Pulling in leatherman unvendoring work"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Dec/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_7293_*|*_1_*:*_1_*:*_28856_*|*_10007_*:*_2_*:*_443555769_*|*_3_*:*_2_*:*_1173282_*|*_10009_*:*_2_*:*_525151260_*|*_5_*:*_1_*:*_7737950984_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48104", "fixedVersions": ["LTH 0.3.0", "LTH 0.3.1"], "id": "48104", "issueType": "Task", "key": "LTH-62", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8", "resolution": "Fixed", "resolutionDate": "2015-12-22T16:50:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Tagged leatherman builds should be published to GH releases for other projects to consume", "timeSpent": "PT0S", "updated": "2016-03-21T07:16:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Updating Leatherman in FACT-1288 will test this ticket.", "created": "2015-12-15T17:43:00.000000"}], "components": [], "created": "2015-12-01T14:19:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@37425088"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3cqv:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_63860584_*|*_1_*:*_1_*:*_3742166_*|*_10007_*:*_1_*:*_1209658001_*|*_10009_*:*_1_*:*_23117_*|*_5_*:*_1_*:*_0"}], "description": "Most of Leatherman uses static libraries. On Windows, libnowide is an exception that makes packaging Leatherman awkward. Use static linking instead to make Leatherman libraries consistent.\n\nThis may require minor fixes for using libnowide if consuming projects weren't previously synchronizing when they flush boost::nowide::cout or cerr.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48135", "fixedVersions": ["LTH 0.3.0"], "id": "48135", "issueType": "Task", "key": "LTH-61", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Fixed", "resolutionDate": "2015-12-16T09:07:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Use static libnowide by default", "timeSpent": "PT0S", "updated": "2016-01-14T18:09:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623cfdfb8d8b9c0068b93e3c", "attachments": [], "comments": [], "components": [], "created": "2015-11-09T18:57:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@9e41ec3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyt593:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_14073361917_*|*_10007_*:*_1_*:*_59910810_*|*_3_*:*_1_*:*_90721268_*|*_5_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_85783038_*|*_10006_*:*_1_*:*_8809796277"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48133", "fixedVersions": [], "id": "48133", "issueType": "Task", "key": "LTH-60", "labels": ["i18n"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Fixed", "resolutionDate": "2016-08-03T10:03:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Update cpp-project-template as example of translation tools", "timeSpent": "PT0S", "updated": "2016-08-12T13:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-11-09T18:43:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@46494a6c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymzzb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_14074206692_*|*_10007_*:*_1_*:*_482378347_*|*_3_*:*_1_*:*_294977603_*|*_10009_*:*_1_*:*_64584_*|*_5_*:*_1_*:*_7254011290_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_9492405777"}], "description": "The tooling created in LTH-58 will catch many strings that need to be translated, but some things - like modifiers to boost::format, extra arguments to LOG_* methods, and messages written directly to cout/cerr or a file. Review which messages need to be updated and wrap them in the new project-specific domain helper from LTH-58.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48176", "fixedVersions": ["LTH 0.9.1"], "id": "48176", "issueType": "Task", "key": "LTH-59", "labels": ["i18n"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Fixed", "resolutionDate": "2016-08-17T13:57:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Review and mark translatable strings in Leatherman logging", "timeSpent": "PT0S", "updated": "2016-11-09T11:57:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "https://github.com/puppetlabs/leatherman/pull/99 spikes these changes, but still needs some work.", "created": "2015-11-09T18:23:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "This should wait for a Leatherman 0.2.0 release. That will simplify testing it on Solaris and AIX as well without having to update all related projects.", "created": "2015-12-15T14:19:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "This won't be tested until we do a release and use it in puppet-agent. Skipping to resolved.", "created": "2016-02-10T15:20:00.000000"}], "components": [], "created": "2015-11-09T14:16:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7927663b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynpfz:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Support for generating message catalogs using gettext."}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Spare time fixing up work-in-progress."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_2929775_*|*_1_*:*_1_*:*_869748596_*|*_10007_*:*_2_*:*_4568749267_*|*_3_*:*_1_*:*_11942821_*|*_5_*:*_1_*:*_22950143062_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_1721725621_*|*_10006_*:*_1_*:*_864366974"}], "description": "Create tools - usable by Leatherman and consuming projects via CMake macros - to generate and maintain gettext-based message catalogs.\n\nExtend Leatherman.Logging to support using message catalogs. This includes registering lookup paths for messages (CMAKE_INSTALL_PREFIX/share/locale is likely one, and a project-local path for testing); on Windows this may need to read from a registry key to get the install location, or use a relative path from the binary (this is a pattern we've had to use in several locations, it should probably be added to Leatherman as well). Messaging should be configurable to [read from project-specific domains|http://www.boost.org/doc/libs/1_59_0/libs/locale/doc/html/messages_formatting.html#multiple_gettext_domain].\n\nBased on use-cases from the epic, messages should be expected to be found in {{LOG_INFO}}, {{LOG_WARNING}}, {{LOG_ERROR}}, and {{LOG_FATAL}}. Messages may also be found in {{boost::format}} or plain messages, but to support project-specific domains we'll need to introduce a new Leatherman.Logging wrapper for them that handles translation with the configured domain.\n\nIdeally we won't need to set the global domain, but I'm not sure if there's a good reason against doing so.\n\nThis will constitute a break in Leatherman.Logging's behavior, as it switches from using {{boost::format}} to {{boost::locale::format}}, which has different substitution syntax.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48209", "fixedVersions": ["LTH 0.4.0"], "id": "48209", "issueType": "Task", "key": "LTH-58", "labels": ["i18n"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Fixed", "resolutionDate": "2016-11-02T07:29:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Create Leatherman tools for i18n logging", "timeSpent": "PT0S", "updated": "2016-11-02T07:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-11-05T16:25:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@680c4be8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz1b4f:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Pulled in from triage bucket to investigate during extra time."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_688827030_*|*_10007_*:*_1_*:*_4681438_*|*_5_*:*_1_*:*_0"}], "description": "The following members of JsonContainer need review for needlessly copying vectors:\n{code}\nstd::string toString(std::vector<JsonContainerKey> keys) const;\nsize_t size(std::vector<JsonContainerKey> keys) const;\nbool includes(std::vector<JsonContainerKey> keys) const;\nDataType type(std::vector<JsonContainerKey> keys) const;\nDataType type(std::vector<JsonContainerKey> keys, const size_t idx) const;\nT get(std::vector<JsonContainerKey> keys) const;\nT get(std::vector<JsonContainerKey> keys, const size_t idx) const;\nT getWithDefault(std::vector<JsonContainerKey> keys, const T& default_value) const;\nvoid set(std::vector<JsonContainerKey> keys, T value);\njson_value* getValueInJson(std::vector<JsonContainerKey> keys, const bool is_array,const size_t idx) const;\n{code}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48191", "fixedVersions": ["LTH 0.3.0"], "id": "48191", "issueType": "Improvement", "key": "LTH-57", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Fixed", "resolutionDate": "2015-11-13T17:03:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Avoid unnecessary vector copy in JsonContainer", "timeSpent": "PT0S", "updated": "2016-01-14T18:09:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced", "attachments": [], "comments": [], "components": [], "created": "2015-10-29T05:49:00.000000", "creator": "557058:29f801b5-e0f5-4278-a19b-0e5101f2094d", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2dd04031"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2umv:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Needed to fix the storage of non-blocking requests of pxp-agent"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_157378_*|*_10007_*:*_1_*:*_89236291_*|*_3_*:*_1_*:*_381900588_*|*_5_*:*_1_*:*_2416977649_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_148200455"}], "description": "Investigate the effort of creating a version of leatherman::execution::execute() that redirects the stdout and stderr streams to file without creating pipes.\nIf the required refactoring is relevant for this sprint objectives (code complete), use the current pipe-based approach.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48232", "fixedVersions": ["LTH 0.3.0"], "id": "48232", "issueType": "Improvement", "key": "LTH-55", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:29f801b5-e0f5-4278-a19b-0e5101f2094d", "resolution": "Fixed", "resolutionDate": "2015-11-05T08:54:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Add function to execution lib that enables err/out redirection to file", "timeSpent": "PT0S", "updated": "2016-01-14T18:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-10-28T12:16:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@484320d5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz1uen:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Slack time"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_34526_*|*_1_*:*_1_*:*_3464396183_*|*_10007_*:*_1_*:*_691664495_*|*_3_*:*_1_*:*_1333332_*|*_10009_*:*_1_*:*_68254346_*|*_5_*:*_1_*:*_0"}], "description": "We've made several hacks for installing libraries to the correct location, mostly Windows-related. There's a better way.\n\ninstall(TARGETS myExe mySharedLib myStaticLib\n        RUNTIME DESTINATION bin\n        LIBRARY DESTINATION lib\n        ARCHIVE DESTINATION lib)\nset_target_properties(libfacter PROPERTIES PREFIX \"\" SUFFIX \".so\" IMPORT_PREFIX \"\" IMPORT_SUFFIX \".so.a\")\n\nThis differentiates all files on Windows (so import and static libraries don't collide), and installs them to the right locations. Taken from examples at https://cmake.org/cmake/help/v3.0/command/install.html.\n\nOn UNIX executable will go to RUNTIME, shared library will go to LIBRARY and static library will go to ARCHIVE. On Windows, exe and DLL will go to RUNTIME, import library will go to LIBRARY, and static library will go to ARCHIVE.\n\nWe should formalize this in a macro so it's easy to use across projects.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48230", "fixedVersions": ["LTH 0.3.0"], "id": "48230", "issueType": "Improvement", "key": "LTH-54", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Fixed", "resolutionDate": "2015-12-16T09:04:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Formalize library installs in CMake", "timeSpent": "PT0S", "updated": "2016-01-14T18:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "I don't see this being used anywhere yet, but I could be overlooking a project. /cc [~accountid:557058:372bc64a-3ef7-46ac-9a0a-50bcf4819b9c] and [~accountid:63d4062f69c7ae3958d276ed].", "created": "2015-10-22T14:59:00.000000"}, {"author": "557058:e484fb55-2ddc-43a0-968e-11d70ae3153c", "body": "[~accountid:557058:40232c77-9d9b-410c-9f53-90adbf41eeb9] is this ready to be picked up by [~accountid:557058:8ee7ce10-5b29-49dc-ad32-53903d0d886c] for test? ", "created": "2015-10-28T13:58:00.000000"}], "components": [], "created": "2015-10-20T16:44:00.000000", "creator": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@10c348b7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyo98v:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Discovered bug in puppet access "}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Node Management Services"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/Oct/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_151373320_*|*_1_*:*_1_*:*_173795726_*|*_10007_*:*_2_*:*_82271831_*|*_10009_*:*_2_*:*_1019486573_*|*_3_*:*_1_*:*_2645956_*|*_5_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_370974950_*|*_10004_*:*_1_*:*_597219474"}], "description": "When a POST request is redirected, libcurl attempts to seek to the beginning of the upload data, but we do not provide a seek function and this fails.\n\nOnce a seek function is provided, if the redirect is one that converts the request to GET, it ends up hanging. This is because the wrapper in leatherman incorrectly sets an explicit content-type header, rather than supplying the input size as an option to libcurl, so curl reuses that header for the GET request and the server waits for data that never comes.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48175", "fixedVersions": ["LTH 0.3.0"], "id": "48175", "issueType": "Bug", "key": "LTH-53", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:40232c77-9d9b-410c-9f53-90adbf41eeb9", "resolution": "Fixed", "resolutionDate": "2015-11-17T09:47:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "curl breaks when a POST gets a redirect", "timeSpent": "PT0S", "updated": "2016-01-14T18:07:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced", "attachments": [], "comments": [], "components": [], "created": "2015-10-14T16:36:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2c9a4f3b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2vqf:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Likely cause of PCP-144"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_2502_*|*_1_*:*_1_*:*_1882927893_*|*_10007_*:*_1_*:*_89859886_*|*_3_*:*_1_*:*_793631_*|*_5_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_352480443"}], "description": "The MemoryPoolAllocator is buggy on Solaris SPARC, so remove its use from the json_container and use only the CrtAllocator. Experiments have determined that at our level of use this doesn't constitute a significant performance impact.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48173", "fixedVersions": ["LTH 0.3.0"], "id": "48173", "issueType": "Bug", "key": "LTH-52", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Fixed", "resolutionDate": "2015-11-10T13:43:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Remove rapidjson MemoryPoolAllocator from json_container", "timeSpent": "PT0S", "updated": "2016-01-14T18:07:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623cfdfb8d8b9c0068b93e3c", "attachments": [], "comments": [], "components": [], "created": "2015-10-08T15:26:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4780b2b8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz1b5j:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_77261292_*|*_1_*:*_1_*:*_617089_*|*_10007_*:*_1_*:*_2840539653_*|*_5_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_30778"}], "description": "I suppose there's a scenario using timeouts where we could release the invoking end of a named pipe but the other end doesn't release using Leatherman.Execution. Then the invoking thread shuts down and another with the same thread id is started and reconnects to the existing named pipe. That becomes less likely with both process id and thread id (we could throw in a random number as well just to be safe).", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48102", "fixedVersions": ["LTH 0.3.0"], "id": "48102", "issueType": "Bug", "key": "LTH-51", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Fixed", "resolutionDate": "2015-11-11T09:06:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Protect against hypothetical named pipe re-use in Leatherman.Execution", "timeSpent": "PT0S", "updated": "2016-01-14T18:06:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "attachments": [], "comments": [{"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Main documentation: http://www.boost.org/doc/libs/1_58_0/libs/locale/doc/html/messages_formatting.html\n\nSimple example\n{code}\n#!/bin/bash\ncat >i18n.cc <<EOF\n#include <boost/locale.hpp>\n#include <iostream>\n\nusing namespace std", "created": "2015-11-03T12:51:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Should we use a global locale? We've avoided it so far, but if we want to continue using boost::format's functionality, we'll need to either use a global locale or switch to [boost::locale::format|http://www.boost.org/doc/libs/1_56_0/libs/locale/doc/html/localized_text_formatting.html] and have access to the current locale.\n\nI don't have a strong argument against using a global locale, but I'm not sure Leatherman should be the one to enforce it (that requires every application using Leatherman to defer to it).", "created": "2015-11-04T12:54:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Related tooling: https://github.com/puppetlabs/i18n/blob/master/src/leiningen/i18n/Makefile", "created": "2015-11-05T18:36:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Using boost::locale::format will require changing text strings. It probably makes sense to do, but I don't plan to as part of the initial spike.", "created": "2015-11-06T14:39:00.000000"}], "components": [], "created": "2015-09-16T16:06:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@398a8718"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyo91b:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_4065676291_*|*_3_*:*_1_*:*_614061785_*|*_10009_*:*_1_*:*_170562122_*|*_5_*:*_1_*:*_0"}], "description": "We'd like to move all messages produced by our user-facing tools to message catalogs, so they can be translated. For native applications we should determine what tools we can use to do this.\n\nExplore using Boost.Locale's message catalog support for C++ logging. We can use Leatherman as a test platform.\n\nPlan utilities needed for i18n support in C++ projects, and what changes will need to be made to projects. The result should be an epic covering work to support i18n in leatherman/facter/cpp-pcp-client/pxp-agent and other C++ projects.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48208", "fixedVersions": [], "id": "48208", "issueType": "Task", "key": "LTH-50", "labels": ["i18n"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Fixed", "resolutionDate": "2015-11-11T18:25:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Explore i18n with Boost.Locale", "timeSpent": "PT0S", "updated": "2016-09-14T14:14:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "body": "It built in pxp-agent build after the latter's submodule was updated to point at this. No manual test of libraries. Resolving.", "created": "2015-09-23T19:25:00.000000"}], "components": [], "created": "2015-09-14T17:45:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@df4ac61"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyoenb:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Related to CTH-299"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "24/Sep/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_39252811_*|*_1_*:*_1_*:*_89175_*|*_10007_*:*_1_*:*_656018508_*|*_3_*:*_1_*:*_87829985_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_449972"}], "description": "Should support passing a string representing the stdin stream to execution, to be passed to the child process. This API will require knowing the entire input stream ahead-of-time.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48207", "fixedVersions": ["LTH 0.3.0"], "id": "48207", "issueType": "Improvement", "key": "LTH-49", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Fixed", "resolutionDate": "2015-09-23T19:26:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Support passing stdin to a child process in Leatherman.Execution", "timeSpent": "PT0S", "updated": "2016-01-14T18:06:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced", "body": "[~accountid:557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e] This is currently in \"Ready for CI\" with an open PR. Is this in the correct workflow status?", "created": "2015-09-17T11:13:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "The open PR is a plugin failure", "created": "2015-09-17T11:26:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "This was picked up by https://github.com/puppetlabs/facter/pull/1174 and passed facter#master CI, so I think it can be resolved.", "created": "2015-09-17T11:27:00.000000"}], "components": [], "created": "2015-09-14T16:38:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@477e3bd2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyoemv:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Required by CTH-299, which was pulled into the sprint."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Sep/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_77293207_*|*_1_*:*_1_*:*_4034_*|*_10007_*:*_1_*:*_159631974_*|*_3_*:*_1_*:*_4065389_*|*_5_*:*_1_*:*_0"}], "description": "We should be able to get the return code of process execution without needing exceptions. Add a 4th {{int}} parameter to the return tuple for execute that is the exit code.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48206", "fixedVersions": ["LTH 0.3.0"], "id": "48206", "issueType": "Improvement", "key": "LTH-48", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Fixed", "resolutionDate": "2015-09-17T11:35:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Leatherman.Execution should return status code without exceptions", "timeSpent": "PT0S", "updated": "2016-01-14T18:06:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "What functionality did you want this to provide that is not provided by CMake's find_library function?", "created": "2016-10-07T12:39:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "I think this can be closed. Facter uses a pretty complicated helper at https://github.com/puppetlabs/facter/blob/master/cmake/FindDependency.cmake, but I think for most libraries it's not needed.", "created": "2016-10-12T16:38:00.000000"}], "components": [], "created": "2015-09-14T12:58:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2e76d0a5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz26xr:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Oct/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_173920_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_446408505_*|*_10006_*:*_1_*:*_33608190866"}], "description": "Add a FindDependency helper to Leatherman (and update projects to use it).\n\nThe helper should handle common patterns on Windows/Linux:\n- Windows dynamic libs in {{bin}}, static libs in {{lib}}; libraries might use dll/lib or so/a.\n- Linux dynamic and static libs in {{lib}} or {{lib64}} (it looks like FIND_LIBRARY_USE_LIB64_PATHS is already set on the platforms that need it).\n\nUse things like find_library PATH_SUFFIXES, and CMAKE_FIND_LIBRARY_PREFIXES/CMAKE_FIND_LIBRARY_SUFFIXES.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48100", "fixedVersions": [], "id": "48100", "issueType": "New Feature", "key": "LTH-47", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Won't Fix", "resolutionDate": "2016-10-12T16:38:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Add FindDependency helper", "timeSpent": "PT0S", "updated": "2016-10-12T16:38:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-09-08T11:23:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2c6092f4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynghr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}], "description": "The consuming libraries should issue warnings/errors as appropriate for exceptions. Log messages from Leatherman should be restricted to messages that are only shown when verbose or debug output is requested.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48205", "fixedVersions": [], "id": "48205", "issueType": "Bug", "key": "LTH-45", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Avoid issuing warning/error log messages from Leatherman libraries", "timeSpent": "PT0S", "updated": "2016-10-07T12:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "[~accountid:557058:40232c77-9d9b-410c-9f53-90adbf41eeb9] [~accountid:63d4062f69c7ae3958d276ed] [~accountid:557058:11a50a90-5585-4229-994a-72322be4a7d7] does this seem like it's something that would still be useful? My thinking is it isn't really needed in practice.", "created": "2015-12-09T15:08:00.000000"}], "components": [], "created": "2015-08-25T09:54:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3ae9a421"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymsgf:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_4836173730_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_4344696727"}], "description": "Add a skeleton Vanagon project configuration to cpp-project-template that can be used to build a package for it.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48130", "fixedVersions": [], "id": "48130", "issueType": "New Feature", "key": "LTH-44", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Won't Fix", "resolutionDate": "2015-12-09T15:08:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Add basic vanagon configuration to cpp-project-template", "timeSpent": "PT0S", "updated": "2016-10-05T12:43:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:1381f112-1c4e-4869-ba34-30602d945124", "attachments": [], "comments": [], "components": [], "created": "2015-08-20T11:58:00.000000", "creator": "557058:1381f112-1c4e-4869-ba34-30602d945124", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@49679e5c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz1sa7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Node Management Services"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_433874152_*|*_5_*:*_1_*:*_1313253951_*|*_6_*:*_1_*:*_0"}], "description": "Add a `getWithDefault` function to the JsonContainer class, which takes a default argument and returns that argument if the provided key is not found, rather than throwing a data_key_error.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48189", "fixedVersions": ["LTH 0.2.0"], "id": "48189", "issueType": "New Feature", "key": "LTH-43", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:1381f112-1c4e-4869-ba34-30602d945124", "resolution": "Fixed", "resolutionDate": "2015-08-25T12:29:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Add a `getWithDefault` function to JsonContainer", "timeSpent": "PT0S", "updated": "2015-09-09T17:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "We're actually going to hold off on this till we're sure it provides the functionality we want for the HOCON parser.", "created": "2015-08-14T14:28:00.000000"}, {"author": "70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8", "body": "We can re-open this if we find we need that functionality for performance of the HOCON library", "created": "2016-04-21T19:17:00.000000"}], "components": [], "created": "2015-08-14T12:56:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@13c5a1db"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz1n6n:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Discovered the source code while investigating a HOCON parser issue"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/Apr/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_10320_*|*_3_*:*_1_*:*_4631477_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_21704649338"}], "description": "We want to add https://github.com/BartoszMilewski/Okasaki/tree/master/List to Leatherman, currently in use in the HOCON parser.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48216", "fixedVersions": [], "id": "48216", "issueType": "New Feature", "key": "LTH-42", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Won't Fix", "resolutionDate": "2016-04-21T19:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Add public domain immutable list class to Leatherman", "timeSpent": "PT0S", "updated": "2016-04-21T19:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623cfdfb8d8b9c0068b93e3c", "attachments": [], "comments": [{"author": "70121:ef2e2611-7893-499f-94ad-b7b2245beace", "body": "This is going to be repurposed to give the curl wrapper a generic function for setting any protocol.", "created": "2015-08-17T16:48:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Merged, so going to call this done.", "created": "2015-08-18T17:45:00.000000"}], "components": [], "created": "2015-08-14T12:48:00.000000", "creator": "6361cbfc59c794184bcbd33a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@739cce34"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp4fz:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Needed to be done for the APPMGMT-492 ticket"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Application Orchestration"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Aug/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_272043523_*|*_10007_*:*_1_*:*_27889588_*|*_3_*:*_1_*:*_63408916_*|*_5_*:*_1_*:*_1899144572_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_31005"}], "description": "We would like to be able to restrict the curl client from ever being able to make non-HTTPS requests. Curl supports this in the form of {{curl_easy_setopt(curl, CURLOPT_PROTOCOLS, CURLPROTO_HTTPS)}}, but that option isn't exposed by the curl wrapper.\n\nIt seems appropriate to make this a setting on the client itself rather than each request (since it goes hand-in-hand with SSL cert setup, which is also on the client). Given the client is already pretty HTTP/HTTPS-specific, it could be sufficient to just make this just specifically a method to require SSL rather than a generic method to set supported protocols.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48114", "fixedVersions": ["LTH 0.2.0"], "id": "48114", "issueType": "Task", "key": "LTH-41", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "6361cbfc59c794184bcbd33a", "resolution": "Fixed", "resolutionDate": "2015-09-09T17:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Add ability to require HTTPS on curl client", "timeSpent": "PT0S", "updated": "2016-08-01T11:43:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-08-12T12:20:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1edfdcd3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz1l8n:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "RE blocker"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_3072_*|*_10007_*:*_1_*:*_20202340_*|*_3_*:*_1_*:*_150320_*|*_5_*:*_1_*:*_2416638577_*|*_6_*:*_1_*:*_0"}], "description": "Leatherman.Ruby requires Ruby, but only because unit tests expect it to be available. Remove this requirement and let the tests fail unless Ruby's present. That allows cross-compiles to work, and still has the expectation that Ruby is present.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48233", "fixedVersions": ["LTH 0.2.0"], "id": "48233", "issueType": "Bug", "key": "LTH-40", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Fixed", "resolutionDate": "2015-08-12T18:00:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Leatherman.Ruby cross-compile fails because Ruby isn't present", "timeSpent": "PT0S", "updated": "2015-09-09T17:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-08-07T17:28:00.000000", "creator": "557058:372bc64a-3ef7-46ac-9a0a-50bcf4819b9c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@219718df"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz1h9b:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Needed to port facter stable to master."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_30459_*|*_1_*:*_1_*:*_1820576_*|*_10007_*:*_1_*:*_241060668_*|*_5_*:*_1_*:*_2607621975_*|*_6_*:*_1_*:*_0"}], "description": "Need to port the fix to facter stable's execution (replace {{access}} with {{stat}}) to leatherman.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48231", "fixedVersions": ["LTH 0.2.0"], "id": "48231", "issueType": "Task", "key": "LTH-39", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:372bc64a-3ef7-46ac-9a0a-50bcf4819b9c", "resolution": "Fixed", "resolutionDate": "2015-08-10T12:57:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Port Facter stable execution fix to Leatherman", "timeSpent": "PT0S", "updated": "2015-09-09T17:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:faa23e4b-e27a-4400-a735-de76ac155413", "attachments": [], "comments": [], "components": [], "created": "2015-07-30T07:07:00.000000", "creator": "557058:29f801b5-e0f5-4278-a19b-0e5101f2094d", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2d4921a7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz1bgf:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Will ease the implementation of multi-type arrays "}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_78820256_*|*_10007_*:*_1_*:*_264715669_*|*_3_*:*_1_*:*_19702_*|*_5_*:*_1_*:*_3235445817_*|*_6_*:*_1_*:*_0"}], "description": "The JsonContainer::get method currently returns default values (e.g. 0 for int, false for boolean) in case the query is made against an unknown key.\n\nThrowing a data_key_error would be better since 1) it would allow the caller to determine if the entry exists and 2) it would remove arbitrary default values.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48228", "fixedVersions": ["LTH 0.2.0"], "id": "48228", "issueType": "Improvement", "key": "LTH-37", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:29f801b5-e0f5-4278-a19b-0e5101f2094d", "resolution": "Fixed", "resolutionDate": "2015-09-09T17:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "JsonContainer::get should throw a data_key_error for unknown keys", "timeSpent": "PT0S", "updated": "2015-09-09T17:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "attachments": [], "comments": [], "components": [], "created": "2015-07-29T15:46:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5829df2c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyouzr:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_3614266667_*|*_6_*:*_2_*:*_76265_*|*_10013_*:*_1_*:*_361102_*|*_10014_*:*_2_*:*_19469375"}], "description": "Tag Leatherman 0.2.0. This should be done around the time Facter 3.1 goes out.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48174", "fixedVersions": ["LTH 0.2.0"], "id": "48174", "issueType": "Task", "key": "LTH-36", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Done", "resolutionDate": "2015-09-09T17:15:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Leatherman 0.2.0", "timeSpent": "PT0S", "updated": "2016-03-22T15:24:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:faa23e4b-e27a-4400-a735-de76ac155413", "attachments": [], "comments": [], "components": [], "created": "2015-07-27T04:19:00.000000", "creator": "557058:29f801b5-e0f5-4278-a19b-0e5101f2094d", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6a9dc5e0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz18nr:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Improvement for handle multi-type arrays (introduced in LTH-32)"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_257640008_*|*_10007_*:*_1_*:*_264733094_*|*_3_*:*_1_*:*_90461402_*|*_5_*:*_1_*:*_3235424399_*|*_6_*:*_1_*:*_0"}], "description": "Create an overload that will provide the type of an array entry of given index.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48229", "fixedVersions": ["LTH 0.2.0"], "id": "48229", "issueType": "Improvement", "key": "LTH-35", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:29f801b5-e0f5-4278-a19b-0e5101f2094d", "resolution": "Fixed", "resolutionDate": "2015-09-09T17:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "JsonContainer: create type method for vectors of different types", "timeSpent": "PT0S", "updated": "2015-09-09T17:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:29f801b5-e0f5-4278-a19b-0e5101f2094d", "attachments": [], "comments": [], "components": [], "created": "2015-07-27T04:17:00.000000", "creator": "557058:29f801b5-e0f5-4278-a19b-0e5101f2094d", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5ab292bd"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz18nj:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "New feature for handle multi-type arrays (introduced in LTH-32)"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_104129622_*|*_5_*:*_1_*:*_3744243413_*|*_6_*:*_1_*:*_0"}], "description": "Add a function that returns the number of entries for array and object items, 0 for scalar ones.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48215", "fixedVersions": ["LTH 0.2.0"], "id": "48215", "issueType": "New Feature", "key": "LTH-34", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:29f801b5-e0f5-4278-a19b-0e5101f2094d", "resolution": "Fixed", "resolutionDate": "2015-09-09T17:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "JsonContainer: add new size() function", "timeSpent": "PT0S", "updated": "2015-09-09T17:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:29f801b5-e0f5-4278-a19b-0e5101f2094d", "attachments": [], "comments": [], "components": [], "created": "2015-07-27T04:13:00.000000", "creator": "557058:29f801b5-e0f5-4278-a19b-0e5101f2094d", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@790b8458"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz18m7:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Improvement for LTH-32"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_104422609_*|*_3_*:*_1_*:*_153609290_*|*_5_*:*_1_*:*_3590628649_*|*_6_*:*_1_*:*_0"}], "description": "Instead of assuming that the type of the requested value is correct, the get<T>(key) methods should ensure that the type is correct and raise a new data_type_error otherwise. That would prevent assertion errors by the underlying rapidjson.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48172", "fixedVersions": ["LTH 0.2.0"], "id": "48172", "issueType": "Improvement", "key": "LTH-33", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:29f801b5-e0f5-4278-a19b-0e5101f2094d", "resolution": "Fixed", "resolutionDate": "2015-09-09T17:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "JsonContainer: get() should check the value type", "timeSpent": "PT0S", "updated": "2015-09-09T17:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:faa23e4b-e27a-4400-a735-de76ac155413", "attachments": [], "comments": [], "components": [], "created": "2015-07-22T04:26:00.000000", "creator": "557058:faa23e4b-e27a-4400-a735-de76ac155413", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@26c6f912"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz16vj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_101319571_*|*_10007_*:*_1_*:*_264701660_*|*_3_*:*_1_*:*_678365078_*|*_5_*:*_1_*:*_3235455013_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48112", "fixedVersions": ["LTH 0.2.0"], "id": "48112", "issueType": "Improvement", "key": "LTH-32", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:faa23e4b-e27a-4400-a735-de76ac155413", "resolution": "Fixed", "resolutionDate": "2015-09-09T17:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "JsonContainer: Create get method for vectors of different types.", "timeSpent": "PT0S", "updated": "2015-09-09T17:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623cfdfb8d8b9c0068b93e3c", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "[~accountid:70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8] [~accountid:557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e] This bug has now caused a problem for [~accountid:624502c2258562006fa39d9e] when he tried to use leatherman as part of the deployer client. Do we have any idea what the issue is/how to fix it?", "created": "2015-07-28T15:07:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Looks like we should be checking whether LEATHERMAN_LIBS and LEATHERMAN_DEPS are empty. I'll work on a PR.", "created": "2015-07-28T15:23:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "[~accountid:624502c2258562006fa39d9e] can you verify this PR works for you?", "created": "2015-07-28T15:36:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Our only other CI is using this in Facter, so added a Leatherman bump to facter#master at https://github.com/puppetlabs/facter/pull/1087.", "created": "2015-08-03T16:41:00.000000"}], "components": [], "created": "2015-07-21T17:26:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@10ab8785"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz16sn:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Barrier to other team"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "28/Jul/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_23025648_*|*_1_*:*_1_*:*_597850887_*|*_10007_*:*_1_*:*_504809834_*|*_3_*:*_1_*:*_319731_*|*_5_*:*_1_*:*_3053607374_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_139827347"}], "description": "/# Ensure no LEATHERMAN_LIBS are in LEATHERMAN_DEPS, LEATHERMAN_LIBS should be declared in dependency\n/# order above, and we don't want them to come after other dependencies.\nlist(REMOVE_ITEM LEATHERMAN_DEPS ${LEATHERMAN_LIBS})\nlist(APPEND LEATHERMAN_LIBRARIES ${LEATHERMAN_LIBS} ${LEATHERMAN_DEPS})\nlist(REMOVE_DUPLICATES LEATHERMAN_INCLUDE_DIRS)\n\nThis emits various errors if only certain libraries are used. From my initial inspection, trying to use any one of the following by itself (plus any dependencies), currently doesn't compile:\n\nCatch\n-->error: list sub-command REMOVE_ITEM requires two or more arguments.\n-->error: list sub-command REMOVE_DUPLICATES requires list to be present.\n\nNowide\n-->error: list sub-command REMOVE_ITEM requires two or more arguments.\n\nLocale\n-->error: list sub-command REMOVE_ITEM requires list to be present.\n\nRapidjson\n-->error: list sub-command REMOVE_ITEM requires two or more arguments.\n\nJsonContainer\n-->error: list sub-command REMOVE_ITEM requires list to be present.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48151", "fixedVersions": ["LTH 0.2.0"], "id": "48151", "issueType": "Bug", "key": "LTH-31", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2015-08-05T09:03:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "CMake errors if certain Leatherman libraries are included alone", "timeSpent": "PT0S", "updated": "2015-09-09T17:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "body": "This went in as part of the LTH-49 PR. It has built in pxp-agent, no manual test, resolving.", "created": "2015-09-23T19:28:00.000000"}], "components": [], "created": "2015-07-21T13:23:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1f8156eb"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyoenj:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Trivial fix and already working in that code"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "24/Sep/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_5009606762_*|*_10007_*:*_1_*:*_523657250_*|*_3_*:*_1_*:*_18247579_*|*_5_*:*_1_*:*_0"}], "description": "If the Leatherman.Execution is linked as a static library into two different dynamic libraries that are loaded by the same process, the global counter used to create unique named pipe names on Windows will exist in two places in the same process and could try to create the same named pipe twice.\n\nTo fix this, we should use the current thread ID rather than a static counter. The thread will block during execution, so we won't try to open more than one at a time from the same thread.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48187", "fixedVersions": ["LTH 0.3.0"], "id": "48187", "issueType": "Bug", "key": "LTH-30", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Fixed", "resolutionDate": "2015-09-23T19:28:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Leatherman.Execution CreateNamedPipe names can collide", "timeSpent": "PT0S", "updated": "2016-01-14T18:05:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "This is definitely an issue for Facter 3.1.0, as we always set BUILDING_LEATHERMAN and thus get Leatherman namespaces in Leatherman libs.\n\nThe simplest would be to change how logging namespaces are set in Leatherman, but that wouldn't work well for stand-alone builds of Leatherman.", "created": "2015-08-19T10:03:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "There were a couple avenues to resolve this\n# Add a runtime override that a project can set to force logging messages programatically.\n# Move all log messages out of Leatherman. In one sense this is nice, because it doesn't tie someone to a particular logging framework. However, it adds more work to enforce consistent messages around errors produced by Leatherman code, and needs a new method of transporting non-fatal messages (exceptions don't work very well).\n# Drop setting namespaces via defines and require a namespace be specified as part of logging setup.\n\nI've chosen the 1st option, as it's least intrusive to other projects.", "created": "2015-08-31T10:59:00.000000"}, {"author": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "body": "I'm fine with the plan, but since throwing exceptions for all warnings and above is going to be a change in contract, I wonder if we should:\n* tag leatherman at 0.2.0\n* recommend consumers tie to 0.2.0\n* modify leatherman components to throw exceptions\n* tag leatherman at 0.3.0\n* consumers update at their leisure to 0.3.0\n\nTicketing-wise, it seems a clearer reflection of reality to leave this ticket description / summary as-is and Close it as Won't Do (since that's what we've settled on). We can then ticket the items above separately (at least the ones involving code changes - the tagging and tag-sha-referencing may not need tickets per se).\n\nMeanwhile, I don't see a huge downside to living with a handful of leatherman-identified warnings/errors for the upcoming release.\n\nThoughts on all that?", "created": "2015-09-03T21:31:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "That sounds reasonable.\n\nI think there may be some questions over LOG_INFO. That's generally tied to verbose output in Facter, but doesn't leave room for non-warning output that should happen all the time.", "created": "2015-09-04T09:53:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Decided Leatherman libraries should still log using their own name spaces. A related ticket will deal with cleaning up those libraries' use of logging to avoid issuing warnings/errors.", "created": "2015-09-08T11:21:00.000000"}], "components": [], "created": "2015-07-16T17:30:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@34f1ced3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyofzj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "04/Sep/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_3945906394_*|*_10007_*:*_1_*:*_78734063_*|*_3_*:*_1_*:*_8001018_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_610808591"}], "description": "When using Leatherman, we don't want logging messages to refer to the Leatherman name. They should use a namespace specified by the library using Leatherman.\n\nThis implies a runtime way to set a logging namespace for use in Leatherman.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48171", "fixedVersions": [], "id": "48171", "issueType": "Bug", "key": "LTH-29", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Won't Fix", "resolutionDate": "2015-09-08T11:21:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Rework logging namespaces in Leatherman", "timeSpent": "PT0S", "updated": "2015-09-09T12:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Resolving as fixed.", "created": "2015-07-13T15:38:00.000000"}], "components": [], "created": "2015-07-13T15:16:00.000000", "creator": "557058:750f4af2-1c22-46dd-9477-5385f29f68db", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@25426604"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz10hz:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Jul/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1307908_*|*_10009_*:*_1_*:*_18781_*|*_5_*:*_1_*:*_5017132337_*|*_6_*:*_1_*:*_0"}], "description": "{noformat}\n[100%] Building CXX object tests/CMakeFiles/leatherman_test.dir/__/dynamic_library/tests/dynamic_library_tests.cc.o\nLinking CXX executable ../bin/leatherman_test\n/usr/bin/ld: cannot find -ldl\nCC: error: linker command failed with exit code 1 (use -v to see invocation)\n*** Error code 1\n\nStop.\n{noformat}\n\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48110", "fixedVersions": ["LTH 0.2.0"], "id": "48110", "issueType": "Bug", "key": "LTH-28", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:750f4af2-1c22-46dd-9477-5385f29f68db", "resolution": "Fixed", "resolutionDate": "2015-07-13T15:38:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Does not build on FreeBSD", "timeSpent": "PT0S", "updated": "2015-09-14T12:55:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623cfdfb8d8b9c0068b93e3c", "attachments": [], "comments": [{"author": "62450221ad6b7e006aa4e34c", "body": "Estimating this at 3 points. [~accountid:623c0c6f94742a00683e3e63] mentioned this could balloon up to something like 5 if we have to write an actual server to do our testing.", "created": "2015-07-13T17:18:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Adds a test suite for the curl wrapper in leatherman/curl/tests", "created": "2015-07-24T16:05:00.000000"}], "components": [], "created": "2015-07-08T15:14:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@34905ad6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "LTH-10"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyoli7:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Bringing in additional work for extra time"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Jul/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_604204461_*|*_10007_*:*_1_*:*_344834068_*|*_3_*:*_1_*:*_436402997_*|*_5_*:*_1_*:*_3653726009_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_411415400"}], "description": "Leatherman's curl wrapper library needs unit tests. This will probably include adding helpers for libcurl to setup a local server for testing against.", "epicLinkSummary": "Migrate shared C++ code to Leatherman", "estimate": "PT0S", "externalId": "48098", "fixedVersions": ["LTH 0.2.0"], "id": "48098", "issueType": "Improvement", "key": "LTH-27", "labels": [], "originalEstimate": "PT0S", "parent": "48103", "parentSummary": "Migrate shared C++ code to Leatherman", "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2015-07-29T10:21:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Add tests to Leatherman's curl wrapper", "timeSpent": "PT0S", "updated": "2015-09-09T17:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8", "body": "Closing this one as the duplicate since the new one is already in a sprint", "created": "2015-12-15T11:27:00.000000"}], "components": [], "created": "2015-07-08T09:08:00.000000", "creator": "70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@76fec3f4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyoo1z:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_13835879980_*|*_6_*:*_1_*:*_0"}], "description": "To effectively unvendor leatherman from Facter and our other C++ projects, we will need to have leatherman artifacts we can use in travis and appveyor.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48108", "fixedVersions": [], "id": "48108", "issueType": "Bug", "key": "LTH-26", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8", "resolution": "Duplicate", "resolutionDate": "2015-12-15T11:26:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Export build artifacts from Appveyor and Travis", "timeSpent": "PT0S", "updated": "2015-12-15T11:27:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "6361cbfc59c794184bcbd33a", "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "The features requested were added with https://github.com/puppetlabs/leatherman/pull/41 which has now been merged.", "created": "2015-07-10T16:37:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "[~accountid:63d4062f69c7ae3958d276ed] can you verify this is complete?", "created": "2015-07-13T15:49:00.000000"}, {"author": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "body": "Ping [~accountid:63d4062f69c7ae3958d276ed].", "created": "2015-07-20T17:31:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "[~accountid:63d4062f69c7ae3958d276ed] verbally agreed this is probably complete, but won't get time to actually use it for a bit. Closing, and he can re-open if he runs into issues.", "created": "2015-07-23T10:53:00.000000"}], "components": [], "created": "2015-07-06T16:42:00.000000", "creator": "6361cbfc59c794184bcbd33a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@744da836"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "LTH-10"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyolh3:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Nick Lewis needed some functionality beyond what was used in facter"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Jul/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_71427946_*|*_10007_*:*_1_*:*_530204315_*|*_10009_*:*_1_*:*_846252924_*|*_5_*:*_1_*:*_4170213977_*|*_6_*:*_1_*:*_0"}], "description": "curl will automatically use SSL if given an https:// url, but there's currently no way to specify a CA cert (or a client cert+key), which means HTTPS connections fail in practice. Some way to set the CA cert path, and ideally also the client cert+key, is necessary in order to talk to most of our services.", "epicLinkSummary": "Migrate shared C++ code to Leatherman", "estimate": "PT0S", "externalId": "48204", "fixedVersions": ["LTH 0.2.0"], "id": "48204", "issueType": "New Feature", "key": "LTH-25", "labels": [], "originalEstimate": "PT0S", "parent": "48103", "parentSummary": "Migrate shared C++ code to Leatherman", "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "6361cbfc59c794184bcbd33a", "resolution": "Fixed", "resolutionDate": "2015-07-23T10:53:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Support setting up SSL certs in curl client", "timeSpent": "PT0S", "updated": "2015-09-09T17:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Leatherman has had several releases, and is now built into packaging from released versions.", "created": "2016-03-16T16:54:00.000000"}], "components": [], "created": "2015-07-04T22:21:00.000000", "creator": "557058:bff845c1-08a9-44e6-9a36-115b25b2e2de", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@30855e53"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0u6f:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Mar/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_22098738177_*|*_6_*:*_1_*:*_0"}], "description": "From reading the cmake file for facter 3.0.1 it seems like leatherman is a dependency.  In attempting to package leatherman (so I can package the new facter) I found no release to base my packaging on.  I imagine other distros would like a release as well.\n\nAlso, I'll make this a separate issue if needed, but it seems that leatherman is sourced as a submodule and only (see https://github.com/puppetlabs/facter/blob/3.0.1/CMakeLists.txt#L31 ).  If I download the release from github then facter is not buildable because leatherman is not bundled (as it is with downloads.puppet.com).\n\nIf leatherman is going to be used for more then just building facter I would try and allow it to not be a bundled install.  Distro's tend to not like packaging those as they can cause conflicts later on.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48128", "fixedVersions": ["LTH 0.2.0"], "id": "48128", "issueType": "Task", "key": "LTH-46", "labels": ["github", "package"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:bff845c1-08a9-44e6-9a36-115b25b2e2de", "resolution": "Done", "resolutionDate": "2016-03-16T16:54:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Release leatherman-0.1.0 or 0.2.0", "timeSpent": "PT0S", "updated": "2016-03-16T16:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-06-24T10:45:00.000000", "creator": "62450221ad6b7e006aa4e34c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@397b93cc"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0np3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}], "description": "We should setup Doxygen in Leatherman for API documentation generation goodness.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48168", "fixedVersions": [], "id": "48168", "issueType": "New Feature", "key": "LTH-24", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "62450221ad6b7e006aa4e34c", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Setup Doxygen in Leatherman", "timeSpent": "PT0S", "updated": "2016-10-07T12:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-06-18T14:16:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@36cab776"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0klz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48166", "fixedVersions": [], "id": "48166", "issueType": "Task", "key": "LTH-23", "labels": ["maintenance"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Add unit tests for Windows utilities", "timeSpent": "PT0S", "updated": "2016-10-07T12:46:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-06-16T18:29:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@46372932"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0hq7:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Leatherman logging needs update for Facter"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_21663093_*|*_1_*:*_1_*:*_4160_*|*_10007_*:*_1_*:*_81614772_*|*_3_*:*_1_*:*_147041917_*|*_5_*:*_1_*:*_7089351756_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48150", "fixedVersions": ["LTH 0.2.0"], "id": "48150", "issueType": "Improvement", "key": "LTH-22", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Fixed", "resolutionDate": "2015-06-19T16:01:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Add Windows colored output in logging", "timeSpent": "PT0S", "updated": "2015-09-09T17:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:b6301e26-c165-42d0-ab3a-59124339555e", "body": "Tagged 80a9967158a74b4ee447f93897b1f3502f0e3bdb as 0.1.0", "created": "2015-06-16T18:03:00.000000"}], "components": [], "created": "2015-06-16T18:01:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4e67d4fd"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0ief:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Tag leatherman for Facter 3 release"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_119114_*|*_6_*:*_1_*:*_0"}], "description": "Tag Leatherman 0.1.0.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48106", "fixedVersions": ["LTH 0.1.0"], "id": "48106", "issueType": "Task", "key": "LTH-21", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Fixed", "resolutionDate": "2015-06-16T18:03:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Leatherman 0.1.0", "timeSpent": "PT0S", "updated": "2016-03-22T15:24:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:faa23e4b-e27a-4400-a735-de76ac155413", "body": "We're consolidating these two classes into one since they are extremely similar. We should finish the work in Pegasus first before we try and port it to Leatherman. Blocking this ticket on that work for now. ", "created": "2015-06-11T11:10:00.000000"}, {"author": "557058:faa23e4b-e27a-4400-a735-de76ac155413", "body": "Resolved PEG-232. Have at it.", "created": "2015-06-12T09:48:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "So now we have the ExecutorQueue in Pegasus and the ThreadContainer in cthun-agent. Are these two at all compatible? If so, is there one we would prefer to be using in both places? If not, are we still interested in extracting one or both to Leatherman? [~accountid:557058:faa23e4b-e27a-4400-a735-de76ac155413]", "created": "2015-07-14T15:35:00.000000"}, {"author": "557058:faa23e4b-e27a-4400-a735-de76ac155413", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] They are not interchangeable. I would suggest we wait before we port it to leatherman.", "created": "2015-07-15T03:11:00.000000"}, {"author": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "body": "Wrt \"suggest we wait\" ... is there something we're waiting for? Or should we just close this ticket?\n\nI'm fine either way, just not clear on what the consensus was. Thanks!", "created": "2015-07-21T14:18:00.000000"}, {"author": "557058:faa23e4b-e27a-4400-a735-de76ac155413", "body": "Sorry, I should have been more clear. \n\nI meant that should wait to port this to leatherman until one of our other projects need it. Going to close this. If the situation arrises where something else needs it, we can reopen.", "created": "2015-07-22T04:20:00.000000"}], "components": [], "created": "2015-06-10T12:51:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2f58318d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "LTH-10"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0fdb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "8.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_3598147389_*|*_6_*:*_1_*:*_0"}], "description": "Pegasus: channel.hpp and thread_pool.hpp\n\ncthun-agent: thread_pool.hpp\n\nConsider making a general concurrency library containing this functionality.", "epicLinkSummary": "Migrate shared C++ code to Leatherman", "estimate": "PT0S", "externalId": "48126", "fixedVersions": [], "id": "48126", "issueType": "Task", "key": "LTH-20", "labels": [], "originalEstimate": "PT0S", "parent": "48103", "parentSummary": "Migrate shared C++ code to Leatherman", "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Won't Fix", "resolutionDate": "2015-07-22T04:21:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Extract thread pool utilities from cthun-agent and Pegasus to Leatherman", "timeSpent": "PT0S", "updated": "2015-07-22T04:21:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Closing as a duplicate of LOC-66.", "created": "2016-01-14T18:18:00.000000"}], "components": [], "created": "2015-06-10T12:47:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Scrum Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Client Platform"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@42d251e4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-5"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "i18n Support"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "To Do"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "dark_teal"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0fcn:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Jan/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_18858643832_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48170", "fixedVersions": [], "id": "48170", "issueType": "Epic", "key": "LTH-19", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Duplicate", "resolutionDate": "2016-01-14T18:18:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Create a set of utilities for getting strings from a message catalog based on a locale, apply to all projects", "timeSpent": "PT0S", "updated": "2016-05-24T16:26:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:bc51acb1-04f0-4d4a-bab9-86e3e7c0520e", "body": "[~accountid:557058:29f801b5-e0f5-4278-a19b-0e5101f2094d] [~accountid:557058:faa23e4b-e27a-4400-a735-de76ac155413] know this code better than me, so redirecting ping.", "created": "2015-06-11T01:29:00.000000"}, {"author": "557058:29f801b5-e0f5-4278-a19b-0e5101f2094d", "body": "h4. cthun-agent\n* https://github.com/puppetlabs/cthun-agent/blob/master/lib/src/string_utils.cc\n\nh4. cthun-client\n* https://github.com/puppetlabs/cthun-client/blob/master/lib/inc/cthun-client/connector/uuid.hpp\n* https://github.com/puppetlabs/cthun-client/blob/master/lib/src/connector/connector.cc#L31-L48\nhttps://github.com/puppetlabs/cthun-client/blob/master/lib/src/protocol/message.cc#L17-L28\n\nh4. pegasus\n* https://github.com/puppetlabs/pegasus/blob/master/lib/src/string_utils.cc\n* https://github.com/puppetlabs/pegasus/blob/master/lib/inc/pegasus/uuid.hpp\n* https://github.com/puppetlabs/pegasus/blob/master/lib/src/actions/ping.cc#L35-L53\n\n", "created": "2015-06-11T02:36:00.000000"}, {"author": "557058:29f801b5-e0f5-4278-a19b-0e5101f2094d", "body": "Perhaps we can have a separate *time_utils* library in leatherman for the datetime funcitons I've listed above.\nAnd include the Timer class as well: https://github.com/puppetlabs/pegasus/blob/master/lib/inc/pegasus/timer.hpp", "created": "2015-06-11T02:44:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Code moved, tickets on other projects will verify it's sufficient.", "created": "2015-07-07T18:08:00.000000"}], "components": [], "created": "2015-06-10T12:41:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@b157d82"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "LTH-10"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0qb3:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Bandwidth"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1399025637_*|*_10007_*:*_1_*:*_20882487_*|*_3_*:*_1_*:*_932506570_*|*_5_*:*_1_*:*_5526528240_*|*_6_*:*_1_*:*_0"}], "description": "In pegasus, these seem to live all in pegasus/lib/inc/pegasus/string_utils.hpp.\n\nWhere are these in cthun-client and cthun-agent? [~accountid:557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920] [~accountid:557058:bc51acb1-04f0-4d4a-bab9-86e3e7c0520e]", "epicLinkSummary": "Migrate shared C++ code to Leatherman", "estimate": "PT0S", "externalId": "48249", "fixedVersions": ["LTH 0.2.0"], "id": "48249", "issueType": "Task", "key": "LTH-18", "labels": [], "originalEstimate": "PT0S", "parent": "48103", "parentSummary": "Migrate shared C++ code to Leatherman", "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2015-09-09T17:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Extract string and time utility functions from pegasus and cthun to Leatherman", "timeSpent": "PT0S", "updated": "2015-09-09T17:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "attachments": [], "comments": [{"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "No integration or functional changes, moving to Resolved.", "created": "2015-06-26T16:03:00.000000"}], "components": [], "created": "2015-06-10T12:38:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@d2f7bc6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "LTH-10"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyoq7b:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "New intern work"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "26/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_16357826_*|*_1_*:*_1_*:*_703573619_*|*_3_*:*_1_*:*_674789448_*|*_5_*:*_1_*:*_6484437030_*|*_6_*:*_1_*:*_0"}], "description": "facter/lib/inc/facter/util/file.hpp\n*/directory.hpp\n\nThere are some other utility functions in cthun_agent and Pegasus. Consider extracting these too.", "epicLinkSummary": "Migrate shared C++ code to Leatherman", "estimate": "PT0S", "externalId": "48214", "fixedVersions": ["LTH 0.2.0"], "id": "48214", "issueType": "Task", "key": "LTH-17", "labels": [], "originalEstimate": "PT0S", "parent": "48103", "parentSummary": "Migrate shared C++ code to Leatherman", "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2015-09-09T17:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Extract facter's file and directory utility classes to Leatherman", "timeSpent": "PT0S", "updated": "2015-09-09T17:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "https://github.com/puppetlabs/leatherman/pull/37", "created": "2015-07-07T12:24:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Looks like this should have a down-stream Facter ticket.", "created": "2015-07-08T16:55:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Move finished, should be verified in FACT-1113.", "created": "2015-07-08T17:05:00.000000"}], "components": [], "created": "2015-06-10T12:34:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6e3d1c12"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "LTH-10"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyoo8v:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Jul/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1206433280_*|*_10007_*:*_1_*:*_102869855_*|*_3_*:*_1_*:*_1125537034_*|*_10009_*:*_1_*:*_631365_*|*_5_*:*_1_*:*_5443889243_*|*_6_*:*_1_*:*_0"}], "description": "facter/lib/inc/internal/util/dynamic_library.hpp", "epicLinkSummary": "Migrate shared C++ code to Leatherman", "estimate": "PT0S", "externalId": "48203", "fixedVersions": ["LTH 0.2.0"], "id": "48203", "issueType": "Task", "key": "LTH-16", "labels": [], "originalEstimate": "PT0S", "parent": "48103", "parentSummary": "Migrate shared C++ code to Leatherman", "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2015-09-09T17:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Extract facter's dlopen/LoadLibrary wrapper to Leatherman", "timeSpent": "PT0S", "updated": "2015-09-09T17:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "So finding the ruby libraries in order to create the api relies on facter/execution (which() and execute()). How do we want to handle this? The execution class is currently also on the list for extraction to Leatherman, though there is an open comment on that ticket (LTH-13) which seems to call its status into question a bit. [~accountid:557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e] [~accountid:557058:372bc64a-3ef7-46ac-9a0a-50bcf4819b9c]\n\nIs there an alternative to use in the meantime? If not, do we need to block this ticket on getting the execution one done?", "created": "2015-07-09T12:03:00.000000"}, {"author": "557058:372bc64a-3ef7-46ac-9a0a-50bcf4819b9c", "body": "I'd say we block this one on porting execution.", "created": "2015-07-09T12:08:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Yep, agreed.", "created": "2015-07-09T12:08:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "The module class seems really Facter-specific. What aspects of it were we thinking of extracting?\n\nhttps://github.com/puppetlabs/facter/blob/master/lib/inc/internal/ruby/module.hpp", "created": "2015-07-15T11:01:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Probably nothing in module.hpp, I think api.hpp was most of what we want to port.\n\nWhat we'd like to have is the code to load the Ruby library, initialize the Ruby VM, expose a Ruby API, and register commands. Code using it will then invoke Ruby through those APIs or expose functions to Ruby.", "created": "2015-07-15T14:51:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Note this included a change to how the Ruby location can be set. We want to allow re-usable Leatherman libraries to be built, so setting the Ruby location at compile-time doesn't work very well. Instead it's now a static variable that should be set before any use of the Ruby api class, which can be compile-time enabled in Facter.", "created": "2015-07-24T09:50:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Moved to Ready for Test if anyone wants to review the unit testing, otherwise can probably Resolve this ticket.", "created": "2015-07-24T09:51:00.000000"}, {"author": "557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715", "body": "LGTM.  i didn't review for full coverage, but unit tests look reasonable", "created": "2015-07-28T11:42:00.000000"}], "components": [], "created": "2015-06-10T12:31:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7c5a0322"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "LTH-10"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyolhb:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Pulled in off backlog"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Jul/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2432025131_*|*_10007_*:*_1_*:*_751512601_*|*_3_*:*_2_*:*_98181508_*|*_5_*:*_1_*:*_3735270686_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_352307903_*|*_10006_*:*_1_*:*_510284531"}], "description": "Classes live in facter/lib/inc/internal/ruby. \nClasses to extract:\n-api.hpp\n-module.hpp\n\nThese might be involved with other parts of facter and need special extraction. Tests may not extract cleanly either (might rely on other facter-specific pieces).", "epicLinkSummary": "Migrate shared C++ code to Leatherman", "estimate": "PT0S", "externalId": "48124", "fixedVersions": ["LTH 0.2.0"], "id": "48124", "issueType": "Task", "key": "LTH-15", "labels": [], "originalEstimate": "PT0S", "parent": "48103", "parentSummary": "Migrate shared C++ code to Leatherman", "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2015-07-28T11:42:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Extract facter's Ruby VM hosting to Leatherman", "timeSpent": "PT0S", "updated": "2015-09-09T17:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Merged, CI and review will occur when integrated with Facter and other projects.", "created": "2015-07-10T16:22:00.000000"}], "components": [], "created": "2015-06-10T12:27:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@195a1a96"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "LTH-10"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyoo93:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Bandwidth"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Jul/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1827736427_*|*_10007_*:*_1_*:*_273703648_*|*_3_*:*_1_*:*_504656527_*|*_5_*:*_1_*:*_5273680313_*|*_6_*:*_1_*:*_0"}], "description": "facter currently has a curl wrapper at facter/lib/inc/facter/http. Move this to Leatherman.\n\ndeployer-client currently uses curl directly in a fairly simple way. If facter's wrapper would simplify code, we could try to use it here.", "epicLinkSummary": "Migrate shared C++ code to Leatherman", "estimate": "PT0S", "externalId": "48169", "fixedVersions": ["LTH 0.2.0"], "id": "48169", "issueType": "Task", "key": "LTH-14", "labels": [], "originalEstimate": "PT0S", "parent": "48103", "parentSummary": "Migrate shared C++ code to Leatherman", "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2015-09-09T17:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Extract facter's curl wrapper to Leatherman, apply to deploy-client?", "timeSpent": "PT0S", "updated": "2015-09-09T17:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "[~accountid:557058:372bc64a-3ef7-46ac-9a0a-50bcf4819b9c] in Facter 3, the execution module is public (not internal). How does that impact moving it to Leatherman?", "created": "2015-06-26T15:02:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "We'll probably need to keep an thin execution wrapper in Facter 3 that just calls the Leatherman equivalents to maintain API compatibility. Similar to how we handle facter::logging.", "created": "2015-07-09T12:09:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Will be reviewed in Facter.", "created": "2015-07-14T17:10:00.000000"}, {"author": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "body": "[~accountid:557058:29f801b5-e0f5-4278-a19b-0e5101f2094d] Is this something we want to incorporate into cthun-agent to replace the use of boost::process? If so, should I look into that, or do you guys want to handle it yourselves?", "created": "2015-07-14T17:43:00.000000"}, {"author": "557058:29f801b5-e0f5-4278-a19b-0e5101f2094d", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] I'll make a ticket for that", "created": "2015-07-15T08:30:00.000000"}, {"author": "557058:29f801b5-e0f5-4278-a19b-0e5101f2094d", "body": "[~accountid:557058:c241032a-c552-4408-9a96-dcd5a643ff69] [new CTH-271 ticket|https://puppet.atlassian.net/browse/CTH-271] mentioned above", "created": "2015-07-16T09:40:00.000000"}], "components": [], "created": "2015-06-10T12:24:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@565b80ad"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "LTH-10"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0fav:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Blocks LTH-15, needs to be done first"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "26/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2505096121_*|*_10007_*:*_1_*:*_364073358_*|*_3_*:*_1_*:*_85583276_*|*_5_*:*_1_*:*_4925211127_*|*_6_*:*_1_*:*_0"}], "description": "In facter, this has its own class: facter/lib/inc/facter/execution.hpp. The tuple returned by execution::execute contains stdout and stderr. execution::each_line can be passed two different callbacks, one for stdout and one for stderr.\n\nIn cthun-agent, the function runCommand() in external_module.cpp is a place to start. This uses Boost.Process.\n\nDo we want to switch to only using Boost.Process, or extend facter's implementation to include writing to stdin?\n\nThe code in cthun-agent seems to be pretty bare-bones, might be better to extend what's in factor and drop Boost.Process. \nPeter Huene: \"The problem is if the child process doesn't read from stdin, writing to it could block and doing an overlapped write is fairly complicated.\"\n\n{quote}\n[12:08 AM] Richard Clamp: without looking at facter's code I'd guess we're better off extracting from there, and then in cthun land drop the use of boost::process, as that was an abandoned sub-project even back then\n{quote}\n\nPotential block in cthun's implementation ([~accountid:557058:372bc64a-3ef7-46ac-9a0a-50bcf4819b9c] [~accountid:557058:29f801b5-e0f5-4278-a19b-0e5101f2094d])\n\n", "epicLinkSummary": "Migrate shared C++ code to Leatherman", "estimate": "PT0S", "externalId": "48247", "fixedVersions": ["LTH 0.2.0"], "id": "48247", "issueType": "Task", "key": "LTH-13", "labels": [], "originalEstimate": "PT0S", "parent": "48103", "parentSummary": "Migrate shared C++ code to Leatherman", "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2015-09-09T17:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Find common ground between facter and cthun-agent execution methods, extract to Leatherman", "timeSpent": "PT0S", "updated": "2015-09-09T17:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623cfdfb8d8b9c0068b93e3c", "attachments": [], "comments": [{"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "No tests associated with utils, so moving to done. LTH-23 filed for adding stand-alone tests.", "created": "2015-06-18T15:03:00.000000"}], "components": [], "created": "2015-06-10T12:03:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7f580fa8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "LTH-10"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0f8v:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Started after sprint was started"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_2253_*|*_1_*:*_1_*:*_426784191_*|*_3_*:*_1_*:*_275184768_*|*_5_*:*_1_*:*_7179228034_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_35809"}], "description": "Classes live in facter/lib/inc/internal/util/windows", "epicLinkSummary": "Migrate shared C++ code to Leatherman", "estimate": "PT0S", "externalId": "48165", "fixedVersions": ["LTH 0.2.0"], "id": "48165", "issueType": "Task", "key": "LTH-12", "labels": [], "originalEstimate": "PT0S", "parent": "48103", "parentSummary": "Migrate shared C++ code to Leatherman", "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2015-09-09T17:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Extract facter Windows helpers and wrappers to Leatherman", "timeSpent": "PT0S", "updated": "2015-09-09T17:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623cfdfb8d8b9c0068b93e3c", "attachments": [], "comments": [{"author": "557058:faa23e4b-e27a-4400-a735-de76ac155413", "body": "Could we possibly rename DataContainer to something better? The name started off as something that wrapped the Data field of another structure and its not a great name for general purpose use. JsonContainer maybe?", "created": "2015-06-12T09:55:00.000000"}, {"author": "557058:29f801b5-e0f5-4278-a19b-0e5101f2094d", "body": "+1 for renaming", "created": "2015-06-12T12:56:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Currently we're looking at putting all the PRs under this ticket. It'll make the ticket status a little funny though. Moving to merging, but it'll go back to in-progress after the Leatherman PR is merged.", "created": "2015-06-12T15:14:00.000000"}, {"author": "557058:29f801b5-e0f5-4278-a19b-0e5101f2094d", "body": "Former user thanks for this big refactor! I'm afraid it's not a fun way to start ", "created": "2015-06-13T07:43:00.000000"}, {"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "No CI besides Leatherman's Travis and AppVeyor runs. Downstream projects were updated and manually tested. Also no functional changes, so moving this to done.", "created": "2015-06-16T11:13:00.000000"}], "components": [], "created": "2015-06-10T11:47:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@59fce3c2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "LTH-10"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0f7r:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Created after the sprint started"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_7594697_*|*_10007_*:*_1_*:*_329001194_*|*_3_*:*_2_*:*_179727198_*|*_10009_*:*_1_*:*_3856_*|*_5_*:*_1_*:*_7365698243_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_192929"}], "description": "DataContainer is currently defined in cthun-client and deployer-client. Move it to Leatherman, renamed to JsonContainer, and update the original projects to use the new Leatherman::JsonContainer. In the case of Facter, we should also update to use rapidjson out of Leatherman on the Facter#master branch.", "epicLinkSummary": "Migrate shared C++ code to Leatherman", "estimate": "PT0S", "externalId": "48227", "fixedVersions": ["LTH 0.2.0"], "id": "48227", "issueType": "Task", "key": "LTH-11", "labels": [], "originalEstimate": "PT0S", "parent": "48103", "parentSummary": "Migrate shared C++ code to Leatherman", "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Fixed", "resolutionDate": "2015-06-16T11:15:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Move DataContainer class to Leatherman", "timeSpent": "PT0S", "updated": "2015-09-09T17:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "This has one last ticket that should be finished this sprint. Let's look at pulling in a Leatherman 0.2.0 release and complete this epic.", "created": "2015-07-29T15:31:00.000000"}, {"author": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "body": "All the planned work for this effort is complete. Woot!", "created": "2015-08-31T22:55:00.000000"}], "components": [], "created": "2015-06-10T11:38:00.000000", "creator": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "customFieldValues": [{"fieldName": "Scrum Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Client Platform"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@667cceb9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-3"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Leatherman All The Things"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "yellow"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0f6n:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "0.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "29/Jul/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_7125382876_*|*_6_*:*_2_*:*_757264544"}], "description": "Spreadsheet of C++ projects and list of ideas for code to extract: https://docs.google.com/a/puppetlabs.com/spreadsheets/d/1aU8mJVmQ8c1cgpym_KEBscmqnCPLaFUKbN4Xe-b1T6U/edit?usp=sharing\n\nThe plan is to extract these code pieces to Leatherman. Some can be simply copied directly, but for those with varying implementations, some further work to make more general versions may be required.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48103", "fixedVersions": ["LTH 0.2.0"], "id": "48103", "issueType": "Epic", "key": "LTH-10", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:c241032a-c552-4408-9a96-dcd5a643ff69", "resolution": "Done", "resolutionDate": "2015-09-09T17:16:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Migrate shared C++ code to Leatherman", "timeSpent": "PT0S", "updated": "2016-04-21T19:10:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "The linked epic appears to cover all known work that was logged in the spreadsheet. This looks good.", "created": "2015-06-10T12:54:00.000000"}], "components": [], "created": "2015-06-10T10:00:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6057b49a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypbc7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_5601534_*|*_3_*:*_1_*:*_4803570_*|*_10009_*:*_1_*:*_55052_*|*_5_*:*_1_*:*_7878177158_*|*_6_*:*_1_*:*_0"}], "description": "Create tickets and an epic for migrating code to Leatherman.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48163", "fixedVersions": ["LTH 0.2.0"], "id": "48163", "issueType": "Task", "key": "LTH-9", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Fixed", "resolutionDate": "2015-09-09T17:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Populate the Leatherman epic", "timeSpent": "PT0S", "updated": "2015-09-09T17:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-04-28T17:07:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@12fcd2b3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Risk Probability", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Low"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyovjz:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Required to reconcile LTH-1 and LTH-6."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_200361_*|*_10007_*:*_1_*:*_1266508337_*|*_5_*:*_1_*:*_10311463615_*|*_6_*:*_1_*:*_0"}], "description": "Facter doesn't specify per-file logging namespaces, which makes line numbers somewhat nonsensical. Make logging line numbers configurable when {{logging.hpp}} is included, so it can be configured on a per-project basis.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48162", "fixedVersions": ["LTH 0.2.0"], "id": "48162", "issueType": "New Feature", "key": "LTH-8", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Fixed", "resolutionDate": "2015-05-13T08:59:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Make logging line numbers configurable", "timeSpent": "PT0S", "updated": "2015-09-09T17:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "Didn't update the Boost library order in logging to account for the reverse, so builds fail with static boost on Linux.", "created": "2015-06-19T13:31:00.000000"}], "components": [], "created": "2015-04-21T14:58:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@505f1108"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz014n:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Slack time"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_11649622_*|*_1_*:*_1_*:*_4758111019_*|*_10007_*:*_2_*:*_329824615_*|*_3_*:*_1_*:*_1781729_*|*_5_*:*_1_*:*_7089376471_*|*_6_*:*_1_*:*_0"}], "description": "CMake's FindBoost - when it finds both optimized and debug libraries - will place them all in the Boost_LIBRARIES variable, prefixed with optimized and debug to tell target_link_libraries how to select between versions.\n\nLeatherman reverses that list, messing up the labelling for Boost libraries so that we accidentally link the wrong versions. This has a significant impact on binary size when linking the libraries (and probably on performance).\n\nMy best suggestion for fixing this is to track 1st-party and 3rd-party libraries in Leatherman, then create the full LEATHERMAN_LIBRARIES list by putting 1st-party libraries then 3rd-party libraries. This should avoid the need for reversing the list.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48148", "fixedVersions": ["LTH 0.2.0"], "id": "48148", "issueType": "Bug", "key": "LTH-7", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Fixed", "resolutionDate": "2015-06-19T16:01:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Leatherman breaks FindBoost's optimized/debug labeling of libraries", "timeSpent": "PT0S", "updated": "2015-09-09T17:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "Resolved without FR per risk analysis.", "created": "2015-05-05T16:01:00.000000"}], "components": [], "created": "2015-04-17T05:48:00.000000", "creator": "557058:29f801b5-e0f5-4278-a19b-0e5101f2094d", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@71dd8f97"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyovjj:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Bandwidth."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "05/May/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_11203_*|*_10007_*:*_1_*:*_990580685_*|*_5_*:*_1_*:*_10977334023_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_601399684"}], "description": "Add the line number of the LOG_ call.\n\nh3. QA\n----\nrisk: low (no qa validation)", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48123", "fixedVersions": ["LTH 0.2.0"], "id": "48123", "issueType": "Improvement", "key": "LTH-6", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:29f801b5-e0f5-4278-a19b-0e5101f2094d", "resolution": "Fixed", "resolutionDate": "2015-05-05T16:01:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Add source line number to logging format", "timeSpent": "PT0S", "updated": "2015-09-09T17:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "CI waiting on FACT-951", "created": "2015-04-10T14:49:00.000000"}, {"author": "557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715", "body": "builds from cfacter-build...  facter SHA: ed622e9 on sol11", "created": "2015-04-13T11:05:00.000000"}], "components": [], "created": "2015-04-10T12:49:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6bcf1b79"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyzcr3:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Impedes Solaris builds"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Apr/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_8776822_*|*_1_*:*_1_*:*_55454_*|*_10007_*:*_1_*:*_6867034_*|*_3_*:*_1_*:*_258558_*|*_5_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_237052828"}], "description": "Boost.Log has an implicit dependency on Boost.Chrono. When we statically link, this gets resolved at compile time and isn't an issue. On most platforms when we dynamically link, the Boost library location is in LD_LIBRARY_PATH, and again Boost.Chrono is found.\n\nOn Solaris neither of those things are true, which exposed a runtime dependency on libboost_chrono.so. Resolve this by explicitly depending on the Chrono library in Leatherman's Logging library.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48226", "fixedVersions": ["LTH 0.1.0"], "id": "48226", "issueType": "Bug", "key": "LTH-5", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Fixed", "resolutionDate": "2015-04-13T11:05:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Boost.Log's implicit dependency on Boost.Chrono causes build failures on Solaris", "timeSpent": "PT0S", "updated": "2015-04-13T11:05:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "body": "What's DataContainer?", "created": "2015-04-15T09:26:00.000000"}], "components": [], "created": "2015-04-10T09:18:00.000000", "creator": "70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2526196d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyzcan:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Apr/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "null_*:*_1_*:*_0_*|*_1_*:*_1_*:*_5818388951_*|*_6_*:*_2_*:*_7341113565"}], "description": "DataContainer has been copied into a couple of projects now. It's a very simple piece of functionality and should be in Leatherman.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48146", "fixedVersions": ["LTH 0.2.0"], "id": "48146", "issueType": "New Feature", "key": "LTH-4", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8", "resolution": "Fixed", "resolutionDate": "2015-09-09T17:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Move DataContainer into Leatherman.", "timeSpent": "PT0S", "updated": "2015-09-09T17:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "Resolved per QA risk assessment.", "created": "2015-05-11T13:19:00.000000"}], "components": [], "created": "2015-04-10T08:48:00.000000", "creator": "70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@720990fe"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyovif:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Bandwidth"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/May/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "null_*:*_1_*:*_0_*|*_1_*:*_1_*:*_30804868_*|*_10007_*:*_1_*:*_2397588058_*|*_3_*:*_1_*:*_248647469_*|*_5_*:*_1_*:*_10468685579_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_13775260"}], "description": "Currently, leatherman is built as a submodule of the projects that use it. This works, but submodules are the worst.\n\nLeatherman should be installable on its own and findable with the standard CMake processes.\n\nRisk Assessment: N/A for build/dev tools and utilities.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48167", "fixedVersions": ["LTH 0.2.0"], "id": "48167", "issueType": "New Feature", "key": "LTH-1", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "70121:b72c16a2-594d-45f8-90bc-c6bc6c9510a8", "resolution": "Fixed", "resolutionDate": "2015-05-11T13:19:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Make leatherman installable", "timeSpent": "PT0S", "updated": "2015-09-09T17:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-03-18T09:54:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7d59552a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyyx2f:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_5818299289_*|*_6_*:*_2_*:*_7341209862_*|*_10006_*:*_1_*:*_1987094581"}], "description": "Possibly as multiple libraries.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48144", "fixedVersions": ["LTH 0.2.0"], "id": "48144", "issueType": "New Feature", "key": "LTH-2", "labels": ["cfact"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Fixed", "resolutionDate": "2015-09-09T17:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Move Facter utility functions to Leatherman", "timeSpent": "PT0S", "updated": "2015-09-09T17:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:372bc64a-3ef7-46ac-9a0a-50bcf4819b9c", "body": "With https://github.com/puppetlabs/facter/pull/900, we've extended the execution framework to support reading stdout and stderr independently of one another (a requirement for cthun iirc).  It should be more \"sharable\" now, although I'm sure the interface to execute is quite different from what is used in the other projects.", "created": "2015-04-08T12:38:00.000000"}], "components": [], "created": "2015-03-18T09:52:00.000000", "creator": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@78a9932d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyytbj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Client Platform"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Apr/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_5818431359_*|*_6_*:*_2_*:*_7341082020_*|*_10006_*:*_1_*:*_1987163348"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "48122", "fixedVersions": ["LTH 0.2.0"], "id": "48122", "issueType": "New Feature", "key": "LTH-3", "labels": ["cfact"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "LTH", "projectLead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "projectName": "Leatherman", "projectType": "software", "projectUrl": null, "reporter": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "resolution": "Fixed", "resolutionDate": "2015-09-09T17:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 10:07 AM", "summary": "Move Facter execution library to Leatherman", "timeSpent": "PT0S", "updated": "2015-09-09T17:17:00.000000", "votes": "0", "watchers": []}], "key": "LTH", "lead": "557058:fd17676f-b54f-4df6-b0e2-ce0f8a23c31e", "name": "Leatherman", "template": "com.pyxis.greenhopper.jira:gh-simplified-scrum-classic", "type": "software", "url": "", "versions": [{"name": "LTH 0.1.0", "releaseDate": "2015-06-16", "released": true}, {"name": "LTH 0.2.0", "releaseDate": "2015-09-09", "released": true}, {"name": "LTH 0.3.0", "releaseDate": "2015-12-15", "released": true}, {"name": "LTH 0.3.1", "releaseDate": "2015-12-15", "released": true}, {"name": "LTH 0.3.2", "releaseDate": "2015-12-15", "released": true}, {"name": "LTH 0.3.3", "releaseDate": "2015-12-22", "released": true}, {"name": "LTH 0.3.4", "releaseDate": "2015-12-28", "released": true}, {"name": "LTH 0.3.5", "releaseDate": "2016-01-14", "released": true}, {"name": "LTH 0.3.6", "releaseDate": "2016-02-05", "released": true}, {"name": "LTH 0.3.7", "releaseDate": "2016-02-10", "released": true}, {"name": "LTH 0.4.0", "releaseDate": "2016-02-25", "released": true}, {"name": "LTH 0.4.1", "releaseDate": "2016-03-02", "released": true}, {"name": "LTH 0.4.2", "releaseDate": "2016-03-07", "released": true}, {"name": "LTH 0.5.0", "releaseDate": "2016-04-18", "released": true}, {"name": "LTH 0.5.1", "releaseDate": "2016-04-18", "released": true}, {"name": "LTH 0.6.0", "releaseDate": "2016-04-19", "released": true}, {"name": "LTH 0.6.1", "releaseDate": "2016-04-19", "released": true}, {"name": "LTH 0.6.2", "releaseDate": "2016-04-20", "released": true}, {"name": "LTH 0.6.3", "releaseDate": "2016-05-06", "released": true}, {"name": "LTH 0.7.0", "releaseDate": "2016-05-18", "released": true}, {"name": "LTH 0.7.1", "releaseDate": "2016-05-23", "released": true}, {"name": "LTH 0.7.2", "releaseDate": "2016-06-02", "released": true}, {"name": "LTH 0.7.3", "releaseDate": "2016-06-21", "released": true}, {"name": "LTH 0.7.4", "releaseDate": "2016-06-27", "released": true}, {"name": "LTH 0.7.5", "releaseDate": "2016-07-07", "released": true}, {"name": "LTH 0.8.0", "releaseDate": "2016-08-01", "released": true}, {"name": "LTH 0.8.1", "releaseDate": "2016-08-01", "released": true}, {"name": "LTH 0.9.0", "releaseDate": "2016-08-10", "released": true}, {"name": "LTH 0.9.1", "releaseDate": "2016-09-14", "released": true}, {"name": "LTH 0.9.2", "releaseDate": "2016-10-19", "released": true}, {"name": "LTH 0.9.3", "releaseDate": "2016-11-09", "released": true}, {"name": "LTH 0.8.2", "releaseDate": "2016-12-01", "released": true}, {"name": "LTH 0.9.4", "releaseDate": "2016-12-01", "released": true}, {"name": "LTH 0.10.0", "releaseDate": "2016-12-02", "released": true}, {"name": "LTH 0.10.1", "releaseDate": "2016-12-06", "released": true}, {"name": "LTH 0.10.2", "releaseDate": "2017-01-26", "released": true}, {"name": "LTH 0.11.0", "releaseDate": "2017-02-07", "released": true}, {"name": "LTH 0.11.1", "releaseDate": "2017-02-24", "released": true}, {"name": "LTH 0.11.2", "releaseDate": "2017-04-14", "released": true}, {"name": "LTH 0.12.0", "releaseDate": "2017-03-30", "released": true}, {"name": "LTH 0.12.1", "releaseDate": "2017-05-02", "released": true}, {"name": "LTH 0.12.2", "releaseDate": "2017-09-05", "released": true}, {"name": "LTH 1.0.0", "releaseDate": "2017-06-23", "released": true}, {"name": "LTH 1.1.0", "releaseDate": "2017-08-22", "released": true}, {"name": "LTH 1.1.2", "releaseDate": "2017-08-25", "released": true}, {"name": "LTH 1.2.0", "releaseDate": "2017-08-30", "released": true}, {"name": "LTH 1.2.2", "releaseDate": "2017-11-06", "released": true}, {"name": "LTH 1.2.3", "releaseDate": "2018-04-17", "released": true}, {"name": "LTH 1.3.0", "releaseDate": "2017-09-18", "released": true}, {"name": "LTH 1.3.1", "releaseDate": "", "released": false}, {"name": "LTH 1.4.0", "releaseDate": "2018-02-14", "released": true}, {"name": "LTH 1.4.1", "releaseDate": "2018-04-18", "released": true}, {"name": "LTH 1.4.2", "releaseDate": "2018-07-17", "released": true}, {"name": "LTH 1.4.4", "releaseDate": "2018-10-23", "released": true}, {"name": "LTH 1.4.5", "releaseDate": "2019-01-15", "released": true}, {"name": "LTH 1.4.6", "releaseDate": "2019-03-26", "released": true}, {"name": "LTH 1.4.7", "releaseDate": "", "released": false}, {"name": "LTH 1.5.0", "releaseDate": "2018-09-18", "released": true}, {"name": "LTH 1.5.1", "releaseDate": "2018-10-04", "released": true}, {"name": "LTH 1.5.3", "releaseDate": "2018-11-01", "released": true}, {"name": "LTH 1.5.4", "releaseDate": "2019-01-24", "released": true}, {"name": "LTH 1.5.5", "releaseDate": "", "released": false}, {"name": "LTH 1.6.0", "releaseDate": "2019-03-26", "released": true}, {"name": "LTH 1.7.0", "releaseDate": "", "released": false}, {"name": "LTH 1.6.1", "releaseDate": "", "released": false}, {"name": "LTH 1.7.1", "releaseDate": "", "released": false}, {"name": "LTH 1.7.2", "releaseDate": "", "released": false}, {"name": "LTH 1.6.2", "releaseDate": "", "released": false}, {"name": "LTH 1.4.8", "releaseDate": "", "released": false}, {"name": "LTH 1.7.3", "releaseDate": "", "released": false}, {"name": "LTH 1.8.0", "releaseDate": "", "released": false}, {"name": "LTH 1.4.9", "releaseDate": "", "released": false}, {"name": "LTH 1.6.3", "releaseDate": "", "released": false}, {"name": "LTH 1.9.0", "releaseDate": "", "released": false}, {"name": "LTH 1.4.10", "releaseDate": "", "released": false}, {"name": "LTH 1.4.13", "releaseDate": "", "released": false}, {"name": "LTH 1.12.1", "releaseDate": "", "released": false}, {"name": "LTH 1.12.7", "releaseDate": "", "released": false}, {"name": "7.15.0", "releaseDate": "2022-03-15", "released": true}, {"name": "LTH 1.12.8", "releaseDate": "", "released": false}, {"name": "LTH 1.12.9", "releaseDate": "", "released": false}]}]}