<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div>Hi,</div><div>Thank you for your email regarding your effort.</div><div><br></div><div>As it turns out, it is not all that hard to make a system deliverable build using</div><div>the following procedure:</div><div><br></div><div>rm -rf /tmp/arch<br>mkdir /tmp/arch<br>cd /tmp/arch<br>cp -a /tmp/cin_5.1.20181229-src.tgz .</div><div># you can get a tarball from last month's build here:</div><div># <a href="https://www.cinelerra-gg.org/download/pkgs/src/cin_5.1.20181129-src.tgz">https://www.cinelerra-gg.org/download/pkgs/src/cin_5.1.20181129-src.tgz</a><br></div><div>cp /tmp/PKGBUILD .</div><div># attached to email<br></div><div>chown -R goodguy:goodguy .</div><div># your user name here<br></div><div>sudo -u goodguy makepkg 2>&1 | tee pkg-arch.log</div><div><br></div><div>You will have to update the md5sum in PKGBUILD to match the tarball you use.</div><div>The cin_5.1.20181129-src.tgz tarball has: 3a964b60b7f2e216474841f1d64587c4</div><div>Be SURE to change the date in the PKGBUILD to match the tarball version.</div><div>line 4: pkgrel=20181129</div><div><br></div><div>This produces a build with no thirdparty libraries, and is dynamically linked to system</div><div>shared libraries, not to any build local binaries.   It does add a variety of shared</div><div>libraries as plugins, and a few executables needed by the program for utilities.</div><div><br></div><div>I did test this, and it worked at least once.</div><div><br></div><div>If you have any problems, or just have questions, or just are very friendly...</div><div>feel free to chat us up.  Can't tell the future, but I suspect that you will be</div><div>able to do this quite easily.</div><div><br></div><div>gg</div><div>PS:  there are a few spurious warnings, due to differences in the fffmpeg build config</div><div>between the system ffmpeg and the thirdparty build... I will look into this as time permits.</div><div>TO TEST: pacman -U ./cin-5.1-20181129-arch-x86_64.pkg.tar.xz (or whatever)</div><div>then type: cin<br></div><div><br></div><div><br></div></div></div></div></div></div></div><br><div class="gmail_quote"><div dir="ltr">On Sat, Dec 29, 2018 at 3:07 PM David Runge <<a href="mailto:dave@sleepmap.de">dave@sleepmap.de</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hey there,<br>
<br>
I have just dropped the cinelerra-cv package from the official<br>
repositories on Arch Linux (to the AUR). Initially I planned on<br>
replacing it with cinelerra-gg, but I don't think this is very feasible<br>
at this point in time.<br>
<br>
I started to attempt a build, that is dynamically linked against the<br>
required system libraries [1], but it seems to be an equal amount of<br>
work compared to cinelerra-cv, which is not at all feasible. This is not<br>
because of the libraries themselves failing to work or missing symbols<br>
or anything like that, but because the build system actively prevents<br>
building a dynamically linked application!<br>
However, I already hack-fixed a great deal of things compared to the<br>
upstream provided attempt [2] (on a static build), which really doesn't<br>
need to depend on all the packages, that the PKGBUILD lists in<br>
depends=() (because of its static nature).<br>
<br>
That aside, a static build of this size in the official repositories of<br>
Arch Linux is not ever going to become a reality (nor in any other<br>
distribution), if nearly all of the components are available as a<br>
package. Therefore I would like you to consider to fix a great deal<br>
regarding the build system of cinelerra-gg to remedy this situation and<br>
move towards a (mostly) dynamically linked application instead.<br>
I believe this can be fairly straight forward with dynamic rebuilds<br>
against different versions of the required libraries in a continuous<br>
integration pipeline! The tools are there.<br>
<br>
In case static builds is what you will be going for no matter what,<br>
disregard the rest of my e-mail.<br>
<br>
That being said, I had to hack in nearly all of the --libs (which could<br>
just easily be gotten by calls to pkg-config, instead of hardcoding some<br>
of them or just not making them available at all) and also some of the<br>
--cflags for lv2 integration.<br>
I'm left with a (working!) application (probably with a bunch of broken<br>
edges), that - unfortunately - doesn't feature full RELRO [3] (because<br>
LDFLAGS are not propagated throughout all the components), PIE [4] (not<br>
implemented), has executable stack [5] (which I haven't encountered<br>
before with any of the other software I package, but is apparently<br>
pretty bad) and *a lot* of "unused shared library" references (due to<br>
the bizarre "libs" files being used to store all the library names<br>
instead of dynamically assembling them, when needed).<br>
<br>
The naming of the project, its subdirectories and<br>
(un-)declared/undocumented thirdparties (which of them are real<br>
thirdparties, which are your own/modified?) are confusing.<br>
The project does not (yet) have a form of versioning (at least not<br>
reflected in actual git tags), unless you're up for using calver (I<br>
recommend semver to actually be able to discern different levels of<br>
stability, feature availability and to work towards a roadmap).<br>
<br>
Considering providing (unsupported) builds for Arch Linux: Please use<br>
the AUR for providing PKGBUILDs and name the package according to your<br>
upstream (cinelerra-gg), unless you have the intent to rename the<br>
project. Make sure to use devtools [8] (e.g. `extra-x86_64-build -c` in<br>
the directory of the PKGBUILD) to build your package. It will give you<br>
*a lot* of additional information, as the package build is done in a<br>
pristine containered build, using systemd-nspawn.<br>
In case cin [7] is done by you: Please, never push binary data to the<br>
repositories!<br>
<br>
Closing, please don't get me wrong: It's your project and all, but this<br>
is a situation, that will drive away any potential packager of the<br>
software as it's just too complicated to plainly build (no matter the<br>
eventual runtime problems one might get)!<br>
I know this project has come a long way, but I believe it would benefit<br>
from a general cleanup and restructuring, which will render it much more<br>
accessible!<br>
<br>
Best,<br>
David<br>
<br>
P.S.: If you have any questions regarding the Arch Build System (ABS),<br>
or packaging on Arch Linux, or my PKGBUILD (which was still a WIP, when<br>
I stopped), shoot away!<br>
<br>
[1] <a href="http://pkgbuild.com/~dvzrv/aur/cinelerra-gg/PKGBUILD" rel="noreferrer" target="_blank">http://pkgbuild.com/~dvzrv/aur/cinelerra-gg/PKGBUILD</a><br>
[2] <a href="https://git.cinelerra-gg.org/git/?p=goodguy/cinelerra.git;a=blob;f=cinelerra-5.1/blds/PKGBUILD;h=04473dad26ce167c3a7aeb7905679e15cd175241;hb=HEAD" rel="noreferrer" target="_blank">https://git.cinelerra-gg.org/git/?p=goodguy/cinelerra.git;a=blob;f=cinelerra-5.1/blds/PKGBUILD;h=04473dad26ce167c3a7aeb7905679e15cd175241;hb=HEAD</a><br>
[3] <a href="https://mudongliang.github.io/2016/07/11/relro-a-not-so-well-known-memory-corruption-mitigation-technique.html" rel="noreferrer" target="_blank">https://mudongliang.github.io/2016/07/11/relro-a-not-so-well-known-memory-corruption-mitigation-technique.html</a><br>
[4] <a href="https://en.wikipedia.org/wiki/Position-independent_code" rel="noreferrer" target="_blank">https://en.wikipedia.org/wiki/Position-independent_code</a><br>
[5] <a href="https://en.wikipedia.org/wiki/Executable_space_protection" rel="noreferrer" target="_blank">https://en.wikipedia.org/wiki/Executable_space_protection</a><br>
[6] <a href="https://aur.archlinux.org" rel="noreferrer" target="_blank">https://aur.archlinux.org</a><br>
[7] <a href="https://aur.archlinux.org/cgit/aur.git/tree/?h=cin" rel="noreferrer" target="_blank">https://aur.archlinux.org/cgit/aur.git/tree/?h=cin</a><br>
[8] <a href="https://www.archlinux.org/packages/extra/any/devtools/" rel="noreferrer" target="_blank">https://www.archlinux.org/packages/extra/any/devtools/</a><br>
<br>
-- <br>
<a href="https://sleepmap.de" rel="noreferrer" target="_blank">https://sleepmap.de</a><br>
-- <br>
Cin mailing list<br>
<a href="mailto:Cin@lists.cinelerra-gg.org" target="_blank">Cin@lists.cinelerra-gg.org</a><br>
<a href="https://lists.cinelerra-gg.org/mailman/listinfo/cin" rel="noreferrer" target="_blank">https://lists.cinelerra-gg.org/mailman/listinfo/cin</a><br>
</blockquote></div>