{"id":3870,"date":"2020-09-27T14:39:12","date_gmt":"2020-09-27T19:39:12","guid":{"rendered":"https:\/\/www.logikalsolutions.com\/wordpress\/?p=3870"},"modified":"2021-02-14T13:50:04","modified_gmt":"2021-02-14T19:50:04","slug":"diamond-debian-package","status":"publish","type":"post","link":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/diamond-debian-package\/","title":{"rendered":"CopperSpice Experiments &#8211; Pt. 11"},"content":{"rendered":"\n<p>If you have been following the saga you have a pretty good idea of the new features added to Diamond. These have not been turned over to the parent project and are not rolled into the code base! The exist only in my <a href=\"https:\/\/github.com\/RolandHughes\/diamond\/tree\/diamond-themes\">branch of my fork<\/a> of Diamond. <\/p>\n\n\n\n<p>Next on my list of tasks was to build a Debian package for the editor. If you <strong>ever<\/strong> want some Debian based distro or Debian itself to consider letting something in, it needs to already have packaging. The 12 year old boys can&#8217;t wait to find something pre-made where they can just change the &#8220;Maintainer&#8221; line and add it to the distro. I&#8217;m the insert-package-name-here maintainer seems to have some kind of bragging rights these days. Here&#8217;s a piece of wisdom.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>If you are doing the maintainer job right, it&#8217;s a thankless shit job, not bragging rights.<\/p><cite>Everyone who has ever maintained a package properly<\/cite><\/blockquote>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"c\" class=\"language-c line-numbers\">roland@roland-U18CS-VirtualBox:~\/Projects\/diamond\/deb_build.etc$ cat control.in\nPackage: diamond\nPriority: optional\nSection: editors\nMaintainer: Roland Hughes &lt;roland@logikalsolutions.com&gt;\nInstalled-Size: @DIAMOND_INSTALLED_SIZE@\nArchitecture: @DIAMOND_ARCHITECTURE@\nVersion: @PACKAGE_VERSION@\nDepends: libc6 (&gt;= 2.27), libstdc++6 (&gt;= 8.4), zlib1g, hunspell, libopengl0, astyle\nDescription: This is the Diamond text editor.\n Diamond has been developed using the CopperSpice cross\n platform C++ libraries. It supports EDT keypad navigation,\n backups, color themes, and much more. You can configure a backup directory\n where you not only store a backup copy with each save\n and can control the maximum number of backups, but\n also the ability to list and view all backups for a given\n file. The Diamond Editor is open source and released under GPL V2. \n\n\n<\/code><\/pre>\n\n\n\n<p>It has been my belief that most of them just want to change that Maintainer line in the control file and submit a build.<\/p>\n\n\n\n<p>Most of you will have never seen the guts of a Debian control file. Generally you just download a .deb file and open it with a software installer other than <strong>dpkg<\/strong> and magic happens. With dpkg and the command line there is far less magic because it will not auto-install dependencies. It will install a broken package, then you have to know some magic command line syntax to force it to install missing dependencies. For those who have never had to learn that particular magic incantation it is as follows:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">sudo apt-get -f install<\/code><\/pre>\n\n\n\n<p>Typically what you try to do is build with the oldest Debian (in my case Ubuntu) version you wish to support. Libraries are supposed to be well-behaved. You are supposed to have a line like this in your control file:<\/p>\n\n\n\n<pre id=\"block-9dc73c71-c50e-46df-89c2-85a7390dcb5c\" class=\"wp-block-code\"><code class=\"\">Depends: libc6 (&gt;= 2.27), libstdc++6 (&gt;= 8.4), zlib1g, hunspell, libopengl0, astyle<\/code><\/pre>\n\n\n\n<p>The stuff in () is there to indicate a minimum version number. Well-behaved packages have proper library naming and all linkage is supposed to be to a base symbolic link.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">ls -al \/usr\/lib\/x86_64-linux-gnu\/libstdc++.so.6\nlrwxrwxrwx 1 root root 19 Mar 10  2020 \/usr\/lib\/x86_64-linux-gnu\/libstdc++.so.6 -&gt; libstdc++.so.6.0.25<\/code><\/pre>\n\n\n\n<p>You will notice the symbolic link completely hides the actual library name. You will also notice that the actual library file name doesn&#8217;t need to contain the version number, or at least doesn&#8217;t need to have the same version number as was in the control file at install time.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">roland@roland-U18CS-VirtualBox:~\/Projects\/diamond\/deb_build.etc$ dpkg -l libc6\nDesired=Unknown\/Install\/Remove\/Purge\/Hold\n| Status=Not\/Inst\/Conf-files\/Unpacked\/halF-conf\/Half-inst\/trig-aWait\/Trig-pend\n|\/ Err?=(none)\/Reinst-required (Status,Err: uppercase=bad)\n||\/ Name                                        Version                    Architecture               Description\n+++-===========================================-==========================-==========================-===========================================================================================\nii  libc6:amd64                                 2.27-3ubuntu1.2            amd64                      GNU C Library: Shared libraries\n<\/code><\/pre>\n\n\n\n<p>.25 doesn&#8217;t really map to 2.27 via any means I know of.<\/p>\n\n\n\n<p>Originally I did my development on Ubuntu 20. While I did put some values in for libc6 and libstdc++6 I decided to wait until I got around to building on Ubuntu 18.04 LTS to see if I needed further minimums. There is no way to reliably build that Dependency line via any automated means. Many people have made many attempts. The bottom line is you need to work from this:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">roland@roland-U18CS-VirtualBox:~\/Projects\/diamond_debian_release$ ldd diamond\n    linux-vdso.so.1 (0x00007fffb3329000)\n    libCsGui1.7.so =&gt; \/home\/roland\/Projects\/diamond_debian_release\/.\/libCsGui1.7.so (0x00007fc1401c0000)\n    libCsCore1.7.so =&gt; \/home\/roland\/Projects\/diamond_debian_release\/.\/libCsCore1.7.so (0x00007fc13f5a2000)\n    libhunspell-1.6.so.0 =&gt; \/usr\/lib\/x86_64-linux-gnu\/libhunspell-1.6.so.0 (0x00007fc13f333000)\n    libstdc++.so.6 =&gt; \/usr\/lib\/x86_64-linux-gnu\/libstdc++.so.6 (0x00007fc13efaa000)\n    libgcc_s.so.1 =&gt; \/lib\/x86_64-linux-gnu\/libgcc_s.so.1 (0x00007fc13ed92000)\n    libc.so.6 =&gt; \/lib\/x86_64-linux-gnu\/libc.so.6 (0x00007fc13e9a1000)\n    libpthread.so.0 =&gt; \/lib\/x86_64-linux-gnu\/libpthread.so.0 (0x00007fc13e782000)\n    libOpenGL.so.0 =&gt; \/usr\/lib\/x86_64-linux-gnu\/libOpenGL.so.0 (0x00007fc13e554000)\n    libz.so.1 =&gt; \/lib\/x86_64-linux-gnu\/libz.so.1 (0x00007fc13e337000)\n    libm.so.6 =&gt; \/lib\/x86_64-linux-gnu\/libm.so.6 (0x00007fc13df99000)\n    \/lib64\/ld-linux-x86-64.so.2 (0x00007fc143ab7000)\n    libdl.so.2 =&gt; \/lib\/x86_64-linux-gnu\/libdl.so.2 (0x00007fc13dd95000)\n    libGLdispatch.so.0 =&gt; \/usr\/lib\/x86_64-linux-gnu\/libGLdispatch.so.0 (0x00007fc13dadf000)\n<\/code><\/pre>\n\n\n\n<p>You need to know some utilities to find out what provides what. If you use only well-behaved libraries you can achieve Debian Nirvana. <strong>A single .deb file that installs on every Debian based distribution at least as new\/current as your build environment.<\/strong> This is not a myth. It&#8217;s also not a simple straight forward process. I once created a far from insignificant .deb that installed on both 32-bit and 64-bit Ubuntu versions from 12 &#8211; 18. Yes, it took a lot longer than 15 minutes because we had a Web browser and graphics stuff to bring along not to mention a user account and entire Kiosk type application. It had to make substantive changes to the distro configuration then back them out when uninstalled.<\/p>\n\n\n\n<p>You should not be surprised to find that even commercial companies cheat.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"463\" height=\"243\" src=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2020\/09\/uex-debian.png\" alt=\"\" class=\"wp-image-3873\" srcset=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2020\/09\/uex-debian.png 463w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2020\/09\/uex-debian-300x157.png 300w\" sizes=\"(max-width: 463px) 100vw, 463px\" \/><figcaption>From UltraEdit download page<\/figcaption><\/figure>\n\n\n\n<p>From a maintenance standpoint this is an absolute nightmare. They now have to maintain four separate build systems and someone has to hand create a different dependency line for each build environment.<\/p>\n\n\n\n<p>I no longer subscribe to UltraEdit. I&#8217;m certain I still have some valid licenses for very old versions, but I just don&#8217;t use it anymore. I haven&#8217;t cracked open one of their Debian files but I remember they had spell check and the on-line doc for Windows says they use ASpell. That&#8217;s where this packaging got screwed, the spell checker.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">libhunspell-1.6.so.0 =&gt; \/usr\/lib\/x86_64-linux-gnu\/libhunspell-1.6.so.0 (0x00007fc13f333000)<\/code><\/pre>\n\n\n\n<p>It&#8217;s 1.7 in Ubuntu 20. Hunspell did not follow proper\/traditional naming conventions. LibreOffice uses it and there was a mad rush away from OpenOffice once Oracle bought Sun Microsystems. Aparrently the powers that be at hunspell have avoided adopting tradition for over a decade.<\/p>\n\n\n\n<p>Oh! Just bundle it with your .deb. Weeeeellllll&#8230;.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>The Diamond Editor is open source and released under GPL V2.<\/p><cite>Diamond license<\/cite><\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>Hunspell is a free spell checker and morphological analyzer library and command-line tool, licensed under LGPL\/GPL\/MPL tri-license.<\/p><cite>Hunspell license<\/cite><\/blockquote>\n\n\n\n<p>I went down this rabbit hole with Artistic Style.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"282\" src=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2020\/09\/astyle-license-1024x282.png\" alt=\"\" class=\"wp-image-3874\" srcset=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2020\/09\/astyle-license-1024x282.png 1024w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2020\/09\/astyle-license-300x83.png 300w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2020\/09\/astyle-license-768x211.png 768w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2020\/09\/astyle-license.png 1105w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption>Artistic Style license<\/figcaption><\/figure>\n\n\n\n<p>You will notice all of those letters aren&#8217;t the same. GPL != V2 != V3. Theoretically I would have been okay with Artistic Style when I was adding the functionality but the GNU Emacs developers didn&#8217;t use the library version either. Instead they did what I did, built an astyle command line and passed it things then consumed the output. This got around a lot of licensing issues GNU didn&#8217;t wish to deal with at the time and obviously hasn&#8217;t cared to address since.<\/p>\n\n\n\n<p>I asked about the licensing issue in the CopperSpice forums but was either unclear or, more likely, just like me, nobody wanted to go down that rabbit hole. Even most of the lawyers I encounter try to avoid rendering judgement on differences when it comes to OpenSource licensing.<\/p>\n\n\n\n<p>The Debian from Ubuntu 18.04 64-bit installed just fine on Ubuntu 20.04. After all, hunspell was hunspell according to the control file. It simply wouldn&#8217;t run because it was looking for a file with 1.6 in the name and on Ubuntu 20.04 LTS the file has 1.7 in the name. I could do a hack on the command line and make it run.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">sudo ln -s \/usr\/lib\/x86_64-linux-gnu\/libhunspell-1.7.so.0 \/opt\/diamond\/libhunspell-1.6.so.0<\/code><\/pre>\n\n\n\n<p>Yeah, that&#8217;s the kind of hack you want to see.<\/p>\n\n\n\n<p>I could thump this output into a variable during postinst and add a bunch more code to generate the hack on each target system.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">ldd diamond | grep -i hunspell\n    libhunspell-1.6.so.0 =&gt; \/usr\/lib\/x86_64-linux-gnu\/libhunspell-1.6.so.0 (0x00007fbf5ef12000)\n<\/code><\/pre>\n\n\n\n<p>That would suck even worse though because I would have to have all kinds of safeguards against libhunspell-0.5.so.0 or some other much lower number. I could make the control file protect me from not having a high enough version, but it can&#8217;t protect me from that being one of many.<\/p>\n\n\n\n<p>As of right now, since I&#8217;m still working on this, I took the cheap and evil route of creating 2 files. <\/p>\n\n\n<p><div class=\"sdm_download_button_box_default\"><div class=\"sdm_download_link\"><a href=\"https:\/\/www.logikalsolutions.com\/wordpress\/?sdm_process_download=1&download_id=3879\" class=\"sdm_download green\" title=\"Ubuntu 18.04 Diamond Text Editor Debian\" >Download Ubuntu 18.04 package now!<\/a><\/div><\/div>  <div class=\"sdm_download_count\"><span class=\"sdm_count_number\">557<\/span><span class=\"sdm_count_string\"> Downloads<\/span><\/div><\/p>\n\n\n<p><div class=\"sdm_download_button_box_default\"><div class=\"sdm_download_link\"><a href=\"https:\/\/www.logikalsolutions.com\/wordpress\/?sdm_process_download=1&download_id=3880\" class=\"sdm_download green\" title=\"Ubuntu 20.04 Debian of Diamond Text Editor\" >Download Ubuntu 20.04 package now!<\/a><\/div><\/div> <div class=\"sdm_download_count\"><span class=\"sdm_count_number\">583<\/span><span class=\"sdm_count_string\"> Downloads<\/span><\/div><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>Keyboard macros do not work!<\/strong> They were too tightly coupled to MainWindow class so I just conditionally compiled them out for now. I&#8217;ve used keyboard macros four times during my thirty plus year career. Two of those times were at gunpoint from a client who was completely enamored with keyboard macros and &#8220;learn&#8221; keys. There is always a better way to do something than a keyboard macro. At some point I may fix them.<\/p>\n\n\n\n<p>For those who haven&#8217;t been following the entire saga, <a href=\"https:\/\/www.logikalsolutions.com\/wordpress\/uncategorized\/diamond-text-editor-current-state\/\">this post<\/a> mostly sums up <strong>the new features that are not yet part of the code base<\/strong>.<\/p>\n\n\n\n<p><a href=\"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/attempting-to-get-copperspice-to-build-on-opensuse\/\">&lt;Previous-part<\/a>    <a href=\"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/diamond-text-editor\/\">Next-part><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>If you have been following the saga you have a pretty good idea of the new features added to Diamond. These have not been turned over to the parent project and are not rolled into the code base! The exist only in my branch of my fork of Diamond. Next on my list of tasks was to build a Debian package for the editor. If you ever want some Debian based distro or Debian itself &hellip; <a title=\"CopperSpice Experiments &#8211; Pt. 11\" class=\"bnm-read-more\" href=\"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/diamond-debian-package\/\"><span class=\"screen-reader-text\">CopperSpice Experiments &#8211; Pt. 11<\/span>Read more<\/a><\/p>\n","protected":false},"author":2,"featured_media":3706,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[990,1859,1860],"class_list":["post-3870","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-information-technology","tag-debian","tag-diamond-text-editor","tag-hunspell","bnm-entry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>CopperSpice Experiments - Pt. 11 &#8211; Logikal Blog<\/title>\n<meta name=\"description\" content=\"The much anticipated code to build a Debian package from the Diamond Text Editor source has been completed.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/diamond-debian-package\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"CopperSpice Experiments - Pt. 11 &#8211; Logikal Blog\" \/>\n<meta property=\"og:description\" content=\"The much anticipated code to build a Debian package from the Diamond Text Editor source has been completed.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/diamond-debian-package\/\" \/>\n<meta property=\"og:site_name\" content=\"Logikal Blog\" \/>\n<meta property=\"article:published_time\" content=\"2020-09-27T19:39:12+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-02-14T19:50:04+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2020\/07\/diamond1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"820\" \/>\n\t<meta property=\"og:image:height\" content=\"655\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"seasoned_geek\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"seasoned_geek\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/diamond-debian-package\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/diamond-debian-package\\\/\"},\"author\":{\"name\":\"seasoned_geek\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/c077f770ade13de7faaf616c3eac6842\"},\"headline\":\"CopperSpice Experiments &#8211; Pt. 11\",\"datePublished\":\"2020-09-27T19:39:12+00:00\",\"dateModified\":\"2021-02-14T19:50:04+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/diamond-debian-package\\\/\"},\"wordCount\":1229,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/c077f770ade13de7faaf616c3eac6842\"},\"image\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/diamond-debian-package\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2020\\\/07\\\/diamond1.png\",\"keywords\":[\"Debian\",\"diamond text editor\",\"hunspell\"],\"articleSection\":[\"Information Technology\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/diamond-debian-package\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/diamond-debian-package\\\/\",\"url\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/diamond-debian-package\\\/\",\"name\":\"CopperSpice Experiments - Pt. 11 &#8211; Logikal Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/diamond-debian-package\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/diamond-debian-package\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2020\\\/07\\\/diamond1.png\",\"datePublished\":\"2020-09-27T19:39:12+00:00\",\"dateModified\":\"2021-02-14T19:50:04+00:00\",\"description\":\"The much anticipated code to build a Debian package from the Diamond Text Editor source has been completed.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/diamond-debian-package\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/diamond-debian-package\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/diamond-debian-package\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2020\\\/07\\\/diamond1.png\",\"contentUrl\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2020\\\/07\\\/diamond1.png\",\"width\":820,\"height\":655},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/diamond-debian-package\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"CopperSpice Experiments &#8211; Pt. 11\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#website\",\"url\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/\",\"name\":\"Logikal Blog\",\"description\":\"For people with attention spans longer than a Tweet\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/c077f770ade13de7faaf616c3eac6842\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/c077f770ade13de7faaf616c3eac6842\",\"name\":\"seasoned_geek\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r\",\"caption\":\"seasoned_geek\"},\"logo\":{\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r\"},\"description\":\"Roland Hughes started his IT career in the early 1980s. He quickly became a consultant and president of Logikal Solutions, a software consulting firm specializing in OpenVMS application and C++\\\/Qt touchscreen\\\/embedded Linux development. Early in his career he became involved in what is now called cross platform development. Given the dearth of useful books on the subject he ventured into the world of professional author in 1995 writing the first of the \\\"Zinc It!\\\" book series for John Gordon Burke Publisher, Inc. A decade later he released a massive (nearly 800 pages) tome \\\"The Minimum You Need to Know to Be an OpenVMS Application Developer\\\" which tried to encapsulate the essential skills gained over what was nearly a 20 year career at that point. From there \\\"The Minimum You Need to Know\\\" book series was born. Three years later he wrote his first novel \\\"Infinite Exposure\\\" which got much notice from people involved in the banking and financial security worlds. Some of the attacks predicted in that book have since come to pass. While it was not originally intended to be a trilogy, it became the first book of \\\"The Earth That Was\\\" trilogy: Infinite Exposure Lesedi - The Greatest Lie Ever Told John Smith - Last Known Survivor of the Microsoft Wars When he is not consulting Roland Hughes posts about technology and sometimes politics on his blog. He also has regularly scheduled Sunday posts appearing on the Interesting Authors blog.\",\"sameAs\":[\"https:\\\/\\\/theminimumyouneedtoknow.com\"],\"url\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/author\\\/seasoned_geek\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"CopperSpice Experiments - Pt. 11 &#8211; Logikal Blog","description":"The much anticipated code to build a Debian package from the Diamond Text Editor source has been completed.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/diamond-debian-package\/","og_locale":"en_US","og_type":"article","og_title":"CopperSpice Experiments - Pt. 11 &#8211; Logikal Blog","og_description":"The much anticipated code to build a Debian package from the Diamond Text Editor source has been completed.","og_url":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/diamond-debian-package\/","og_site_name":"Logikal Blog","article_published_time":"2020-09-27T19:39:12+00:00","article_modified_time":"2021-02-14T19:50:04+00:00","og_image":[{"width":820,"height":655,"url":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2020\/07\/diamond1.png","type":"image\/png"}],"author":"seasoned_geek","twitter_card":"summary_large_image","twitter_misc":{"Written by":"seasoned_geek","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/diamond-debian-package\/#article","isPartOf":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/diamond-debian-package\/"},"author":{"name":"seasoned_geek","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#\/schema\/person\/c077f770ade13de7faaf616c3eac6842"},"headline":"CopperSpice Experiments &#8211; Pt. 11","datePublished":"2020-09-27T19:39:12+00:00","dateModified":"2021-02-14T19:50:04+00:00","mainEntityOfPage":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/diamond-debian-package\/"},"wordCount":1229,"commentCount":0,"publisher":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#\/schema\/person\/c077f770ade13de7faaf616c3eac6842"},"image":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/diamond-debian-package\/#primaryimage"},"thumbnailUrl":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2020\/07\/diamond1.png","keywords":["Debian","diamond text editor","hunspell"],"articleSection":["Information Technology"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/diamond-debian-package\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/diamond-debian-package\/","url":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/diamond-debian-package\/","name":"CopperSpice Experiments - Pt. 11 &#8211; Logikal Blog","isPartOf":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/diamond-debian-package\/#primaryimage"},"image":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/diamond-debian-package\/#primaryimage"},"thumbnailUrl":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2020\/07\/diamond1.png","datePublished":"2020-09-27T19:39:12+00:00","dateModified":"2021-02-14T19:50:04+00:00","description":"The much anticipated code to build a Debian package from the Diamond Text Editor source has been completed.","breadcrumb":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/diamond-debian-package\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/diamond-debian-package\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/diamond-debian-package\/#primaryimage","url":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2020\/07\/diamond1.png","contentUrl":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2020\/07\/diamond1.png","width":820,"height":655},{"@type":"BreadcrumbList","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/diamond-debian-package\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.logikalsolutions.com\/wordpress\/"},{"@type":"ListItem","position":2,"name":"CopperSpice Experiments &#8211; Pt. 11"}]},{"@type":"WebSite","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#website","url":"https:\/\/www.logikalsolutions.com\/wordpress\/","name":"Logikal Blog","description":"For people with attention spans longer than a Tweet","publisher":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#\/schema\/person\/c077f770ade13de7faaf616c3eac6842"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.logikalsolutions.com\/wordpress\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#\/schema\/person\/c077f770ade13de7faaf616c3eac6842","name":"seasoned_geek","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r","url":"https:\/\/secure.gravatar.com\/avatar\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r","caption":"seasoned_geek"},"logo":{"@id":"https:\/\/secure.gravatar.com\/avatar\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r"},"description":"Roland Hughes started his IT career in the early 1980s. He quickly became a consultant and president of Logikal Solutions, a software consulting firm specializing in OpenVMS application and C++\/Qt touchscreen\/embedded Linux development. Early in his career he became involved in what is now called cross platform development. Given the dearth of useful books on the subject he ventured into the world of professional author in 1995 writing the first of the \"Zinc It!\" book series for John Gordon Burke Publisher, Inc. A decade later he released a massive (nearly 800 pages) tome \"The Minimum You Need to Know to Be an OpenVMS Application Developer\" which tried to encapsulate the essential skills gained over what was nearly a 20 year career at that point. From there \"The Minimum You Need to Know\" book series was born. Three years later he wrote his first novel \"Infinite Exposure\" which got much notice from people involved in the banking and financial security worlds. Some of the attacks predicted in that book have since come to pass. While it was not originally intended to be a trilogy, it became the first book of \"The Earth That Was\" trilogy: Infinite Exposure Lesedi - The Greatest Lie Ever Told John Smith - Last Known Survivor of the Microsoft Wars When he is not consulting Roland Hughes posts about technology and sometimes politics on his blog. He also has regularly scheduled Sunday posts appearing on the Interesting Authors blog.","sameAs":["https:\/\/theminimumyouneedtoknow.com"],"url":"https:\/\/www.logikalsolutions.com\/wordpress\/author\/seasoned_geek\/"}]}},"_links":{"self":[{"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/posts\/3870","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/comments?post=3870"}],"version-history":[{"count":0,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/posts\/3870\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/media\/3706"}],"wp:attachment":[{"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/media?parent=3870"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/categories?post=3870"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/tags?post=3870"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}