ekho icon indicating copy to clipboard operation
ekho copied to clipboard

Release Tags and future plans

Open jacktoh88 opened this issue 2 years ago • 32 comments

I am a member of the Debian community and am interested in packaging ekho for Debian. Debian requires tagged releases. If you are interested in having ekho packaged for Debian, please tag your releases.

Also, do you have future release plans for ekho? How frequently do you push releases?

Thank you!

我是 Debian 社区的一个会员,我想要把 ekho 包起来。Debian 要求 tagged release。如果你对 ekho 在 Debian 里有兴趣的话,请你 tag ekho 的 release。

你以后有打算 release ekho 的新版本吗?

谢谢!

jacktoh88 avatar Aug 01 '22 14:08 jacktoh88

我是希望Ekho可以打包到Debian里的。不过我需要你的帮助。我不知道怎样打包才好。有几个问题请教:

  1. Ekho包含源代码和几种语音包,这个git里只有源代码,语音包是另外下载的。我是不是应该把几种语音包数据也单独提交到github,并tagged release?
  2. 源代码部分用configure来配置,语音包部分,我应该怎样编写安装的脚本?我之前的发行版是手动复制进去源码包的某个目录一起发布的。但是我感觉,Debian的软件源对这种情况一般会分开若干个包来安装。
  3. 若干年前,我是给Ekho制作过deb包的。我需要重新制作deb包吗?还是你会帮我完成这个步骤?

我并没有一个稳定的发布周期计划,我想如果Debian收录之后,我每隔一两年会发布一个新版本吧。

谢谢!

hgneng avatar Aug 02 '22 09:08 hgneng

补充一个问题: 4. 我在Ekho里写了一些脚本以替换配置文件文本的方式去配置speech-dispatcher,让读屏软件可以调用Ekho。但这种配置方式比较不正规。并且我复制了一份speech-dispatcher的代码来编译的,这种方式可能也很不正规。如果Ekho所包含的speech-dispatcher版本和Debian系统上面的差异较大,运行起来会有问题的。有没有什么建议可以改善这种做法?如果这个问题暂时难以解决,我觉得可以暂时不包含speech-dispatcher插件,这是一个可选的功能。

hgneng avatar Aug 02 '22 09:08 hgneng

好!那我们一起把它准备好打包到Debian去。看看下回答:

  1. 语音数据文件都是你的,所以请你把它们上载到 ekho 库里。这样只需要一个 debian 软件包。然后请你 tag 最新的 release 的合适的 commit。
  2. 如果语音数据都在 ekho 的库里应该没问题。只是要现确认整个软件能 build。
  3. 请你在 ekho 库里制作一个新的分支叫做 “debian” 然后把所有你之前做的 deb 包的文件上载去 “debian” 文件夹。然后我帮忙把它做好。
  4. speech-dispatcher 这个功能我们现不添加吧。ekho 进入了 debian 之后再考虑这个问题。

jacktoh88 avatar Aug 03 '22 13:08 jacktoh88

请你在 ekho 库里制作一个新的分支叫做 “debian” 然后把所有你之前做的 deb 包的文件上载去 “debian” 文件夹。然后我帮忙把它做好。

在代码里有一个叫debian的子目录,里面是我以前打deb包的一些记录。你看是不是需要开一个分支,还是只需要把相关文件放在这个子目录里就可以了?

hgneng avatar Aug 04 '22 01:08 hgneng

有一点需要注意: 我平时编译的时候会添加参数去掉优化make CXXFLAGS=-O0,否则会编译到天荒地老。打包的脚本需要注意加上该参数。

hgneng avatar Aug 04 '22 02:08 hgneng

我已经把普通话和粤语的数据文件提交(我对把几十兆数据提交到代码版本控制系统里感到有点不安,感觉这不是规范做法)

现在更新代码后运行下面命令可以听到声音了。

$ ./configure
$ make CXXFLAGS=-O0
$ sudo make install
$ ekho 123
$ ekho -v Cantonese 123

下一步是不是编写deb的打包脚本?还是我先tagged release?

hgneng avatar Aug 04 '22 03:08 hgneng

请你在 ekho 库里制作一个新的分支叫做 “debian” 然后把所有你之前做的 deb 包的文件上载去 “debian” 文件夹。然后我帮忙把它做好。

在代码里有一个叫debian的子目录,里面是我以前打deb包的一些记录。你看是不是需要开一个分支,还是只需要把相关文件放在这个子目录里就可以了?

好 那样就可以了

有一点需要注意: 我平时编译的时候会添加参数去掉优化make CXXFLAGS=-O0,否则会编译到天荒地老。打包的脚本需要注意加上该参数。

好 这没问题

我已经把普通话和粤语的数据文件提交(我对把几十兆数据提交到代码版本控制系统里感到有点不安,感觉这不是规范做法)

那我们可以这样把 我会建造两个 deb 包,一个是 ekho 另外一个 是 声音数据。在你的 source forge 库,请你把名字改成 “ekho-voice-data“ 这是 Debian 要求的。 库也需要 tagged release 还有 license。

现在更新代码后运行下面命令可以听到声音了。

$ ./configure
$ make CXXFLAGS=-O0
$ sudo make install
$ ekho 123
$ ekho -v Cantonese 123

下一步是不是编写deb的打包脚本?还是我先tagged release?

下一步就是先 tagged release

jacktoh88 avatar Aug 04 '22 13:08 jacktoh88

我已经把普通话和粤语的数据文件提交(我对把几十兆数据提交到代码版本控制系统里感到有点不安,感觉这不是规范做法) 那我们可以这样把 我会建造两个 deb 包,一个是 ekho 另外一个 是 声音数据。在你的 source forge 库,请你把名字改成 “ekho-voice-data“ 这是 Debian 要求的。 库也需要 tagged release 还有 license。

要不这样吧。先简单一点,暂时保持现在的一个包。因为如果完全没有语音数据是用不了的。分离了基础的语音数据,在编译安装的时候都会增加了麻烦。将来我会为额外的语音数据分别创建包,例如藏语ekho-voice-data-tibetan,普通话男声ekho-voice-data-mandarin-huang,而不是ekho-voice-data一个包把所有语音数据都安装了。

你的意思是不是每一个deb包都需要对应一个在Github或SourceForge上的独立的项目?如果我建多个语音数据包,就需要创建多个对应名字的SourceForge项目?

hgneng avatar Aug 05 '22 01:08 hgneng

我已经tagged release了。

hgneng avatar Aug 05 '22 10:08 hgneng

要不这样吧。先简单一点,暂时保持现在的一个包。因为如果完全没有语音数据是用不了的。分离了基础的语音数据,在编译安装的时候都会增加了麻烦。将来我会为额外的语音数据分别创建包,例如藏语ekho-voice-data-tibetan,普通话男声ekho-voice-data-mandarin-huang,而不是ekho-voice-data一个包把所有语音数据都安装了。

我们应该有一共两个 deb 包,一个 ekho 的,另外一个声音数据的。然后声音数据的会包含好几个声音数据文件 ([pinyin-yali-44100-wav-v10.tar.xz], [pinyin-huang-44100-wav-v3.tar.xz], 等等;好像是 ‘sub package’)。你以后要添加其他语言时,就可以发布新的版本;对 Debian 很容易。应该选择一个最重要的或者是一个 default 的声音数据文件 ‘sub package’,可能是一个普通话的。然后 ekho 会依赖 ekho-voice-data 的那个 ‘sub package’。

debian 打包的一部分就是建一个 control 文件,在这里决定 ekho 依赖什么,就是 "Build-Depends". 也有 “Recommends” 的功能,其他声音数据文件应该在 Recommends 下。这部分是我要做的。

你的意思是不是每一个deb包都需要对应一个在Github或SourceForge上的独立的项目?如果我建多个语音数据包,就需要创建多个对应名字的SourceForge项目?

每个 deb 包应该有自己的软件库或者是项目,可是所有声音数据文件都能放在一个库。现在的结构就可以了。

你那个 source forge ‘Ekho-Voice-Data’ 库还是要把它改成小写 (ekho-voice-data)这是 debian 要求的。而且也要求一个 license,请你添加 license。

jacktoh88 avatar Aug 05 '22 13:08 jacktoh88

数据文件放这里了,目录里有LICENSE文件(COPYING*),打包后的xz文件里面也有。 https://sourceforge.net/projects/e-guidedog/files/ekho-voice-data/

hgneng avatar Aug 08 '22 03:08 hgneng

  1. 我觉得应该用 github,建一个新的库,然后只把需要的声音数据文件放在那里。github 比较方便 tagged release。
  2. 确认数据文件的协议。看起来像都是 GPL,正确吗?
  3. 在那个新的 github 库建一个新的文件 'license.txt'。 然后把整个协议跟作者的信息都写在里面。

jacktoh88 avatar Aug 08 '22 13:08 jacktoh88

  1. 已创建Github库:https://github.com/hgneng/ekho-voice-data/releases/tag/v3.0 ,上面SourceForge目录已删除。
  2. 确认都是GPL2。
  3. Github自动分配了一个LICENSE文件,你看要不要改成license.txt?每一个语音包都是不同的作者,我保留原来了原来每一个语音包的COPYING文件。

hgneng avatar Aug 09 '22 01:08 hgneng

现在ekho成功地编译可是安装不了。能不能更新或者再些一步一步的怎么 build 还有安装。

ekho 现在自己没有选择语言的功能。我觉得应该决定一个 default 语言,把它打包好,然后如果你想要添加多语言的功能可以发布新的版本。你觉得这样可以吗?

jacktoh88 avatar Aug 18 '22 13:08 jacktoh88

INSTALL文件里有说明。大概是:./autogen.sh && ./configure && make CXXFLAGS=-O0 && sudo make install && ekho 123

我在Ubuntu上应该是可以安装的。能否提供一下报错信息?或者把你的Debian系统版本告诉我,我上去试一下。

当前release 8.9已经把普通话数据打包进去,默认就是普通话。

hgneng avatar Aug 19 '22 01:08 hgneng

我试试安装 ekho 碰到问题,ekho-data/alphabet 和 ekho-data/pinyin 这两个目录不存在。能不能重新开个全新的虚拟机,然后自己 build 和 install。看看有没有出现问题,怎么解决等等。如果有问题的话,更新 ekko 的手册。

版本 8.9 之后你好像修复了两个问题。应该先把所有问题修好,然后再 tag 8.9 版本发布。

jacktoh88 avatar Aug 23 '22 14:08 jacktoh88

上面install问题已修复。做了一个新release 8.9.1。(我可以重新tag 8.9的吗?)

hgneng avatar Aug 24 '22 04:08 hgneng

可以重新 tag 可是应该等到问题都解决好,有一个稳定的发布之后。

我刚碰到了另外两个问题:

  1. ekho-data 文件夹里的文件,需要知道文件权限,都是只读吗?

  2. 在 install 的时候,libmusicxml/samples/randomMusic 不存在。

jacktoh88 avatar Aug 24 '22 14:08 jacktoh88

  1. ekho-data 文件夹里的文件,需要知道文件权限,都是只读吗?

是的,都只读。

  1. 在 install 的时候,libmusicxml/samples/randomMusic 不存在。

我在Ubuntu上无法重现,我迟些装个Debian虚拟机试试再回复。

hgneng avatar Aug 25 '22 01:08 hgneng

在 install 的时候,libmusicxml/samples/randomMusic 不存在。

我在Ubuntu 22.04和Debian 11上都无法重现这个问题,麻烦提供一下你重现问题的环境步骤?

hgneng avatar Aug 25 '22 03:08 hgneng

  1. 用你的 build 和 install 方法是成功的,可是用 deb包的方法,结果是有个 lintian 报错 - libmusicxml does not exist (lintian 是debian 用的检查软件包的工具)。ekho 好像包含其他项目--libmusicxml. 这样是反对 debian 标准做法。应该模块化,就是说要先把 libmusicxml 打包,然后 ekho 的软件包会依赖 libmusicxml。看一下这里。 如果 ekho 在其他地方又有这个问题应该先讨论一下决定怎么解决。

  2. 请看看 ekho 还需要什么整理,例如 sapi5 文件夹是不需要的,可能可以把它删掉?

jacktoh88 avatar Aug 25 '22 13:08 jacktoh88

  1. 应该是以前库里的版本不够高,需要从最新源码获取。我把libmusicxml去掉吧。
  2. sapi5是开发Windows版需要用到的。我平时运行make dist-xz来打包Linux发行版,只提取Linux需要的文件。如果要让git代码树只包含Linux发行版所需文件,那就需要另外开一个分支来维护,但感觉这会增加维护成本。

hgneng avatar Aug 26 '22 01:08 hgneng

我已删除libmusicxml引用,并重新release 8.9。

我本来想自己运行一下lintian去检查还有没有别的报错的,但是按照下面的教程走不通。 https://packaging.ubuntu.com/html/packaging-new-software.html

报了一个错误brz: ERROR: unknown command "dh-make"

不知道你有没有好的教程推荐?

hgneng avatar Aug 26 '22 02:08 hgneng

  1. libmusicxml - 如果不需要那么就可以删掉。如果需要的话,那就应该先创造一个新的 deb包,然后 ekho 应该依赖 libmusicxml 的 deb包。
  2. sapi5 - 如果你想要 linux 和 windows 发布,可以用 github 管理不同的版本发布,看看这篇文章
  3. 如果要创建一个 deb包要先安装 dh-make 和 debhelper。

jacktoh88 avatar Aug 26 '22 13:08 jacktoh88

我已经删除libmusicxml和sapi5目录,重新发布8.9.2了。(我本来以为删除8.9 release重新发布是可行的,后来发现重新发布的代码是我最初tag的代码)

hgneng avatar Aug 29 '22 02:08 hgneng

我终于成功地把 ekho 打包好了。还是有一些是要处理的,ekho 好像包含其他项目,首先要知道哪些项目是重要的(比如,festival 看起来重要的,android-cantonese 可能不需要的)。如果不是重要的就不包含,可以创建新的分支或者另外一个发布。如果是重要的,也要知道它们的协议,这对 debian 很重要的。

jacktoh88 avatar Aug 30 '22 13:08 jacktoh88

我把festival_win和android-cantonese都删除了。另外还删除了一些非必要外部代码。

有两个地方的依赖需要请教一下应该怎样处理:

  1. sonic库是Apache License
  2. utfcpp(https://sourceforge.net/projects/utfcpp/ )不是标准协议,头文件里的声明如下:
// Copyright 2006 Nemanja Trifunovic

/*
Permission is hereby granted, free of charge, to any person or organization
obtaining a copy of the software and accompanying documentation covered by
this license (the "Software") to use, reproduce, display, distribute,
execute, and transmit the Software, and to prepare derivative works of the
Software, and to permit third-parties to whom the Software is furnished to
do so, all subject to the following:
The copyright notices in the Software and this entire statement, including
the above license grant, this restriction and the following disclaimer,
must be included in all copies of the Software, in whole or in part, and
all derivative works of the Software, unless such copies or derivative
works are solely in the form of machine-executable object code generated by
a source language processor.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
*/

hgneng avatar Aug 31 '22 03:08 hgneng

好的,那两个协议应该没有问题。如果还需要什么就告诉你。

jacktoh88 avatar Sep 01 '22 14:09 jacktoh88

我发现还是有问题要处理。

  1. Debian 不需要 RPM 目录,应该把它删掉或者放在 README 然后再删掉。
  2. ekho 好像有 debian 包的源代码,然后自己 build。这样对 debian 是不行。ekho 应该依赖那些软件包 (sonic 还有 utfcpp,可能更多?)。应该修改 ekho 的构建系统,把所有已经在 debian 的软件包都删掉。然后要确认 ekho 成功地 build。接下来我需要知道那些软件包是运行时还是构建时的依赖。
  3. 不需要 debian 文件夹,会造成冲突。

jacktoh88 avatar Sep 06 '22 14:09 jacktoh88

已移除rpmbuild, debian, sonic, utfcpp目录。已确认可以build。

sonic和utfcpp是构建时的依赖。编译需要依赖libsonic-dev, libutfcpp-dev。我在INSTALL文件里增加了描述。

hgneng avatar Sep 07 '22 01:09 hgneng