I plan to start jumping on code and start to see if I could solve some issues, as I’ve some years of Qt dev behind me.
So I cloned the repo, and followed README that pointed out to use Qt-designer. But in the SDK note page there’s a mention indicating The Linux SDK has been discontinued for now.
So I used the build script scripts/build-shotcut.sh but came across and errror.
If this way of building is the “good” way of building,
would you accept a PR to point out this way of building ? (instead of qmake, make)
where can I ask for help in build process ? Do you consider that build problems when using this script can lead to bug reports on Github ? Or do we use forum for this kind of problems ?
Thanks a lot !
ps: this is probably more oriented to devs @shotcut
pps: I’ve seen this promising work using cmake, I think I’ll try it
scripts/build-shotcut.sh is what our nightly and release builds use. However, some developers do use it as part of their cycle. You can use it to install some dependencies and then do whatever you want for the Shotcut code.
pps: I’ve seen this promising work using cmake, I think I’ll try it
Neither main developers have used that. Only the guy who maintains the flatpak.
I strongly encourage to work through the error with the build script, and try to get it working without changing the script.
where can I ask for help in build process ?
You can ask in this thread, but keep in mind that I treat figuring out how to build mainly as an exercise and test for the would-be contributor.
Do you consider that build problems when using this script can lead to bug reports on Github ?
No, because the script is currently gospel as I explained. What are you doing wrong?
Thanks, that’s why I figured out. But as I didn’t got the script working, I wanted to give a try (didn’t succeeded, as I do not know the cmake process, and the guy hasn’t updated doc).
I got some errors because of non-clean git repos. For each one I deleted corresponding ~/shotcut/src/[repo_name] (is the script reentrant ?)
I finaly got to the point of something is starting to compile, but the compile fails for x264 because of the lack of nasm
I installed nasm and started script again
as before I got some dirty git repo errors that I fixed with rm -rf ~/shotcut/src/nv-codec-headers rm -rf ~/shotcut/src/bigsh0t
I launched the script again, waited for tar --exclude-vcs -cJf /home/bruno/shotcut/src.txz src (I don’t know exactly why there’s a tar creation during the compilation process)
=> x264 compilation failed because of missing libeigen3-dev (in my Debian-derived system) package
I launched the script again, and after some tries I ended with:
LOG: About to run command: cd src/modules
LOG: MLTDISABLED <b>gdk</b> : this is an <b>optional</b> module that provides ... dunno ... . To enable it, try installing a package called something like ... dunno ....
LOG: MLTDISABLED <b>gtk2</b> : this is an <b>optional</b> module that provides some additional image loading support. To enable it, try installing a package called something like libgtk2-dev?.
LOG: MLTDISABLED <b>jackrack</b> : this is an <b>optional</b> module that provides sound effects/operations. To enable it, try installing a package called something like libjack-dev.
LOG: MLTDISABLED <b>lumas</b> : this is an <b>optional</b> module that provides ... dunno ... . To enable it, try installing a package called something like ... dunno ....
LOG: MLTDISABLED <b>ndi</b> : this is an <b>optional</b> module that provides ... dunno ... . To enable it, try installing a package called something like ... dunno ....
LOG: MLTDISABLED <b>opencv</b> : this is an <b>optional</b> module that provides ... dunno ... . To enable it, try installing a package called something like ... dunno ....
LOG: MLTDISABLED <b>sdl</b> : this is an <b>optional</b> module that provides ... dunno ... . To enable it, try installing a package called something like ... dunno ....
LOG: MLTDISABLED <b>sox</b> : this is an <b>optional</b> module that provides sound effects/operations. To enable it, try installing a package called something like sox-dev.
LOG: MLTDISABLED <b>swfdec</b> : this is an <b>optional</b> module that provides ... dunno ... . To enable it, try installing a package called something like ... dunno ....
ERROR: One or more required MLT modules could not be enabled
LOG: Process has finished. Reason: FAILURE Some kind of error occurred: One or more required MLT modules could not be enabled
And now it’s almost 2am and I really have to sleep So I’ll continue this adventure tomorrow.
Thanks again for your time !
Thanks a lot @brian. I’ve indeed seen in the script that there was a mention to an external config file but I didn’t go further.
I’ve created this config file in the same folder as the script one and started the script with those params but this didn’t changed the error that blocked me:
LOG: About to run command: cd src/modules
LOG: MLTDISABLED <b>gdk</b> : this is an <b>optional</b> module that provides ... dunno ... . To enable it, try installing a package called something like ... dunno ....
LOG: MLTDISABLED <b>gtk2</b> : this is an <b>optional</b> module that provides some additional image loading support. To enable it, try installing a package called something like libgtk2-dev?.
LOG: MLTDISABLED <b>jackrack</b> : this is an <b>optional</b> module that provides sound effects/operations. To enable it, try installing a package called something like libjack-dev.
LOG: MLTDISABLED <b>lumas</b> : this is an <b>optional</b> module that provides ... dunno ... . To enable it, try installing a package called something like ... dunno ....
LOG: MLTDISABLED <b>ndi</b> : this is an <b>optional</b> module that provides ... dunno ... . To enable it, try installing a package called something like ... dunno ....
LOG: MLTDISABLED <b>opencv</b> : this is an <b>optional</b> module that provides ... dunno ... . To enable it, try installing a package called something like ... dunno ....
LOG: MLTDISABLED <b>sdl</b> : this is an <b>optional</b> module that provides ... dunno ... . To enable it, try installing a package called something like ... dunno ....
LOG: MLTDISABLED <b>sox</b> : this is an <b>optional</b> module that provides sound effects/operations. To enable it, try installing a package called something like sox-dev.
LOG: MLTDISABLED <b>swfdec</b> : this is an <b>optional</b> module that provides ... dunno ... . To enable it, try installing a package called something like ... dunno ....
ERROR: One or more required MLT modules could not be enabled
LOG: Process has finished. Reason: FAILURE Some kind of error occurred: One or more required MLT modules could not be enabled
Any clue on this ? As far as I understand this error message, I understand it as:
here is a list of optional modules (gdk, jacktrack, lumas, etc) that are not found (but I don’t really care as they are optional, isn’t it ?)
there are “One or more required MLT modules” could not be enabled, I suppose this is because there’re not found
So there are missing modules. But where is the list of those missing required modules ?
Thank you. I suspected something like that, but (if I understood correctly) as I’m a kind of beta-tester external newcomer I thought you would be interested to know where I’ve been stucked.
I planned to try to propose to the team an implementation of markers (because this is on the readmap, but it’s a priority for me, and it looks like a “quite simlpe” one).
Note that I’m totally aware that I’m probably totally wrong by thinking that this is a more or less “easy pieck”
Actually, looking into this more, sox should be optional as Shotcut is not using anything from it. However, our builds include it for sake of a more comprehensive build of MLT (some people use things from MLT from Shotcut builds outside of Shotcut). I will change the script to make this dependency truly optional.
I planned to try to propose to the team an implementation of markers
That is not easy for someone new to Shotcut code. You are better off trying to fix some bugs first to learn. I found that is one of the easiest way to learn.
If you want markers now, add a video track, make it not visible, and add a color clip to it. Then, you can copy and paste this color clip as-needed. You can change independently the color, duration, and name of these color clips as well. There are some finer points of that you might want to look into. For example, today if you double-click a clip it selects and seeks to its start (good). However, that does not work when you double-click the clip’s trim handle on the left or right edge of the clip. That makes using a short color clip as a marker less usable.
I tried to fix it by adding #include <QtGlobal> in qimage_wrapper.cpp but the script complains about local changes.
Is there a way to disable local changes check ? (in the meanwhile I’ve added a commit but this is not really clean)
My first guess would be that it is not finding the QtGlobal header file it needs.
Do you have this file in exactly this location? /home/bruno/Qt/5.15.1/gcc_64/include/QtCore/QtGlobal
If not, you should download and install Qt from the Qt website and install in your home directory.
If you have gotten this far in the process, you can flop these around so that it quits trying to download the code every time:
ACTION_GET_COMPILE_INSTALL=0
ACTION_COMPILE_INSTALL=1
I tried this but I didn’t noticed any difference: I still have to rm -rf ~/shotcut/src/bigsh0t; rm -rf ~/shotcut/src/nv-codec-headers before launching the script to workaround the git changes error, and I’m still waiting for a time (that appears to be infinite :s) for tar --exclude-vcs -cJf /home/bruno/shotcut/src.txz src command to achieve (why a tar is made before compilation ?), then still waiting for h264, libavfilter and so to compile.
The fact that you use a custom script instead of standard tools make the compilation really complex, and the comprehension of the script is really not easy (I hope the main Shotcut code is more documented ).
Yes I took notes of all that I’ve done to make some notes somewhere. But I’d absolutely not be able to write anything about those script’s globals as it’s really obscure to me.
This makes me think that your configuration file is not working. Please recheck the instructions here:
Setting ACTION_GET_COMPILE_INSTALL=0 will cause it to not download (clone) sources
Setting ARCHIVE=0 will cause it to skip the tar step.
You should have two files in a directory:
build-shotcut.sh
build-shotcut.conf
Within that directory, run ./build-shotcut.sh
build-shotcut.sh will load the parameters from build-shotcut.conf
Some inspection may be required to determine why that is not working for you.
You should set your expectations now so you are no disappointed later. Shotcut does not have an army of contributors. So there is not a lot of convenience available in scripting and documentation. But Dan and I are happy to help people who put in a reasonable effort themselves (as you are now). We genuinely welcome help in this area.