Re: Any way to prevent do-extract chmod and chown?

2018-06-28 Thread Freddie Cash
On Thu, Jun 28, 2018, 3:06 PM Mathieu Arnold,  wrote:

> On Thu, Jun 28, 2018 at 01:43:41PM -0400, Joseph Ward wrote:
> > Thank you.  I found that to be the case; even though changing the
> > "do-extract" target successfully staged the files and directories with
> > the original permissions, pkg create seems to strip them out again
> > without the pkg-plist additions.
> >
> > Are you aware of an easy/already existing command to create the
> > pkg-plist with the user/group/permissions items for each file, or is
> > that a script I'm going to have to write manually?  I'm currently using
> > the makeplist target as there are no subsitutions or anything else that
> > would screw up the default scenario.
>
> I am not aware of anything.  But if you already have "stuff" creating a
> big hierarchy with many users and groups, it may be easier to adapt
> "stuff" to generate a pkg-plist file, or maybe to split your ports into
> smaller, more manageable bits.
>
> make makeplist will give you a correct listing of files and
> directories, but as everything runs as a regular user, it cannot be
> aware of the users/groups you intend on using in the plist.
>

Isn't this something mtree can be used for?

Use it to generate a listing of the files, permissions, and ownership of a
tree, include the mtree output file in the port, and use a post-install
script to run mtree to set ownership/permission.

Cheers,
Freddie

Typos courtesy of my phone's keyboard.

>
___
freebsd-ports@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-ports
To unsubscribe, send any mail to "freebsd-ports-unsubscr...@freebsd.org"


Re: Any way to prevent do-extract chmod and chown?

2018-06-28 Thread Mathieu Arnold
On Thu, Jun 28, 2018 at 01:43:41PM -0400, Joseph Ward wrote:
> Thank you.  I found that to be the case; even though changing the
> "do-extract" target successfully staged the files and directories with
> the original permissions, pkg create seems to strip them out again
> without the pkg-plist additions.
> 
> Are you aware of an easy/already existing command to create the
> pkg-plist with the user/group/permissions items for each file, or is
> that a script I'm going to have to write manually?  I'm currently using
> the makeplist target as there are no subsitutions or anything else that
> would screw up the default scenario.

I am not aware of anything.  But if you already have "stuff" creating a
big hierarchy with many users and groups, it may be easier to adapt
"stuff" to generate a pkg-plist file, or maybe to split your ports into
smaller, more manageable bits.

make makeplist will give you a correct listing of files and
directories, but as everything runs as a regular user, it cannot be
aware of the users/groups you intend on using in the plist.

-- 
Mathieu Arnold


signature.asc
Description: PGP signature


Re: Any way to prevent do-extract chmod and chown?

2018-06-28 Thread Joseph Ward
Thank you.  I found that to be the case; even though changing the
"do-extract" target successfully staged the files and directories with
the original permissions, pkg create seems to strip them out again
without the pkg-plist additions.

Are you aware of an easy/already existing command to create the
pkg-plist with the user/group/permissions items for each file, or is
that a script I'm going to have to write manually?  I'm currently using
the makeplist target as there are no subsitutions or anything else that
would screw up the default scenario.

Thanks,

Joseph


On 06/28/2018 04:27, Mathieu Arnold wrote:
> On Wed, Jun 27, 2018 at 07:06:44PM -0400, Joseph Ward wrote:
>> Hi everyone,
>>
>> I'm creating some internal-only ports and I'm trying to maintain the
>> permissions and owners of the files present in the distfile.tar.gz when
>> they get packaged up for install.
>>
>> When I "make extract", the "do-extract" target is performing a chmod and
>> chown on everything, as seen from the following excerpt from the
>> bsd.port.mk file:
>>
>>
>> .if !target(do-extract)
>> do-extract: ${EXTRACT_WRKDIR}
>>     @for file in ${EXTRACT_ONLY}; do \
>>     if ! (cd ${EXTRACT_WRKDIR} && ${EXTRACT_CMD}
>> ${EXTRACT_BEFORE_ARGS} ${_DISTDIR}/$$file ${EXTRACT_AFTER_ARGS});\
>>     then \
>>     exit 1; \
>>     fi; \
>>     done
>>     @if [ ${UID} = 0 ]; then \
>>     ${CHMOD} -R ug-s ${WRKDIR}; \
>>     ${CHOWN} -R 0:0 ${WRKDIR}; \
>>     fi
>> .endif
>>
>>
>> Short of commenting those lines out (which I really don't want to do
>> because I have 0 idea why it's there or what I'd break with other ports)
>> is there any way at all to maintain the ownership of the files? 
> Building ports as root is a rare thing these days, most build tools
> build everything as a regular user (most of the time, nobody) so
> ownership of files in distribution files is not retained anyway.
>
> To set user/group/mode ownership in the resulting packages, you need to use
> the @user, @group and @mode keywords in the pkg-plist file. (or the @
> keyword if one file needs a specific user/group/mode.) See:
>
> https://www.freebsd.org/doc/en/books/porters-handbook/plist-keywords.html
>

___
freebsd-ports@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-ports
To unsubscribe, send any mail to "freebsd-ports-unsubscr...@freebsd.org"


Re: Any way to prevent do-extract chmod and chown?

2018-06-28 Thread Mathieu Arnold
On Wed, Jun 27, 2018 at 07:06:44PM -0400, Joseph Ward wrote:
> Hi everyone,
> 
> I'm creating some internal-only ports and I'm trying to maintain the
> permissions and owners of the files present in the distfile.tar.gz when
> they get packaged up for install.
> 
> When I "make extract", the "do-extract" target is performing a chmod and
> chown on everything, as seen from the following excerpt from the
> bsd.port.mk file:
> 
> 
> .if !target(do-extract)
> do-extract: ${EXTRACT_WRKDIR}
>     @for file in ${EXTRACT_ONLY}; do \
>     if ! (cd ${EXTRACT_WRKDIR} && ${EXTRACT_CMD}
> ${EXTRACT_BEFORE_ARGS} ${_DISTDIR}/$$file ${EXTRACT_AFTER_ARGS});\
>     then \
>     exit 1; \
>     fi; \
>     done
>     @if [ ${UID} = 0 ]; then \
>     ${CHMOD} -R ug-s ${WRKDIR}; \
>     ${CHOWN} -R 0:0 ${WRKDIR}; \
>     fi
> .endif
> 
> 
> Short of commenting those lines out (which I really don't want to do
> because I have 0 idea why it's there or what I'd break with other ports)
> is there any way at all to maintain the ownership of the files? 

Building ports as root is a rare thing these days, most build tools
build everything as a regular user (most of the time, nobody) so
ownership of files in distribution files is not retained anyway.

To set user/group/mode ownership in the resulting packages, you need to use
the @user, @group and @mode keywords in the pkg-plist file. (or the @
keyword if one file needs a specific user/group/mode.) See:

https://www.freebsd.org/doc/en/books/porters-handbook/plist-keywords.html

-- 
Mathieu Arnold


signature.asc
Description: PGP signature