[Scons-users] tagging files (RPM packaging)
Werner Reisberger
wr at pure.ch
Sun Jan 2 05:52:10 EST 2022
On 2022-01-01 23:00, Bill Deegan wrote:
> Can you try:
>
> Tag('file2.txt', 'DOC')
This gives me: AttributeError: 'SConsEnvironment' object has no
attribute 'Tag':
Calling
env.Tag('file2.txt', 'DOC')
gives: AttributeError: 'str' object has no attribute 'Tag':
Please find below an example of a basic SConstruct file which should
make the behaviour more clear. I am working on Redhat 7 and Centos 8
with python 3.6.8 and SCons v4.3.0.
The test directory looks like
bin/ etc/ man/ SConstruct
../bin: ./etc: ./man:
a.sh c.conf m.txt
Running scons with the below SConstruct produces a rpm with all three
files. The bin/a.sh has the right file attributes when installed. I
don't replicate the full directory structure but for the sake of
demonstrating the tagging behaviour this should be sufficient.
I could open a github project for this but I would rather offer to
extend the existing tagging test
(https://github.com/SCons/scons/blob/master/test/packaging/rpm/tagging.py)
which will give the opportunity to dive a bit into the python code :)
Basically I would like to use SCons to build a couple of RPM's which are
currently build by make. It's mostly precompiled stuff.
--Werner
#################################################################################################
env = Environment(tools=["default", "packaging"])
mma = File([ "bin/a.sh", "etc/c.conf", "man/m.txt" ])
env.Install("/var/tmp/tagtest", mma)
# following tagging works
env.Tag(mma[0], UNIX_ATTR='(755, root, adm)')
env.Tag(mma[1], CONFIG=' ') # adds an extra space between attribute and
filename
env.Tag(mma[2], DOC=' ')
# should work according to docs but does not
# env.Tag("bin/a.sh", UNIX_ATTR='0o755')
# env.Tag("etc/c.conf", CONFIG)
# env.Tag("man/m.txt", DOC)
env.Package(
NAME='tagtest',
VERSION='1.0.0',
PACKAGEVERSION=0,
LICENSE="gpl",
PACKAGETYPE="rpm",
SUMMARY="Check tags",
DESCRIPTION="test basics",
X_RPM_GROUP="build/tools",
)
###################################################################################################
> On Sat, Jan 1, 2022 at 1:57 PM Bill Deegan <bill at baddogconsulting.com>
> wrote:
>
>> Also:
>> Which version of Python?
>>
>> Which version of SCons?
>> Which OS and version are you running?
>>
>> Thanks,
>> Bill
>>
>> On Sat, Jan 1, 2022 at 1:55 PM Bill Deegan
>> <bill at baddogconsulting.com> wrote:
>>
>> Werner,
>>
>> Can you make a sample github repo with all the attributes you're
>> trying to use, and an example rpmspec file?
>>
>> That should provide enough information to make sure we fix the issue
>> you're running into.
>>
>> Thanks,
>> Bill
>> SCons Project Co-Manager
>>
>> On Sat, Jan 1, 2022 at 9:45 AM Mats Wichmann <mats at wichmann.us>
>> wrote:
>> On 1/1/22 07:16, Werner Reisberger wrote:
>>> The RPM packages I am trying to build with SCons require certain
>> tags
>>> but most of the tags does not work out of the box.
>>>
>>> E.g. The SCons man page proposes the following call to tag a file
>> with
>>> the DOC attribute:
>>>
>>> # marks file2.txt to be a documentation file
>>> Tag('file2.txt', DOC)
>>>
>>> This does not work. I have to say
>>>
>>> Tag('file2.txt', DOC=' ')
>>>
>>> That's because the tag is defined as
>>>
>>> 'PACKAGING_DOC' : '%%doc %s',
>>>
>>> but DOC attributes in RPM spec files have the format
>>>
>>> %doc file_name
>>>
>>> It's different with the UNIX_ATTR tag where file mode and
>> owner/group
>>> have to be appended like
>>>
>>> %attr(644, root, adm) /etc/yp.conf
>>>
>>> The tag command for UNIX_ATTR in the SCons man page also doesn't
>> work:
>>>
>>> # makes sure the built library will be installed with
>> 644 file
>>> access mode
>>> Tag(Library('lib.c'), UNIX_ATTR="0o644")
>>>
>>> You need to follow the RPM specification
>>>
>>
> (http://ftp.rpm.org/max-rpm/s1-rpm-anywhere-specifying-file-attributes.html
>> [1])
>>>
>>>
>>> However the tagging test script on GitHub does it right.
>>>
>>> Like the DOC attribute the following tag definitions need to be
>> fixed:
>>>
>>> 'PACKAGING_CONFIG' : '%%config
>> %s', # =>
>>> '%%config'
>>> 'PACKAGING_CONFIG_NOREPLACE' :
>> '%%config(noreplace) %s', # =>
>>> '%%config(noreplace)'
>>> 'PACKAGING_UNIX_ATTR' : '%%attr
>> %s', # =>
>>> '%%attr(%s)'
>>> 'PACKAGING_LANG_' :
>> '%%lang(%s) %s', # =>
>>> '%%lang(%s)'
>>> 'PACKAGING_X_RPM_VERIFY' : '%%verify
>> %s', # =>
>>> '%%verify (%s)' ?
>>> 'PACKAGING_X_RPM_DIR' : '%%dir
>> %s', # =>
>>> '%%dir'
>>> 'PACKAGING_X_RPM_DOCDIR' : '%%docdir
>> %s', # =>
>>> '%%docdir'
>>> 'PACKAGING_X_RPM_GHOST' : '%%ghost %s',
>> } # =>
>>> '%%ghost'
>>>
>>> Unfortunately my python knowledge is rather basic but let me know
>> how I
>>> can help.
>>
>> Looks like this code hasn't been touched in a very long time
>> (except for
>> some fiddling of docstrings and newer Python syntax, it's largely
>> unchanged since 2007) . One wonders if it's actually being used -
>> you
>> may be a trailblazer here! Not sure if the actual problem is the
>> tag
>> specifications or the tag "compiler" in the code, we should be able
>> to
>> figure it out though. Help could be as simple as providing a
>> minimal
>> SConscript that shows the problem.
>>
>>>
>>> Happy 2022 and keep on going with your great work!
>>>
>>
>> Thanks!
>>
>> _______________________________________________
>> Scons-users mailing list
>> Scons-users at scons.org
>> https://pairlist4.pair.net/mailman/listinfo/scons-users [2]
>
>
> Links:
> ------
> [1]
> http://ftp.rpm.org/max-rpm/s1-rpm-anywhere-specifying-file-attributes.html
> [2] https://pairlist4.pair.net/mailman/listinfo/scons-users
>
> _______________________________________________
> Scons-users mailing list
> Scons-users at scons.org
> https://pairlist4.pair.net/mailman/listinfo/scons-users
More information about the Scons-users
mailing list