Solved How to share a package ?

Nicola Mingotti

Well-Known Member

Reaction score: 138
Messages: 361

Hi,

Yesterday i tried to install ffmpeg in a FreeBSD-11.1 in a BeagleBone Black.
The package is missing, this is a bit of a problem because BBB are very small manchines.

Anyhow, I am tring to compile it from ports.

Now, the question is, supposing the compilation of the port will succeed how
could I share the package version of what i compiled ?

Bye
Nicola
 
OP
OP
Nicola Mingotti

Nicola Mingotti

Well-Known Member

Reaction score: 138
Messages: 361

Ok, after that, is there a way i can submit the package to the "FreeBSD repository".
That would help other people needing the same package.
 

ShelLuser

Son of Beastie

Reaction score: 1,693
Messages: 3,512

Ok, after that, is there a way i can submit the package to the "FreeBSD repository".
That would help other people needing the same package.
No, on both questions. There's no way for that and it wouldn't help other people either. You're assuming that your setup is the same as theirs.

If you need premade packages then don't install using the Ports collection but rely on binaries instead. So, for example, use # pkg install ffmpeg to install it. If you wish to share a package for another server you have a few options... Either place it online somewhere so that it can be accessed using pkg add (the pkg command also supports HTTP and FTP for example), or set up a repository of your own (see pkg-repo(8)). A repository can help if you also need to deal with dependencies and such.

(edit)

Which is actually also an important thing to keep in mind: just sharing the package itself might not be enough. For example:
Code:
peter@zefiris:/home/peter $ pkg info -dx ffmpeg- | wc -l
      21
peter@zefiris:/home/peter $ pkg info -ox ffmpeg-
ffmpeg-4.0.1,1                 multimedia/ffmpeg
Here you can see that multimedia/ffmpeg has 21 dependencies. In other words: just sharing the ffmpeg package would not be enough for it to be used on another machine, you'd also need to provide the 21 dependencies.
 

SirDice

Administrator
Staff member
Administrator
Moderator

Reaction score: 7,183
Messages: 29,471

There are typically two reasons why there's no package. The first is build failures, if the port fails to build (for whatever reason) there would obviously not be a package. Another, very important, reason why there's no package is licensing. Some ports are not allowed to be redistributed in binary form.
 
OP
OP
Nicola Mingotti

Nicola Mingotti

Well-Known Member

Reaction score: 138
Messages: 361

SirDice , it must be the first reason i.e. difficulties in compiling. It can't be license, because i have ffmpeg package in amd64, but not in ARM.

ShelLuser ,
1] I was already planning to provide all packages for whatever it takes to have ffmpeg installable. E.g. I see "opencv-code" has not a package (in ARM) and it is in the dependencies list. That is what i am compiling right now. [unfortunately opencv-code has other 30 deps]

2] pkg-repo, ok, interesting.

3] What you tell me surprises me a bit. Then, all packages built centrally by some FreeBSD group of people ?
 

Phishfry

Son of Beastie

Reaction score: 1,206
Messages: 3,497

But I do want to note that the FreeBSD Arm package repository for 'latest' is behind amd64 builds 'latest'.
They are lagging quite a bit. So you are best building from ports if conflicts. I dunno whats up.
Probably because of all the Arm breakage it is a longer batch to run on the clusters. Maybe less important, I don't know.
I chalk it up to Teir 2 and just am happy we have an Arm repository to use.
 
OP
OP
Nicola Mingotti

Nicola Mingotti

Well-Known Member

Reaction score: 138
Messages: 361

I see, thank you all for clarifications.

Then I have a last question, it is ok for me to compile ports but I would
like to do the following:
1] Check a port (e.g. ffmpeg) dependencies recursively and install whatever is possible via package
( i am aware that it is not reccomended to mix ports and packages)

2] Install the remaining parts compiling ports.

As far as you know is there a way to achieve this ?
I could script the thing myself but it seems not trivial at first sight.
 

Phishfry

Son of Beastie

Reaction score: 1,206
Messages: 3,497

There are logs you can look at for the FreeBSD package building cluster that uses Poudiere.

Normally that is what I would say you need to do. Build 'off platform' with a Poudiere package building box.

Problem is if the port is broke for the FreeBSD package builder is is going to be broke for you too.
So you need to either wait until fixed or fix it yourself.
Start by looking at the pacakgebuilder for Arm log. See if ff-mpeg is really the cuplrit.
Could be a dependency.
 

SirDice

Administrator
Staff member
Administrator
Moderator

Reaction score: 7,183
Messages: 29,471

1] Check a port (e.g. ffmpeg) dependencies recursively and install whatever is possible via package
( I am aware that it is not reccomended to mix ports and packages)
If you do do this (your reasoning is quite understandable) make sure you're using the latest package branch. I'm not sure what the default is on ARM but for amd64/i386 -RELEASE versions the default is set to use the quarterly packages.
 

Phishfry

Son of Beastie

Reaction score: 1,206
Messages: 3,497

So the FreeBSD package builder log is just good for the clues as to what is broke.
From that search for PR's for the broken port. Look for patches.
If none then goto ports tree (On Arm) and try and manually build and fix that port.
 
OP
OP
Nicola Mingotti

Nicola Mingotti

Well-Known Member

Reaction score: 138
Messages: 361

Ok, i made a mess, for some reason eMMC got full, even if i put ports into the SDcard.
System does not boot, doh-doh-doh. Ok, i will let you know if i can compile this thing,
for the moment i need to boot;)
 
OP
OP
Nicola Mingotti

Nicola Mingotti

Well-Known Member

Reaction score: 138
Messages: 361

So, guys, I would like to let you know how it is advancing.

1] I am using FreeBSD-11.1 booting from a 16GB SDcard, in eMMC (4GB) there
was not enough space at all to do this business.

2] These is the problamatic (non-existent) packages tree
- ffmpeg [no package]
- - opencv-core [no package]
- - - tesseract [no package] ===> in compile right now
- - - - leptonica [no package[ ===> hurray, compiled !

3] I am resolving all depencies i can via packages, that is, for example, before
compiling leptonica port i installed manually all package that are necessary for this port.

Temporary statement. It is not necessarily true that a non available package implies you can not compile it yourself from the port. Indeed it worked for me in the case of leptonica. I have not modifyed the makefiles.
 
OP
OP
Nicola Mingotti

Nicola Mingotti

Well-Known Member

Reaction score: 138
Messages: 361

Hi,

I was able to complie all ports without modification to makefiles.
I will check today if the thing actually works but i write this message to show you
something different.

This night the computer was left compiling "ffmpeg", this moring when i checked i found this:
Code:
install -m 755 libavcodec/libavcodec.so "/usr/ports/multimedia/ffmpeg/work/stage/usr/local/lib/libavcodec.so.58.18.100"
strip "/usr/ports/multimedia/ffmpeg/work/stage/usr/local/lib/libavcodec.so.58.18.100"
strip: elf_update() failed: I/O error: No space left on device
gmake[1]: *** [ffbuild/library.mak:104: install-libavcodec-shared] Error 1
gmake[1]: Leaving directory '/usr/ports/multimedia/ffmpeg/work/ffmpeg-4.0.1'
*** Error code 2

Stop.
I checked with "df" there was still a lot (3G) of space on the device.
So i rebooted and recompiled, it worked !

My question is, have you ever seen something similar? That system complaining
the disk is full when it actually is not ? May be it is related to the fact that the disk is a SDCard ?
 

SirDice

Administrator
Staff member
Administrator
Moderator

Reaction score: 7,183
Messages: 29,471

My question is, have you ever seen something similar? That system complaining
the disk is full when it actually is not ?
Yes, I've had it happen. Usually happens when some process is keeping a file open but the actual file was removed. Because the process kept the file open it was never really removed, it just didn't show up any more. Killing that process (or simply rebooting) freed the file and thus the space.
 

ShelLuser

Son of Beastie

Reaction score: 1,693
Messages: 3,512

Also noteworthy is that UFS reserves some diskspace as a means of buffer in case of accidents. From the top of my head this is 8 or 10% of the available diskspace, see both newfs(8) and tunefs(8) for more on that.
 
OP
OP
Nicola Mingotti

Nicola Mingotti

Well-Known Member

Reaction score: 138
Messages: 361

ok, the thinkg is working ... but there are issues because ffmepg in a transition state, i will open another post specifically for that.

bye
 
Top