2018-01-31

Dockerfile for openSUSE, Tcl and Java

docker-tcl-java


本來是使用 -v 來對應 Docket Host 的目錄與 Docket image 裡的目錄,但是後來我發覺如果我只是要測試 tclBlend 在 Open JDK 9 的環境能不能編譯,我應該要做的是安裝 git 然後在這個環境下使用 git clone 取得 source code,再來測試是否可以編譯。

這樣就解決了我自己的困擾。因為一些使用的軟體還沒有遷移到 Java 9,所以我的主要使用環境還是 Open JDK 8。如果我需要測試 Open JDK 9 的部份,就可以使用 Docker 建立一個基本環境然後進行測試(而不會干擾到我自己的使用環境)。

Dockerfile for openSUSE, Tcl and Naviserver

docker-tcl-naviserver


How To Running Systemd on openSUSE Docker Container 的教學,照著建立以後,確認可以讓 systemd 執行。下一步就是嘗試加入 service,因為我之前嘗試建立並且拿到 openSUSE build service 編譯的 NaviServer RPM 有關於 systemd service 的部分,所以就使用 NaviServer 來測試了。

這還給我另外一個啟示,如果我可以在 docker image 和 docker host 之間同步或者是共用資料,就表示我可以將使用環境與開發環境作一定程度的分離。之前知道可以這樣弄,但是沒有嘗試過,也許該測試一下。

2018-01-23

Tclunqlite v0.3.3

檔案放置網頁

Tclunqlite

About

This is the UnQLite extension for Tcl using the Tcl Extension Architecture (TEA).

UnQLite is a in-process software library which implements a self-contained, serverless, zero-configuration, transactional NoSQL (Key/Value store and Document-store) database engine. This extension provides an easy to use interface for accessing UnQLite database files from Tcl.

Main Change

  1. Update UnQLite version to 1.1.8

說明


這是一個小更新版本,更新 UnQLite 的版本。

2018-01-22

遷移與保存

SourceForge 很直接的將 CVS web 關掉,需要該計畫的管理者將 CVS 轉為 GIT 才行。

所以目前我建立的 RPM spec/build script 中,至少有三個會出現問題(因為只是快速檢查,所以我不確定是否有我沒檢查到的)。

三個的狀況都不相同。TclSOAP 1.6.7 使用 TclXML,而 CVS 的發展版本才是使用 tDom 的版本。如果 openSUSE  build service 我在上面有檔案,我會先暫時放檔案上去 github。

tktable 是比較新的版本 2.11 有可能會遺失,如果 openSUSE  build service 我在上面有檔案,我會先暫時放檔案上去 github。

TclVFS 已經遷移到 core.tcl.tk,所以需要使用 Fossil 來取得新版本並且更新內容。(無法順利 clone,要嘗試下載檔案以後處理的方式)

另外,tcl-dbus 也已經遷移(而且還刪除了所有的檔案),我暫時先把舊的檔案放到 github 上,有時間再處理。 (重建一次,嘗試下載檔案以後處理的方式)

ffidl

ffidl: Ffidl allows you to define Tcl/Tk extensions with pure Tcl wrappers calling any shared library installed on your system, including the Tcl and Tk core libraries.


ffidl-spec

openSUSE 上的是舊的,所以我把目前比較有更新的 ffidl 寫成一個 RPM spec,試著製作  RPM 以後安裝。ffidl.patch 參考 openSUSE 之前 spec 的寫法,讓 ffidl 在編譯的時候使用系統的 libffi,而不是自己編譯的。

我有放上去 openSUSE build service 上我自己的 projects,有順利編譯。

JSMin-Tcl

JSMin-Tcl


使用 Tcl 寫的 JavaScript minifier,我發現的時候覺得很有趣(一方面也是有點意外),FlightAware 居然用 Tcl 實作了一個自己版本的 JSMin。

2018-01-18

Apache Rivet 3.0 released

Apache Rivet 3.0 released

Nonetheless Rivet 3.0 ships with a major rewriting of mod_rivet, whose code has been redesigned into a modular architecture with the purpose to preserve the basic features of the 2.x series of modules but also to provide support for both non threaded Apache MPMs (Multi Process Module), such as mod_mpm_prefork, and threaded MPMs such as mod_mpm_worker, mod_mpm_event and mod_mpm_winnt. As a consequence mod_rivet now also can run with the Apache Web Server on the MS-Windows family of operative systems.

Threaded MPM integration was achieved by making mod_rivet multi-threaded and modular itself, introducing the MPM-module bridge concept. We developed a set of loadable modules which are supposed not only to overcome the issues related to threading but also the best possible MPM mod_rivet integration. As a side effect of this modular design mod_rivet is not only able to integrate with its environment but also to work as a framework for writing more MPM bridges designed along different multi-threading schemes and workload management models.

mod_rivet is built using the traditional autotools based toolchain but with version 3.0 we also are supporting a CMake based script that can be used on any OS where CMake is available. The CMake tool is necessary in order to build mod_rivet on MS-Windows



快速解釋一下狀況。如果只支援傳統的 perfork mode,那麼就無法與 HTTP/2 module 共用(因為 HTTP/2 module 與 perfork mode 並不相容)。

也就是如果要使用 Apache Httpd server + mod_http2 + Apache Rivet,Apache Rivet 必須支援其它的模式。這是個很重要的進展。


更新:
apache2-mod_rivet-spec

我在 local 端建立 RPM 的時候會在最後的 check test 階段失敗,所以 test 整段都被我拿掉了。經測試,在一個 Aapache Http Server + SSL + mod_http2 (使用 MPM_event)的環境下加入 Apache Rivet 3.0.0 跟之前的行為不同,是可以運作的,所以目前可以確定,使用 Apache mod_http2 與 Apache Rivet 搭配是可行的。

tclBlend, javah and JDK8

我在追蹤 Java 接下來的變化時,才發現 JDK 10 預計將會移除 javah

所以我對自己備份的 tclBlend 做了一些更動,主要是使用 javac -h 來產生 header file,然後移除掉 javah 的部份。不過這也表示,接下來的版本需要使用 JDK8 或者是更高的版本才行。

另外就是我在嘗試的過程中發現 file.toURL() 已經在 JDK6 被標記 deprecation,所以我也對這部份進行了小修改。

2018-01-10

yajl-tcl

yajl-tcl: Tcl bindings for Yet Another JSON Library


Ubuntu 我很快的就安裝成功了,openSUSE 則遇到一點問題。目前 openSUSE Leap 42.3 的 libyajl-devel 沒有包含 pkgconfig 的部份,需要使用有包進去的版本

寫好的 openSUSE RPM spec:
yajl-tcl-spec


會需要編譯是因為最新釋出的 TclWS (2.5.0) 有加這句話:yajl-tcl from flightaware github (only for rest-flavour requests)

所以更新完 tclws-spec 以後,我也建了一份 yajl-tcl spec(卡在 pkgconfig 的問題一段時間),只是如果有人需要的話,就可以直接建 RPM 然後使用。

2018-01-05

DiffUtilTcl

DiffUtilTcl: A Tcl extension for diff utility functions, like Longest Common Substring


Magicsplat Tcl/Tk for WindowsBAWT 都新增加了這個套件,所以我也寫了一個 openSUSE RPM spec,這樣可以建立 RPM 來測試。

連結:
tcl-DiffUtilTcl-spec

2018-01-04

tcl-cmark

tcl-cmark: Tcl bindings to the cmark-gfm GitHub Flavoured CommonMark/Markdown library


會引起我的再次注意是因為 Magicsplat Tcl/Tk for Windows 在新版中加入了這個套件。

這個套件需要先安裝 libcmark-gfm 才行。經過搜尋,openSUSE LEAP 42.3 看起來有 cmark 套件,我會研究一下是不是可以先安裝 cmark 套件以後編譯成功。如果可以,我會試著建立一個 tcl-cmark 的 openSUSE RPM spec。

更新:
看起來不行,檢查以後,TCLCMARK_LOCATE_CMARK 會檢查是否有安裝 libcmark-gfm,而二者的 library 名稱不同。所以如果要使用 tcl-cmark,需要先有 libcmark-gfm RPM spec 才行。

更新:
cmark-gfm 使用 release 的 0.28.0 會有 header 問題,需要 git clone 使用較新的 code 才行。