# Help with pkg +MANIFEST



## Neal Horman (Jan 25, 2017)

Hi all, I need some help with my +MANIFEST for building a pkg for a private repo.

I have a 32bit binary that does work on i386 and amd64 w/lib32.

What are the proper values for "abi":"" and "arch":"" to persuade pkg that the binary is acceptable in/on/for both FreeBSD:11:i386 and FeeBSD:11:amd64 ?

TIA

Neal


----------



## cpm@ (Jan 26, 2017)

Neal Horman said:


> Hi all, I need some help with my +MANIFEST for building a pkg for a private repo.
> 
> I have a 32bit binary that does work on i386 and amd64 w/lib32.
> 
> What are the proper values for "abi":"" and "arch":"" to persuade pkg that the binary is acceptable in/on/for both FreeBSD:11:i386 and FeeBSD:11:amd64 ?



That would be as follows:

```
abi = "FreeBSD:11:*";
arch = "freebsd:11:*";
```
Read for more details:
https://lists.freebsd.org/pipermail/freebsd-questions/2016-July/272838.html


----------



## Neal Horman (Jan 28, 2017)

cpm@ said:


> That would be as follows:
> 
> ```
> abi = "FreeBSD:11:*";
> ...



First, thanks for the response. I didn't realize that you responded till now, since I didn't receive an email notification... hmm.. I'll have to suss that out...

Second, I did look at the link you posted. That appears to be referencing, non-binary / scripting only packages, which is useful for another pkg that I have, but not here... see next.

Third, previous to this posting, I did quite a bit of googling, and post-posting, source code reading, testing (trial and error), lather, rinse, repeat and did distill out the information you listed, and which was also in the linked article.

The problem with this, is that my pkg contains binary elements, and what I'm trying to do is make the pkg applicable to 
	
	



```
FreeBSD:11:x86:*
```
, which doesn't seem to work, or 
	
	



```
FreeBSD:11:(i386|amd64)
```
 which will never work, and not any of the other ABIs (sun, arm, ...), which I believe (haven't tested to be sure) 
	
	



```
FreeBSD:11:*
```
 would match.

From what I can tell, there is no coping mechanism to let you say, "this family of processor and either 32 or 64 bit". The ABI / ARCH mechanism pattern matching looks like it's based off of fnmatch(), which provides the simple file system globing matching used in shells, instead of regcomp() which would provide a rich pattern matching ability.

Guess I was hoping for a simple magic bullet... sigh.

I've resorted to doing what everyone else is doing, building a separate pkg for both platforms, just so that fnmatch() returns true.

<rant>
It's just plain silly, it's a lot of wasted cpu cycles, extra disk space in the pkg repo, and human cycles to manage them, when one binary could function for more than one ABI.
<rant/>

Now, I'm trying to understand why pre-upgrade and post-upgrade scripts aren't working... Documentation for this stuff is VERY light and sparse... sigh

Again, thanks for taking the time to answer.

Regards


----------

