forked from custom/rpm-config
Compare commits
No commits in common. "main" and "main" have entirely different histories.
@ -1,674 +0,0 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The GNU General Public License is a free, copyleft license for
|
||||
software and other kinds of works.
|
||||
|
||||
The licenses for most software and other practical works are designed
|
||||
to take away your freedom to share and change the works. By contrast,
|
||||
the GNU General Public License is intended to guarantee your freedom to
|
||||
share and change all versions of a program--to make sure it remains free
|
||||
software for all its users. We, the Free Software Foundation, use the
|
||||
GNU General Public License for most of our software; it applies also to
|
||||
any other work released this way by its authors. You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
them if you wish), that you receive source code or can get it if you
|
||||
want it, that you can change the software or use pieces of it in new
|
||||
free programs, and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to prevent others from denying you
|
||||
these rights or asking you to surrender the rights. Therefore, you have
|
||||
certain responsibilities if you distribute copies of the software, or if
|
||||
you modify it: responsibilities to respect the freedom of others.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must pass on to the recipients the same
|
||||
freedoms that you received. You must make sure that they, too, receive
|
||||
or can get the source code. And you must show them these terms so they
|
||||
know their rights.
|
||||
|
||||
Developers that use the GNU GPL protect your rights with two steps:
|
||||
(1) assert copyright on the software, and (2) offer you this License
|
||||
giving you legal permission to copy, distribute and/or modify it.
|
||||
|
||||
For the developers' and authors' protection, the GPL clearly explains
|
||||
that there is no warranty for this free software. For both users' and
|
||||
authors' sake, the GPL requires that modified versions be marked as
|
||||
changed, so that their problems will not be attributed erroneously to
|
||||
authors of previous versions.
|
||||
|
||||
Some devices are designed to deny users access to install or run
|
||||
modified versions of the software inside them, although the manufacturer
|
||||
can do so. This is fundamentally incompatible with the aim of
|
||||
protecting users' freedom to change the software. The systematic
|
||||
pattern of such abuse occurs in the area of products for individuals to
|
||||
use, which is precisely where it is most unacceptable. Therefore, we
|
||||
have designed this version of the GPL to prohibit the practice for those
|
||||
products. If such problems arise substantially in other domains, we
|
||||
stand ready to extend this provision to those domains in future versions
|
||||
of the GPL, as needed to protect the freedom of users.
|
||||
|
||||
Finally, every program is threatened constantly by software patents.
|
||||
States should not allow patents to restrict development and use of
|
||||
software on general-purpose computers, but in those that do, we wish to
|
||||
avoid the special danger that patents applied to a free program could
|
||||
make it effectively proprietary. To prevent this, the GPL assures that
|
||||
patents cannot be used to render the program non-free.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU General Public License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||
works, such as semiconductor masks.
|
||||
|
||||
"The Program" refers to any copyrightable work licensed under this
|
||||
License. Each licensee is addressed as "you". "Licensees" and
|
||||
"recipients" may be individuals or organizations.
|
||||
|
||||
To "modify" a work means to copy from or adapt all or part of the work
|
||||
in a fashion requiring copyright permission, other than the making of an
|
||||
exact copy. The resulting work is called a "modified version" of the
|
||||
earlier work or a work "based on" the earlier work.
|
||||
|
||||
A "covered work" means either the unmodified Program or a work based
|
||||
on the Program.
|
||||
|
||||
To "propagate" a work means to do anything with it that, without
|
||||
permission, would make you directly or secondarily liable for
|
||||
infringement under applicable copyright law, except executing it on a
|
||||
computer or modifying a private copy. Propagation includes copying,
|
||||
distribution (with or without modification), making available to the
|
||||
public, and in some countries other activities as well.
|
||||
|
||||
To "convey" a work means any kind of propagation that enables other
|
||||
parties to make or receive copies. Mere interaction with a user through
|
||||
a computer network, with no transfer of a copy, is not conveying.
|
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices"
|
||||
to the extent that it includes a convenient and prominently visible
|
||||
feature that (1) displays an appropriate copyright notice, and (2)
|
||||
tells the user that there is no warranty for the work (except to the
|
||||
extent that warranties are provided), that licensees may convey the
|
||||
work under this License, and how to view a copy of this License. If
|
||||
the interface presents a list of user commands or options, such as a
|
||||
menu, a prominent item in the list meets this criterion.
|
||||
|
||||
1. Source Code.
|
||||
|
||||
The "source code" for a work means the preferred form of the work
|
||||
for making modifications to it. "Object code" means any non-source
|
||||
form of a work.
|
||||
|
||||
A "Standard Interface" means an interface that either is an official
|
||||
standard defined by a recognized standards body, or, in the case of
|
||||
interfaces specified for a particular programming language, one that
|
||||
is widely used among developers working in that language.
|
||||
|
||||
The "System Libraries" of an executable work include anything, other
|
||||
than the work as a whole, that (a) is included in the normal form of
|
||||
packaging a Major Component, but which is not part of that Major
|
||||
Component, and (b) serves only to enable use of the work with that
|
||||
Major Component, or to implement a Standard Interface for which an
|
||||
implementation is available to the public in source code form. A
|
||||
"Major Component", in this context, means a major essential component
|
||||
(kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to
|
||||
produce the work, or an object code interpreter used to run it.
|
||||
|
||||
The "Corresponding Source" for a work in object code form means all
|
||||
the source code needed to generate, install, and (for an executable
|
||||
work) run the object code and to modify the work, including scripts to
|
||||
control those activities. However, it does not include the work's
|
||||
System Libraries, or general-purpose tools or generally available free
|
||||
programs which are used unmodified in performing those activities but
|
||||
which are not part of the work. For example, Corresponding Source
|
||||
includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically
|
||||
linked subprograms that the work is specifically designed to require,
|
||||
such as by intimate data communication or control flow between those
|
||||
subprograms and other parts of the work.
|
||||
|
||||
The Corresponding Source need not include anything that users
|
||||
can regenerate automatically from other parts of the Corresponding
|
||||
Source.
|
||||
|
||||
The Corresponding Source for a work in source code form is that
|
||||
same work.
|
||||
|
||||
2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of
|
||||
copyright on the Program, and are irrevocable provided the stated
|
||||
conditions are met. This License explicitly affirms your unlimited
|
||||
permission to run the unmodified Program. The output from running a
|
||||
covered work is covered by this License only if the output, given its
|
||||
content, constitutes a covered work. This License acknowledges your
|
||||
rights of fair use or other equivalent, as provided by copyright law.
|
||||
|
||||
You may make, run and propagate covered works that you do not
|
||||
convey, without conditions so long as your license otherwise remains
|
||||
in force. You may convey covered works to others for the sole purpose
|
||||
of having them make modifications exclusively for you, or provide you
|
||||
with facilities for running those works, provided that you comply with
|
||||
the terms of this License in conveying all material for which you do
|
||||
not control copyright. Those thus making or running the covered works
|
||||
for you must do so exclusively on your behalf, under your direction
|
||||
and control, on terms that prohibit them from making any copies of
|
||||
your copyrighted material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under
|
||||
the conditions stated below. Sublicensing is not allowed; section 10
|
||||
makes it unnecessary.
|
||||
|
||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological
|
||||
measure under any applicable law fulfilling obligations under article
|
||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||
similar laws prohibiting or restricting circumvention of such
|
||||
measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid
|
||||
circumvention of technological measures to the extent such circumvention
|
||||
is effected by exercising rights under this License with respect to
|
||||
the covered work, and you disclaim any intention to limit operation or
|
||||
modification of the work as a means of enforcing, against the work's
|
||||
users, your or third parties' legal rights to forbid circumvention of
|
||||
technological measures.
|
||||
|
||||
4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey verbatim copies of the Program's source code as you
|
||||
receive it, in any medium, provided that you conspicuously and
|
||||
appropriately publish on each copy an appropriate copyright notice;
|
||||
keep intact all notices stating that this License and any
|
||||
non-permissive terms added in accord with section 7 apply to the code;
|
||||
keep intact all notices of the absence of any warranty; and give all
|
||||
recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey,
|
||||
and you may offer support or warranty protection for a fee.
|
||||
|
||||
5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to
|
||||
produce it from the Program, in the form of source code under the
|
||||
terms of section 4, provided that you also meet all of these conditions:
|
||||
|
||||
a) The work must carry prominent notices stating that you modified
|
||||
it, and giving a relevant date.
|
||||
|
||||
b) The work must carry prominent notices stating that it is
|
||||
released under this License and any conditions added under section
|
||||
7. This requirement modifies the requirement in section 4 to
|
||||
"keep intact all notices".
|
||||
|
||||
c) You must license the entire work, as a whole, under this
|
||||
License to anyone who comes into possession of a copy. This
|
||||
License will therefore apply, along with any applicable section 7
|
||||
additional terms, to the whole of the work, and all its parts,
|
||||
regardless of how they are packaged. This License gives no
|
||||
permission to license the work in any other way, but it does not
|
||||
invalidate such permission if you have separately received it.
|
||||
|
||||
d) If the work has interactive user interfaces, each must display
|
||||
Appropriate Legal Notices; however, if the Program has interactive
|
||||
interfaces that do not display Appropriate Legal Notices, your
|
||||
work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent
|
||||
works, which are not by their nature extensions of the covered work,
|
||||
and which are not combined with it such as to form a larger program,
|
||||
in or on a volume of a storage or distribution medium, is called an
|
||||
"aggregate" if the compilation and its resulting copyright are not
|
||||
used to limit the access or legal rights of the compilation's users
|
||||
beyond what the individual works permit. Inclusion of a covered work
|
||||
in an aggregate does not cause this License to apply to the other
|
||||
parts of the aggregate.
|
||||
|
||||
6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms
|
||||
of sections 4 and 5, provided that you also convey the
|
||||
machine-readable Corresponding Source under the terms of this License,
|
||||
in one of these ways:
|
||||
|
||||
a) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by the
|
||||
Corresponding Source fixed on a durable physical medium
|
||||
customarily used for software interchange.
|
||||
|
||||
b) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by a
|
||||
written offer, valid for at least three years and valid for as
|
||||
long as you offer spare parts or customer support for that product
|
||||
model, to give anyone who possesses the object code either (1) a
|
||||
copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical
|
||||
medium customarily used for software interchange, for a price no
|
||||
more than your reasonable cost of physically performing this
|
||||
conveying of source, or (2) access to copy the
|
||||
Corresponding Source from a network server at no charge.
|
||||
|
||||
c) Convey individual copies of the object code with a copy of the
|
||||
written offer to provide the Corresponding Source. This
|
||||
alternative is allowed only occasionally and noncommercially, and
|
||||
only if you received the object code with such an offer, in accord
|
||||
with subsection 6b.
|
||||
|
||||
d) Convey the object code by offering access from a designated
|
||||
place (gratis or for a charge), and offer equivalent access to the
|
||||
Corresponding Source in the same way through the same place at no
|
||||
further charge. You need not require recipients to copy the
|
||||
Corresponding Source along with the object code. If the place to
|
||||
copy the object code is a network server, the Corresponding Source
|
||||
may be on a different server (operated by you or a third party)
|
||||
that supports equivalent copying facilities, provided you maintain
|
||||
clear directions next to the object code saying where to find the
|
||||
Corresponding Source. Regardless of what server hosts the
|
||||
Corresponding Source, you remain obligated to ensure that it is
|
||||
available for as long as needed to satisfy these requirements.
|
||||
|
||||
e) Convey the object code using peer-to-peer transmission, provided
|
||||
you inform other peers where the object code and Corresponding
|
||||
Source of the work are being offered to the general public at no
|
||||
charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded
|
||||
from the Corresponding Source as a System Library, need not be
|
||||
included in conveying the object code work.
|
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any
|
||||
tangible personal property which is normally used for personal, family,
|
||||
or household purposes, or (2) anything designed or sold for incorporation
|
||||
into a dwelling. In determining whether a product is a consumer product,
|
||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||
product received by a particular user, "normally used" refers to a
|
||||
typical or common use of that class of product, regardless of the status
|
||||
of the particular user or of the way in which the particular user
|
||||
actually uses, or expects or is expected to use, the product. A product
|
||||
is a consumer product regardless of whether the product has substantial
|
||||
commercial, industrial or non-consumer uses, unless such uses represent
|
||||
the only significant mode of use of the product.
|
||||
|
||||
"Installation Information" for a User Product means any methods,
|
||||
procedures, authorization keys, or other information required to install
|
||||
and execute modified versions of a covered work in that User Product from
|
||||
a modified version of its Corresponding Source. The information must
|
||||
suffice to ensure that the continued functioning of the modified object
|
||||
code is in no case prevented or interfered with solely because
|
||||
modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or
|
||||
specifically for use in, a User Product, and the conveying occurs as
|
||||
part of a transaction in which the right of possession and use of the
|
||||
User Product is transferred to the recipient in perpetuity or for a
|
||||
fixed term (regardless of how the transaction is characterized), the
|
||||
Corresponding Source conveyed under this section must be accompanied
|
||||
by the Installation Information. But this requirement does not apply
|
||||
if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has
|
||||
been installed in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a
|
||||
requirement to continue to provide support service, warranty, or updates
|
||||
for a work that has been modified or installed by the recipient, or for
|
||||
the User Product in which it has been modified or installed. Access to a
|
||||
network may be denied when the modification itself materially and
|
||||
adversely affects the operation of the network or violates the rules and
|
||||
protocols for communication across the network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided,
|
||||
in accord with this section must be in a format that is publicly
|
||||
documented (and with an implementation available to the public in
|
||||
source code form), and must require no special password or key for
|
||||
unpacking, reading or copying.
|
||||
|
||||
7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this
|
||||
License by making exceptions from one or more of its conditions.
|
||||
Additional permissions that are applicable to the entire Program shall
|
||||
be treated as though they were included in this License, to the extent
|
||||
that they are valid under applicable law. If additional permissions
|
||||
apply only to part of the Program, that part may be used separately
|
||||
under those permissions, but the entire Program remains governed by
|
||||
this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option
|
||||
remove any additional permissions from that copy, or from any part of
|
||||
it. (Additional permissions may be written to require their own
|
||||
removal in certain cases when you modify the work.) You may place
|
||||
additional permissions on material, added by you to a covered work,
|
||||
for which you have or can give appropriate copyright permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you
|
||||
add to a covered work, you may (if authorized by the copyright holders of
|
||||
that material) supplement the terms of this License with terms:
|
||||
|
||||
a) Disclaiming warranty or limiting liability differently from the
|
||||
terms of sections 15 and 16 of this License; or
|
||||
|
||||
b) Requiring preservation of specified reasonable legal notices or
|
||||
author attributions in that material or in the Appropriate Legal
|
||||
Notices displayed by works containing it; or
|
||||
|
||||
c) Prohibiting misrepresentation of the origin of that material, or
|
||||
requiring that modified versions of such material be marked in
|
||||
reasonable ways as different from the original version; or
|
||||
|
||||
d) Limiting the use for publicity purposes of names of licensors or
|
||||
authors of the material; or
|
||||
|
||||
e) Declining to grant rights under trademark law for use of some
|
||||
trade names, trademarks, or service marks; or
|
||||
|
||||
f) Requiring indemnification of licensors and authors of that
|
||||
material by anyone who conveys the material (or modified versions of
|
||||
it) with contractual assumptions of liability to the recipient, for
|
||||
any liability that these contractual assumptions directly impose on
|
||||
those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further
|
||||
restrictions" within the meaning of section 10. If the Program as you
|
||||
received it, or any part of it, contains a notice stating that it is
|
||||
governed by this License along with a term that is a further
|
||||
restriction, you may remove that term. If a license document contains
|
||||
a further restriction but permits relicensing or conveying under this
|
||||
License, you may add to a covered work material governed by the terms
|
||||
of that license document, provided that the further restriction does
|
||||
not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you
|
||||
must place, in the relevant source files, a statement of the
|
||||
additional terms that apply to those files, or a notice indicating
|
||||
where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the
|
||||
form of a separately written license, or stated as exceptions;
|
||||
the above requirements apply either way.
|
||||
|
||||
8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly
|
||||
provided under this License. Any attempt otherwise to propagate or
|
||||
modify it is void, and will automatically terminate your rights under
|
||||
this License (including any patent licenses granted under the third
|
||||
paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your
|
||||
license from a particular copyright holder is reinstated (a)
|
||||
provisionally, unless and until the copyright holder explicitly and
|
||||
finally terminates your license, and (b) permanently, if the copyright
|
||||
holder fails to notify you of the violation by some reasonable means
|
||||
prior to 60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, you do not qualify to receive new licenses for the same
|
||||
material under section 10.
|
||||
|
||||
9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or
|
||||
run a copy of the Program. Ancillary propagation of a covered work
|
||||
occurring solely as a consequence of using peer-to-peer transmission
|
||||
to receive a copy likewise does not require acceptance. However,
|
||||
nothing other than this License grants you permission to propagate or
|
||||
modify any covered work. These actions infringe copyright if you do
|
||||
not accept this License. Therefore, by modifying or propagating a
|
||||
covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically
|
||||
receives a license from the original licensors, to run, modify and
|
||||
propagate that work, subject to this License. You are not responsible
|
||||
for enforcing compliance by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an
|
||||
organization, or substantially all assets of one, or subdividing an
|
||||
organization, or merging organizations. If propagation of a covered
|
||||
work results from an entity transaction, each party to that
|
||||
transaction who receives a copy of the work also receives whatever
|
||||
licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the
|
||||
Corresponding Source of the work from the predecessor in interest, if
|
||||
the predecessor has it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the
|
||||
rights granted or affirmed under this License. For example, you may
|
||||
not impose a license fee, royalty, or other charge for exercise of
|
||||
rights granted under this License, and you may not initiate litigation
|
||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||
any patent claim is infringed by making, using, selling, offering for
|
||||
sale, or importing the Program or any portion of it.
|
||||
|
||||
11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this
|
||||
License of the Program or a work on which the Program is based. The
|
||||
work thus licensed is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims
|
||||
owned or controlled by the contributor, whether already acquired or
|
||||
hereafter acquired, that would be infringed by some manner, permitted
|
||||
by this License, of making, using, or selling its contributor version,
|
||||
but do not include claims that would be infringed only as a
|
||||
consequence of further modification of the contributor version. For
|
||||
purposes of this definition, "control" includes the right to grant
|
||||
patent sublicenses in a manner consistent with the requirements of
|
||||
this License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||
patent license under the contributor's essential patent claims, to
|
||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||
propagate the contents of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express
|
||||
agreement or commitment, however denominated, not to enforce a patent
|
||||
(such as an express permission to practice a patent or covenant not to
|
||||
sue for patent infringement). To "grant" such a patent license to a
|
||||
party means to make such an agreement or commitment not to enforce a
|
||||
patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license,
|
||||
and the Corresponding Source of the work is not available for anyone
|
||||
to copy, free of charge and under the terms of this License, through a
|
||||
publicly available network server or other readily accessible means,
|
||||
then you must either (1) cause the Corresponding Source to be so
|
||||
available, or (2) arrange to deprive yourself of the benefit of the
|
||||
patent license for this particular work, or (3) arrange, in a manner
|
||||
consistent with the requirements of this License, to extend the patent
|
||||
license to downstream recipients. "Knowingly relying" means you have
|
||||
actual knowledge that, but for the patent license, your conveying the
|
||||
covered work in a country, or your recipient's use of the covered work
|
||||
in a country, would infringe one or more identifiable patents in that
|
||||
country that you have reason to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or
|
||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||
covered work, and grant a patent license to some of the parties
|
||||
receiving the covered work authorizing them to use, propagate, modify
|
||||
or convey a specific copy of the covered work, then the patent license
|
||||
you grant is automatically extended to all recipients of the covered
|
||||
work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within
|
||||
the scope of its coverage, prohibits the exercise of, or is
|
||||
conditioned on the non-exercise of one or more of the rights that are
|
||||
specifically granted under this License. You may not convey a covered
|
||||
work if you are a party to an arrangement with a third party that is
|
||||
in the business of distributing software, under which you make payment
|
||||
to the third party based on the extent of your activity of conveying
|
||||
the work, and under which the third party grants, to any of the
|
||||
parties who would receive the covered work from you, a discriminatory
|
||||
patent license (a) in connection with copies of the covered work
|
||||
conveyed by you (or copies made from those copies), or (b) primarily
|
||||
for and in connection with specific products or compilations that
|
||||
contain the covered work, unless you entered into that arrangement,
|
||||
or that patent license was granted, prior to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting
|
||||
any implied license or other defenses to infringement that may
|
||||
otherwise be available to you under applicable patent law.
|
||||
|
||||
12. No Surrender of Others' Freedom.
|
||||
|
||||
If conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot convey a
|
||||
covered work so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you may
|
||||
not convey it at all. For example, if you agree to terms that obligate you
|
||||
to collect a royalty for further conveying from those to whom you convey
|
||||
the Program, the only way you could satisfy both those terms and this
|
||||
License would be to refrain entirely from conveying the Program.
|
||||
|
||||
13. Use with the GNU Affero General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, you have
|
||||
permission to link or combine any covered work with a work licensed
|
||||
under version 3 of the GNU Affero General Public License into a single
|
||||
combined work, and to convey the resulting work. The terms of this
|
||||
License will continue to apply to the part which is the covered work,
|
||||
but the special requirements of the GNU Affero General Public License,
|
||||
section 13, concerning interaction through a network will apply to the
|
||||
combination as such.
|
||||
|
||||
14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of
|
||||
the GNU General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Program specifies that a certain numbered version of the GNU General
|
||||
Public License "or any later version" applies to it, you have the
|
||||
option of following the terms and conditions either of that numbered
|
||||
version or of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number of the
|
||||
GNU General Public License, you may choose any version ever published
|
||||
by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future
|
||||
versions of the GNU General Public License can be used, that proxy's
|
||||
public statement of acceptance of a version permanently authorizes you
|
||||
to choose that version for the Program.
|
||||
|
||||
Later license versions may give you additional or different
|
||||
permissions. However, no additional obligations are imposed on any
|
||||
author or copyright holder as a result of your choosing to follow a
|
||||
later version.
|
||||
|
||||
15. Disclaimer of Warranty.
|
||||
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGES.
|
||||
|
||||
17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided
|
||||
above cannot be given local legal effect according to their terms,
|
||||
reviewing courts shall apply local law that most closely approximates
|
||||
an absolute waiver of all civil liability in connection with the
|
||||
Program, unless a warranty or assumption of liability accompanies a
|
||||
copy of the Program in return for a fee.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
<program> Copyright (C) <year> <name of author>
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, your program's commands
|
||||
might be different; for a GUI interface, you would use an "about box".
|
||||
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU GPL, see
|
||||
<http://www.gnu.org/licenses/>.
|
||||
|
||||
The GNU General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
||||
@ -1,95 +0,0 @@
|
||||
#!/usr/bin/sh
|
||||
|
||||
# Get build root
|
||||
RPM_BUILD_ROOT="${1}"
|
||||
|
||||
# If using normal root, avoid changing anything.
|
||||
if [ -z "$RPM_BUILD_ROOT" -o "$RPM_BUILD_ROOT" = "/" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
|
||||
|
||||
# Create temporary file listing files in the manifest
|
||||
#[ -n "$TMPDIR" ] || TMPDIR="/tmp"
|
||||
TMPDIR="/tmp"
|
||||
BIN_PKG_FILES=${TMPDIR}/${3%%.rpm}
|
||||
cat - > $BIN_PKG_FILES
|
||||
|
||||
# Ensure temporary file is cleaned up when we exit
|
||||
trap "rm -f \"${BIN_PKG_FILES}\"" 0 2 3 5 10 13 15
|
||||
|
||||
# File empty, exit
|
||||
if [ -z $(head -c 1 $BIN_PKG_FILES) ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Create directory for digest lists
|
||||
DIGEST_LIST_DIR=$RPM_BUILD_ROOT/$2/etc/ima/digest_lists
|
||||
mkdir -p $DIGEST_LIST_DIR
|
||||
mkdir -p $DIGEST_LIST_DIR.tlv
|
||||
mkdir -p $DIGEST_LIST_DIR.sig
|
||||
|
||||
# Generate digest list for the kernel
|
||||
gen_digest_lists -i M: -t metadata -f compact -d $DIGEST_LIST_DIR -i l:policy \
|
||||
-i i: -o add -p -1 -m immutable -i L:$BIN_PKG_FILES -i u: \
|
||||
-A $RPM_BUILD_ROOT -i e: \
|
||||
-i F:/lib \
|
||||
-i F:/usr/lib \
|
||||
-i F:/lib64 \
|
||||
-i F:/usr/lib64 \
|
||||
-i F:/lib/modules \
|
||||
-i F:/usr/lib/modules \
|
||||
-i F:/lib/firmware \
|
||||
-i F:/usr/lib/firmware
|
||||
|
||||
f="$DIGEST_LIST_DIR/0-metadata_list-compact-$(basename $BIN_PKG_FILES)"
|
||||
[ -f $f ] || exit 0
|
||||
|
||||
chmod 644 $f
|
||||
echo $f
|
||||
|
||||
# Generate TLV digest list to check metadata
|
||||
gen_digest_lists -i M: -t metadata -f compact -d $DIGEST_LIST_DIR.tlv \
|
||||
-i l:policy -i i: -o add -p -1 -m immutable -i L:$BIN_PKG_FILES -i u: \
|
||||
-T -A $RPM_BUILD_ROOT -i e: \
|
||||
-i F:/lib \
|
||||
-i F:/usr/lib \
|
||||
-i F:/lib64 \
|
||||
-i F:/usr/lib64 \
|
||||
-i F:/lib/modules \
|
||||
-i F:/usr/lib/modules \
|
||||
-i F:/lib/firmware \
|
||||
-i F:/usr/lib/firmware
|
||||
|
||||
f="$DIGEST_LIST_DIR.tlv/0-metadata_list-compact_tlv-$(basename $BIN_PKG_FILES)"
|
||||
[ -f $f ] || exit 0
|
||||
|
||||
chmod 644 $f
|
||||
echo $f
|
||||
|
||||
if [[ "$(basename $BIN_PKG_FILES)" =~ "digest-list-tools" && \
|
||||
! $(basename $BIN_PKG_FILES) =~ "debug" ]]; then
|
||||
# Generate digest list for the user space parsers
|
||||
LD_LIBRARY_PATH=$RPM_BUILD_ROOT/usr/lib64 \
|
||||
$RPM_BUILD_ROOT/usr/bin/gen_digest_lists \
|
||||
-d $DIGEST_LIST_DIR -t parser -f compact -m immutable \
|
||||
-i I:$RPM_BUILD_ROOT/usr/libexec -o add -p -1 -i i:
|
||||
|
||||
f="$DIGEST_LIST_DIR/0-parser_list-compact-libexec"
|
||||
[ -f $f ] || exit 0
|
||||
|
||||
chmod 644 $f
|
||||
echo $f
|
||||
|
||||
[ -f /usr/lib/rpm/brp-suse.d/brp-99-pesign ] || exit 0
|
||||
|
||||
export BRP_PESIGN_FILES="$2/etc/ima/digest_lists/*"
|
||||
export RPM_BUILD_ROOT
|
||||
export RPM_PACKAGE_NAM="digest-list-tools"
|
||||
export RPM_SOURCE_DIR="$(rpm --eval %_topdir)/SOURCES"
|
||||
|
||||
if [ -f "/usr/lib/rpm/brp-suse.d/brp-99-pesign" ]; then
|
||||
/usr/lib/rpm/brp-suse.d/brp-99-pesign &> /dev/null
|
||||
fi
|
||||
fi
|
||||
@ -1,8 +0,0 @@
|
||||
#!/bin/sh -efu
|
||||
|
||||
# If using normal root, avoid changing anything.
|
||||
if [ -z "$RPM_BUILD_ROOT" -o "$RPM_BUILD_ROOT" = "/" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
/sbin/ldconfig -N -r "$RPM_BUILD_ROOT"
|
||||
1462
100/openEuler-rpm-config/config.guess
vendored
1462
100/openEuler-rpm-config/config.guess
vendored
File diff suppressed because it is too large
Load Diff
1823
100/openEuler-rpm-config/config.sub
vendored
1823
100/openEuler-rpm-config/config.sub
vendored
File diff suppressed because it is too large
Load Diff
@ -1,83 +0,0 @@
|
||||
# -*- coding: UTF-8 -*-
|
||||
#!/usr/bin/python3
|
||||
|
||||
# kmodtool - Helper script for building kernel module RPMs
|
||||
|
||||
import os,subprocess,sys
|
||||
|
||||
def print_verrel ():
|
||||
#verrel=subprocess.getoutput("(rpm -q --qf '%{VERSION}-%{RELEASE}' `rpm -q kernel-devel` | head -n 1)")
|
||||
# if (len(verrel)== 0):
|
||||
verrel=subprocess.getoutput("uname -r")
|
||||
return verrel
|
||||
|
||||
def print_rpmtemplate():
|
||||
kmod_name = sys.argv[2]
|
||||
# verrel=subprocess.getoutput("(rpm -q --qf '%{VERSION}-%{RELEASE}' `rpm -q kernel-devel` | head -n 1)")
|
||||
# if (len(verrel)== 0):
|
||||
verrel=subprocess.getoutput("uname -r")
|
||||
|
||||
if not kmod_name:
|
||||
print("Please provide the kmodule-name as first parameter.")
|
||||
exit()
|
||||
get_rpmtemplate(kmod_name,verrel)
|
||||
|
||||
|
||||
def get_rpmtemplate(kmod_name,verrel):
|
||||
print("%package -n kmod-" + kmod_name)
|
||||
print("Summary: " + kmod_name + " " + "kernel module(s)")
|
||||
print("Group: System Environment/Kernel")
|
||||
if "%{version}":
|
||||
print("Version: %{version}")
|
||||
if "%{release}":
|
||||
print("Release: %{release}")
|
||||
print("Provides: kernel-modules =" + " " + verrel)
|
||||
print("Provides: "+ kmod_name + "-kmod = %{?epoch:%{epoch}:}%{version}-%{release}")
|
||||
print("Requires(post): /usr/sbin/depmod")
|
||||
print("Requires(postun): /usr/sbin/depmod")
|
||||
print("%description -n kmod-" + kmod_name)
|
||||
print("This package provides the " + kmod_name + " kernel modules built for the Linux")
|
||||
print("kernel "+ verrel + " for the %{_target_cpu} family of processors.")
|
||||
print("%post -n kmod-" + kmod_name)
|
||||
print("if [ -e /boot/System.map-" + verrel + "]; then")
|
||||
print(" /sbin/depmod -aeF /boot/System.map-" + verrel +" " + verrel +"> /dev/null || :")
|
||||
print("fi")
|
||||
if (kmp !=""):
|
||||
print("modules=( $(find /lib/modules/" + verrel + "/extra/" + kmod_name + ") )")
|
||||
print("""if [ -x "/sbin/weak-modules" ]; then
|
||||
printf '%s\\n' "${modules[@]}" | /sbin/weak-modules --add-modules
|
||||
fi""")
|
||||
print("%preun -n kmod-" + kmod_name)
|
||||
print("rpm -ql kmod-" + kmod_name + "| grep '\.ko$' > /var/run/rpm-kmod-" + kmod_name +"-modules")
|
||||
|
||||
print("%postun -n kmod-" + kmod_name)
|
||||
print("/sbin/depmod -aF /boot/System.map-" + verrel+" " + verrel + " &> /dev/null || :")
|
||||
|
||||
if (kmp !=""):
|
||||
print("modules=( $(cat /var/run/rpm-kmod-" + kmod_name + "-modules) )")
|
||||
print("#rm /var/run/rpm-kmod-" + kmod_name + "-modules")
|
||||
print("""if [ -x "/sbin/weak-modules" ]; then
|
||||
printf '%s\\n' "${modules[@]}" | /sbin/weak-modules --remove-modules
|
||||
fi""")
|
||||
|
||||
print("%files -n kmod-" + kmod_name)
|
||||
kmp_override_filelist= sys.argv[3]
|
||||
if kmp_override_filelist == '%filelist':
|
||||
print("%defattr(644,root,root,755)")
|
||||
print("/lib/modules/" + verrel)
|
||||
print("/lib/firmware/")
|
||||
else:
|
||||
with open(kmp_override_filelist) as f:
|
||||
for line in f:
|
||||
print(line, end = '')
|
||||
|
||||
#for i in range(len(sys.argv)):
|
||||
if (sys.argv[1] == "verrel"):
|
||||
print_verrel()
|
||||
if (sys.argv[1] == "rpmtemplate_kmp"):
|
||||
kmp=1
|
||||
print_rpmtemplate()
|
||||
else:
|
||||
print("Error: Unknown option 'sys.argv[i]'.")
|
||||
exit()
|
||||
|
||||
@ -1,306 +0,0 @@
|
||||
# Per-platform rpm configuration file.
|
||||
|
||||
%_vendor openEuler
|
||||
%_os linux
|
||||
%_target_platform %{_target_cpu}-%{_vendor}-%{_target_os}%{?_gnu}
|
||||
|
||||
#==============================================================================
|
||||
# ---- configure macros. note that most of these are inherited
|
||||
# from the defaults.
|
||||
#
|
||||
%_localstatedir /var
|
||||
|
||||
%_pkgdocdir %{_docdir}/%{name}
|
||||
%_docdir_fmt %%{NAME}
|
||||
|
||||
%_fmoddir %{_libdir}/gfortran/modules
|
||||
|
||||
%_enable_debug_packages 1
|
||||
#%_include_minidebuginfo 1
|
||||
%_include_gdb_index 1
|
||||
%_debugsource_packages 1
|
||||
#%_debuginfo_subpackages 1
|
||||
|
||||
%_build_id_links none
|
||||
|
||||
#==============================================================================
|
||||
# ---- compiler flags.
|
||||
|
||||
%build_cflags %{optflags}
|
||||
%build_cxxflags %{optflags}
|
||||
%build_fflags %{optflags} -I%{_fmoddir}
|
||||
%build_ldflags -Wl,-z,relro %{_ld_as_needed_flags} %{_ld_symbols_flags} %{_hardened_ldflags}
|
||||
|
||||
%set_build_flags \
|
||||
CFLAGS="${CFLAGS:-%{build_cflags}}" ; export CFLAGS ; \
|
||||
CXXFLAGS="${CXXFLAGS:-%{build_cxxflags}}" ; export CXXFLAGS ; \
|
||||
FFLAGS="${FFLAGS:-%{build_fflags}}" ; export FFLAGS ; \
|
||||
FCFLAGS="${FCFLAGS:-%{build_fflags}}" ; export FCFLAGS ; \
|
||||
LDFLAGS="${LDFLAGS:-%{build_ldflags}}" ; export LDFLAGS
|
||||
|
||||
#For backwards compatibility only.
|
||||
%__global_cflags %{build_cflags}
|
||||
%__global_cxxflags %{build_cxxflags}
|
||||
%__global_fflags %{build_fflags}
|
||||
%__global_fcflags %{build_fflags}
|
||||
%__global_ldflags %{build_ldflags}
|
||||
|
||||
#==============================================================================
|
||||
# ---- configure and makeinstall.
|
||||
%_configure_gnuconfig_hack 1
|
||||
%_configure_libtool_hardening_hack 1
|
||||
%configure \
|
||||
%{set_build_flags}; \
|
||||
[ "%_configure_gnuconfig_hack" = 1 ] && for i in $(find $(dirname %{_configure}) -name config.guess -o -name config.sub) ; do \
|
||||
[ -f /usr/lib/rpm/openEuler/$(basename $i) ] && %{__rm} -f $i && %{__cp} -fv /usr/lib/rpm/openEuler/$(basename $i) $i ; \
|
||||
done ; \
|
||||
[ "%_configure_libtool_hardening_hack" = 1 ] && [ x != "x%{_hardened_ldflags}" ] && \
|
||||
for i in $(find . -name ltmain.sh) ; do \
|
||||
%{__sed} -i.backup -e 's~compiler_flags=$~compiler_flags="%{_hardened_ldflags}"~' $i \
|
||||
done ; \
|
||||
%{_configure} --build=%{_build} --host=%{_host} \\\
|
||||
--program-prefix=%{?_program_prefix} \\\
|
||||
--disable-dependency-tracking \\\
|
||||
%{?_configure_disable_silent_rules:--disable-silent-rules} \\\
|
||||
--prefix=%{_prefix} \\\
|
||||
--exec-prefix=%{_exec_prefix} \\\
|
||||
--bindir=%{_bindir} \\\
|
||||
--sbindir=%{_sbindir} \\\
|
||||
--sysconfdir=%{_sysconfdir} \\\
|
||||
--datadir=%{_datadir} \\\
|
||||
--includedir=%{_includedir} \\\
|
||||
--libdir=%{_libdir} \\\
|
||||
--libexecdir=%{_libexecdir} \\\
|
||||
--localstatedir=%{_localstatedir} \\\
|
||||
--sharedstatedir=%{_sharedstatedir} \\\
|
||||
--mandir=%{_mandir} \\\
|
||||
--infodir=%{_infodir}
|
||||
|
||||
# ---- Build policy macros.
|
||||
|
||||
%__spec_install_pre %{___build_pre}\
|
||||
[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf "${RPM_BUILD_ROOT}"\
|
||||
mkdir -p `dirname "$RPM_BUILD_ROOT"`\
|
||||
mkdir "$RPM_BUILD_ROOT"\
|
||||
%{nil}
|
||||
|
||||
# ---- Expanded at end of %install scriptlet.
|
||||
%__arch_install_post /usr/lib/rpm/check-buildroot
|
||||
|
||||
# Build root policy macros. Standard naming:
|
||||
# convert all '-' in basename to '_', add two leading underscores.
|
||||
%__brp_ldconfig /usr/lib/rpm/openEuler/brp-ldconfig
|
||||
%__brp_compress /usr/lib/rpm/brp-compress
|
||||
%__brp_strip /usr/lib/rpm/brp-strip %{__strip}
|
||||
%__brp_strip_comment_note /usr/lib/rpm/brp-strip-comment-note %{__strip} %{__objdump}
|
||||
%__brp_strip_static_archive /usr/lib/rpm/brp-strip-static-archive %{__strip}
|
||||
%__brp_python_bytecompile /usr/lib/rpm/brp-python-bytecompile "%{__python}" "%{?_python_bytecompile_errors_terminate_build}" "%{?_python_bytecompile_extra}"
|
||||
%__brp_python_hardlink /usr/lib/rpm/brp-python-hardlink
|
||||
|
||||
%__os_install_post \
|
||||
%{?__brp_ldconfig} \
|
||||
%{?__brp_compress} \
|
||||
%{!?__debug_package:\
|
||||
%{?__brp_strip} \
|
||||
%{?__brp_strip_comment_note} \
|
||||
} \
|
||||
%{?__brp_strip_static_archive} \
|
||||
%{?py_auto_byte_compile:%{?__brp_python_bytecompile}} \
|
||||
%{?__brp_python_hardlink} \
|
||||
%{nil}
|
||||
|
||||
%__spec_install_post\
|
||||
%{?__debug_package:%{__debug_install_post}}\
|
||||
%{__arch_install_post}\
|
||||
%{__os_install_post}\
|
||||
%{nil}
|
||||
|
||||
%install %{?_enable_debug_packages:%{?buildsubdir:%{debug_package}}}\
|
||||
%%install\
|
||||
%{nil}
|
||||
|
||||
#
|
||||
# Should missing buildids terminate a build?
|
||||
%_missing_build_ids_terminate_build 1
|
||||
|
||||
#
|
||||
## Automatically compile python files
|
||||
%py_auto_byte_compile 1
|
||||
|
||||
#
|
||||
## Should python bytecompilation errors terminate a build?
|
||||
%_python_bytecompile_errors_terminate_build 1
|
||||
## Should python bytecompilation compile outisde python specific directories?
|
||||
%_python_bytecompile_extra 1
|
||||
|
||||
# Use SHA-256 for FILEDIGESTS instead of default MD5
|
||||
%_source_filedigest_algorithm 8
|
||||
%_binary_filedigest_algorithm 8
|
||||
|
||||
# Use XZ compression for binary payloads
|
||||
%_binary_payload w2.xzdio
|
||||
|
||||
|
||||
# secure options for rpmbuild
|
||||
#
|
||||
# #hardened options
|
||||
%_hardening_cflags -specs=/usr/lib/rpm/%{_vendor}/openEuler-hardened-cc1
|
||||
%_hardening_ldflags -Wl,-z,now -specs=/usr/lib/rpm/%{_vendor}/openEuler-hardened-ld
|
||||
# Use "%undefine _hardened_build" to disable.
|
||||
%_hardened_build 1
|
||||
%_hardened_cflags %{?_hardened_build:%{_hardening_cflags}}
|
||||
%_hardened_ldflags %{?_hardened_build:%{_hardening_ldflags}}
|
||||
|
||||
#secure options pie
|
||||
%_sec_opt_build 1
|
||||
#Use "%undefine _sec_opt_build" to disable.
|
||||
#Use "%undefine _pie_build" to disable.
|
||||
%_pie_build 1
|
||||
%_pie_pre_cflags -specs=/usr/lib/rpm/%{_vendor}/openEuler-pie-cc1
|
||||
%_pie_pre_ldflags -Wl,-z,now -specs=/usr/lib/rpm/%{_vendor}/openEuler-pie-ld
|
||||
%_pie_cflags %{?_sec_opt_build:?_pie_build:%{_pie_pre_cflags}}
|
||||
%_pie_ldflags %{?_sec_opt_build:?_pie_build:%{_pie_pre_ldflags}}
|
||||
|
||||
#Use "%undefine _fs_build" to disable.
|
||||
%_fs_build 1
|
||||
%_fs_pre_cflags -specs=/usr/lib/rpm/%{_vendor}/openEuler-fs-cc1
|
||||
%_fs_cflags %{?_fs_build:%{_fs_pre_cflags}}
|
||||
|
||||
|
||||
# Fail linking if there are undefined symbols. Required for proper
|
||||
# ELF symbol versioning support. Disabled by default.
|
||||
# Use "%define _ld_strict_symbol_defs 1" to enable.
|
||||
#%_ld_strict_symbol_defs 1
|
||||
%_ld_symbols_flags %{?_ld_strict_symbol_defs:-Wl,-z,defs}
|
||||
|
||||
# use "%define _ld_as_needed 1" to enable.
|
||||
#%_ld_as_needed 1
|
||||
%_ld_as_needed_flags %{?_ld_as_needed:-Wl,--as-needed}
|
||||
|
||||
%__global_compiler_flags -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches %{_hardened_cflags}
|
||||
|
||||
# Automatically trim changelog entries after 2 years
|
||||
%_changelog_trimtime %{lua:print(os.time() - 2 * 365 * 86400)}
|
||||
|
||||
#==============================================================================
|
||||
# ---- Generic auto req/prov filtering macros
|
||||
|
||||
# prevent anything matching from being scanned for provides
|
||||
%filter_provides_in(P) %{expand: \
|
||||
%global __filter_prov_cmd %{?__filter_prov_cmd} %{__grep} -v %{-P} '%*' | \
|
||||
}
|
||||
|
||||
# prevent anything matching from being scanned for requires
|
||||
%filter_requires_in(P) %{expand: \
|
||||
%global __filter_req_cmd %{?__filter_req_cmd} %{__grep} -v %{-P} '%*' | \
|
||||
}
|
||||
|
||||
# filter anything matching out of the provides stream
|
||||
%filter_from_provides() %{expand: \
|
||||
%global __filter_from_prov %{?__filter_from_prov} | %{__sed} -e '%*' \
|
||||
}
|
||||
|
||||
# filter anything matching out of the requires stream
|
||||
%filter_from_requires() %{expand: \
|
||||
%global __filter_from_req %{?__filter_from_req} | %{__sed} -e '%*' \
|
||||
}
|
||||
|
||||
# actually set up the filtering bits
|
||||
%filter_setup %{expand: \
|
||||
%global _use_internal_dependency_generator 0 \
|
||||
%global __deploop() while read FILE; do echo "${FILE}" | /usr/lib/rpm/rpmdeps -%{1}; done | /bin/sort -u \
|
||||
%global __find_provides /bin/sh -c "%{?__filter_prov_cmd} %{__deploop P} %{?__filter_from_prov}" \
|
||||
%global __find_requires /bin/sh -c "%{?__filter_req_cmd} %{__deploop R} %{?__filter_from_req}" \
|
||||
}
|
||||
|
||||
# compare two versions, returns -1, 0, 1, ~~~
|
||||
%rpm_vercmp() %{lua:print(rpm.expand('%1') == '~~~' and '~~~' or rpm.vercmp(rpm.expand('%1'), rpm.expand('%2')))}
|
||||
# expand to the installed version of a package/provides
|
||||
%pkg_version() %(LC_ALL=C rpm -q --whatprovides --qf "%%{version}" "%1" | sed -e "s/^no package provides .*/~~~/")
|
||||
# compare the installed version to a value. returns -1, 0, 1, ~~~
|
||||
%pkg_version_cmp() %{expand:%{expand:%%%%{rpm_vercmp %%{pkg_version %1} %%2}}}
|
||||
# convenience/readability
|
||||
%pkg_vcmp() (%{expand:%%{pkg_version_cmp %1 %3}} %2 0)
|
||||
|
||||
#arches macros
|
||||
%generic_arches %{ix86} x86_64 %{arm} aarch64
|
||||
%ldc_arches %{generic_arches}
|
||||
%valgrind_arches %{generic_arches}
|
||||
%nodejs_arches %{generic_arches}
|
||||
%ldc_arches %{generic_arches}
|
||||
%mono_arches %{generic_arches}
|
||||
%fpc_arches %{generic_arches}
|
||||
%ghc_arches_with_ghci %{generic_arches}
|
||||
%ghc_arches %{generic_arches}
|
||||
%GNAT_arches %{GPRbuild_arches} %{generic_arches}
|
||||
%GPRbuild_arches %{generic_arches}
|
||||
%nim_arches %{generic_arches}
|
||||
%nodejs_arches %{generic_arches}
|
||||
%ocaml_native_compiler %{generic_arches}
|
||||
%ocaml_natdynlink %{generic_arches}
|
||||
%ocaml_native_profiling %{generic_arches}
|
||||
%openblas_arches %{generic_arches}
|
||||
|
||||
#%ldconfig /sbin/ldconfig
|
||||
%ldconfig_post(n:) %{?ldconfig:%post -p %ldconfig %{?*} %{-n:-n %{-n*}}\
|
||||
%end}
|
||||
%ldconfig_postun(n:) %{?ldconfig:%postun -p %ldconfig %{?*} %{-n:-n %{-n*}}\
|
||||
%end}
|
||||
%ldconfig_scriptlets(n:) %{?ldconfig:\
|
||||
%ldconfig_post %{?*} %{-n:-n %{-n*}}\
|
||||
%ldconfig_postun %{?*} %{-n:-n %{-n*}}\
|
||||
}
|
||||
|
||||
# Some miscellaneous macros
|
||||
%_metainfodir %{_datadir}/metainfo
|
||||
%rpmmacrodir /usr/lib/rpm/macros.d
|
||||
|
||||
# arches that mono builds on
|
||||
%_monogacdir %{_monodir}/gac
|
||||
%_monodir %{_prefix}/lib/mono
|
||||
|
||||
# ---- VPATH default settings
|
||||
%_vpath_builddir %_target_platform
|
||||
%_vpath_srcdir .
|
||||
|
||||
|
||||
# ---- custom macros
|
||||
%disable_rpath \
|
||||
sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool \
|
||||
sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool
|
||||
|
||||
%delete_la_and_a \
|
||||
find $RPM_BUILD_ROOT -type f -name "*.la" -delete \
|
||||
find $RPM_BUILD_ROOT -type f -name "*.a" -delete
|
||||
|
||||
%delete_la find $RPM_BUILD_ROOT -type f -name "*.la" -delete
|
||||
|
||||
%chrpath_delete find $RPM_BUILD_ROOT/ -type f -exec file {} ';' | grep "\<ELF\>" | awk -F ':' '{print $1}' | xargs -i chrpath --delete {}
|
||||
|
||||
%package_help \
|
||||
%package help \
|
||||
Summary: Documents for %{name} \
|
||||
Buildarch: noarch \
|
||||
Requires: man info \
|
||||
\
|
||||
%description help \
|
||||
Man pages and other related documents for %{name}.
|
||||
|
||||
#%sbin_installinfo_rm bc.info
|
||||
#%sbin_installinfo_rm bc.info.gz
|
||||
|
||||
%install_info() \
|
||||
/sbin/install-info %1 %{_infodir}/dir || :
|
||||
|
||||
%install_info_rm() \
|
||||
/sbin/install-info --remove %1 %{_infodir}/dir || :
|
||||
|
||||
# macros that used for perl
|
||||
%__perl /usr/bin/perl
|
||||
%requires_eq() %(LC_ALL="C" echo '%*' | xargs -r rpm -q --qf 'Requires: %%{name} = %%{epoch}:%%{version}\\n' | sed -e 's/ (none):/ /' -e 's/ 0:/ /' | grep -v "is not")
|
||||
%perl_sitearch %(eval "`%{__perl} -V:installsitearch`"; echo $installsitearch)
|
||||
%perl_sitelib %(eval "`%{__perl} -V:installsitelib`"; echo $installsitelib)
|
||||
%perl_vendorarch %(eval "`%{__perl} -V:installvendorarch`"; echo $installvendorarch)
|
||||
%perl_vendorlib %(eval "`%{__perl} -V:installvendorlib`"; echo $installvendorlib)
|
||||
%perl_archlib %(eval "`%{__perl} -V:installarchlib`"; echo $installarchlib)
|
||||
%perl_privlib %(eval "`%{__perl} -V:installprivlib`"; echo $installprivlib)
|
||||
@ -1,283 +0,0 @@
|
||||
# Map forge information to rpm metadata. This macro will compute default spec
|
||||
# variable values.
|
||||
#
|
||||
# The following spec variables SHOULD be set before calling the macro:
|
||||
#
|
||||
# forgeurl the project url on the forge, strongly recommended;
|
||||
# alternatively, use -u <url>
|
||||
# Version if applicable, set it with Version: <version>
|
||||
# tag if applicable
|
||||
# commit if applicable
|
||||
# date if applicable (to override the mtime of the Source archive)
|
||||
#
|
||||
# The macro will attempt to compute and set the following variables if they are
|
||||
# not already set by the packager:
|
||||
#
|
||||
# forgesource an URL that can be used as SourceX: value
|
||||
# forgesetupargs the correct arguments to pass to %setup for this source
|
||||
# used by %forgesetup and %forgeautosetup
|
||||
# archivename the source archive filename, without extentions
|
||||
# archiveext the source archive filename extensions, without leading dot
|
||||
# archiveurl the url that can be used to download the source archive,
|
||||
# without renaming
|
||||
# scm the scm type, when packaging code snapshots: commits or tags
|
||||
#
|
||||
# If the macro is unable to parse your forgeurl value set at least archivename
|
||||
# and archiveurl before calling it.
|
||||
#
|
||||
# Most of the computed variables are both overridable and optional. However,
|
||||
# the macro WILL REDEFINE %{dist} when packaging a snapshot (commit or tag).
|
||||
# The previous %{dist} value will be lost. Don’t call the macro if you don’t
|
||||
# wish %{dist} to be changed.
|
||||
#
|
||||
# Optional parameters:
|
||||
# -u <url> Ignore forgeurl even if it exists and use <url> instead. Note
|
||||
# that the macro will still end up setting <url> as the forgeurl
|
||||
# spec variable if it manages to parse it.
|
||||
# -s Silently ignore problems in forgeurl, use it if it can be parsed,
|
||||
# ignore it otherwise.
|
||||
# -p Restore problem handling, override -s.
|
||||
# -v Be verbose and print every spec variable the macro sets.
|
||||
# -i Print some info about the state of spec variables the macro may use or
|
||||
# set at the end of the processing.
|
||||
%forgemeta(u:spvi) %{lua:
|
||||
local forgeurl = rpm.expand("%{?-u*}")
|
||||
if (forgeurl == "") then
|
||||
forgeurl = rpm.expand("%{?forgeurl}")
|
||||
end
|
||||
local silent = false
|
||||
local verbose = false
|
||||
local informative = false
|
||||
if (rpm.expand("%{?-s}") ~= "") then
|
||||
silent = true
|
||||
end
|
||||
if (rpm.expand("%{?-p}") ~= "") then
|
||||
silent = false
|
||||
end
|
||||
if (rpm.expand("%{?-v}") ~= "") then
|
||||
verbose = true
|
||||
end
|
||||
if (rpm.expand("%{?-i}") ~= "") then
|
||||
informative = true
|
||||
end
|
||||
local tag = rpm.expand("%{?tag}")
|
||||
local commit = rpm.expand("%{?commit}")
|
||||
-- Be explicit about the spec variables we’re setting
|
||||
local function explicitset(rpmvariable,value)
|
||||
rpm.define(rpmvariable .. " " .. value)
|
||||
if verbose then
|
||||
rpm.expand("%{echo:Setting %%{" .. rpmvariable .. "} = " .. value .. "\\n}")
|
||||
end
|
||||
end
|
||||
-- Never ever stomp on a spec variable the packager already set
|
||||
local function safeset(rpmvariable,value)
|
||||
if (rpm.expand("%{?" .. rpmvariable .. "}") == "") then
|
||||
explicitset(rpmvariable,value)
|
||||
end
|
||||
end
|
||||
-- Set spec variable values for each known software publishing service
|
||||
if (forgeurl ~= "") then
|
||||
local forge = string.match(forgeurl, "^[^:]+://([^/]+)/")
|
||||
if (forge == nil) then
|
||||
if not silent then
|
||||
rpm.expand("%{error:URLs must include a protocol such as https:// and a path starting with / !\\n}")
|
||||
end
|
||||
else
|
||||
if (string.match(forge, "^gitlab[%.-]") or string.match(forge, "[%.-]gitlab[%.]")) then
|
||||
forgeurl = string.match(forgeurl, "https://[^/]+/[^/]+/[^/#?]+")
|
||||
if (forgeurl == nil) then
|
||||
if not silent then
|
||||
rpm.expand("%{error:Gitlab URLs must match https://(…[-.])gitlab[-.]…/owner/repo !\\n}")
|
||||
end
|
||||
else
|
||||
explicitset("forgeurl", forgeurl)
|
||||
if (commit == "") then
|
||||
rpm.expand("%{error:All Gitlab URLs require commit value knowledge: you need to define %{commit}!\\nPlease vote on https://gitlab.com/gitlab-org/gitlab-ce/issues/38830\\n}")
|
||||
end
|
||||
safeset("archiveext", "tar.bz2")
|
||||
safeset("forgesetupargs", "-n %{archivename}")
|
||||
if (commit ~= "") or (tag ~= "") then
|
||||
safeset("scm", "git")
|
||||
end
|
||||
local owner = string.match(forgeurl, "^[^:]+://[^/]+/([^/]+)")
|
||||
local repo = string.match(forgeurl, "^[^:]+://[^/]+/[^/]+/([^/]+)")
|
||||
local version = rpm.expand("%{?version}")
|
||||
if (version ~= "") and (version ~= "0") and (tag == "") then
|
||||
-- GitLab does not have strong versionning semantics
|
||||
-- Some projects use "version" as release tag, others "v" + "version"
|
||||
-- Tag value needs to be explicitly declared before calling the macro
|
||||
-- in the second case
|
||||
tag = version
|
||||
safeset("tag", tag)
|
||||
end
|
||||
if (tag ~= "") then
|
||||
safeset("archivename", repo .. "-%{tag}-%{commit}")
|
||||
safeset("archiveurl", "%{forgeurl}/repository/%{tag}/archive.%{archiveext}")
|
||||
else
|
||||
safeset("archivename", repo .. "-%{commit}")
|
||||
safeset("archiveurl", "%{forgeurl}/repository/%{commit}/archive.%{archiveext}")
|
||||
end
|
||||
end
|
||||
end
|
||||
if (string.match(forge, "^github[%.-]") or string.match(forge, "[%.-]github[%.]")) then
|
||||
forgeurl = string.match(forgeurl, "https://[^/]+/[^/]+/[^/#?]+")
|
||||
if (forgeurl == nil) then
|
||||
if not silent then
|
||||
rpm.expand("%{error:GitHub URLs must match https://(…[-.])github[-.]…/owner/repo !\\n}")
|
||||
end
|
||||
else
|
||||
explicitset("forgeurl", forgeurl)
|
||||
safeset("archiveext", "tar.gz")
|
||||
local forgesetupargs = "-n %{archivename}"
|
||||
if (commit ~= "") or (tag ~= "") then
|
||||
safeset("scm", "git")
|
||||
end
|
||||
local owner = string.match(forgeurl, "^[^:]+://[^/]+/([^/]+)")
|
||||
local repo = string.match(forgeurl, "^[^:]+://[^/]+/[^/]+/([^/]+)")
|
||||
if (tag ~= "") then
|
||||
-- if upstream used a version suffix such as -rc1 or -beta it will not
|
||||
-- be a valid version string for rpm but github will accept it fine and
|
||||
-- use the same naming as for other versions: v prefix in the tag and
|
||||
-- archivename, no v prefix in the topdir naming inside the archive
|
||||
local version = rpm.expand("%{?version}")
|
||||
if version ~= "" and
|
||||
(string.match(tag, "^v" .. version .. "[^%d]") or
|
||||
string.match(tag, "^v" .. version .. "$")) then
|
||||
forgesetupargs = "-n " .. repo .. "-" .. string.gsub(tag, "^v", "")
|
||||
end
|
||||
safeset("archivename", repo .. "-%{tag}")
|
||||
safeset("archiveurl", "%{forgeurl}/archive/%{tag}.%{archiveext}")
|
||||
else
|
||||
if (commit ~= "") then
|
||||
safeset("archivename", repo .. "-%{commit}")
|
||||
safeset("archiveurl", "%{forgeurl}/archive/%{commit}/" .. repo .. "-%{commit}.%{archiveext}")
|
||||
else
|
||||
safeset("archivename", repo .. "-%{version}")
|
||||
safeset("archiveurl", "%{forgeurl}/archive/v%{version}.%{archiveext}")
|
||||
end
|
||||
end
|
||||
safeset("forgesetupargs", forgesetupargs)
|
||||
end
|
||||
end
|
||||
if (forge == "code.googlesource.com") then
|
||||
forgeurl = string.match(forgeurl, "https://code.googlesource.com/[^#?]*[^/#?]+")
|
||||
if (forgeurl == nil) then
|
||||
if not silent then
|
||||
rpm.expand("%{error:Googlesource URLs must match https://code.googlesource.com/…/repo !\\n}")
|
||||
end
|
||||
else
|
||||
explicitset("forgeurl", forgeurl)
|
||||
safeset("archiveext", "tar.gz")
|
||||
safeset("forgesetupargs", "-c")
|
||||
if (commit ~= "") or (tag ~= "") then
|
||||
safeset("scm", "git")
|
||||
end
|
||||
local repo = string.match(forgeurl, "^[^:]+://.+/([^/?#]+)")
|
||||
if (tag ~= "") then
|
||||
safeset("archivename", repo .. "-%{tag}")
|
||||
safeset("archiveurl", "%{forgeurl}/+archive/%{tag}.%{archiveext}")
|
||||
else
|
||||
if (commit ~= "") then
|
||||
safeset("archivename", repo .. "-%{commit}")
|
||||
safeset("archiveurl", "%{forgeurl}/+archive/%{commit}.%{archiveext}")
|
||||
else
|
||||
safeset("archivename", repo .. "-v%{version}")
|
||||
safeset("archiveurl", "%{forgeurl}/+archive/v%{version}.%{archiveext}")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
if (forge == "bitbucket.org") then
|
||||
forgeurl = string.match(forgeurl, "https://[^/]+/[^/]+/[^/#?]+")
|
||||
if (forgeurl == nil) then
|
||||
if not silent then
|
||||
rpm.expand("%{error:BitBucket URLs must match https://bitbucket.org/owner/repo !\\n}")
|
||||
end
|
||||
else
|
||||
explicitset("forgeurl", forgeurl)
|
||||
if (commit == "") then
|
||||
rpm.expand("%{error:All BitBucket URLs require commit value knowledge: you need to define %{commit}!\\n}")
|
||||
end
|
||||
local shortcommit = string.sub(commit, 1, 12)
|
||||
safeset("archiveext", "tar.bz2")
|
||||
-- Default to git even though BitBucket allows choosing between several SCMs
|
||||
-- Set scm to hg for example before calling the macro if your project does not use git
|
||||
safeset("scm", "git")
|
||||
local owner = string.match(forgeurl, "^[^:]+://[^/]+/([^/]+)")
|
||||
local repo = string.match(forgeurl, "^[^:]+://[^/]+/[^/]+/([^/]+)")
|
||||
safeset("archivename", owner .. "-" .. repo .. "-" .. shortcommit)
|
||||
safeset("forgesetupargs", "-n %{archivename}")
|
||||
if (tag ~= "") then
|
||||
safeset("archiveurl", "%{forgeurl}/get/%{tag}.%{archiveext}")
|
||||
else
|
||||
safeset("archiveurl", "%{forgeurl}/get/%{commit}.%{archiveext}")
|
||||
end
|
||||
end
|
||||
end
|
||||
if (forge == "pagure.io") then
|
||||
if not silent then
|
||||
rpm.expand("%{error:https://pagure.io/pagure/issue/861 needs to be resolved before the “pagure.io”\\nsoftware publishing service can be supported.\\n}")
|
||||
end
|
||||
end
|
||||
-- Final tests to check forgeurl was successfuly parsed
|
||||
if not silent then
|
||||
if (rpm.expand("%{?archivename}") == "") or (rpm.expand("%{?archiveurl}") == "") then
|
||||
rpm.expand("%{error:Automation for the “" .. forge .. "”\\nsoftware publishing service is not implemented yet.\\nPlease extend the %%forgemeta macro!\\n}")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
-- Set defaults if forgeurl is missing or does not parse
|
||||
local archivename = rpm.expand("%{?archivename}")
|
||||
safeset("archiveext", "tar.gz")
|
||||
if (archivename ~= "") then
|
||||
safeset("forgesetupargs", "-n %{archivename}")
|
||||
end
|
||||
if (commit ~= "") or (tag ~= "") then
|
||||
safeset("scm", "git")
|
||||
end
|
||||
-- Source URL processing (computing the forgesource spec variable)
|
||||
local archiveurl = rpm.expand("%{?archiveurl}")
|
||||
local archiveext = rpm.expand("%{?archiveext}")
|
||||
if (archivename ~= "") and (archiveurl ~= "") then
|
||||
if (string.match(archiveurl, "/([^/]+)$") == archivename .. "." .. archiveext) then
|
||||
safeset("forgesource", "%{archiveurl}")
|
||||
else
|
||||
safeset("forgesource", "%{?archiveurl}#/%{?archivename}.%{archiveext}")
|
||||
end
|
||||
end
|
||||
-- dist processing (computing the correct pefix for snapshots)
|
||||
local distprefix = rpm.expand("%{?tag}")
|
||||
local version = rpm.expand("%{?version}")
|
||||
if (distprefix == version) or (distprefix == "v" .. version) then
|
||||
distprefix = ""
|
||||
end
|
||||
if (distprefix == "") then
|
||||
distprefix = string.sub(rpm.expand("%{?commit}"), 1, 7)
|
||||
end
|
||||
if (distprefix ~= "") then
|
||||
local dist = ".%{?date}%{!?date:%([ -r %{_sourcedir}/%{archivename}.%{archiveext} ] && date +%Y%m%d -u -r %{_sourcedir}/%{archivename}.%{archiveext})}%{scm}" .. string.gsub(distprefix, "-",".") .. rpm.expand("%{?dist}")
|
||||
explicitset("dist", dist)
|
||||
end
|
||||
-- Final spec variable summary if the macro was called with -i
|
||||
if informative then
|
||||
rpm.expand("%{echo:Forge-specific packaging variables\\n}")
|
||||
rpm.expand("%{echo: forgeurl: %{?forgeurl}\\n}")
|
||||
rpm.expand("%{echo: forgesource: %{?forgesource}\\n}")
|
||||
rpm.expand("%{echo: forgesetupargs: %{?forgesetupargs}\\n}")
|
||||
rpm.expand("%{echo:Generic variables\\n}")
|
||||
rpm.expand("%{echo: archivename: %{?archivename}\\n}")
|
||||
rpm.expand("%{echo: archiveext: %{?archiveext}\\n}")
|
||||
rpm.expand("%{echo: archiveurl: %{?archiveurl}\\n}")
|
||||
rpm.expand("%{echo: scm: %{?scm}\\n}")
|
||||
rpm.expand("%{echo: tag: %{?tag}\\n}")
|
||||
rpm.expand("%{echo: commit: %{?commit}\\n}")
|
||||
rpm.expand("%{echo: dist: %{?dist} (snapshot date is either manually supplied or computed once %%{_sourcedir}/%%{archivename}.%%{archiveext} is available)\\n}")
|
||||
end
|
||||
}
|
||||
|
||||
# Convenience macro to relay computed arguments to %setup
|
||||
%forgesetup(a:b:cDn:Tq) %setup %{?forgesetupargs} %{-a} %{-b} %{-c} %{-D} %{-n} %{-T} %{-q}
|
||||
|
||||
# Convenience macro to relay computed arguments to %autosetup
|
||||
%forgeautosetup(a:b:cDn:TvNS:p:) %autosetup %{?forgesetupargs} %{-a} %{-b} %{-c} %{-D} %{-n} %{-T} %{-v} %{-N} %{-S} %{-p}
|
||||
@ -1,170 +0,0 @@
|
||||
# Copyright (c) 2015-2018 Jakub Cajka <jcajka@redhat.com>,
|
||||
# Jan Chaloupka <jchaloup@redhat.com>,
|
||||
# Nicolas Mailhot <nim@fedoraproject.org>
|
||||
# This file is distributed under the terms of GNU GPL license version 3, or
|
||||
# any later version.
|
||||
|
||||
# This file contains macros for building projects in golang for packages
|
||||
# with golang compiler or gcc-go compiler based on an architecture.
|
||||
# Golang is primarly for primary architectures, gcc-go for secondary.
|
||||
#
|
||||
# This file provides only macros and must not use any other package except
|
||||
# redhat-rpm-macros.
|
||||
|
||||
# Define arches for PA and SA
|
||||
%golang_arches %{ix86} x86_64 %{arm} aarch64 ppc64le s390x
|
||||
%gccgo_arches %{mips}
|
||||
%go_arches %{golang_arches} %{gccgo_arches}
|
||||
|
||||
# Where to set GOPATH for builds
|
||||
%gopath %{_datadir}/gocode
|
||||
|
||||
# Define go_compilers macro to signal go-compiler package is available
|
||||
%go_compiler 1
|
||||
|
||||
# Sanitize a Go import path that can then serve as rpm package name
|
||||
# Mandatory parameter: a Go import path
|
||||
%gorpmname() %{lua:
|
||||
local goname = rpm.expand("%1")
|
||||
-- lowercase and end with '/'
|
||||
goname = string.lower(goname .. "/")
|
||||
-- remove eventual protocol prefix
|
||||
goname = string.gsub(goname, "^http(s?)://", "")
|
||||
-- remove eventual .git suffix
|
||||
goname = string.gsub(goname, "%.git/*", "")
|
||||
-- remove eventual git. prefix
|
||||
goname = string.gsub(goname, "^git%.", "")
|
||||
-- add golang prefix
|
||||
goname = "golang-" .. goname
|
||||
-- remove FQDN root (.com, .org, etc)
|
||||
goname = string.gsub(goname, "^([^/]+)%.([^%./]+)/", "%1/")
|
||||
-- special-case x.y.z number-strings as that’s an exception in our naming
|
||||
-- guidelines
|
||||
repeat
|
||||
goname, i = string.gsub(goname, "(%d)%.(%d)", "%1:%2")
|
||||
until i == 0
|
||||
-- replace various separators rpm does not like with -
|
||||
goname = string.gsub(goname, "[%._/%-]+", "-")
|
||||
-- because of the Azure sdk
|
||||
goname = string.gsub(goname, "%-for%-go%-", "-")
|
||||
-- Tokenize along - separators and remove duplicates to avoid
|
||||
-- golang-foo-foo-bar-foo names
|
||||
local result = ""
|
||||
local tokens = {}
|
||||
tokens["go"] = true
|
||||
for token in string.gmatch(goname, "[^%-]+") do
|
||||
if not tokens[token] then
|
||||
result = result .. "-" .. token
|
||||
tokens[token] = true
|
||||
end
|
||||
end
|
||||
-- reassemble the string, restore x.y.z runs, convert the vx.y.z
|
||||
-- Go convention to x.y.z as prefered in rpm naming
|
||||
result = string.gsub(result, "^-", "")
|
||||
result = string.gsub(result, ":", ".")
|
||||
-- some projects have a name that end up in a number, and *also* add release
|
||||
-- numbers on top of it, keep a - prefix before version strings
|
||||
result = string.gsub(result, "%-v([%.%d])", "-%1")
|
||||
print(result)
|
||||
}
|
||||
|
||||
# Map Go information to rpm metadata. This macro will compute default spec
|
||||
# variable values.
|
||||
#
|
||||
# The following spec variable MUST be set before calling the macro:
|
||||
#
|
||||
# goipath the packaged Go project import path
|
||||
#
|
||||
# The following spec variables SHOULD be set before calling the macro:
|
||||
#
|
||||
# forgeurl the project url on the forge, strongly recommended, if it can not
|
||||
# be deduced from goipath; alternatively, use -u <url>
|
||||
# Version if applicable, set it with Version: <version>
|
||||
# tag if applicable
|
||||
# commit if applicable
|
||||
#
|
||||
# The macro will attempt to compute and set the following variables if they are
|
||||
# not already set by the packager:
|
||||
#
|
||||
# goname an rpm-compatible package name derived from goipath
|
||||
# gosource an URL that can be used as SourceX: value
|
||||
# gourl an URL that can be used as URL: value
|
||||
#
|
||||
# It will delegate processing to the forgemeta macro for:
|
||||
#
|
||||
# forgesource an URL that can be used as SourceX: value
|
||||
# forgesetupargs the correct arguments to pass to %setup for this source
|
||||
# used by %forgesetup and %forgeautosetup
|
||||
# archivename the source archive filename, without extentions
|
||||
# archiveext the source archive filename extensions, without leading dot
|
||||
# archiveurl the url that can be used to download the source archive,
|
||||
# without renaming
|
||||
# scm the scm type, when packaging code snapshots: commits or tags
|
||||
#
|
||||
# If the macro is unable to parse your forgeurl value set at least archivename
|
||||
# and archiveurl before calling it.
|
||||
#
|
||||
# Most of the computed variables are both overridable and optional. However,
|
||||
# the macro WILL REDEFINE %{dist} when packaging a snapshot (commit or tag).
|
||||
# The previous %{dist} value will be lost. Don’t call the macro if you don’t
|
||||
# wish %{dist} to be changed.
|
||||
#
|
||||
# Optional parameters:
|
||||
# -u <url> Ignore forgeurl even if it exists and use <url> instead. Note
|
||||
# that the macro will still end up setting <url> as the forgeurl
|
||||
# spec variable if it manages to parse it.
|
||||
# -s Silently ignore problems in forgeurl, use it if it can be parsed,
|
||||
# ignore it otherwise.
|
||||
# -p Restore problem handling, override -s.
|
||||
# -v Be verbose and print every spec variable the macro sets.
|
||||
# -i Print some info about the state of spec variables the macro may use or
|
||||
# set at the end of the processing.
|
||||
%gometa(u:spvi) %{expand:%{lua:
|
||||
local forgeurl = rpm.expand("%{?-u*}")
|
||||
if (forgeurl == "") then
|
||||
forgeurl = rpm.expand("%{?forgeurl}")
|
||||
end
|
||||
-- Be explicit about the spec variables we’re setting
|
||||
local function explicitset(rpmvariable,value)
|
||||
rpm.define(rpmvariable .. " " .. value)
|
||||
if (rpm.expand("%{?-v}") ~= "") then
|
||||
rpm.expand("%{echo:Setting %%{" .. rpmvariable .. "} = " .. value .. "\\n}")
|
||||
end
|
||||
end
|
||||
-- Never ever stomp on a spec variable the packager already set
|
||||
local function safeset(rpmvariable,value)
|
||||
if (rpm.expand("%{?" .. rpmvariable .. "}") == "") then
|
||||
explicitset(rpmvariable,value)
|
||||
end
|
||||
end
|
||||
-- All the Go packaging automation relies on goipath being set
|
||||
local goipath = rpm.expand("%{?goipath}")
|
||||
if (goipath == "") then
|
||||
rpm.expand("%{error:Please set the Go import path in the “goipath” variable before calling “gometa”!}")
|
||||
end
|
||||
-- Compute and set spec variables
|
||||
if (forgeurl ~= "") then
|
||||
rpm.expand("%forgemeta %{?-v} %{?-i} %{?-s} %{?-p} -u " .. forgeurl .. "\\n")
|
||||
safeset("gourl", forgeurl)
|
||||
else
|
||||
safeset("gourl", "https://" .. goipath)
|
||||
rpm.expand("%forgemeta %{?-v} %{?-i} -s %{?-p} -u %{gourl}\\n")
|
||||
end
|
||||
if (rpm.expand("%{?forgesource}") ~= "") then
|
||||
safeset("gosource", "%{forgesource}")
|
||||
else
|
||||
safeset("gosource", "%{gourl}/%{archivename}.%{archiveext}")
|
||||
end
|
||||
safeset("goname", "%gorpmname %{goipath}")
|
||||
rpm.define("gosetup %forgesetup")
|
||||
-- Final spec variable summary if the macro was called with -i
|
||||
if (rpm.expand("%{?-i}") ~= "") then
|
||||
rpm.expand("%{echo:Go-specific packaging variables}")
|
||||
rpm.expand("%{echo: goipath: %{?goipath}}")
|
||||
rpm.expand("%{echo: goname: %{?goname}}")
|
||||
rpm.expand("%{echo: gourl: %{?gourl}}")
|
||||
rpm.expand("%{echo: gosource: %{?gosource}}")
|
||||
end}
|
||||
BuildRequires: compiler(go-compiler)
|
||||
ExclusiveArch: %{go_arches}
|
||||
}
|
||||
@ -1,21 +0,0 @@
|
||||
# Use these macros to differentiate between RH and other KMP implementation(s).
|
||||
|
||||
kernel_module_package_release 1
|
||||
|
||||
|
||||
|
||||
#kernel_module_package [ -n name ] [ -v version ] [ -r release ]
|
||||
# [ -f filelist]
|
||||
#
|
||||
|
||||
%kernel_module_package_buildreqs %global kmodtool_generate_buildreqs 1 \
|
||||
kernel-devel
|
||||
|
||||
%kernel_module_package(n:v:r:f:) %{expand:%( \
|
||||
%define kmodtool /usr/lib/rpm/openEuler/kmodtool.py\
|
||||
%define latest_kernel $(rpm -q --qf '%{VERSION}-%{RELEASE}\\\\n' `rpm -q kernel-devel` | head -n 1) \
|
||||
%{!?kernel_version:%{expand:%%global kernel_version %{latest_kernel}}} \
|
||||
%global kverrel %(%{kmodtool} verrel %{?kernel_version} 2>/dev/null) \
|
||||
python3 %{kmodtool} rpmtemplate_kmp %{-n*}%{!-n:%name} %{kverrel} %{-f*}%{!-f:%filelist} \
|
||||
)}
|
||||
|
||||
@ -1,151 +0,0 @@
|
||||
# Sensible Perl-specific RPM build macros.
|
||||
#
|
||||
# Note that these depend on the generic filtering system being in place in
|
||||
# rpm core; but won't cause a build to fail if they're not present.
|
||||
#
|
||||
# Chris Weyl <cweyl@alumni.drew.edu> 2009
|
||||
# Marcela Mašláňová <mmaslano@redhat.com> 2011
|
||||
|
||||
# This macro unsets several common vars used to control how Makefile.PL (et
|
||||
# al) build and install packages. We also set a couple to help some of the
|
||||
# common systems be less interactive. This was blatantly stolen from
|
||||
# cpanminus, and helps building rpms locally when one makes extensive use of
|
||||
# local::lib, etc.
|
||||
#
|
||||
# Usage, in %build, before "%{__perl} Makefile.PL ..."
|
||||
#
|
||||
# %{?perl_ext_env_unset}
|
||||
|
||||
%perl_ext_env_unset %{expand:
|
||||
unset PERL_MM_OPT MODULEBUILDRC PERL5INC
|
||||
export PERL_AUTOINSTALL="--defaultdeps"
|
||||
export PERL_MM_USE_DEFAULT=1
|
||||
}
|
||||
|
||||
#############################################################################
|
||||
# Filtering macro incantations
|
||||
|
||||
# keep track of what "revision" of the filtering we're at. Each time we
|
||||
# change the filter we should increment this.
|
||||
|
||||
%perl_default_filter_revision 3
|
||||
|
||||
# By default, for perl packages we want to filter all files in _docdir from
|
||||
# req/prov scanning.
|
||||
# Filtering out any provides caused by private libs in vendorarch/archlib
|
||||
# (vendor/core) is done by rpmbuild since Fedora 20
|
||||
# <https://fedorahosted.org/fpc/ticket/353>.
|
||||
#
|
||||
# Note that this must be invoked in the spec file, preferably as
|
||||
# "%{?perl_default_filter}", before any %description block.
|
||||
|
||||
%perl_default_filter %{expand: \
|
||||
%global __provides_exclude_from %{?__provides_exclude_from:%__provides_exclude_from|}^%{_docdir}
|
||||
%global __requires_exclude_from %{?__requires_exclude_from:%__requires_exclude_from|}^%{_docdir}
|
||||
%global __provides_exclude %{?__provides_exclude:%__provides_exclude|}^perl\\\\(VMS|^perl\\\\(Win32|^perl\\\\(DB\\\\)|^perl\\\\(UNIVERSAL\\\\)
|
||||
%global __requires_exclude %{?__requires_exclude:%__requires_exclude|}^perl\\\\(VMS|^perl\\\\(Win32
|
||||
}
|
||||
|
||||
#############################################################################
|
||||
# Macros to assist with generating a "-tests" subpackage in a semi-automatic
|
||||
# manner.
|
||||
#
|
||||
# The following macros are still in a highly experimental stage and users
|
||||
# should be aware that the interface and behaviour may change.
|
||||
#
|
||||
# PLEASE, PLEASE CONDITIONALIZE THESE MACROS IF YOU USE THEM.
|
||||
#
|
||||
# See http://gist.github.com/284409
|
||||
|
||||
# These macros should be invoked as above, right before the first %description
|
||||
# section, and conditionalized. e.g., for the common case where all our tests
|
||||
# are located under t/, the correct usage is:
|
||||
#
|
||||
# %{?perl_default_subpackage_tests}
|
||||
#
|
||||
# If custom files/directories need to be specified, this can be done as such:
|
||||
#
|
||||
# %{?perl_subpackage_tests:%perl_subpackage_tests t/ one/ three.sql}
|
||||
#
|
||||
# etc, etc.
|
||||
|
||||
%perl_version %(eval "`%{__perl} -V:version`"; echo $version)
|
||||
%perl_testdir %{_libexecdir}/perl5-tests
|
||||
%cpan_dist_name %(eval echo %{name} | %{__sed} -e 's/^perl-//')
|
||||
|
||||
# easily mark something as required by -tests and BR to the main package
|
||||
%tests_req() %{expand:\
|
||||
BuildRequires: %*\
|
||||
%%tests_subpackage_requires %*\
|
||||
}
|
||||
|
||||
# fixup (and create if needed) the shbang lines in tests, so they work and
|
||||
# rpmlint doesn't (correctly) have a fit
|
||||
%fix_shbang_line() \
|
||||
TMPHEAD=`mktemp`\
|
||||
TMPBODY=`mktemp`\
|
||||
for file in %* ; do \
|
||||
head -1 $file > $TMPHEAD\
|
||||
tail -n +2 $file > $TMPBODY\
|
||||
%{__perl} -pi -e '$f = /^#!/ ? "" : "#!%{__perl}$/"; $_="$f$_"' $TMPHEAD\
|
||||
cat $TMPHEAD $TMPBODY > $file\
|
||||
done\
|
||||
%{__perl} -MExtUtils::MakeMaker -e "ExtUtils::MM_Unix->fixin(qw{%*})"\
|
||||
%{__rm} $TMPHEAD $TMPBODY\
|
||||
%{nil}
|
||||
|
||||
# additional -tests subpackage requires, if any
|
||||
%tests_subpackage_requires() %{expand: \
|
||||
%global __tests_spkg_req %{?__tests_spkg_req} %* \
|
||||
}
|
||||
|
||||
# additional -tests subpackage provides, if any
|
||||
%tests_subpackage_provides() %{expand: \
|
||||
%global __tests_spkg_prov %{?__tests_spkg_prov} %* \
|
||||
}
|
||||
|
||||
#
|
||||
# Runs after the body of %check completes.
|
||||
#
|
||||
|
||||
%__perl_check_pre %{expand: \
|
||||
%{?__spec_check_pre} \
|
||||
pushd %{buildsubdir} \
|
||||
%define perl_br_testdir %{buildroot}%{perl_testdir}/%{cpan_dist_name} \
|
||||
%{__mkdir_p} %{perl_br_testdir} \
|
||||
%{__tar} -cf - %{__perl_test_dirs} | ( cd %{perl_br_testdir} && %{__tar} -xf - ) \
|
||||
find . -maxdepth 1 -type f -name '*META*' -exec %{__cp} -vp {} %{perl_br_testdir} ';' \
|
||||
find %{perl_br_testdir} -type f -exec %{__chmod} -c -x {} ';' \
|
||||
T_FILES=`find %{perl_br_testdir} -type f -name '*.t'` \
|
||||
%fix_shbang_line $T_FILES \
|
||||
%{__chmod} +x $T_FILES \
|
||||
%{_fixperms} %{perl_br_testdir} \
|
||||
popd \
|
||||
}
|
||||
|
||||
#
|
||||
# The actual invoked macro
|
||||
#
|
||||
|
||||
%perl_subpackage_tests() %{expand: \
|
||||
%global __perl_package 1\
|
||||
%global __perl_test_dirs %* \
|
||||
%global __spec_check_pre %{expand:%{__perl_check_pre}} \
|
||||
%package tests\
|
||||
Summary: Test suite for package %{name}\
|
||||
Group: Development/Debug\
|
||||
Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release}\
|
||||
Requires: /usr/bin/prove \
|
||||
%{?__tests_spkg_req:Requires: %__tests_spkg_req}\
|
||||
%{?__tests_spkg_prov:Provides: %__tests_spkg_prov}\
|
||||
AutoReqProv: 0 \
|
||||
%description tests\
|
||||
This package provides the test suite for package %{name}.\
|
||||
%files tests\
|
||||
%defattr(-,root,root,-)\
|
||||
%{perl_testdir}\
|
||||
}
|
||||
|
||||
# shortcut sugar
|
||||
%perl_default_subpackage_tests %perl_subpackage_tests t/
|
||||
|
||||
@ -1,294 +0,0 @@
|
||||
# Note that the path could itself be a python file, or a directory
|
||||
|
||||
# Python's compile_all module only works on directories, and requires a max
|
||||
# recursion depth
|
||||
|
||||
# Usage:
|
||||
# %py_byte_compile <interpereter> <path>
|
||||
# Example:
|
||||
# %py_byte_compile %{__python3} %{buildroot}%{_datadir}/spam/plugins/
|
||||
|
||||
# This will terminate build on SyntaxErrors, if you want to avoid that,
|
||||
# use it in a subshell like this:
|
||||
# (%{py_byte_compile <interpereter> <path>}) || :
|
||||
|
||||
%py_byte_compile()\
|
||||
python_binary="%1"\
|
||||
bytecode_compilation_path="%2"\
|
||||
find $bytecode_compilation_path -type f -a -name "*.py" -print0 | xargs -0 $python_binary -O -m py_compile\
|
||||
find $bytecode_compilation_path -type f -a -name "*.py" -print0 | xargs -0 $python_binary -m py_compile
|
||||
%py_setup setup.py
|
||||
%py_shbang_opts -s
|
||||
|
||||
# Use the slashes after expand so that the command starts on the same line as
|
||||
# the macro
|
||||
%py_build() %{expand:\\\
|
||||
CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}"\\\
|
||||
%{__python} %{py_setup} %{?py_setup_args} build --executable="%{__python} %{py_shbang_opts}" %{?*}
|
||||
sleep 1
|
||||
}
|
||||
|
||||
%py_build_egg() %{expand:\\\
|
||||
CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}"\\\
|
||||
%{__python} %{py_setup} %{?py_setup_args} bdist_egg %{?*}
|
||||
sleep 1
|
||||
}
|
||||
|
||||
%py_build_wheel() %{expand:\\\
|
||||
CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}"\\\
|
||||
%{__python} %{py_setup} %{?py_setup_args} bdist_wheel %{?*}
|
||||
sleep 1
|
||||
}
|
||||
|
||||
%py_install() %{expand:\\\
|
||||
CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}"\\\
|
||||
%{__python} %{py_setup} %{?py_setup_args} install -O1 --skip-build --root %{buildroot} %{?*}
|
||||
}
|
||||
|
||||
%py_install_egg() %{expand:\\\
|
||||
mkdir -p %{buildroot}%{python_sitelib}
|
||||
easy_install -m --prefix %{buildroot}%{_prefix} -Z dist/*-py%{python_version}.egg %{?*}
|
||||
}
|
||||
|
||||
%py_install_wheel() %{expand:\\\
|
||||
pip install -I dist/%{1} --root %{buildroot} --strip-file-prefix %{buildroot} --no-deps
|
||||
}
|
||||
|
||||
%python_provide() %{lua:
|
||||
function string.starts(String,Start)
|
||||
return string.sub(String,1,string.len(Start))==Start
|
||||
end
|
||||
package = rpm.expand("%{?1}")
|
||||
vr = rpm.expand("%{?epoch:%{epoch}:}%{version}-%{release}")
|
||||
if (string.starts(package, "python2-")) then
|
||||
--No unversioned provides as python2 is not default
|
||||
elseif (string.starts(package, "python" .. rpm.expand("%{python3_pkgversion}") .. "-")) then
|
||||
print("\\nProvides: python-")
|
||||
l = 8 + string.len(rpm.expand("%{python3_pkgversion}"))
|
||||
print(string.sub(package,l,string.len(package)))
|
||||
print(" = ")
|
||||
print(vr)
|
||||
--Obsoleting the previous default python package (if it doesn't have isa)
|
||||
if (string.sub(package, "-1") ~= ")") then
|
||||
print("\\nObsoletes: python-")
|
||||
print(string.sub(package,l,string.len(package)))
|
||||
print(" < ")
|
||||
print(vr)
|
||||
end
|
||||
elseif (rpm.expand("%{?python3_other_pkgversion}") ~= "" and string.starts(package, "python" .. rpm.expand("%{python3_other_pkgversion}") .. "-")) then
|
||||
--No unversioned provides as python3_other is not default
|
||||
elseif (string.starts(package, "pypy-")) then
|
||||
--No unversioned provides as pypy is not default
|
||||
elseif (string.starts(package, "pypy2-")) then
|
||||
--No unversioned provides as pypy is not default
|
||||
elseif (string.starts(package, "pypy3-")) then
|
||||
--No unversioned provides as pypy is not default
|
||||
elseif (string.starts(package, "python-")) then
|
||||
--No unversioned provides needed for unversioned python
|
||||
else
|
||||
print("%python_provide: ERROR: ")
|
||||
print(package)
|
||||
print(" not recognized.")
|
||||
end
|
||||
}
|
||||
|
||||
%python_enable_dependency_generator() \
|
||||
%global __pythondist_requires %{_rpmconfigdir}/pythondistdeps.py --requires \
|
||||
%{nil}
|
||||
%__python2 /usr/bin/python2
|
||||
%python2_sitelib %(%{__python2} -Esc "from distutils.sysconfig import get_python_lib; print(get_python_lib())")
|
||||
%python2_sitearch %(%{__python2} -Esc "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")
|
||||
%python2_version %(%{__python2} -Esc "import sys; sys.stdout.write('{0.major}.{0.minor}'.format(sys.version_info))")
|
||||
%python2_version_nodots %(%{__python2} -Esc "import sys; sys.stdout.write('{0.major}{0.minor}'.format(sys.version_info))")
|
||||
|
||||
%py2_shbang_opts -s
|
||||
|
||||
# Use the slashes after expand so that the command starts on the same line as
|
||||
# the macro
|
||||
%py2_build() %{expand:\\\
|
||||
CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}"\\\
|
||||
%{__python2} %{py_setup} %{?py_setup_args} build --executable="%{__python2} %{py2_shbang_opts}" %{?*}
|
||||
sleep 1
|
||||
}
|
||||
|
||||
%py2_build_egg() %{expand:\\\
|
||||
CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}"\\\
|
||||
%{__python2} %{py_setup} %{?py_setup_args} bdist_egg %{?*}
|
||||
sleep 1
|
||||
}
|
||||
|
||||
%py2_build_wheel() %{expand:\\\
|
||||
CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}"\\\
|
||||
%{__python2} %{py_setup} %{?py_setup_args} bdist_wheel %{?*}
|
||||
sleep 1
|
||||
}
|
||||
|
||||
%py2_install() %{expand:\\\
|
||||
CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}"\\\
|
||||
%{__python2} %{py_setup} %{?py_setup_args} install -O1 --skip-build --root %{buildroot} %{?*}
|
||||
}
|
||||
|
||||
%py2_install_egg() %{expand:\\\
|
||||
mkdir -p %{buildroot}%{python2_sitelib}
|
||||
easy_install-%{python2_version} -m --prefix %{buildroot}%{_prefix} -Z dist/*-py%{python2_version}.egg %{?*}
|
||||
}
|
||||
|
||||
%py2_install_wheel() %{expand:\\\
|
||||
pip%{python2_version} install -I dist/%{1} --root %{buildroot} --strip-file-prefix %{buildroot} --no-deps
|
||||
}
|
||||
%__python3 /usr/bin/python3
|
||||
%python3_sitelib %(%{__python3} -Ic "from distutils.sysconfig import get_python_lib; print(get_python_lib())")
|
||||
%python3_sitearch %(%{__python3} -Ic "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")
|
||||
%python3_version %(%{__python3} -Ic "import sys; sys.stdout.write(sys.version[:3])")
|
||||
%python3_version_nodots %(%{__python3} -Ic "import sys; sys.stdout.write(sys.version[:3].replace('.',''))")
|
||||
%python3_platform %(%{__python3} -Ic "import sysconfig; print(sysconfig.get_platform())")
|
||||
%py3dir %{_builddir}/python3-%{name}-%{version}-%{release}
|
||||
|
||||
%py3_shbang_opts -s
|
||||
|
||||
# Use the slashes after expand so that the command starts on the same line as
|
||||
# the macro
|
||||
%py3_build() %{expand:\\\
|
||||
CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}"\\\
|
||||
%{__python3} %{py_setup} %{?py_setup_args} build --executable="%{__python3} %{py3_shbang_opts}" %{?*}
|
||||
sleep 1
|
||||
}
|
||||
|
||||
%py3_build_egg() %{expand:\\\
|
||||
CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}"\\\
|
||||
%{__python3} %{py_setup} %{?py_setup_args} bdist_egg %{?*}
|
||||
sleep 1
|
||||
}
|
||||
|
||||
%py3_build_wheel() %{expand:\\\
|
||||
CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}"\\\
|
||||
%{__python3} %{py_setup} %{?py_setup_args} bdist_wheel %{?*}
|
||||
sleep 1
|
||||
}
|
||||
|
||||
%py3_install() %{expand:\\\
|
||||
CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}"\\\
|
||||
%{__python3} %{py_setup} %{?py_setup_args} install -O1 --skip-build --root %{buildroot} %{?*}
|
||||
}
|
||||
|
||||
%py3_install_egg() %{expand:\\\
|
||||
mkdir -p %{buildroot}%{python3_sitelib}
|
||||
easy_install-%{python3_version} -m --prefix %{buildroot}%{_prefix} -Z dist/*-py%{python3_version}.egg %{?*}
|
||||
}
|
||||
|
||||
%py3_install_wheel() %{expand:\\\
|
||||
pip%{python3_version} install -I dist/%{1} --root %{buildroot} --no-deps
|
||||
}
|
||||
# python3_pkgversion specifies the version of Python 3 in the distro. It can be
|
||||
# a specific version (e.g. 34 in Fedora EPEL7)
|
||||
%python3_pkgversion 3
|
||||
|
||||
# Set to /bin/true to avoid %ifdefs and %{? in specfiles
|
||||
%__python3_other /bin/true
|
||||
%py3_other_build /bin/true
|
||||
%py3_other_install /bin/true
|
||||
|
||||
|
||||
|
||||
# === Macros for Build/Requires tags using Python dist tags ===
|
||||
# - https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages
|
||||
# - These macros need to be in macros.python-srpm, because BuildRequires tags
|
||||
# get rendered as runtime requires into the metadata of SRPMs.
|
||||
|
||||
# Converts Python dist name to a canonical format
|
||||
%py_dist_name() %{lua:\
|
||||
name = rpm.expand("%{?1:%{1}}");\
|
||||
canonical = string.gsub(string.lower(name), "[^%w%.]+", "-");\
|
||||
print(canonical);\
|
||||
}
|
||||
|
||||
# Creates Python 2 dist tag(s) after converting names to canonical format
|
||||
# Needs to first put all arguments into a list, because invoking a different
|
||||
# macro (%py_dist_name) overwrites them
|
||||
%py2_dist() %{lua:\
|
||||
args = {}\
|
||||
arg = 1\
|
||||
while (true) do\
|
||||
name = rpm.expand("%{?" .. arg .. ":%{" .. arg .. "}}");\
|
||||
if (name == nil or name == '') then\
|
||||
break\
|
||||
end\
|
||||
args[arg] = name\
|
||||
arg = arg + 1\
|
||||
end\
|
||||
for arg, name in ipairs(args) do\
|
||||
canonical = rpm.expand("%py_dist_name " .. name);\
|
||||
print("python2dist(" .. canonical .. ") ");\
|
||||
end\
|
||||
}
|
||||
|
||||
# Creates Python 3 dist tag(s) after converting names to canonical format
|
||||
# Needs to first put all arguments into a list, because invoking a different
|
||||
# macro (%py_dist_name) overwrites them
|
||||
%py3_dist() %{lua:\
|
||||
args = {}\
|
||||
arg = 1\
|
||||
while (true) do\
|
||||
name = rpm.expand("%{?" .. arg .. ":%{" .. arg .. "}}");\
|
||||
if (name == nil or name == '') then\
|
||||
break\
|
||||
end\
|
||||
args[arg] = name\
|
||||
arg = arg + 1\
|
||||
end\
|
||||
for arg, name in ipairs(args) do\
|
||||
canonical = rpm.expand("%py_dist_name " .. name);\
|
||||
print("python3dist(" .. canonical .. ") ");\
|
||||
end\
|
||||
}
|
||||
|
||||
# Macro to replace overly complicated references to PyPI source files.
|
||||
# Expands to the pythonhosted URL for a package
|
||||
# Accepts zero to three arguments:
|
||||
# 1: The PyPI project name, defaulting to %srcname if it is defined, then
|
||||
# %pypi_name if it is defined, then just %name.
|
||||
# 2: The PYPI version, defaulting to %version.
|
||||
# 3: The file extension, defaulting to "tar.gz". (A period will be added
|
||||
# automatically.)
|
||||
# Requires %__pypi_url and %__pypi_default_extension to be defined.
|
||||
%__pypi_url https://files.pythonhosted.org/packages/source/
|
||||
%__pypi_default_extension tar.gz
|
||||
|
||||
%pypi_source() %{lua:
|
||||
local src = rpm.expand('%1')
|
||||
local ver = rpm.expand('%2')
|
||||
local ext = rpm.expand('%3')
|
||||
local url = rpm.expand('%__pypi_url')
|
||||
\
|
||||
-- If no first argument, try %srcname, then %pypi_name, then %name
|
||||
-- Note that rpm leaves macros unchanged if they are not defined.
|
||||
if src == '%1' then
|
||||
src = rpm.expand('%srcname')
|
||||
end
|
||||
if src == '%srcname' then
|
||||
src = rpm.expand('%pypi_name')
|
||||
end
|
||||
if src == '%pypi_name' then
|
||||
src = rpm.expand('%name')
|
||||
end
|
||||
\
|
||||
-- If no second argument, use %version
|
||||
if ver == '%2' then
|
||||
ver = rpm.expand('%version')
|
||||
end
|
||||
\
|
||||
-- If no third argument, use the preset default extension
|
||||
if ext == '%3' then
|
||||
ext = rpm.expand('%__pypi_default_extension')
|
||||
end
|
||||
\
|
||||
local first = string.sub(src, 1, 1)
|
||||
\
|
||||
print(url .. first .. '/' .. src .. '/' .. src .. '-' .. ver .. '.' .. ext)
|
||||
}
|
||||
|
||||
# New python macros
|
||||
%__python /usr/bin/python
|
||||
%python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; import sys; sys.stdout.write(get_python_lib())")
|
||||
%python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; import sys; sys.stdout.write(get_python_lib(1))")
|
||||
%python_version %(%{__python} -c "import sys; sys.stdout.write(sys.version[:3])")
|
||||
@ -1,2 +0,0 @@
|
||||
*cc1_options:
|
||||
+ %{!r:%{!fpie:%{!fPIE:%{!fpic:%{!fPIC:%{!fno-pic:-fPIE}}}}}}
|
||||
@ -1,2 +0,0 @@
|
||||
*self_spec:
|
||||
+ %{!static:%{!shared:%{!r:-pie}}}
|
||||
@ -1,2 +0,0 @@
|
||||
*cc1_options:
|
||||
+ %{!r:%{!D__KERNEL__:%{!pie:%{!fpic:%{!fPIC:%{!fpie:%{!fPIE:%{!fno-pic:%{!fno-PIC:%{!fno-pie:%{!fno-PIE:%{!shared:%{!static:%{!nostdlib:%{!nostartfiles:-fPIE}}}}}}}}}}}}}}}
|
||||
@ -1,2 +0,0 @@
|
||||
*self_spec:
|
||||
+ %{!D__KERNEL__:%{!pie:%{!A:%{!fno-pie:%{!fno-PIE:%{!fno-pic:%{!fno-PIC:%{!shared:%{!static:%{!r:%{!nostdlib:%{!nostartfiles:-pie}}}}}}}}}}}}
|
||||
@ -1,2 +0,0 @@
|
||||
*cc1_options:
|
||||
+ %{!D__KERNEL__:%{!nostdlib:%{!nodefaultlibs:%{!fno-stack-protector:%{!fstack-protector-all:-fstack-protector-strong}}}}}
|
||||
@ -1,20 +0,0 @@
|
||||
include: /usr/lib/rpm/rpmrc
|
||||
|
||||
optflags: i686 %{__global_compiler_flags} -m32 -march=i686 -mtune=generic -msse2 -mfpmath=sse -mstackrealign -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection
|
||||
optflags: athlon %{__global_compiler_flags} -m32 -march=athlon -fasynchronous-unwind-tables -fstack-clash-protection
|
||||
optflags: ia64 %{__global_compiler_flags}
|
||||
optflags: x86_64 %{__global_compiler_flags} -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection
|
||||
|
||||
optflags: aarch64 %{__global_compiler_flags} -fasynchronous-unwind-tables -fstack-clash-protection
|
||||
optflags: riscv64 %{__global_compiler_flags} -fasynchronous-unwind-tables -fstack-clash-protection
|
||||
|
||||
buildarchtranslate: athlon: i686
|
||||
buildarchtranslate: geode: i686
|
||||
buildarchtranslate: pentium4: i686
|
||||
buildarchtranslate: pentium3: i686
|
||||
buildarchtranslate: i686: i686
|
||||
buildarchtranslate: i586: i586
|
||||
|
||||
buildarchtranslate: armv7l: armv5tel
|
||||
buildarchtranslate: armv7hl: armv7hl
|
||||
buildarchtranslate: armv7hnl: armv7hl
|
||||
@ -1 +0,0 @@
|
||||
52 comment=249353ffa70859e218c1617167022e26c00dcdf1
|
||||
BIN
300.tar.gz
Normal file
BIN
300.tar.gz
Normal file
Binary file not shown.
24
Delete-the-commented-code.patch
Normal file
24
Delete-the-commented-code.patch
Normal file
@ -0,0 +1,24 @@
|
||||
From c7605385b9d838be78a87de02a48eaaa6e69b4b2 Mon Sep 17 00:00:00 2001
|
||||
From: hongjinghao <hongjinghao@huawei.com>
|
||||
Date: Tue, 5 Mar 2024 20:22:59 +0800
|
||||
Subject: [PATCH] Delete the commented code
|
||||
|
||||
---
|
||||
brp-digest-list | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
diff --git a/brp-digest-list b/brp-digest-list
|
||||
index 77248c9..7de42b7 100644
|
||||
--- a/brp-digest-list
|
||||
+++ b/brp-digest-list
|
||||
@@ -9,7 +9,6 @@ if [ -z "$RPM_BUILD_ROOT" -o "$RPM_BUILD_ROOT" = "/" ]; then
|
||||
fi
|
||||
|
||||
# Create temporary file listing files in the manifest
|
||||
-#[ -n "$TMPDIR" ] || TMPDIR="/tmp"
|
||||
TMPDIR="/tmp"
|
||||
BIN_PKG_FILES=${TMPDIR}/${3%%.rpm}
|
||||
cat - > $BIN_PKG_FILES
|
||||
--
|
||||
2.33.0
|
||||
|
||||
@ -3,23 +3,25 @@ From: yangmingtaip <yangmingtai@huawei.com>
|
||||
Date: Sat, 4 Sep 2021 14:14:54 +0800
|
||||
Subject: [PATCH] add brp scripts to delete rpath
|
||||
|
||||
Signed-off-by: xujing <xujing125@huawei.com>
|
||||
---
|
||||
brp-chrpath | 103 ++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
brp-chrpath | 104 ++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
macros | 2 +
|
||||
2 files changed, 105 insertions(+)
|
||||
2 files changed, 106 insertions(+)
|
||||
create mode 100755 brp-chrpath
|
||||
|
||||
diff --git a/brp-chrpath b/brp-chrpath
|
||||
new file mode 100755
|
||||
index 0000000..6dd37de
|
||||
index 0000000..dc48351
|
||||
--- /dev/null
|
||||
+++ b/brp-chrpath
|
||||
@@ -0,0 +1,103 @@
|
||||
@@ -0,0 +1,104 @@
|
||||
+#!/usr/bin/sh
|
||||
+# remove rpath specified
|
||||
+
|
||||
+rpathSuffix=(
|
||||
+ "/home/abuild/rpmbuild/BUILD"
|
||||
+ "/home/abuild/rpmbuild/BUILD",
|
||||
+ "/home/lkp/rpmbuild/BUILD"
|
||||
+)
|
||||
+
|
||||
+rpath=(
|
||||
@ -119,7 +121,7 @@ index 0000000..6dd37de
|
||||
+
|
||||
+exit 0
|
||||
diff --git a/macros b/macros
|
||||
index 7cde63f..ee0c126 100644
|
||||
index 36621df..a316be9 100644
|
||||
--- a/macros
|
||||
+++ b/macros
|
||||
@@ -89,6 +89,7 @@
|
||||
@ -130,14 +132,14 @@ index 7cde63f..ee0c126 100644
|
||||
%__brp_ldconfig /usr/lib/rpm/brp-ldconfig
|
||||
%__brp_compress /usr/lib/rpm/brp-compress
|
||||
%__brp_strip /usr/lib/rpm/brp-strip %{__strip}
|
||||
@@ -107,6 +108,7 @@
|
||||
%{?__brp_strip_static_archive} \
|
||||
%{?py_auto_byte_compile:%{?__brp_python_bytecompile}} \
|
||||
%{?__brp_python_hardlink} \
|
||||
+ %{?__vendor_delete_rpath:%{?__brp_chrpath}} \
|
||||
%{nil}
|
||||
@@ -111,6 +112,7 @@
|
||||
|
||||
%__spec_install_post\
|
||||
%{?__debug_package:%{__debug_install_post}}\
|
||||
+ %{?__vendor_delete_rpath:%{?__brp_chrpath}} \
|
||||
%{__arch_install_post}\
|
||||
%{__os_install_post}\
|
||||
%{nil}
|
||||
--
|
||||
2.23.0
|
||||
2.33.0
|
||||
|
||||
|
||||
38
add-powerpc64le-and-ppc64le-support.patch
Normal file
38
add-powerpc64le-and-ppc64le-support.patch
Normal file
@ -0,0 +1,38 @@
|
||||
From fc04d33640534f5046210b4cb60fd4c595955781 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=E9=82=B9=E9=B9=8F?= <peng.zou@shingroup.cn>
|
||||
Date: Thu, 22 Feb 2024 14:42:38 +0800
|
||||
Subject: [PATCH] add powerpc64le and ppc64le support
|
||||
|
||||
---
|
||||
macros | 2 +-
|
||||
rpmrc | 1 +
|
||||
2 files changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/macros b/macros
|
||||
index d241ce3..ddee753 100644
|
||||
--- a/macros
|
||||
+++ b/macros
|
||||
@@ -241,7 +241,7 @@
|
||||
%pkg_vcmp() (%{expand:%%{pkg_version_cmp %1 %3}} %2 0)
|
||||
|
||||
#arches macros
|
||||
-%generic_arches %{ix86} x86_64 %{arm} aarch64 sw_64 loongarch64
|
||||
+%generic_arches %{ix86} x86_64 %{arm} aarch64 sw_64 loongarch64 powerpc64le ppc64le
|
||||
%ldc_arches %{generic_arches}
|
||||
%valgrind_arches %{generic_arches}
|
||||
%nodejs_arches %{generic_arches}
|
||||
diff --git a/rpmrc b/rpmrc
|
||||
index 8ba756d..6a29bcb 100644
|
||||
--- a/rpmrc
|
||||
+++ b/rpmrc
|
||||
@@ -7,6 +7,7 @@ optflags: x86_64 %{__global_compiler_flags} -m64 -mtune=generic -fasynchronous-u
|
||||
|
||||
optflags: aarch64 %{__global_compiler_flags} -fasynchronous-unwind-tables -fstack-clash-protection
|
||||
optflags: riscv64 %{__global_compiler_flags} -fasynchronous-unwind-tables -fstack-clash-protection
|
||||
+optflags: ppc64le %{__global_compiler_flags} -fasynchronous-unwind-tables -fstack-clash-protection
|
||||
|
||||
buildarchtranslate: athlon: i686
|
||||
buildarchtranslate: geode: i686
|
||||
--
|
||||
2.33.0
|
||||
|
||||
41
add-riscv64-to-some-arches-macro.patch
Normal file
41
add-riscv64-to-some-arches-macro.patch
Normal file
@ -0,0 +1,41 @@
|
||||
From 7332245a8f59de83485208282f2a15beaf5e544f Mon Sep 17 00:00:00 2001
|
||||
From: laokz <zhangkai@iscas.ac.cn>
|
||||
Date: Tue, 7 May 2024 10:21:52 +0800
|
||||
Subject: [PATCH] add riscv64 to some arches macro
|
||||
|
||||
---
|
||||
macros | 11 +++++------
|
||||
1 file changed, 5 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/macros b/macros
|
||||
index ddee753..bf82bc5 100644
|
||||
--- a/macros
|
||||
+++ b/macros
|
||||
@@ -244,7 +244,7 @@
|
||||
%generic_arches %{ix86} x86_64 %{arm} aarch64 sw_64 loongarch64 powerpc64le ppc64le
|
||||
%ldc_arches %{generic_arches}
|
||||
%valgrind_arches %{generic_arches}
|
||||
-%nodejs_arches %{generic_arches}
|
||||
+%nodejs_arches %{generic_arches} riscv64
|
||||
%ldc_arches %{generic_arches}
|
||||
%mono_arches %{generic_arches}
|
||||
%fpc_arches %{generic_arches}
|
||||
@@ -253,11 +253,10 @@
|
||||
%GNAT_arches %{GPRbuild_arches} %{generic_arches}
|
||||
%GPRbuild_arches %{generic_arches}
|
||||
%nim_arches %{generic_arches}
|
||||
-%nodejs_arches %{generic_arches}
|
||||
-%ocaml_native_compiler %{generic_arches}
|
||||
-%ocaml_natdynlink %{generic_arches}
|
||||
-%ocaml_native_profiling %{generic_arches}
|
||||
-%openblas_arches %{generic_arches}
|
||||
+%ocaml_native_compiler %{generic_arches} riscv64
|
||||
+%ocaml_natdynlink %{generic_arches} riscv64
|
||||
+%ocaml_native_profiling %{generic_arches} riscv64
|
||||
+%openblas_arches %{generic_arches} riscv64
|
||||
|
||||
#%ldconfig /sbin/ldconfig
|
||||
%ldconfig_post(n:) %{?ldconfig:%post -p %ldconfig %{?*} %{-n:-n %{-n*}}\
|
||||
--
|
||||
2.39.2
|
||||
|
||||
@ -1,22 +1,24 @@
|
||||
From 22a24809ad1192a89b9d1c795dc3b7c313488f64 Mon Sep 17 00:00:00 2001
|
||||
From 3e65c85831be0b8f8e1cd43869b4991a76e14d9b Mon Sep 17 00:00:00 2001
|
||||
From: Yang Yanchao <yangyanchao6@huawei.com>
|
||||
Date: Wed, 7 Dec 2022 11:34:39 +0800
|
||||
Date: Fri, 17 Mar 2023 01:09:09 +0000
|
||||
Subject: [PATCH] backport kmp feature
|
||||
|
||||
Signed-off-by: Yang Yanchao <yangyanchao6@huawei.com>
|
||||
Signed-off-by: Xinliang Liu <xinliang.liu@linaro.org>
|
||||
---
|
||||
kmodtool | 292 ++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
kmodtool | 281 ++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
kmodtool.py | 83 ---------------
|
||||
macros.kmp | 85 +++++++++++----
|
||||
3 files changed, 355 insertions(+), 105 deletions(-)
|
||||
macros.kmp | 85 ++++++++++++----
|
||||
3 files changed, 350 insertions(+), 105 deletions(-)
|
||||
create mode 100644 kmodtool
|
||||
delete mode 100644 kmodtool.py
|
||||
|
||||
diff --git a/kmodtool b/kmodtool
|
||||
new file mode 100644
|
||||
index 0000000..c3217e6
|
||||
index 0000000..427d1df
|
||||
--- /dev/null
|
||||
+++ b/kmodtool
|
||||
@@ -0,0 +1,292 @@
|
||||
@@ -0,0 +1,281 @@
|
||||
+#!/usr/bin/bash
|
||||
+
|
||||
+# kmodtool - Helper script for building kernel module RPMs
|
||||
@ -133,10 +135,6 @@ index 0000000..c3217e6
|
||||
+ echo "Release: %{kmp_release}"
|
||||
+ fi
|
||||
+
|
||||
+ if [ ! -z "$kmp" ]; then
|
||||
+ echo "%global _use_internal_dependency_generator 0"
|
||||
+ fi
|
||||
+
|
||||
+ cat <<EOF
|
||||
+Provides: kernel-modules = ${verrel}${variant}
|
||||
+Provides: ${kmod_name}-kmod = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
@ -152,15 +150,10 @@ index 0000000..c3217e6
|
||||
+#
|
||||
+
|
||||
+ cat <<EOF
|
||||
+Requires(post): /sbin/depmod
|
||||
+Requires(postun): /sbin/depmod
|
||||
+Requires(post): /usr/sbin/depmod
|
||||
+Requires(postun): /usr/sbin/depmod
|
||||
+EOF
|
||||
+
|
||||
+#if [ "no" != "$kmp_nobuildreqs" ]
|
||||
+#then
|
||||
+ # echo "BuildRequires: kernel${dashvariant}-devel-%{_target_cpu} = ${verrel}"
|
||||
+#fi
|
||||
+
|
||||
+if [ "" != "$kmp_override_preamble" ]
|
||||
+then
|
||||
+ cat "$kmp_override_preamble"
|
||||
@ -199,7 +192,6 @@ index 0000000..c3217e6
|
||||
+ if [ ! -z "$kmp" ]; then
|
||||
+ cat <<EOF
|
||||
+modules=( \$(cat /var/run/rpm-kmod-${kmod_name}${dashvariant}-modules) )
|
||||
+#rm /var/run/rpm-kmod-${kmod_name}${dashvariant}-modules
|
||||
+if [ -x "/sbin/weak-modules" ]; then
|
||||
+ printf '%s\n' "\${modules[@]}" \
|
||||
+ | /sbin/weak-modules --remove-modules
|
||||
@ -212,7 +204,6 @@ index 0000000..c3217e6
|
||||
+then
|
||||
+ echo "%defattr(644,root,root,755)"
|
||||
+ echo "/lib/modules/${verrel}${variant}/"
|
||||
+ echo "/lib/firmware/"
|
||||
+else
|
||||
+ cat "$kmp_override_filelist" | get_filelist
|
||||
+fi
|
||||
@ -399,10 +390,10 @@ index 75492b9..0000000
|
||||
- exit()
|
||||
-
|
||||
diff --git a/macros.kmp b/macros.kmp
|
||||
index d46aa04..78c2a57 100644
|
||||
index d46aa04..8440e26 100644
|
||||
--- a/macros.kmp
|
||||
+++ b/macros.kmp
|
||||
@@ -1,22 +1,63 @@
|
||||
@@ -1,22 +1,64 @@
|
||||
-# Use these macros to differentiate between __vendor and other KMP implementation(s).
|
||||
-
|
||||
-kernel_module_package_release 1
|
||||
@ -465,7 +456,8 @@ index d46aa04..78c2a57 100644
|
||||
+ flavors_to_build="%*" \
|
||||
+ else \
|
||||
+ flavors_to_build=" $flavors "\
|
||||
+ echo "[$flavors_to_build]" >/tmp/tmp.txt
|
||||
+ rm -rf /tmp/tmp.$$ \
|
||||
+ echo "[$flavors_to_build]" >/tmp/tmp.$$ \
|
||||
+ for i in %* \
|
||||
+ do \
|
||||
+ flavors_to_build=${flavors_to_build//$i /}
|
||||
|
||||
@ -0,0 +1,25 @@
|
||||
From 0eea7318489474d20e391cc55eb81f2a642e36f8 Mon Sep 17 00:00:00 2001
|
||||
From: gaoyusong <gaoyusong2@huawei.com>
|
||||
Date: Fri, 3 Nov 2023 10:55:26 +0800
|
||||
Subject: [PATCH] check if the file is a symbolic link in brp-digest-list
|
||||
|
||||
---
|
||||
brp-digest-list | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/brp-digest-list b/brp-digest-list
|
||||
index 9ec50a2..77248c9 100644
|
||||
--- a/brp-digest-list
|
||||
+++ b/brp-digest-list
|
||||
@@ -18,7 +18,7 @@ cat - > $BIN_PKG_FILES
|
||||
trap "rm -f \"${BIN_PKG_FILES}\"" 0 2 3 5 10 13 15
|
||||
|
||||
# File empty, exit
|
||||
-if [ -z $(head -c 1 $BIN_PKG_FILES) ]; then
|
||||
+if [ -L $BIN_PKG_FILES ] || [ -z $(head -c 1 $BIN_PKG_FILES) ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
--
|
||||
2.27.0
|
||||
|
||||
15
fix-brp-ldconfig-riscv-default-library-directory.patch
Normal file
15
fix-brp-ldconfig-riscv-default-library-directory.patch
Normal file
@ -0,0 +1,15 @@
|
||||
--- openEuler-rpm-config/brp-ldconfig 2020-08-20 17:13:06.000000000 +0800
|
||||
+++ openEuler-rpm-config/brp-ldconfig.new 2023-03-08 19:45:58.241036244 +0800
|
||||
@@ -5,4 +5,12 @@
|
||||
exit 0
|
||||
fi
|
||||
|
||||
+riscv64_lp64d=0
|
||||
+if [ "$HOSTTYPE" = "riscv64" -a -e $RPM_BUILD_ROOT/usr/lib64 -a ! -e $RPM_BUILD_ROOT/usr/lib64/lp64d ]; then
|
||||
+ ln -s . $RPM_BUILD_ROOT/usr/lib64/lp64d
|
||||
+ riscv64_lp64d=1
|
||||
+fi
|
||||
/sbin/ldconfig -N -r "$RPM_BUILD_ROOT"
|
||||
+if [ $riscv64_lp64d = 1 ]; then
|
||||
+ rm -f $RPM_BUILD_ROOT/usr/lib64/lp64d
|
||||
+fi
|
||||
25
fix-the-ELF-file-cannot-be-found-due-to-escape-of.patch
Normal file
25
fix-the-ELF-file-cannot-be-found-due-to-escape-of.patch
Normal file
@ -0,0 +1,25 @@
|
||||
From 4e1adcc36b0c2e379d6080ceb874f2413644c535 Mon Sep 17 00:00:00 2001
|
||||
From: xujing <xujing125@huawei.com>
|
||||
Date: Wed, 15 Nov 2023 17:16:22 +0800
|
||||
Subject: [PATCH] fix the ELF file cannot be found due to escape of '\'
|
||||
|
||||
---
|
||||
macros | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/macros b/macros
|
||||
index 7cde63f..36621df 100644
|
||||
--- a/macros
|
||||
+++ b/macros
|
||||
@@ -275,7 +275,7 @@ find $RPM_BUILD_ROOT -type f -name "*.a" -delete
|
||||
|
||||
%delete_la find $RPM_BUILD_ROOT -type f -name "*.la" -delete
|
||||
|
||||
-%chrpath_delete find $RPM_BUILD_ROOT/ -type f -exec file {} ';' | grep "\<ELF\>" | awk -F ':' '{print $1}' | xargs -i chrpath --delete {}
|
||||
+%chrpath_delete find $RPM_BUILD_ROOT/ -type f -exec file {} ';' | grep "\\<ELF\\>" | awk -F ':' '{print $1}' | xargs -i chrpath --delete {}
|
||||
|
||||
%package_help \
|
||||
%package help \
|
||||
--
|
||||
2.33.0
|
||||
|
||||
4
generic-rpm-config.yaml
Normal file
4
generic-rpm-config.yaml
Normal file
@ -0,0 +1,4 @@
|
||||
version_control: gitee
|
||||
src_repo: https://gitee.com/openeuler/openEuler-rpm-config
|
||||
tag_prefix: "^"
|
||||
seperator: "."
|
||||
@ -2,8 +2,8 @@
|
||||
%global rpmvdir /usr/lib/rpm/%{vendor}
|
||||
|
||||
Name: %{vendor}-rpm-config
|
||||
Version: {rpm_config_version}
|
||||
Release: 33
|
||||
Version: 300
|
||||
Release: 42
|
||||
License: GPL+
|
||||
Summary: specific rpm configuration files
|
||||
URL: https://gitee.com/openeuler/openEuler-rpm-config
|
||||
@ -28,6 +28,12 @@ Patch14: backport-kmp-feature.patch
|
||||
Patch15: 0001-add-loongarch64-for-golang_arches.patch
|
||||
Patch16: fix-config-error-for-loongarch64.patch
|
||||
Patch17: Feature-support-EBS-sign-for-IMA-digest-list.patch
|
||||
Patch18: fix-brp-ldconfig-riscv-default-library-directory.patch
|
||||
Patch19: check-if-the-file-is-a-symbolic-link-in-brp-digest-list.patch
|
||||
Patch20: fix-the-ELF-file-cannot-be-found-due-to-escape-of.patch
|
||||
Patch21: add-powerpc64le-and-ppc64le-support.patch
|
||||
Patch22: Delete-the-commented-code.patch
|
||||
Patch23: add-riscv64-to-some-arches-macro.patch
|
||||
|
||||
Provides: python-rpm-macros = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
Provides: python2-rpm-macros = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
@ -78,6 +84,10 @@ Requires: %{_bindir}/grep
|
||||
Requires: %{_bindir}/sed
|
||||
Requires: %{_bindir}/xargs
|
||||
|
||||
%if "%{_arch}" == "riscv64"
|
||||
Requires: coreutils
|
||||
%endif
|
||||
|
||||
# -fstack-clash-protection and -fcf-protection require GCC 8.
|
||||
Conflicts: gcc < 7
|
||||
|
||||
@ -131,8 +141,37 @@ sed -i "s/__vendor/%{vendor}/g" `grep "__vendor" -rl %{buildroot}%{_rpmconfigdir
|
||||
%{rpmvdir}/find-requires.ksyms
|
||||
|
||||
%changelog
|
||||
* Tue May 07 2024 laokz <zhangkai@iscas.ac.cn> - 30-42
|
||||
- add riscv64 to some arches macro
|
||||
|
||||
* Mon Apr 29 2024 xujing <xujing125@huawei.com> - 30-41
|
||||
- don't delete the commented code in macros
|
||||
|
||||
* Tue Mar 5 2024 hongjinghao <hongjinghao@huawei.com> - 30-40
|
||||
- Delete the commented code
|
||||
|
||||
* Thu Feb 22 2024 peng.zou <peng.zou@shingroup.cn> - 30-39
|
||||
- add powerpc64le and ppc64le support
|
||||
|
||||
* Tue Nov 21 2023 xujing <xujing125@huawei.com> - 30-38
|
||||
- add the scanning path of the rpath
|
||||
fix the ELF file cannot be found due to escape of '\'
|
||||
excute brp_chrpath before arch_install_post
|
||||
|
||||
* Fri Nov 03 2023 fuanan <fuanan3@h-partners.com> - 30-37
|
||||
- check if the file is a symbolic link in brp-digest-list
|
||||
|
||||
* Thu Nov 2 2023 Yang Yanchao <yangyanchao6@huawei.com> - 30-36
|
||||
- kmodtool: use tmp.$$ instand of tmp.txt
|
||||
|
||||
* Mon Apr 10 2023 laokz <zhangkai@iscas.ac.cn> - 30-35
|
||||
- fix riscv64 default library directory of brp-ldconfig
|
||||
|
||||
* Tue Mar 28 2023 Xinliang Liu <xinliang.liu@linaro.org> - 30-34
|
||||
- Fix kmod install failed.
|
||||
|
||||
* Wed Dec 21 2022 luhuaxin <luhuaxin1@huawei.com> - 30-33
|
||||
- add support EBS sign
|
||||
- support EBS sign
|
||||
|
||||
* Wed Dec 14 2022 huajingyun <huajingyun@loongson.cn> - 30-32
|
||||
- fix config error for loongarch64
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user