mirror of
https://github.com/clearlinux/common.git
synced 2026-04-28 11:03:48 +00:00
Initial import
Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
This commit is contained in:
674
COPYING
Normal file
674
COPYING
Normal file
@@ -0,0 +1,674 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <https://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 <https://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
|
||||
<https://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
|
||||
<https://www.gnu.org/licenses/why-not-lgpl.html>.
|
||||
21
Makefile
Normal file
21
Makefile
Normal file
@@ -0,0 +1,21 @@
|
||||
|
||||
all:
|
||||
|
||||
clean:
|
||||
proper:
|
||||
|
||||
install:
|
||||
if [ ! -f ../../Makefile ]; then echo "include projects/common/Makefile.toplevel" > ../../Makefile; fi
|
||||
|
||||
ifdef CLEAR_VER
|
||||
BASE_URL := https://cdn.download.clearlinux.org/releases/${CLEAR_VER}/clear
|
||||
else
|
||||
BASE_URL := https://cdn.download.clearlinux.org/current
|
||||
endif
|
||||
|
||||
update:
|
||||
curl -f -o packages ${BASE_URL}/source/package-sources
|
||||
cut -f1 packages | LC_ALL=en_US.utf8 sort > packages.new && mv packages.new packages
|
||||
|
||||
spdx:
|
||||
curl -s spdx.org/licenses/ | sed '0,/<tbody>/d;/<\/tbody>/q;s/<tr>/\f/g;s/$$/,/g;s/<[^>]*>//g' | awk 'BEGIN{RS="\f";FS=","} {print $$4}' | sed '/^$$/d;s/^[ ]*//' > spdx
|
||||
344
Makefile.common
Normal file
344
Makefile.common
Normal file
@@ -0,0 +1,344 @@
|
||||
#-*-makefile-*-
|
||||
|
||||
all: build
|
||||
|
||||
TOPLVL = ../..
|
||||
|
||||
include $(TOPLVL)/projects/common/Makefile.functions
|
||||
include $(TOPLVL)/projects/common/Makefile.config
|
||||
|
||||
SHELL = /bin/bash
|
||||
|
||||
SPECFILE = $(addsuffix .spec, $(PKG_NAME))
|
||||
|
||||
SRPMVERS = $(shell [ ! -f $(SPECFILE) ] || rpmspec -D '_vendor clr' --srpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}\n' $(SPECFILE))
|
||||
SRPMFILE = results/$(SRPMVERS).src.rpm
|
||||
|
||||
LATEST_RPMS = $(shell [ ! -s results/build.log ] || for r in `egrep 'Wrote.*/RPMS/.*.rpm' results/build.log | sed 's/.*\///'` ; do echo "results/$$r"; done)
|
||||
RPMS ?= $(LATEST_RPMS)
|
||||
|
||||
WITH_SUDO = $(shell cmp /usr/bin/mock /usr/sbin/mock &> /dev/null && echo sudo )
|
||||
|
||||
MOCK ?= $(WITH_SUDO) /usr/bin/mock -r clear
|
||||
|
||||
ifneq ($(wildcard upstream),)
|
||||
__allsources := $(notdir $(strip $(shell cat upstream)))
|
||||
__missingsources := $(filter-out $(wildcard ${__allsources}), ${__allsources})
|
||||
endif
|
||||
|
||||
$(SPECFILE):
|
||||
@echo Error: $(SPECFILE) is missing. Please run \`make autospec\` to try and auto
|
||||
@echo Error: generate one for you.
|
||||
@exit 1
|
||||
|
||||
upstream:
|
||||
@echo Error: The \"upstream\" file is missing. Try running \`make autospec\` to
|
||||
@echo Error: auto generate one for you. If you are not using autospec to
|
||||
@echo Error: generate a spec file, specify the proper "Source*" entries in the
|
||||
@echo Error: spec header, and try running \`make generateupstream\`.
|
||||
@exit 1
|
||||
|
||||
#help spdxcheck: Checks that the package license is a valid SPDX license,
|
||||
#help or that it is in the exceptions list.
|
||||
spdxcheck: $(SPECFILE)
|
||||
@for LICENSE in `rpmspec -D '_vendor clr' --srpm -q --queryformat '%{LICENSE}\n' $(SPECFILE)`; do \
|
||||
if ! grep -q "^$$LICENSE$$" $(TOPLVL)/projects/common/licenses-spdx && ! grep -q "$$LICENSE$$" $(TOPLVL)/projects/common/licenses-exceptions; then FAIL=yes; echo "ERROR: License '$$LICENSE' is not an allowed SPDX license ID"; fi; \
|
||||
done; test -z "$$FAIL"
|
||||
|
||||
#help cvecheck: Checks
|
||||
#help for common vulnerabilities and exposures in your package.
|
||||
cvecheck:
|
||||
# https://github.com/ikeydoherty/cve-check-tool
|
||||
# Installation: https://github.com/ikeydoherty/cve-check-tool/wiki
|
||||
cve-check-tool -M $(TOPLVL)/projects/common/mapping $(SPECFILE)
|
||||
|
||||
#help clean: Cleans up the src.rpm file. but not the rpm files or log files.
|
||||
clean:
|
||||
rm -f $(SRPMFILE)
|
||||
|
||||
#help proper: Brings your copy of the package to a nearly clean git checkout state.
|
||||
proper: repodel
|
||||
rm -rf results
|
||||
rm -f build.log.round*
|
||||
rm -f mock_build.log mock_srpm.log $(__allsources) report.html
|
||||
|
||||
#help mockclean: Clean all mock chroots and cache directories for all packages.
|
||||
mockclean:
|
||||
$(MOCK) --clean --scrub=all
|
||||
|
||||
#help mockproper: Clean mock chroot and cache directories for this package.
|
||||
mockproper:
|
||||
$(MOCK) --clean --scrub=all --uniqueext=$(PKG_NAME)
|
||||
$(MOCK) --clean --scrub=chroot --uniqueext=$(PKG_NAME)
|
||||
|
||||
configemail:
|
||||
@test -d .git || git init
|
||||
@$(call subjectprefix,$(PKG_NAME))
|
||||
@echo -n "Subject prefix email configured to: "
|
||||
@git config --get format.subjectPrefix
|
||||
|
||||
#help checkblacklist: Verify rpms files to not include banned files for Clear Linux OS.
|
||||
checkblacklist:
|
||||
@$(TOPLVL)/projects/common/checkblacklist.sh $(TOPLVL)/projects/common/blacklist results/*.rpm
|
||||
|
||||
#help build: Builds from current directory on your machine and puts log
|
||||
#help files and rpms in the results directory of your package. If there
|
||||
#help are mutlple tar.gz files for a package, make will do make sources,
|
||||
#help which creates a src.rpm file from the spec file.
|
||||
build: configemail $(SPECFILE) upstream $(SRPMFILE)
|
||||
$(MOCK) $(SRPMFILE) --result=results/ --no-cleanup-after --uniqueext=$(PKG_NAME)
|
||||
@perl $(TOPLVL)/projects/common/logcheck.pl results/build.log
|
||||
@perl $(TOPLVL)/projects/common/count.pl results/build.log &> testresults
|
||||
@$(MAKE) checkblacklist
|
||||
|
||||
#help build-nocheck: Same as 'make build', but do not run the package's test suite.
|
||||
build-nocheck: configemail $(SPECFILE) upstream $(SRPMFILE)
|
||||
$(MOCK) $(SRPMFILE) --nocheck --result=results/ --no-cleanup-after --uniqueext=$(PKG_NAME)
|
||||
@perl $(TOPLVL)/projects/common/logcheck.pl results/build.log
|
||||
@perl $(TOPLVL)/projects/common/count.pl results/build.log &> testresults
|
||||
@$(MAKE) checkblacklist
|
||||
|
||||
fmvpatches: results/build.log
|
||||
@perl $(TOPLVL)/projects/common/fmvpatches.pl $(PKG_NAME)
|
||||
|
||||
#help shell: Puts you in a shell into your build root.
|
||||
shell:
|
||||
$(MOCK) --result=results/ --no-cleanup-after --shell --uniqueext=$(PKG_NAME)
|
||||
|
||||
# Always rebuild the source rpm
|
||||
.PHONY: $(SRPMFILE)
|
||||
$(SRPMFILE): $(SPECFILE) $(__allsources)
|
||||
@$(MAKE) spdxcheck
|
||||
$(MOCK) --buildsrpm --source=./ --spec=$(SPECFILE) --result=results/ --no-cleanup-after --uniqueext=$(PKG_NAME)
|
||||
|
||||
# Do a git fetch and a git rebase rather than a git pull so aborting
|
||||
# the git pull at a password prompt doesn't leave local changes stashed
|
||||
# Do the the git status dance so we only apply a stash we create
|
||||
pullrebase:
|
||||
if [ -z "$$SKIP_GIT" ] && [ -e .git ]; then \
|
||||
set -x ; \
|
||||
git fetch; \
|
||||
if ! git rev-parse --verify --quiet FETCH_HEAD > /dev/null; then \
|
||||
echo "No commits exist in remote. Continuing."; \
|
||||
exit 0; \
|
||||
fi; \
|
||||
if git status --porcelain | grep -q '^.[^?]'; \
|
||||
then \
|
||||
git stash save; \
|
||||
git rebase FETCH_HEAD; \
|
||||
git stash apply; \
|
||||
else \
|
||||
git rebase FETCH_HEAD; \
|
||||
fi \
|
||||
fi
|
||||
|
||||
#help autospec: automatically generates a specfile. If there is
|
||||
#help already a specfile, it will be overwritten. Several files used by
|
||||
#help autospec will be created in the process. For more information, see
|
||||
#help the project at https://github.com/clearlinux/autospec
|
||||
autospec: pullrebase
|
||||
rm -f results/*src.rpm
|
||||
@if [ -e $(SPECFILE) ] && ! grep -q "# Generated by: autospec.py" $(SPECFILE) ; then \
|
||||
echo "Specfile already exists and was not created by autospec.py! Aborting."; \
|
||||
exit 1; \
|
||||
fi
|
||||
@printf 'PKG_NAME := %s\nURL = %s\n\n\ninclude ../common/Makefile.common\n' $(PKG_NAME) '$(firstword $(value NEWURL) $(value URL))' > Makefile
|
||||
python3 $(TOPLVL)/projects/autospec/autospec/autospec.py -t . --integrity \
|
||||
${NON_INTERACTIVE} --config "$(AUTOSPEC_CONF)" ${SKIP_GIT} \
|
||||
$(firstword $(NEWURL) $(URL)) --name $(PKG_NAME) ${CLEANUP} \
|
||||
$${SETVERSION:+ -v $${SETVERSION}} -a $(ARCHIVES)
|
||||
@$(MAKE) spdxcheck
|
||||
@$(MAKE) checkblacklist
|
||||
@if [ -e update_changelog.sh ] && [ -z "$$SKIP_GIT" ] ; then \
|
||||
bash update_changelog.sh ; \
|
||||
git commit --amend --no-edit Change* ; \
|
||||
fi
|
||||
|
||||
#help autospecnogit: Runs autospec, but does not create a commit
|
||||
autospecnogit:
|
||||
$(MAKE) SKIP_GIT=--skip-git autospec
|
||||
|
||||
#help autospecnostate: Runs autospec, but cleans up mock chroots
|
||||
#help and disables interactive mode.
|
||||
autospecnostate:
|
||||
$(MAKE) CLEANUP=-C NON_INTERACTIVE=--non_interactive autospec
|
||||
|
||||
scanlicense:
|
||||
python3 $(TOPLVL)/projects/autospec/autospec/autospec.py -t . --config $(AUTOSPEC_CONF) --license-only $(firstword $(NEWURL) $(URL)) --name $(PKG_NAME)
|
||||
|
||||
#help bump: Increments the release file by one.
|
||||
bump:
|
||||
git pull --rebase
|
||||
$(MAKE) bumpnogit
|
||||
git add *.spec release
|
||||
git commit -a -m "version bump from $(shell rpmspec -D '_vendor clr' --srpm -q --queryformat '%{VERSION}-%{RELEASE}\n' $(SPECFILE)) to `rpmspec -D '_vendor clr' --srpm -q --queryformat '%{VERSION}-%{RELEASE}\n' $(SPECFILE)`"
|
||||
|
||||
#help bumpnogit: Increments the release file by one and does not commit changes.
|
||||
bumpnogit:
|
||||
@$(MAKE) spdxcheck
|
||||
oldrel=$(shell rpmspec -D '_vendor clr' --srpm -q --queryformat '%{RELEASE}\n' $(SPECFILE)); \
|
||||
newrel=$$(($$oldrel + 1)); \
|
||||
sed -i "s/^\(Release[[:blank:]]*:[[:blank:]]*\)$$oldrel$$/\1$$newrel/" $(SPECFILE); \
|
||||
echo "$$newrel" > release;
|
||||
|
||||
$(__missingsources): sources
|
||||
|
||||
#help sources: If SOURCES_URL is defined, download required upstream source
|
||||
#help files from that location. Otherwise, try to extract source files from the
|
||||
#help SRPM in the latest Clear Linux release, as specified by the LATEST_SRPMS
|
||||
#help variable. This will run automatically, as a dependency. NOTE: A Koji
|
||||
#help server can make use of this "make sources" command, since it lives in a
|
||||
#help repo named "common". If you use this makefile in Koji, ensure
|
||||
#help "make sources" continues to work for both remote and local builds, since
|
||||
#help it is a prerequisite of several commands for building packages.
|
||||
sources: upstream
|
||||
ifneq ($(strip $(SOURCES_URL)),)
|
||||
while read u; do \
|
||||
case "$$u" in \
|
||||
"") continue ;; \
|
||||
*://*) n="$$u" ;; \
|
||||
*) n="$(SOURCES_URL)/$$u" ;; \
|
||||
esac; \
|
||||
curl --fail --noproxy "*" "$$n" -o `basename "$$n"`; \
|
||||
done < upstream
|
||||
else
|
||||
@tmp=$$(mktemp -d -p "."); \
|
||||
srpm=$$(rpmspec --srpm -q --qf "%{NVR}.src.rpm\n" $(SPECFILE)); \
|
||||
if cd "$$tmp" && ! curl -f -L -O $(LATEST_SRPMS)/$$srpm; then \
|
||||
echo "Failed to download $$srpm from latest Clear Linux release." >&2; \
|
||||
echo "Run \"git pull\" and try again." >&2; \
|
||||
cd .. && rm -rf "$$tmp"; \
|
||||
exit 1; \
|
||||
fi; \
|
||||
rpm2cpio $$srpm | cpio --quiet -id; \
|
||||
cd ..; \
|
||||
srclist=$$(rpmspec --srpm -q --qf "[%{SOURCE}\n]" $(SPECFILE)); \
|
||||
for s in $$srclist; do \
|
||||
if ! mv "$$tmp"/$$s .; then \
|
||||
echo "Missing source file \"$$s\" in $${srpm}." >&2; \
|
||||
rm -rf "$$tmp"; \
|
||||
exit 1; \
|
||||
fi; \
|
||||
echo "Retrieved source file $$s ..."; \
|
||||
done; \
|
||||
rm -rf "$$tmp";
|
||||
endif
|
||||
|
||||
#help koji: Creates a git tag on the latest local commit, then asks koji to
|
||||
#help build from that tag on the server. If you have uncommitted local changes,
|
||||
#help they will not be included.
|
||||
koji: kojidef
|
||||
@$(MAKE) spdxcheck
|
||||
@$(MAKE) checkblacklist
|
||||
git pull --rebase
|
||||
git tag $(SRPMVERS)
|
||||
git push --follow-tags
|
||||
git push --tags
|
||||
$(KOJI_CMD) build $$KOJI_NOWAIT $(KOJI_TAG) $(PKG_BASE_URL)/$(PKG_NAME)?#$(SRPMVERS)
|
||||
|
||||
#help rekoji: In case a previous 'make koji' failed, trigger a rebuild for the
|
||||
#help same tag.
|
||||
rekoji: kojidef
|
||||
git pull --rebase
|
||||
$(KOJI_CMD) build $$KOJI_NOWAIT $(KOJI_TAG) $(PKG_BASE_URL)/$(PKG_NAME)?#$(SRPMVERS)
|
||||
|
||||
#help scratch: Performs scratch-build on package in the background.
|
||||
scratch: $(SPECFILE) upstream $(SRPMFILE) kojidef
|
||||
$(KOJI_CMD) build --scratch --nowait --background $$KOJI_NOWAIT $(KOJI_TAG) $(SRPMFILE)
|
||||
|
||||
#help scratch-wait: Performs scratch-build on package.
|
||||
scratch-wait: $(SPECFILE) upstream $(SRPMFILE) kojidef
|
||||
$(KOJI_CMD) build --scratch $(KOJI_TAG) $(SRPMFILE)
|
||||
|
||||
#help koji-nowait: Same as 'make koji', but do not block
|
||||
koji-nowait:
|
||||
$(MAKE) KOJI_NOWAIT="--nowait --background" koji &
|
||||
|
||||
#help rekoji-nowait: Same as 'make rekoji', but do not block
|
||||
rekoji-nowait:
|
||||
$(MAKE) KOJI_NOWAIT="--nowait --background" rekoji
|
||||
|
||||
logcheck:
|
||||
@perl $(TOPLVL)/projects/common/logcheck.pl results/build.log
|
||||
|
||||
$(TOPLVL)/repo:
|
||||
@echo "Creating local RPM repository $(TOPLVL)/repo"
|
||||
mkdir $(TOPLVL)/repo
|
||||
|
||||
#help repoadd: Creates a local Yum repository in the $(TOPLVL)/repo directory.
|
||||
repoadd: results/build.log $(TOPLVL)/repo
|
||||
@if [ -z "`grep '^Wrote: .*$(shell basename $(SRPMFILE))$$' results/build.log`" ]; then \
|
||||
echo "You have not yet succesfully built this release yet"; exit 1; \
|
||||
fi
|
||||
@if [ -f .repo-index ]; then \
|
||||
echo "Cleaning old rpms:"; \
|
||||
for r in `cat .repo-index`; do \
|
||||
echo "-$$r"; \
|
||||
rm $(TOPLVL)/repo/$$r; \
|
||||
done; \
|
||||
rm .repo-index; \
|
||||
fi
|
||||
for r in $(LATEST_RPMS); do echo "+$$r"; echo $$(basename $$r) >> .repo-index; cp $$r $(TOPLVL)/repo; done
|
||||
( cd $(TOPLVL)/repo ; if type createrepo_c 1>/dev/null 2>&1; then createrepo_c .; else createrepo .; fi );
|
||||
@cp $(TOPLVL)/projects/common/image-creator/yum.conf $(TOPLVL)/repo/.yum.conf
|
||||
@printf "\n\n[local]\nname=Local\nfailovermethod=priority\nenabled=1\ngpgcheck=0\n" >> $(TOPLVL)/repo/.yum.conf
|
||||
@printf "baseurl=file://$$(realpath $(TOPLVL))/repo/\n\n" >> $(TOPLVL)/repo/.yum.conf
|
||||
|
||||
#help repodel: Removes package from local Yum repository.
|
||||
repodel:
|
||||
@if [ -f .repo-index ]; then \
|
||||
echo "Cleaning old rpms:"; \
|
||||
for r in `cat .repo-index`; do \
|
||||
echo "-$$r"; \
|
||||
rm -f $(TOPLVL)/repo/$$r; \
|
||||
done; \
|
||||
rm .repo-index; \
|
||||
fi
|
||||
|
||||
loop-up:
|
||||
$(loopup)
|
||||
|
||||
loop-down:
|
||||
$(loopdown)
|
||||
|
||||
#help install: Install locally built RPMs for this package into an image
|
||||
#help located at ../../clear.img. Make sure the image is not being used before
|
||||
#help running this rule! Note that debuginfo RPMs are installed to the cache
|
||||
#help directory used by the automatic debuginfo system in Clear Linux.
|
||||
install:
|
||||
@$(MAKE) loop-up DEVICE=6 TARGET=$(TOPLVL)/clear.img
|
||||
topdir=$(TOPLVL)/image; \
|
||||
for r in $(RPMS); do rpm2cpio $$r | (cd $$topdir; sudo cpio -i -d -u); done; \
|
||||
for dir in lib src; do \
|
||||
if [ -d $$topdir/usr/$$dir/debug ]; then \
|
||||
find $$topdir/usr/$$dir/debug -type f -o -type l | while read path; do \
|
||||
newpath=`echo $$path | sed "s|\($$topdir\)/usr/$$dir/debug|\1/var/cache/debuginfo/$$dir|"`; \
|
||||
sudo mkdir -p `dirname $$newpath`; \
|
||||
sudo mv -f $$path $$newpath; \
|
||||
done; \
|
||||
fi; \
|
||||
done
|
||||
@$(MAKE) loop-down DEVICE=6
|
||||
|
||||
#help generateupstream: Run this rule to create or update the 'upstream' file
|
||||
#help by downloading the upstream source tarballs listed in the spec file and
|
||||
#help calculating their hashes. Autospec performs this step automatically, so ignore
|
||||
#help it for packages managed with autospec.
|
||||
generateupstream:
|
||||
@rm -f upstream
|
||||
@urls=$$(rpmspec -D '_vendor clr' -P $(SPECFILE) | grep Source | cut -d: -f2- | grep '://'); \
|
||||
for url in $$urls; do \
|
||||
filename=$$(basename $$url); \
|
||||
if [ ! -e $$filename ]; then \
|
||||
curl --fail -L -O $$url; \
|
||||
fi; \
|
||||
echo $$(sha1sum $$filename | cut -d\ -f1)/$$filename >> upstream; \
|
||||
done
|
||||
@cat upstream
|
||||
|
||||
#help drop-abandoned: Remove all unused patches from the git tree
|
||||
drop-abandoned: $(SPECFILE)
|
||||
python3 $(TOPLVL)/projects/common/drop-abandoned-patches.py $(SPECFILE)
|
||||
|
||||
# Define site local common targets in a separate makefile
|
||||
-include $(TOPLVL)/projects/common/Makefile.common.site_local
|
||||
69
Makefile.config
Normal file
69
Makefile.config
Normal file
@@ -0,0 +1,69 @@
|
||||
# The host name of a Koji instance used for building RPMs. All koji-related
|
||||
# makefile rules depend on this value being set. Undefined by default.
|
||||
KOJI_HOST =
|
||||
|
||||
# Command (and optionally extra arguments) used to call Koji.
|
||||
# FIXME: Merge KOJI_HOST into this or find a case where we care about
|
||||
# KOJI_HOST by itself and delete this FIXME.
|
||||
KOJI_CMD = koji
|
||||
|
||||
# Koji tag used when building packages.
|
||||
KOJI_TAG = dist-clear
|
||||
|
||||
# The gitolite user name for the gitolite instance running at
|
||||
# GITOLITE_BASE_URL. Undefined by default.
|
||||
GITOLITE_USER =
|
||||
|
||||
# The base URL for a gitolite instance, used for managing git repos. Typically
|
||||
# you would reference GITOLITE_USER (e.g. $(GITOLITE_USER)@$(GIT_SERVER) ).
|
||||
# Undefined by default.
|
||||
GITOLITE_BASE_URL =
|
||||
|
||||
# The base URL for a cgit instance for serving gitolite managed repos.
|
||||
# Typically it will live on the same server as gitolite. Undefined by default.
|
||||
CGIT_BASE_URL =
|
||||
|
||||
# Location of upstream tarball cache used by 'make build', 'make sources', etc.
|
||||
SOURCES_URL =
|
||||
|
||||
# Location where package repos are hosted.
|
||||
PKG_BASE_URL = https://github.com/clearlinux-pkgs
|
||||
|
||||
# Location where project repos are hosted.
|
||||
PRJ_BASE_URL = https://github.com/clearlinux
|
||||
|
||||
# Project repos that are integral to the common tooling.
|
||||
PROJ_PKGS = autospec clr-bundles common
|
||||
|
||||
# Clear Linux download mirror to use
|
||||
DOWNLOAD_MIRROR = https://cdn.download.clearlinux.org
|
||||
|
||||
# Location of release content from latest Clear Linux release
|
||||
LATEST_RELEASE = $(DOWNLOAD_MIRROR)/current
|
||||
|
||||
# Location of source RPMs from the latest Clear Linux release
|
||||
LATEST_SRPMS = $(LATEST_RELEASE)/source/SRPMS
|
||||
|
||||
# File containing the list of packages in the distribution.
|
||||
PACKAGES_FILE = $(TOPLVL)/projects/common/packages
|
||||
|
||||
# Configuration file for autospec.
|
||||
AUTOSPEC_CONF = $(TOPLVL)/projects/common/autospec.conf
|
||||
|
||||
# Set this variable to any non-empty value to use the package mappings stored
|
||||
# in "pkg-mapping" for cloning/pulling package repos.
|
||||
USE_PACKAGE_MAPPING = yes
|
||||
|
||||
# Include any site local configuration variables. These variables may override
|
||||
# the definitions given above.
|
||||
-include $(TOPLVL)/projects/common/Makefile.config.site_local
|
||||
|
||||
|
||||
# Define some rules for validating the configuration
|
||||
.PHONY: kojidef
|
||||
# Add as a prereq to check for proper configuration of koji-related rules
|
||||
kojidef:
|
||||
ifeq ($(strip $(KOJI_HOST)),)
|
||||
@echo "Error: KOJI_HOST variable undefined. Cannot run this rule." >&2
|
||||
@exit 1
|
||||
endif
|
||||
97
Makefile.functions
Normal file
97
Makefile.functions
Normal file
@@ -0,0 +1,97 @@
|
||||
#-*-makefile-*-
|
||||
|
||||
define loopup
|
||||
@[ "$(DEVICE)" ] || exit -1
|
||||
@set -x; [ -z "$(FORCE)" ] || rm -rf $(TOPLVL)/image
|
||||
@if [ -d $(TOPLVL)/image ]; then \
|
||||
echo "Previous image mount in place at $(TOPLVL)/image. Run \`make loop-down\` to clean up first!"; \
|
||||
exit 1; \
|
||||
fi
|
||||
@echo "Setting up loopback and mounting image..."
|
||||
@mkdir -p $(TOPLVL)/image
|
||||
@sudo losetup -d /dev/loop$(DEVICE) &> /dev/null || true
|
||||
@sudo losetup /dev/loop$(DEVICE) $(TARGET)
|
||||
@sudo partprobe /dev/loop$(DEVICE)
|
||||
@sleep 1
|
||||
@if [ -e /dev/loop$(DEVICE)p3 ]; then \
|
||||
sudo mount /dev/loop$(DEVICE)p3 $(TOPLVL)/image; \
|
||||
else \
|
||||
sudo mount /dev/loop$(DEVICE)p2 $(TOPLVL)/image; \
|
||||
fi
|
||||
@sudo mount /dev/loop$(DEVICE)p1 $(TOPLVL)/image/boot
|
||||
endef
|
||||
|
||||
define loopdown
|
||||
@if [ ! -d $(TOPLVL)/image ]; then \
|
||||
echo "Nothing to clean up."; \
|
||||
exit 1; \
|
||||
fi
|
||||
@echo "Unmounting image and tearing down loopback..."
|
||||
@sudo losetup -d /dev/loop$(DEVICE)p3 2>/dev/null || true
|
||||
@sudo losetup -d /dev/loop$(DEVICE)p2 2>/dev/null || true
|
||||
@sudo losetup -d /dev/loop$(DEVICE)p1 2>/dev/null || true
|
||||
@sudo losetup -d /dev/loop$(DEVICE) 2>/dev/null || true
|
||||
@sudo umount -l $(TOPLVL)/image/proc 2>/dev/null || true
|
||||
@sudo umount -l $(TOPLVL)/image/sys 2>/dev/null || true
|
||||
@sudo umount -l $(TOPLVL)/image/dev 2>/dev/null || true
|
||||
@sudo umount -l $(TOPLVL)/image/boot 2>/dev/null || true
|
||||
@sudo umount -l -R $(TOPLVL)/image; if [ $$? != 0 ]; then \
|
||||
sudo umount -l $(TOPLVL)/image; \
|
||||
fi
|
||||
@sync
|
||||
@sleep 1
|
||||
@rmdir $(TOPLVL)/image
|
||||
endef
|
||||
|
||||
define subjectprefix
|
||||
git config format.subjectPrefix "PATCH $(1)"
|
||||
endef
|
||||
|
||||
# If GITOLITE_BASE_URL is defined, sets a repo's push URL for that gitolite
|
||||
# instance. Accepts one argument: the path to the repo on gitolite. If
|
||||
# GITOLITE_BASE_URL is not defined, no push URL is set -- the shell's null
|
||||
# command is executed to act as a no-op.
|
||||
define gitoliteurl
|
||||
$(if $(GITOLITE_BASE_URL),git remote set-url --push origin $(GITOLITE_BASE_URL):$(1),:)
|
||||
endef
|
||||
|
||||
# If USE_PACKAGE_MAPPING is defined, looks up the remote repo name for the
|
||||
# local repo name (passed as the argument) according to the mapping found in
|
||||
# the "pkg-mapping" file. Otherwise, return the local repo name.
|
||||
define remotepkgname
|
||||
$(if $(USE_PACKAGE_MAPPING),$$(awk -v P="$(1)" '$$1 == P { res=$$2 } END { print res ? res : P }' $(TOPLVL)/projects/common/pkg-mapping),$(1))
|
||||
endef
|
||||
|
||||
.PHONY: help
|
||||
##### Code
|
||||
# Make sure that HELPSPACE has exactly HELPLEN spaces in it
|
||||
EMPTY:= # An empty string
|
||||
HELPSPACE :=${EMPTY} ${EMPTY}
|
||||
HELPLEN := 18
|
||||
define HELPSCRIPTBODY :=
|
||||
# Skip all non help lines
|
||||
/^#help[ \t]/!d
|
||||
# see if this is a target, defined to be "#help" a single space or tab a word
|
||||
# and then a ":". You can therefore escape something like http://localhost
|
||||
# by adding an extra space. We lose extra indent, but we will anyhow
|
||||
# as we will feed this to fmt -t
|
||||
s/^#help[ \t]\([^ \t]*:\)[ \t]*/\1\n/
|
||||
ttarget
|
||||
# This is a continuation line
|
||||
s/^#help[ \t]*/${HELPSPACE}/
|
||||
b
|
||||
:target
|
||||
# Add on spaces to pad it out, then remove extra ones and the newline
|
||||
# almost does the correct thing if there are not enough spaces
|
||||
s/[\t ]*\n[ \t]*/${HELPSPACE}\n/
|
||||
s/^\(.\{${HELPLEN}\}\) */\1/
|
||||
s/\n//
|
||||
endef
|
||||
|
||||
# Debugging hint, add '@echo "$${HELPSCRIPT}" | hexdump -C'
|
||||
help: export HELPSCRIPT=${HELPSCRIPTBODY}
|
||||
help:
|
||||
@printf "%s\n" "The output below describes commands that can be invoked in this directory."
|
||||
@printf "\n\nPossible commands:\n\n"
|
||||
@sed "$${HELPSCRIPT}" ${MAKEFILE_LIST} | { fmt -t -w $${COLUMNS:-75} || cat ; }
|
||||
|
||||
208
Makefile.toplevel
Normal file
208
Makefile.toplevel
Normal file
@@ -0,0 +1,208 @@
|
||||
#-*-makefile-*-
|
||||
|
||||
all: clone
|
||||
|
||||
TOPLVL = .
|
||||
|
||||
include $(TOPLVL)/projects/common/Makefile.functions
|
||||
include $(TOPLVL)/projects/common/Makefile.config
|
||||
|
||||
SHELL = /bin/bash
|
||||
|
||||
PKGS = $(shell cat $(PACKAGES_FILE))
|
||||
|
||||
proj_PKGS = $(addprefix proj_,$(PROJ_PKGS))
|
||||
clone_PKGS = $(addprefix clone_,$(PKGS))
|
||||
|
||||
#help clone: Clones any new package/project in the git tree that you didn't
|
||||
#help already check out. If you already have a package checked out,
|
||||
#help it will not clone that package
|
||||
clone: $(proj_PKGS) $(clone_PKGS)
|
||||
|
||||
#help clone-packages: Same action as 'make clone', but for package repos only.
|
||||
clone-packages: $(clone_PKGS)
|
||||
|
||||
#help clone-projects: Same action as 'make clone', but for project repos only.
|
||||
clone-projects: $(proj_PKGS)
|
||||
|
||||
$(proj_PKGS):
|
||||
@proj=$(patsubst proj_%,%,$@); \
|
||||
[ -d projects/$$proj ] || ( \
|
||||
echo "Checking out: projects/$$proj"; \
|
||||
git clone $(PRJ_BASE_URL)/$$proj projects/$$proj; \
|
||||
cd projects/$$proj; \
|
||||
if [ "$$proj" = "autospec" ] ; then \
|
||||
git remote set-url --push origin https://github.com/clearlinux/autospec.git; \
|
||||
else \
|
||||
$(call gitoliteurl,projects/$$proj); \
|
||||
fi; \
|
||||
$(call subjectprefix,$$proj); \
|
||||
)
|
||||
|
||||
packages/common/Makefile.common:
|
||||
@mkdir -p $(dir $@)
|
||||
@ln -s ../../projects/common/Makefile.common $@
|
||||
|
||||
$(clone_PKGS): $(PACKAGES_FILE) packages/common/Makefile.common
|
||||
@pkg=$(patsubst clone_%,%,$@); \
|
||||
remotepkg=$(call remotepkgname,$$pkg); \
|
||||
[ -d packages/$$pkg ] || ( \
|
||||
echo "Checking out: packages/$$pkg"; \
|
||||
git clone $(PKG_BASE_URL)/$$remotepkg packages/$$pkg; \
|
||||
cd packages/$$pkg; \
|
||||
$(call gitoliteurl,packages/$$pkg); \
|
||||
$(call subjectprefix,$$pkg); \
|
||||
)
|
||||
|
||||
#help cvecheck: Checks for common vulnerabilities and exposures in your code.
|
||||
cvecheck:
|
||||
# https://github.com/ikeydoherty/cve-check-tool
|
||||
# Installation: https://github.com/ikeydoherty/cve-check-tool/wiki
|
||||
cve-check-tool -n -M $(TOPLVL)/projects/common/mapping $(PACKAGES_FILE)
|
||||
|
||||
#help pull: Performs a git pull --rebase for each package repo, avoiding the creation
|
||||
#help of merge commits, while displaying any changes since your last pull. It is
|
||||
#help silent if there are no changes.
|
||||
.PHONY: pull ${PULL_PKGS}
|
||||
PULL_PKGS:= $(addprefix PULL_projects/,$(PROJ_PKGS)) $(addprefix PULL_packages/,$(PKGS))
|
||||
${PULL_PKGS}:
|
||||
@p=$(patsubst PULL_%,%,$@) ; \
|
||||
if [ ! -d "$$p/.git" ]; then echo "Nothing to pull for $$p - $$p/.git missing"; exit 0; fi; \
|
||||
cd "$$p" ; \
|
||||
if git remote | grep origin >/dev/null 2>&1; then \
|
||||
O=$$(git rev-parse origin/master 2>/dev/null); \
|
||||
git fetch --tags origin >/dev/null 2>&1; \
|
||||
N=$$(git rev-parse origin/master); \
|
||||
if [ "$$O" != "$$N" ]; then \
|
||||
echo "Updating: $$p"; \
|
||||
if ! git merge --ff-only origin/master 2>/dev/null; then \
|
||||
echo "$$p: Cannot fast-forward $$(git rev-parse --abbrev-ref HEAD) to origin/master" ; \
|
||||
fi ; \
|
||||
git --no-pager log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit $$O..$$N; echo; \
|
||||
fi ; \
|
||||
$(call gitoliteurl,$$p); \
|
||||
else \
|
||||
echo "$$p: no such remote 'origin'"; \
|
||||
fi ; \
|
||||
case "$$p" in \
|
||||
("projects/"*|"packages/"*) P=$${p#*/} ;; \
|
||||
(*) P="$$p";; \
|
||||
esac; \
|
||||
$(call subjectprefix,$$P);
|
||||
|
||||
# If a user runs "make -j pull", set the job count to 4 to rate limit client
|
||||
# requests to the server hosting package git repos. Finding the value that is
|
||||
# passed to -j and changing it to limit it to 4 is even harder, see
|
||||
# http://blog.jgc.org/2015/03/gnu-make-insanity-finding-value-of-j.html
|
||||
# for a discussion, Simplified it comes to
|
||||
### # Default target depends on parallel, and outputs the job count
|
||||
### all: | compute_job_count
|
||||
### @echo ${JOB_COUNT}
|
||||
### # get the number of words in .parallel file and clean up.
|
||||
### compute_job_count: .parallel
|
||||
### @$(eval JOB_COUNT := $(words $(file < $<)))rm $<
|
||||
### THIS_MAKEFILE := $(CURDIR)/$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))
|
||||
### # run a submake, sending the output (one word per job until failure) to the .parallel file
|
||||
### .parallel: FORCE
|
||||
### @$(MAKE) --no-print-directory -f ${THIS_MAKEFILE} par 2>/dev/null >$@ || true
|
||||
### FORCE: ;
|
||||
### # par depends on par-1 par-2 ... par-24
|
||||
### par: $(addprefix par-,1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24)
|
||||
### # Each job outputs a word, waits for a second and fails. So eventually
|
||||
### # you have n tasks in sleep, then one fails and the job fails.
|
||||
### # par-%: ; @echo $@ && sleep 1 && false
|
||||
ifeq (pull,$(filter pull,${MAKECMDGOALS}))
|
||||
ifeq (3,$(word 1,$(subst ., ,${MAKE_VERSION})))
|
||||
$(warning *************** This version of make is too old to pull in parallel )
|
||||
else
|
||||
MAKEFLAGS += -j4 -Otarget
|
||||
endif
|
||||
endif
|
||||
pull: ${PULL_PKGS}
|
||||
|
||||
#help clean-pkgs-dir: For packages that are no longer present in the distro,
|
||||
#help removes the associated package repos from the ./packages tree
|
||||
clean-pkgs-dir: $(PACKAGES_FILE)
|
||||
@for p in `ls packages`; do \
|
||||
if ! grep -wq "^$$p$$" "$<" && [ "$$p" != common ]; then \
|
||||
echo "Removing $$p from packages, it is no longer in common/packages."; \
|
||||
rm -rf packages/$$p; \
|
||||
fi \
|
||||
done
|
||||
@echo "packages directory cleaned";
|
||||
|
||||
clean_PKGS = $(addprefix clean_,$(PKGS))
|
||||
#help clean: Run 'make clean' for every package.
|
||||
clean: $(clean_PKGS)
|
||||
|
||||
proper_PKGS = $(addprefix proper_,$(PKGS))
|
||||
#help proper: Run 'make proper' for every package, and purge the local
|
||||
#help repo and image.
|
||||
proper: $(proper_PKGS)
|
||||
rm -rf repo
|
||||
rm -f clear.img
|
||||
rm -f image-content.lst
|
||||
rm -f report.html
|
||||
|
||||
.PHONY: $(clean_PKGS)
|
||||
.PHONY: $(proper_PKGS)
|
||||
|
||||
$(clean_PKGS):
|
||||
-@$(MAKE) -s -j -C $(addprefix packages/,$(patsubst clean_%,%,$@)) clean
|
||||
|
||||
$(proper_PKGS):
|
||||
-@$(MAKE) -s -j -C $(addprefix packages/,$(patsubst proper_%,%,$@)) proper
|
||||
|
||||
#help status: Runs git status for all package repos, thus displaying untracked
|
||||
#help and unstaged files in addition to staged files.
|
||||
status: $(PACKAGES_FILE) $(addprefix packages/,$(PKGS))
|
||||
@for p in projects/common $(addprefix packages/,$(PKGS)); do \
|
||||
(cd $$p ; git status | grep -q 'nothing to commit, working [^ ]* clean' || (echo "Uncommitted changes in $$p:"; git status)) ;\
|
||||
done
|
||||
|
||||
#help diff: Runs git diff for all package repos and displays the output using
|
||||
#help diffstat. Requires that diffstat is installed.
|
||||
diff: $(PACKAGES_FILE) $(addprefix packages/,$(PKGS))
|
||||
@for p in projects/common $(addprefix packages/,$(PKGS)); do \
|
||||
(cd $$p ; git status | grep -q 'nothing to commit, working [^ ]* clean' || (echo "Uncommitted changes in: $$p"; git diff |diffstat -p1)) ;\
|
||||
done
|
||||
|
||||
#help versions: Displays the version of each package in the ./packages tree.
|
||||
versions: $(PACKAGES_FILE) $(addprefix packages/,$(PKGS))
|
||||
@for p in $(addprefix packages/,$(PKGS)); do \
|
||||
(cd $$p; if ls *.spec &> /dev/null; then rpmspec -q --queryformat '%{NAME}-%{VERSION}\n' *.spec | head -n1; fi) ;\
|
||||
done
|
||||
|
||||
#help releases: Like 'make versions', but also displays the release number.
|
||||
releases: $(PACKAGES_FILE) $(addprefix packages/,$(PKGS))
|
||||
@for p in $(addprefix packages/,$(PKGS)); do \
|
||||
(cd $$p; if ls *.spec &> /dev/null; then rpmspec -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}\n' *.spec | head -n1; fi) ;\
|
||||
done
|
||||
|
||||
#help provides: Is used to find out which RPM package provides some file.
|
||||
#help Params: FP=<file_fullpath> RN=<release_number>, i.e. 'make provides FP=/usr/bin/ls'
|
||||
provides:
|
||||
@$(TOPLVL)/projects/common/provides.sh -f $(FP) -r $(RN)
|
||||
|
||||
#help autospecnew: Creates a new autospec package with for a given URL=$(URL)
|
||||
#help with NAME=$(NAME). Several files used by autospec will be created in the
|
||||
#help process. For more information about autospec, see the project page on Github https://github.com/clearlinux/autospec
|
||||
autospecnew:
|
||||
@if [ -z $(NAME) ] || [ -z $(URL) ]; then \
|
||||
echo "Please specify NAME and URL"; \
|
||||
exit 1; \
|
||||
fi
|
||||
@git clone $(PKG_BASE_URL)/$(NAME) $(TOPLVL)/packages/$(NAME) &> /dev/null || true
|
||||
@if [ ! -d $(TOPLVL)/packages/$(NAME)/.git ]; then \
|
||||
echo "no remote repository found, creating new package repository and running autospec"; \
|
||||
mkdir -p $(TOPLVL)/packages/$(NAME); \
|
||||
printf 'PKG_NAME := %s\nURL = %s\n\n\ninclude ../common/Makefile.common\n' $(NAME) '$(value URL)' > $(TOPLVL)/packages/$(NAME)/Makefile; \
|
||||
python3 $(TOPLVL)/projects/autospec/autospec/autospec.py --integrity -t packages/$(NAME) --config $(AUTOSPEC_CONF) $(URL) --name $(NAME); \
|
||||
$(TOPLVL)/projects/common/checkblacklist.sh $(TOPLVL)/projects/common/blacklist $(TOPLVL)/packages/${NAME}/results/*.rpm; \
|
||||
else \
|
||||
echo "$(NAME) already exists at $(TOPLVL)/packages/$(NAME)"; \
|
||||
exit 1; \
|
||||
fi
|
||||
|
||||
# Define site local toplevel targets in a separate makefile
|
||||
-include $(TOPLVL)/projects/common/Makefile.toplevel.site_local
|
||||
134
README.md
Normal file
134
README.md
Normal file
@@ -0,0 +1,134 @@
|
||||
# Developer tooling framework for Clear Linux
|
||||
|
||||
This repository includes scripts, configuration files, and makefiles that
|
||||
enable Clear Linux developers to manage, maintain, and validate changes to
|
||||
distro packages and projects that are maintained in git repositories.
|
||||
Development workflows are makefile-driven, and there is a particular focus on
|
||||
building Clear Linux packages.
|
||||
|
||||
## Getting started
|
||||
|
||||
### First steps
|
||||
|
||||
* Boot a Clear Linux system.
|
||||
* As the root user, install the `os-clr-on-clr` bundle:
|
||||
|
||||
```
|
||||
# swupd bundle-add os-clr-on-clr
|
||||
```
|
||||
|
||||
### Automated setup
|
||||
|
||||
Download the [user setup](user-setup.sh) script and run it on your
|
||||
Clear Linux system as an unprivileged user.
|
||||
|
||||
The script either accepts no options, or all (3) options in case you are
|
||||
configuring the Koji CLI for remote building on a Koji server. The options are
|
||||
documented in the script's `--help` output.
|
||||
|
||||
### Manual setup
|
||||
|
||||
On your Clear Linux system, create a workspace for Clear Linux development
|
||||
work:
|
||||
|
||||
```
|
||||
$ mkdir clearlinux
|
||||
```
|
||||
|
||||
Clone this repo into a `projects` directory within the workspace:
|
||||
|
||||
```
|
||||
$ cd clearlinux
|
||||
$ mkdir projects
|
||||
$ git clone https://github.com/clearlinux/common projects/common
|
||||
```
|
||||
|
||||
Create the toplevel tooling Makefile:
|
||||
|
||||
```
|
||||
$ ln -s projects/common/Makefile.toplevel Makefile
|
||||
```
|
||||
|
||||
Clone all Clear Linux package and project repositories:
|
||||
|
||||
```
|
||||
$ make clone
|
||||
```
|
||||
|
||||
Note: You can clone the repos in parallel by using make's `-j` option.
|
||||
|
||||
At this point, the `packages` directory will contain all Clear Linux package
|
||||
repos, and `projects` will contain common, clr-bundles, and autospec repos.
|
||||
|
||||
## Example usage
|
||||
|
||||
### Build RPMs for a package
|
||||
|
||||
In every repo cloned to the `packages` tree, several make commands are
|
||||
available for managing a given package. For example, you can build source,
|
||||
binary, and debuginfo RPMs for a package by running `make build`.
|
||||
|
||||
To build RPMs for the coreutils package, do the following:
|
||||
|
||||
```
|
||||
$ cd packages/coreutils
|
||||
$ make build
|
||||
```
|
||||
|
||||
The results of `make build` are stored in the `results` directory within the
|
||||
repo.
|
||||
|
||||
Run `make help` to see other make commands that are available to work with the
|
||||
package.
|
||||
|
||||
### Keep up-to-date with latest changes
|
||||
|
||||
Due to the frequent release cadence, you may wish to keep repos in the
|
||||
workspace up-to-date with the most recent changes. To do so, run `make pull` in
|
||||
the toplevel directory of the workspace. Assuming your current working
|
||||
directory is a package repo, do:
|
||||
|
||||
```
|
||||
$ cd ../..
|
||||
$ make pull
|
||||
```
|
||||
|
||||
A `make pull` will display the diffstat for each project and package repo with
|
||||
changes since you last updated the workspace.
|
||||
|
||||
If new packages were added to the distro since the last update, clone the new
|
||||
package repos by running `make clone`.
|
||||
|
||||
Run `make help` to see other make commands available to run at toplevel.
|
||||
|
||||
### Autogenerate a new package
|
||||
|
||||
The toplevel makefile provides a `make autospecnew` command that can
|
||||
automatically generate an RPM package by using the `autospec` tool. You must
|
||||
define the `URL` and `NAME` variables for the command. `URL` is a URL to the
|
||||
package's upstream source tarball, and `NAME` is the name of the package you
|
||||
wish to create.
|
||||
|
||||
```
|
||||
$ make autospecnew URL="..." NAME="example-pkg"
|
||||
```
|
||||
|
||||
Whether or not autospec successfully creates the package, a new package
|
||||
directory will be created to continue work on it. In the example below, a
|
||||
missing build dependency is added, and then autospec is re-run.
|
||||
|
||||
```
|
||||
$ cd packages/example-pkg
|
||||
$ echo missing-build-req >> buildreq_add
|
||||
$ make autospec
|
||||
```
|
||||
|
||||
### Bump the release number for a package
|
||||
|
||||
If you simply need to increment a package's release number and rebuild the
|
||||
package, a `make bump` command is available for this purpose.
|
||||
|
||||
```
|
||||
$ make bump
|
||||
$ make build
|
||||
```
|
||||
15
autospec.conf
Normal file
15
autospec.conf
Normal file
@@ -0,0 +1,15 @@
|
||||
[autospec]
|
||||
# The upstream git repository URL base
|
||||
#git =
|
||||
|
||||
# Optional URL to use for scanning license files
|
||||
#license_fetch =
|
||||
|
||||
# Optional URL to interact with online license checker
|
||||
#license_show =
|
||||
|
||||
# Base URL for stored upstream tarballs
|
||||
#upstream =
|
||||
|
||||
# String to replace with "localhost" in upstream tarball URLs
|
||||
#urlban =
|
||||
5
blacklist
Normal file
5
blacklist
Normal file
@@ -0,0 +1,5 @@
|
||||
/usr/lib/systemd/system/sysinit.target.wants/ldconfig.service
|
||||
/usr/lib/systemd/system/sysinit.target.wants/systemd-firstboot.service
|
||||
/usr/lib/systemd/system/sysinit.target.wants/systemd-hwdb-update.service
|
||||
/usr/lib/systemd/system/sysinit.target.wants/systemd-update-done.service
|
||||
/usr/lib/systemd/system/update-triggers.target.wants
|
||||
60
checkblacklist.sh
Executable file
60
checkblacklist.sh
Executable file
@@ -0,0 +1,60 @@
|
||||
#!/bin/bash
|
||||
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
|
||||
# ex: ts=8 sw=4 sts=4 et filetype=sh
|
||||
#
|
||||
|
||||
# return code, set to 1 if Banned file found
|
||||
FOUND=0
|
||||
|
||||
# List the filenames in an rpm file
|
||||
# Do not use 'rpm -qlp' as it requires an initialized rpm database
|
||||
list_rpm(){
|
||||
rpm2cpio "$1" | cpio -it 2>/dev/null
|
||||
}
|
||||
|
||||
check_rpm_file ()
|
||||
{
|
||||
# BF is the output of this pipeline, the 'if' tests the return
|
||||
# status of the pipeline, i.e. the grep.
|
||||
if BF=$(list_rpm "$1" |
|
||||
sed 's:^\./:/:' |
|
||||
grep -Fxf "$BKL"
|
||||
)
|
||||
then
|
||||
for f in $BF ; do
|
||||
echo "**************"
|
||||
echo "ERROR: Banned file found."
|
||||
echo "$f --> $1"
|
||||
echo "**************"
|
||||
done >&2
|
||||
FOUND=1
|
||||
fi
|
||||
}
|
||||
|
||||
#################### main ####################
|
||||
|
||||
# Blacklist as first parameter, rpm files to check as rest
|
||||
BKL=$1
|
||||
shift
|
||||
|
||||
if ! [ -r "$BKL" ] ; then
|
||||
printf "Blacklist file '%q' is not readable!\\n" "$BKL" >&2
|
||||
exit 2
|
||||
fi
|
||||
|
||||
for f
|
||||
do
|
||||
check_rpm_file "$f"
|
||||
done
|
||||
exit $FOUND
|
||||
|
||||
# Testing
|
||||
#
|
||||
# Empty blacklist file
|
||||
# Blacklist file with 1 line, which does match
|
||||
# Blacklist file with 1 line, which does doesn't match
|
||||
# Blacklist file with multiple lines, which does match
|
||||
# Blacklist file with multiple lines, with one match
|
||||
# Blacklist file with multiple lines, with multiple matches
|
||||
#
|
||||
# Check return codes
|
||||
1
configure_blacklist
Normal file
1
configure_blacklist
Normal file
@@ -0,0 +1 @@
|
||||
whether double complex BLAS can be used
|
||||
680
configure_whitelist
Normal file
680
configure_whitelist
Normal file
@@ -0,0 +1,680 @@
|
||||
acroread
|
||||
acroread4
|
||||
af77
|
||||
a french Unicode locale
|
||||
altivec.h
|
||||
altivec.h presence
|
||||
altivec.h usability
|
||||
ANSI C header files
|
||||
atan2pi
|
||||
atanpi
|
||||
a traditional french locale
|
||||
a traditional japanese locale
|
||||
a transitional chinese locale
|
||||
bison
|
||||
broken visibility attribute
|
||||
BSDgettimeofday
|
||||
/builddir/build/BUILD/gcc-build/./gcc/xgcc -B/builddir/build/BUILD/gcc-build/./gcc/ -B/usr/x86_64-generic-linux/bin/ -B/usr/x86_64-generic-linux/lib/ -isystem /usr/x86_64-generic-linux/include -isystem /usr/x86_64-generic-linux/sys-include option to accept ISO C89
|
||||
c_asm.h
|
||||
c_asm.h presence
|
||||
c_asm.h usability
|
||||
cf77
|
||||
CFLocaleCopyCurrent
|
||||
CFPreferencesCopyAppValue
|
||||
com_err.h
|
||||
Configure miss: struct stat.st_atimespec
|
||||
cospi
|
||||
cospi in -lsunmath
|
||||
crt_externs.h
|
||||
crt_externs.h presence
|
||||
crt_externs.h usability
|
||||
dependency style of g++
|
||||
dependency style of gcc
|
||||
direct.h
|
||||
dl.h
|
||||
dl.h presence
|
||||
dl.h usability
|
||||
dlltool
|
||||
dlopen
|
||||
_doprnt
|
||||
doxygen
|
||||
dummy main to link with Fortran 77 libraries
|
||||
dynamic linker characteristics
|
||||
efc
|
||||
--enable-generated-files-in-srcdir
|
||||
--enable-version-specific-runtime-libs
|
||||
--enable-vtable-verify
|
||||
epcf90
|
||||
etags
|
||||
et/com_err.h
|
||||
evince
|
||||
external symbol _system_configuration
|
||||
extra flags to get ANSI library prototypes
|
||||
f77
|
||||
f90
|
||||
f95
|
||||
fdwalk
|
||||
_FILE_OFFSET_BITS value needed for large files
|
||||
firefox
|
||||
fl32
|
||||
flex
|
||||
floatingpoint.h
|
||||
floatingpoint.h presence
|
||||
floatingpoint.h usability
|
||||
fop
|
||||
fort
|
||||
fort77
|
||||
Fortran flag to compile .f90 files
|
||||
Fortran flag to compile .f95 files
|
||||
fprintf_unlocked
|
||||
frt
|
||||
g77
|
||||
galeon
|
||||
gccgo
|
||||
gcc option to accept ANSI C
|
||||
gcc option to accept ISO C89
|
||||
gcc option to accept ISO C99
|
||||
gcc option to enable C11 features
|
||||
gcj
|
||||
gethrtime
|
||||
getpass_r
|
||||
getsysinfo
|
||||
ggv
|
||||
gm4
|
||||
gnatbind
|
||||
gnatmake
|
||||
gnome-gv
|
||||
gnome-moz-remote
|
||||
gnum4
|
||||
gnutar
|
||||
gobject-introspection
|
||||
gpdf
|
||||
gtar
|
||||
gv
|
||||
how to run the C preprocessor
|
||||
HP-UX
|
||||
hrtime_t
|
||||
i686-pc-linux-gnu-ar
|
||||
i686-pc-linux-gnu-dlltool
|
||||
i686-pc-linux-gnu-gcc option to accept ISO C89
|
||||
i686-pc-linux-gnu-mt
|
||||
i686-pc-linux-gnu-objdump
|
||||
i686-pc-linux-gnu-ranlib
|
||||
i686-pc-linux-gnu-strip
|
||||
iconv in -liconv
|
||||
iconvlist
|
||||
ieeefp.h
|
||||
ieeefp.h presence
|
||||
ieeefp.h usability
|
||||
if /builddir/build/BUILD/gcc-build/./gcc/xgcc -B/builddir/build/BUILD/gcc-build/./gcc/ -B/usr/x86_64-generic-linux/bin/ -B/usr/x86_64-generic-linux/lib/ -isystem /usr/x86_64-generic-linux/include -isystem /usr/x86_64-generic-linux/sys-include static flag -static works
|
||||
if /builddir/build/BUILD/gcc-build/./gcc/xgcc -B/builddir/build/BUILD/gcc-build/./gcc/ -B/usr/x86_64-generic-linux/bin/ -B/usr/x86_64-generic-linux/lib/ -isystem /usr/x86_64-generic-linux/include -isystem /usr/x86_64-generic-linux/sys-include supports -fno-rtti -fno-exceptions
|
||||
ifc
|
||||
if closesocket can be linked
|
||||
if CloseSocket can be linked
|
||||
if closesocket might be used
|
||||
if CloseSocket might be used
|
||||
if compiler is clang
|
||||
if compiler is DEC/Compaq/HP C
|
||||
if compiler is HP-UX C
|
||||
if compiler is IBM C
|
||||
if compiler is Intel C
|
||||
if compiler is LCC
|
||||
if compiler is SGI MIPS C
|
||||
if compiler is SGI MIPSpro C
|
||||
if compiler is SunPro C
|
||||
if compiler is Tiny C
|
||||
if compiler is Watcom C
|
||||
if compiler supports -Werror=unknown-warning-option
|
||||
if compiler supports -Werror=unused-command-line-argument
|
||||
if c++ static flag -static works
|
||||
if ctime_r wants three arguments
|
||||
if f95 static flag -static works
|
||||
if gcc static flag -static works
|
||||
if gcc -std=gnu99 supports -fno-rtti -fno-exceptions
|
||||
if gcc supports -fno-rtti -fno-exceptions
|
||||
if gcc supports -Werror=unknown-warning-option
|
||||
if gcc supports -Werror=unused-command-line-argument
|
||||
if gethostbyaddr_r takes 5 args.
|
||||
if gethostbyaddr_r takes 7 args.
|
||||
if gethostbyaddr_r wants seven arguments
|
||||
if gethostbyname_r takes 3 args.
|
||||
if gethostbyname_r takes 5 args.
|
||||
if gethostbyname_r wants five arguments
|
||||
if getservbyport_r takes 4 args.
|
||||
if getservbyport_r takes 5 args.
|
||||
if gfortran PIC flag -fPIC works
|
||||
if gfortran static flag -static works
|
||||
if gfortran supports -c -o file.o
|
||||
if g++ static flag -static works
|
||||
if inet_ntoa_r can be linked
|
||||
if inet_ntoa_r might be used
|
||||
if ioctlsocket can be linked
|
||||
if IoctlSocket can be linked
|
||||
if ioctlsocket might be used
|
||||
if IoctlSocket might be used
|
||||
if : is a manifest tool
|
||||
if libcurl version >= 7.28.0
|
||||
if memrchr is prototyped
|
||||
if memrchr might be used
|
||||
if mkdir takes one argument
|
||||
if more special flags are required for pthreads
|
||||
if setsockopt SO_NONBLOCK is compilable
|
||||
if setsockopt SO_NONBLOCK might be used
|
||||
if sig_atomic_t is already defined as volatile
|
||||
if sigsetjmp can be linked
|
||||
if strcmpi can be linked
|
||||
if strcmpi might be used
|
||||
if strerror_r is glibc like
|
||||
if stricmp can be linked
|
||||
if stricmp might be used
|
||||
if strncmpi can be linked
|
||||
if strncmpi might be used
|
||||
if strnicmp can be linked
|
||||
if strnicmp might be used
|
||||
if /usr/bin/gcc static flag -static works
|
||||
if /usr/bin/gcc -std=gnu99 static flag -static works
|
||||
if /usr/bin/gcc -std=gnu99 supports -fno-rtti -fno-exceptions
|
||||
if /usr/bin/gcc supports -fno-rtti -fno-exceptions
|
||||
if /usr/local/bin/gcc supports -fno-rtti -fno-exceptions
|
||||
if <X11/extensions/XIproto.h> is needed for xReply
|
||||
intrinsics.h
|
||||
intrinsics.h presence
|
||||
intrinsics.h usability
|
||||
io.h
|
||||
io.h presence
|
||||
io.h usability
|
||||
is_selinux_enabled in -lselinux
|
||||
issetugid
|
||||
Kerberos 5
|
||||
kfmclient
|
||||
kghostview
|
||||
kpdf
|
||||
kpsewhich
|
||||
kqueue
|
||||
krb5-config
|
||||
_LARGEFILE_SOURCE value needed for large files
|
||||
lchmod
|
||||
ldap_ntlm_bind
|
||||
lex library
|
||||
lf95
|
||||
libpapi... checking for papiServiceCreate in -lpapi
|
||||
library containing bindtextdomain
|
||||
library containing clock_gettime
|
||||
library containing connect
|
||||
library containing getaddrinfo
|
||||
library containing gethostent
|
||||
library containing setsockopt
|
||||
library containing socket
|
||||
library containing strerror
|
||||
libutil.h
|
||||
libutil.h presence
|
||||
libutil.h usability
|
||||
lipo
|
||||
lp
|
||||
lpr
|
||||
mach_absolute_time
|
||||
machine/hal_sysinfo.h
|
||||
mach/mach_time.h
|
||||
mach/mach_time.h presence
|
||||
mach/mach_time.h usability
|
||||
main in -linet
|
||||
makeindex
|
||||
Minix Amsterdam compiler
|
||||
minix/config.h
|
||||
minix/config.h presence
|
||||
minix/config.h usability
|
||||
minix/sha2.h
|
||||
minix/sha2.h presence
|
||||
minix/sha2.h usability
|
||||
missing gethostname prototype
|
||||
_mm_free
|
||||
_mm_malloc
|
||||
mozilla
|
||||
mt
|
||||
multithread API to use
|
||||
nanotime
|
||||
native Win32
|
||||
net/errno.h
|
||||
net/errno.h presence
|
||||
net/errno.h usability
|
||||
_NSGetEnviron
|
||||
ocamlbuild
|
||||
okular
|
||||
open
|
||||
OpenLDAP
|
||||
opera
|
||||
pcre/pcre.h
|
||||
pcre/pcre.h presence
|
||||
pcre/pcre.h usability
|
||||
pdflatex
|
||||
pdftex
|
||||
perl5
|
||||
pgf77
|
||||
pgf90
|
||||
pgf95
|
||||
pghpf
|
||||
pown
|
||||
process.h
|
||||
pstat_getdynamic
|
||||
pthread_create
|
||||
read_real_time
|
||||
_rtc intrinsic
|
||||
__secure_getenv
|
||||
sepol_check_context in -lsepol
|
||||
__setfpucw
|
||||
_set_invalid_parameter_handler
|
||||
setmode
|
||||
setproctitle
|
||||
shl_load
|
||||
shl_load in -ldld
|
||||
sin
|
||||
sinpi
|
||||
_snprintf
|
||||
socket in -lsocket
|
||||
some Win32 platform
|
||||
spawnve
|
||||
special C compiler options needed for large files
|
||||
stricmp
|
||||
strlcat
|
||||
strlcpy
|
||||
strnicmp
|
||||
struct sockaddr_in.sin_len
|
||||
struct sockaddr.sa_len
|
||||
struct sockaddr_un.sun_len
|
||||
struct stat.st_birthtimensec
|
||||
struct stat.st_birthtimespec.tv_nsec
|
||||
struct stat.st_birthtim.tv_nsec
|
||||
struct tm.__tm_gmtoff
|
||||
SunLDAP
|
||||
sunmath.h
|
||||
sunmath.h presence
|
||||
sunmath.h usability
|
||||
sys/endian.h
|
||||
sys/endian.h presence
|
||||
sys/endian.h usability
|
||||
sys/filio.h
|
||||
sys/filio.h presence
|
||||
sys/filio.h usability
|
||||
sys/limits.h
|
||||
sys/loadavg.h
|
||||
sys/loadavg.h presence
|
||||
sys/loadavg.h usability
|
||||
sys/mkdev.h
|
||||
sys/mkdev.h presence
|
||||
sys/mkdev.h usability
|
||||
sys/pstat.h
|
||||
sysroot
|
||||
sys/sockio.h
|
||||
sys/sockio.h presence
|
||||
sys/sockio.h usability
|
||||
sys/systeminfo.h
|
||||
sys/systeminfo.h presence
|
||||
sys/systeminfo.h usability
|
||||
table
|
||||
tanpi
|
||||
tex
|
||||
texi2any
|
||||
texi2dvi
|
||||
the BeOS
|
||||
the pthreads library -llthread
|
||||
the pthreads library -lpthreads
|
||||
time_base_to_time
|
||||
/usr/bin/gcc option to accept ISO C89
|
||||
/usr/local/bin/gcc option to accept ISO C89
|
||||
util.h
|
||||
util.h presence
|
||||
util.h usability
|
||||
valgrind.h
|
||||
valgrind.h presence
|
||||
vasnprintf
|
||||
vfork.h
|
||||
vfork.h presence
|
||||
vfork.h usability
|
||||
_vsnprintf
|
||||
whether alloca needs Cray hooks
|
||||
whether byte ordering is bigendian
|
||||
whether bzip2 support needs to be compiled
|
||||
whether can compile ObjC++
|
||||
whether canonicalize_file_name must be declared
|
||||
whether char is unsigned
|
||||
whether __clang__ is declared
|
||||
whether closedir returns void
|
||||
whether compiler driver understands Ada
|
||||
whether cosq is declared
|
||||
whether C runtime needs -D__NO_MATH_INLINES
|
||||
whether dirfd is a macro
|
||||
whether f95 appends extra underscores to external names
|
||||
whether fprintf_unlocked is declared
|
||||
whether fpurge is declared without a macro
|
||||
whether g++ can compile ObjC++
|
||||
whether gcc accepts -g
|
||||
whether GCC assembler is compatible for ARM assembly implementations
|
||||
whether gcc needs -traditional
|
||||
whether gets is declared without a macro
|
||||
whether gettimeofday clobbers localtime buffer
|
||||
whether g++ supports C++11 features by default
|
||||
whether included gettext is requested
|
||||
whether integer division by zero raises SIGFPE
|
||||
whether __INTEL_COMPILER is declared
|
||||
whether // is distinct from /
|
||||
whether KERN_USRSTACK sysctl is supported
|
||||
whether -lc should be explicitly linked in
|
||||
whether long double and double are the same
|
||||
whether mktime sets errno
|
||||
whether mktime works correctly outside 1902-2037
|
||||
whether PCRE support needs to be compiled
|
||||
whether pthreads work with -kthread
|
||||
whether pthreads work with -Kthread
|
||||
whether pthreads work without any flags
|
||||
whether putenv("FOO=") can unset an environment variable
|
||||
whether sinq is declared
|
||||
whether _snprintf is declared
|
||||
whether _snwprintf is declared
|
||||
whether stat accepts an empty string
|
||||
whether stat file-mode macros are broken
|
||||
whether stricmp is declared
|
||||
whether strlcpy is declared
|
||||
whether strnicmp is declared
|
||||
whether __SUNPRO_C is declared
|
||||
whether system header files limit the line length
|
||||
whether termios.h defines TIOCGWINSZ
|
||||
whether the compiler supports -xldscope=hidden
|
||||
whether the inttypes.h PRIxNN macros are broken
|
||||
whether the thread-local storage support is from emutls
|
||||
whether to build gtk-doc documentation
|
||||
whether to build shared libraries
|
||||
whether to build static libraries
|
||||
whether to enable maintainer-specific portions of Makefiles
|
||||
whether to install libiberty headers and static library
|
||||
whether to use ARM IWMMXT intrinsics
|
||||
whether to use ARM NEON assembler
|
||||
whether to use ARM SIMD assembler
|
||||
whether to use Loongson MMI assembler
|
||||
whether to use MIPS DSPr2 assembler
|
||||
whether to use VMX/Altivec intrinsics
|
||||
Whether to write dependencies into .pc files
|
||||
whether we are cross compiling
|
||||
whether we are using the GNU Objective C compiler
|
||||
whether we can compute ObjC Make dependencies
|
||||
whether _XOPEN_SOURCE should be defined
|
||||
whether yytext is a pointer
|
||||
whether zlib support needs to be compiled
|
||||
Win32
|
||||
Win32 threads
|
||||
windows.h
|
||||
windows.h presence
|
||||
windows.h usability
|
||||
x86_64-generic-linux-ar
|
||||
x86_64-generic-linux-as
|
||||
x86_64-generic-linux-cc
|
||||
x86_64-generic-linux-dlltool
|
||||
x86_64-generic-linux-gccgo
|
||||
x86_64-generic-linux-gcj
|
||||
x86_64-generic-linux-gnu-aCC
|
||||
x86_64-generic-linux-gnu-af77
|
||||
x86_64-generic-linux-gnu-ar
|
||||
x86_64-generic-linux-gnu-c++
|
||||
x86_64-generic-linux-gnu-cc
|
||||
x86_64-generic-linux-gnu-cc++
|
||||
x86_64-generic-linux-gnu-CC
|
||||
x86_64-generic-linux-gnu-cf77
|
||||
x86_64-generic-linux-gnu-cl
|
||||
x86_64-generic-linux-gnu-cl.exe
|
||||
x86_64-generic-linux-gnu-cxx
|
||||
x86_64-generic-linux-gnu-dlltool
|
||||
x86_64-generic-linux-gnu-efc
|
||||
x86_64-generic-linux-gnu-epcf90
|
||||
x86_64-generic-linux-gnu-f77
|
||||
x86_64-generic-linux-gnu-f90
|
||||
x86_64-generic-linux-gnu-f95
|
||||
x86_64-generic-linux-gnu-FCC
|
||||
x86_64-generic-linux-gnu-fl32
|
||||
x86_64-generic-linux-gnu-fort
|
||||
x86_64-generic-linux-gnu-fort77
|
||||
x86_64-generic-linux-gnu-frt
|
||||
x86_64-generic-linux-gnu-ftn
|
||||
x86_64-generic-linux-gnu-g++
|
||||
x86_64-generic-linux-gnu-g77
|
||||
x86_64-generic-linux-gnu-g95
|
||||
x86_64-generic-linux-gnu-gcc
|
||||
x86_64-generic-linux-gnu-gfortran
|
||||
x86_64-generic-linux-gnu-gpp
|
||||
x86_64-generic-linux-gnu-ifc
|
||||
x86_64-generic-linux-gnu-ifort
|
||||
x86_64-generic-linux-gnu-KCC
|
||||
x86_64-generic-linux-gnu-lf95
|
||||
x86_64-generic-linux-gnu-lib
|
||||
x86_64-generic-linux-gnu-link
|
||||
x86_64-generic-linux-gnu-mt
|
||||
x86_64-generic-linux-gnu-nagfor
|
||||
x86_64-generic-linux-gnu-nm
|
||||
x86_64-generic-linux-gnu-objc
|
||||
x86_64-generic-linux-gnu-objcc
|
||||
x86_64-generic-linux-gnu-objdump
|
||||
x86_64-generic-linux-gnu-pgf77
|
||||
x86_64-generic-linux-gnu-pgf90
|
||||
x86_64-generic-linux-gnu-pgf95
|
||||
x86_64-generic-linux-gnu-pgfortran
|
||||
x86_64-generic-linux-gnu-pghpf
|
||||
x86_64-generic-linux-gnu-ranlib
|
||||
x86_64-generic-linux-gnu-RCC
|
||||
x86_64-generic-linux-gnu-strings
|
||||
x86_64-generic-linux-gnu-strip
|
||||
x86_64-generic-linux-gnu-windres
|
||||
x86_64-generic-linux-gnu-xlC
|
||||
x86_64-generic-linux-gnu-xlC_r
|
||||
x86_64-generic-linux-gnu-xlf
|
||||
x86_64-generic-linux-gnu-xlf90
|
||||
x86_64-generic-linux-gnu-xlf95
|
||||
x86_64-generic-linux-ld
|
||||
x86_64-generic-linux-lipo
|
||||
x86_64-generic-linux-nm
|
||||
x86_64-generic-linux-objcopy
|
||||
x86_64-generic-linux-objdump
|
||||
x86_64-generic-linux-ranlib
|
||||
x86_64-generic-linux-readelf
|
||||
x86_64-generic-linux-strip
|
||||
x86_64-generic-linux-windmc
|
||||
x86_64-generic-linux-windres
|
||||
x86_64-koji-linux-gnu-aCC
|
||||
x86_64-koji-linux-gnu-af77
|
||||
x86_64-koji-linux-gnu-ar
|
||||
x86_64-koji-linux-gnu-c++
|
||||
x86_64-koji-linux-gnu-cc++
|
||||
x86_64-koji-linux-gnu-CC
|
||||
x86_64-koji-linux-gnu-cl
|
||||
x86_64-koji-linux-gnu-cxx
|
||||
x86_64-koji-linux-gnu-dlltool
|
||||
x86_64-koji-linux-gnu-efc
|
||||
x86_64-koji-linux-gnu-epcf90
|
||||
x86_64-koji-linux-gnu-f77
|
||||
x86_64-koji-linux-gnu-f90
|
||||
x86_64-koji-linux-gnu-f95
|
||||
x86_64-koji-linux-gnu-FCC
|
||||
x86_64-koji-linux-gnu-fl32
|
||||
x86_64-koji-linux-gnu-fort
|
||||
x86_64-koji-linux-gnu-fort77
|
||||
x86_64-koji-linux-gnu-frt
|
||||
x86_64-koji-linux-gnu-g++
|
||||
x86_64-koji-linux-gnu-g77
|
||||
x86_64-koji-linux-gnu-gfortran
|
||||
x86_64-koji-linux-gnu-gpp
|
||||
x86_64-koji-linux-gnu-ifc
|
||||
x86_64-koji-linux-gnu-KCC
|
||||
x86_64-koji-linux-gnu-lf95
|
||||
x86_64-koji-linux-gnu-mt
|
||||
x86_64-koji-linux-gnu-objdump
|
||||
x86_64-koji-linux-gnu-pgf77
|
||||
x86_64-koji-linux-gnu-pgf90
|
||||
x86_64-koji-linux-gnu-pgf95
|
||||
x86_64-koji-linux-gnu-ranlib
|
||||
x86_64-koji-linux-gnu-RCC
|
||||
x86_64-koji-linux-gnu-strings
|
||||
x86_64-koji-linux-gnu-strip
|
||||
x86_64-koji-linux-gnu-windres
|
||||
x86_64-koji-linux-gnu-xlC
|
||||
x86_64-koji-linux-gnu-xlC_r
|
||||
x86_64-koji-linux-gnu-xlf
|
||||
x86_64-koji-linux-gnu-xlf90
|
||||
x86_64-koji-linux-gnu-xlf95
|
||||
x86_64-pc-linux-gnu-aCC
|
||||
x86_64-pc-linux-gnu-af77
|
||||
x86_64-pc-linux-gnu-ar
|
||||
x86_64-pc-linux-gnu-c++
|
||||
x86_64-pc-linux-gnu-cc++
|
||||
x86_64-pc-linux-gnu-CC
|
||||
x86_64-pc-linux-gnu-cl
|
||||
x86_64-pc-linux-gnu-cl.exe
|
||||
x86_64-pc-linux-gnu-cxx
|
||||
x86_64-pc-linux-gnu-dlltool
|
||||
x86_64-pc-linux-gnu-efc
|
||||
x86_64-pc-linux-gnu-epcf90
|
||||
x86_64-pc-linux-gnu-f77
|
||||
x86_64-pc-linux-gnu-f90
|
||||
x86_64-pc-linux-gnu-f95
|
||||
x86_64-pc-linux-gnu-FCC
|
||||
x86_64-pc-linux-gnu-fl32
|
||||
x86_64-pc-linux-gnu-fort
|
||||
x86_64-pc-linux-gnu-fort77
|
||||
x86_64-pc-linux-gnu-frt
|
||||
x86_64-pc-linux-gnu-g++
|
||||
x86_64-pc-linux-gnu-g77
|
||||
x86_64-pc-linux-gnu-gcc
|
||||
x86_64-pc-linux-gnu-gfortran
|
||||
x86_64-pc-linux-gnu-gpp
|
||||
x86_64-pc-linux-gnu-ifc
|
||||
x86_64-pc-linux-gnu-KCC
|
||||
x86_64-pc-linux-gnu-lf95
|
||||
x86_64-pc-linux-gnu-mt
|
||||
x86_64-pc-linux-gnu-objdump
|
||||
x86_64-pc-linux-gnu-pgf77
|
||||
x86_64-pc-linux-gnu-pgf90
|
||||
x86_64-pc-linux-gnu-pgf95
|
||||
x86_64-pc-linux-gnu-pkg-config
|
||||
x86_64-pc-linux-gnu-ranlib
|
||||
x86_64-pc-linux-gnu-RCC
|
||||
x86_64-pc-linux-gnu-strip
|
||||
x86_64-pc-linux-gnu-xlC
|
||||
x86_64-pc-linux-gnu-xlC_r
|
||||
x86_64-pc-linux-gnu-xlf
|
||||
x86_64-pc-linux-gnu-xlf90
|
||||
x86_64-pc-linux-gnu-xlf95
|
||||
x86_64-unknown-linux-gnu-ar
|
||||
x86_64-unknown-linux-gnu-dlltool
|
||||
x86_64-unknown-linux-gnu-lib
|
||||
x86_64-unknown-linux-gnu-link
|
||||
x86_64-unknown-linux-gnu-mt
|
||||
x86_64-unknown-linux-gnu-objdump
|
||||
x86_64-unknown-linux-gnu-ranlib
|
||||
x86_64-unknown-linux-gnu-strip
|
||||
xdg-open
|
||||
xlf
|
||||
xlf90
|
||||
xlf95
|
||||
xmkmf
|
||||
X.Org SGML entities >= 1.8
|
||||
xpdf
|
||||
ansidecl.h usability
|
||||
ansidecl.h presence
|
||||
ansidecl.h
|
||||
nan.h usability
|
||||
nan.h presence
|
||||
nan.h
|
||||
fp_class.h usability
|
||||
fp_class.h presence
|
||||
fp_class.h
|
||||
isnand
|
||||
fp_class
|
||||
class
|
||||
fpclass
|
||||
_stat
|
||||
ansidecl.h usability
|
||||
ansidecl.h presence
|
||||
ansidecl.h
|
||||
nan.h usability
|
||||
nan.h presence
|
||||
nan.h
|
||||
fp_class.h usability
|
||||
fp_class.h presence
|
||||
fp_class.h
|
||||
isnand
|
||||
fp_class
|
||||
class
|
||||
fpclass
|
||||
_stat
|
||||
whether g++ supports C++11 features by default
|
||||
tsol/label.h usability
|
||||
tsol/label.h presence
|
||||
tsol/label.h
|
||||
is_system_labeled
|
||||
launchd
|
||||
getlocalename_l
|
||||
net/if_dl.h usability
|
||||
net/if_dl.h presence
|
||||
net/if_dl.h
|
||||
sys/disklabel.h usability
|
||||
sys/disklabel.h presence
|
||||
sys/disklabel.h
|
||||
sys/disk.h usability
|
||||
sys/disk.h presence
|
||||
sys/disk.h
|
||||
whether llseek is declared
|
||||
whether struct stat has a st_flags field
|
||||
chflags
|
||||
fadvise64
|
||||
getmntinfo
|
||||
optreset
|
||||
sem_init
|
||||
whether we can link with -static
|
||||
if building for some Win32 platform
|
||||
more warnings
|
||||
x86_64-generic-linux-gnu-makeindex
|
||||
x86_64-generic-linux-gnu-pdflatex
|
||||
x86_64-generic-linux-gnu-egrep
|
||||
x86_64-generic-linux-gnu-dvips
|
||||
x86_64-generic-linux-gnu-latex
|
||||
x86_64-generic-linux-gnu-dot
|
||||
x86_64-generic-linux-gnu-perl
|
||||
x86_64-generic-linux-gnu-doxygen
|
||||
latex
|
||||
dvips
|
||||
whether more special flags are required for pthreads
|
||||
Configure miss: whether to build with gcov testing
|
||||
if compiler needs -Werror to reject unknown flags
|
||||
pow
|
||||
struct stat.st_mtimensec
|
||||
struct statvfs.f_basetype
|
||||
struct statvfs.f_fstypename
|
||||
sys/audioio.h presence
|
||||
valgrind/valgrind.h presence
|
||||
valgrind/valgrind.h usability
|
||||
whether C compiler handles -Werror -Wunknown-warning-opt ion
|
||||
whether self tests are run under valgrind
|
||||
arc4random_buf
|
||||
sys/ucred.h
|
||||
sys/utime.h
|
||||
valgrind/valgrind.h
|
||||
struct statfs.f_fstypename
|
||||
whether __argv is declared
|
||||
whether <limits.h> defines MIN and MAX
|
||||
whether C compiler accepts -Werror=unknown-warning-optio n
|
||||
whether gcc is Clang
|
||||
whether more special flags are required for pthreads
|
||||
whether the C locale is free of encoding errors
|
||||
winsock2.h
|
||||
getpeereid
|
||||
getpeerucred
|
||||
whether wint_t is too small
|
||||
xlocale.h usability
|
||||
whether the linker accepts -Wl,-fatal_warnings
|
||||
whether to build with code coverage support
|
||||
xlocale.h presence
|
||||
getexecname
|
||||
getprogname
|
||||
whether stdint.h predates C++11
|
||||
xlocale.h
|
||||
i686-generic-linux-gnu-pkg-config
|
||||
i686-generic-linux-gnu-objdump
|
||||
i686-generic-linux-gnu-dlltool
|
||||
i686-generic-linux-gnu-mt
|
||||
i686-generic-linux-gnu-strip
|
||||
111
drop-abandoned-patches.py
Executable file
111
drop-abandoned-patches.py
Executable file
@@ -0,0 +1,111 @@
|
||||
#!/usr/bin/python3
|
||||
#
|
||||
# drop-abandoned-patches.py - nuke dead patches from RPM trees
|
||||
#
|
||||
# Copyright 2016-2017 Intel Corporation
|
||||
#
|
||||
# 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/>.
|
||||
|
||||
import sys
|
||||
import os
|
||||
import glob
|
||||
import subprocess
|
||||
|
||||
|
||||
def emit_error(er):
|
||||
""" Emit error to stderr and exit immediately """
|
||||
sys.stderr.write(er)
|
||||
sys.stderr.flush()
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
def consume_spec(spec_file):
|
||||
""" Parse the spec file """
|
||||
sources = set()
|
||||
patches = set()
|
||||
|
||||
with open(spec_file, "r", encoding="latin-1") as inp_file:
|
||||
for line in inp_file.readlines():
|
||||
line = line.replace("\r", "").replace("\n", "").strip()
|
||||
if line == "":
|
||||
continue
|
||||
splits = line.split(":")
|
||||
# Skip URL sources too
|
||||
if len(splits) != 2:
|
||||
continue
|
||||
key = splits[0].strip().lower()
|
||||
value = splits[1].strip()
|
||||
# Make #commented patches appear "used"
|
||||
if key.startswith("#"):
|
||||
key = key[1:].strip()
|
||||
if key.startswith("patch"):
|
||||
patches.add(value)
|
||||
elif key.startswith("source"):
|
||||
sources.add(value)
|
||||
return sources, patches
|
||||
|
||||
|
||||
def main():
|
||||
if len(sys.argv) != 2:
|
||||
emit_error("usage: {} pkg.spec".format(sys.argv[0]))
|
||||
spec_file = sys.argv[1]
|
||||
if not os.path.exists(spec_file):
|
||||
emit_error("{} doesn't exist - aborting".format(spec_file))
|
||||
if not spec_file.endswith(".spec"):
|
||||
emit_error("{} doesn't look like a valid spec file".format(spec_file))
|
||||
|
||||
spec_file = os.path.abspath(spec_file)
|
||||
|
||||
# All ops are relative to base_dir
|
||||
base_dir = os.path.dirname(spec_file)
|
||||
|
||||
patch_files = set()
|
||||
|
||||
# find all .patch & .diff files
|
||||
try:
|
||||
searches = ["*.patch", "*.nopatch", "*.diff"]
|
||||
for item in searches:
|
||||
gl = glob.glob("{}/{}".format(base_dir, item))
|
||||
patch_files.update([os.path.basename(x) for x in gl])
|
||||
except Exception as e:
|
||||
emit_error(e)
|
||||
|
||||
# Parse the .spec file
|
||||
sources, patches = consume_spec(spec_file)
|
||||
fileset = set()
|
||||
fileset.update(sources)
|
||||
fileset.update(patches)
|
||||
|
||||
# Find out anything that's unused
|
||||
unused = [x for x in patch_files if x not in fileset]
|
||||
if len(unused) == 0:
|
||||
print("No unused patches")
|
||||
sys.exit(0)
|
||||
# git rm all the unused patches
|
||||
for unused_patch in unused:
|
||||
cmd = "git -C \"{}\" rm \"{}\"".format(base_dir, unused_patch)
|
||||
try:
|
||||
subprocess.check_call(cmd, shell=True)
|
||||
except Exception as e:
|
||||
emit_error("Cannot remove file {}: {}".format(unused_patch, e))
|
||||
# Now commit the changes
|
||||
try:
|
||||
commit_msg = "Drop unused patches from tree"
|
||||
cmd = "git -C \"{}\" commit -m '{}'".format(base_dir, commit_msg)
|
||||
subprocess.check_call(cmd, shell=True)
|
||||
except Exception as e:
|
||||
emit_error("Cannot commit changes: {}".format(e))
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
126
fmvpatches.pl
Normal file
126
fmvpatches.pl
Normal file
@@ -0,0 +1,126 @@
|
||||
#!/usr/bin/perl
|
||||
#
|
||||
# fmvpatches.pl - part of common developer tooling
|
||||
#
|
||||
# Copyright 2016-2017 Intel Corporation
|
||||
#
|
||||
# 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/>.
|
||||
|
||||
my %f;
|
||||
my $fmv = {};
|
||||
my $pkg = @ARGV[0];
|
||||
my $path = "/var/lib/mock/clear-$pkg/root/builddir/build/BUILD/";
|
||||
|
||||
sub patch_function {
|
||||
my $avx2 = '__attribute__((target_clones("avx2","arch=atom","default")))'."\n";
|
||||
my ($file,@patch_line) = @_;
|
||||
my $dir = $pkg;
|
||||
|
||||
my $patch_file = (split('/',$file))[-1];
|
||||
if ($file =~ /$path/p) {
|
||||
$dir = ${^POSTMATCH};
|
||||
if ($dir =~ /$patch_file/p) {
|
||||
$dir = ${^PREMATCH};
|
||||
}
|
||||
}
|
||||
|
||||
print "patching $file @ lines \(@patch_line\)\n";
|
||||
open(my $in, "<", $file) or die "$! - $file\n";
|
||||
`mkdir -p results/patches/$dir`;
|
||||
open(my $out, ">","results/patches/$dir/$patch_file~") or die __LINE__," - $!\n";
|
||||
|
||||
foreach (@patch_line) {
|
||||
my $line_num = $_;
|
||||
|
||||
while( <$in> ) {
|
||||
print $out $_;
|
||||
last if $. == ($line_num - 1);
|
||||
}
|
||||
|
||||
print $out $avx2;
|
||||
}
|
||||
while( <$in> ) {
|
||||
print $out $_;
|
||||
}
|
||||
|
||||
close $out;
|
||||
close $in;
|
||||
|
||||
my $diff = `cd results/patches/; diff -su $file $dir$patch_file~`;
|
||||
open (my $d,">","results/patches/$dir$patch_file.patch") or die __LINE__," - $!\n";
|
||||
print $d $diff;
|
||||
close($d);
|
||||
`rm results/patches/$dir$patch_file~`;
|
||||
`sed -i 's|$path||' results/patches/$dir$patch_file.patch\n`;
|
||||
}
|
||||
sub find_file {
|
||||
my ($file) = @_;
|
||||
|
||||
if ($file =~ /.*(\.\.\/)/p) {
|
||||
$file = ${^POSTMATCH};
|
||||
}
|
||||
|
||||
my $n = (split('/',$file))[-1];
|
||||
chomp (my @matches = `find $path -iname $n`);
|
||||
|
||||
foreach (@matches) {
|
||||
if ($_ =~ $n) {
|
||||
$file = $_;
|
||||
}
|
||||
}
|
||||
return $file;
|
||||
}
|
||||
|
||||
open(BUILD_LOG, '<', "results/build.log") or die $!;
|
||||
while (<BUILD_LOG>) {
|
||||
if($_ =~ /(\S+):([0-9]*):([0-9]*): note: (basic block|loop) (vectorized)/) {
|
||||
$fmv->{s_name} = (split('/',$1))[-1];
|
||||
$fmv->{f_name} = $1;
|
||||
push @{$f{$1}->{v_line}},$2;
|
||||
}
|
||||
}
|
||||
close(BUILD_LOG);
|
||||
|
||||
foreach (keys %f) {
|
||||
my $fname = $_;
|
||||
my @flines = @{$f{$_}->{v_line}};
|
||||
|
||||
if ($fname =~ /(\.c$)/) {
|
||||
my $f_path = &find_file($fname);
|
||||
|
||||
my @keys = 0;
|
||||
my $i = 0;
|
||||
foreach (`ctags --c-kinds=f -x $f_path`) {
|
||||
chomp $_;
|
||||
$keys[$i++] = (split(/\s+/,$_))[2]; # get function number line
|
||||
}
|
||||
@keys = sort {$a <=> $b} @keys;
|
||||
|
||||
my @match_line = 0;
|
||||
# foreach line vectorized look for its closest function
|
||||
foreach my $i ( 0 .. $#flines ) {
|
||||
foreach (@keys) {
|
||||
if ($_ < $flines[$i] ) {
|
||||
$match_line[$i] = $_;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
my %h;
|
||||
foreach (@match_line) {$h{$_} = $_;} @match_line = keys %h;
|
||||
@match_line = sort {$a <=> $b} @match_line;
|
||||
|
||||
&patch_function($f_path,@match_line);
|
||||
}
|
||||
}
|
||||
57
image-creator/start_qemu.sh
Normal file
57
image-creator/start_qemu.sh
Normal file
@@ -0,0 +1,57 @@
|
||||
#!/bin/bash
|
||||
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
|
||||
# ex: ts=8 sw=4 sts=4 et filetype=sh
|
||||
#
|
||||
# start_qemu.sh
|
||||
#
|
||||
# Copyright (c) 2016-2017 Intel Corporation
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in all
|
||||
# copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
# SOFTWARE.
|
||||
#
|
||||
|
||||
if [ -z "$1" ]; then
|
||||
IMAGE=clear.img
|
||||
else
|
||||
IMAGE="$1"
|
||||
shift
|
||||
fi
|
||||
|
||||
if [[ "$IMAGE" =~ .xz$ ]]; then
|
||||
>&2 echo "File \"$IMAGE\" is still xz compressed. Uncompress it first with \"unxz\""
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -f "$IMAGE" ]; then
|
||||
>&2 echo "Can't find image file \"$IMAGE\""
|
||||
exit 1
|
||||
fi
|
||||
rm -f debug.log
|
||||
|
||||
VMN=${VMN:=1}
|
||||
|
||||
qemu-system-x86_64 \
|
||||
-enable-kvm \
|
||||
-bios OVMF.fd \
|
||||
-smp sockets=1,cpus=4,cores=2 -cpu host \
|
||||
-m 1024 \
|
||||
-vga none -nographic \
|
||||
-drive file="$IMAGE",if=virtio,aio=threads,format=raw \
|
||||
-netdev user,id=mynet0,hostfwd=tcp::${VMN}0022-:22,hostfwd=tcp::${VMN}2375-:2375 \
|
||||
-device virtio-net-pci,netdev=mynet0 \
|
||||
-debugcon file:debug.log -global isa-debugcon.iobase=0x402 $@
|
||||
25
image-creator/yum.conf
Normal file
25
image-creator/yum.conf
Normal file
@@ -0,0 +1,25 @@
|
||||
[main]
|
||||
cachedir=/var/cache/yum/clear/
|
||||
keepcache=1
|
||||
debuglevel=2
|
||||
logfile=/var/log/yum.log
|
||||
exactarch=1
|
||||
obsoletes=1
|
||||
gpgcheck=0
|
||||
plugins=0
|
||||
retries=10
|
||||
installonly_limit=3
|
||||
reposdir=/root/mash
|
||||
|
||||
[clear]
|
||||
name=Clear
|
||||
baseurl=https://cdn.download.clearlinux.org/current/x86_64/os/
|
||||
enabled=1
|
||||
gpgcheck=0
|
||||
|
||||
[clear-source]
|
||||
name=Clear sources
|
||||
failovermethod=priority
|
||||
baseurl=https://cdn.download.clearlinux.org/current/source/SRPMS/
|
||||
enabled=1
|
||||
gpgcheck=0
|
||||
42
koji-client-files/clear.cfg
Normal file
42
koji-client-files/clear.cfg
Normal file
@@ -0,0 +1,42 @@
|
||||
config_opts['root'] = 'clear'
|
||||
config_opts['target_arch'] = 'x86_64'
|
||||
config_opts['legal_host_arches'] = ('x86_64',)
|
||||
config_opts['chroot_setup_cmd'] = 'groupinstall build srpm-build'
|
||||
config_opts['dist'] = 'clear' # only useful for --resultdir variable subst
|
||||
config_opts['extra_chroot_dirs'] = [ '/run/lock', ]
|
||||
config_opts['useradd'] = '/usr/sbin/useradd -m -u %(uid)s -g %(gid)s -d %(home)s %(user)s'
|
||||
config_opts['plugin_conf']['ccache_enable'] = False
|
||||
|
||||
|
||||
config_opts['yum.conf'] = """
|
||||
|
||||
[main]
|
||||
cachedir=/var/cache/yum
|
||||
debuglevel=1
|
||||
reposdir=/dev/null
|
||||
logfile=/var/log/yum.log
|
||||
retries=20
|
||||
obsoletes=1
|
||||
gpgcheck=0
|
||||
assumeyes=1
|
||||
syslog_ident=mock
|
||||
syslog_device=
|
||||
|
||||
# repos
|
||||
|
||||
|
||||
[local]
|
||||
name=local
|
||||
baseurl=https://cdn.download.clearlinux.org/current/x86_64/os/
|
||||
gpgcheck=0
|
||||
cost=2000
|
||||
enabled=1
|
||||
|
||||
|
||||
[debuginfo]
|
||||
name=debuginfo
|
||||
baseurl=https://cdn.download.clearlinux.org/current/x86_64/debug/
|
||||
gpgcheck=0
|
||||
cost=2000
|
||||
enabled=1
|
||||
"""
|
||||
36
koji-client-files/koji.conf
Normal file
36
koji-client-files/koji.conf
Normal file
@@ -0,0 +1,36 @@
|
||||
[koji]
|
||||
|
||||
;configuration for koji cli tool
|
||||
|
||||
;url of XMLRPC server
|
||||
;server = http://hub.example.com/kojihub
|
||||
|
||||
;url of web interface
|
||||
;weburl = http://www.example.com/koji
|
||||
|
||||
;url of package download site
|
||||
;topurl = http://www.example.com/packages
|
||||
|
||||
;path to the koji top directory
|
||||
;topdir = /mnt/koji
|
||||
|
||||
;configuration for Kerberos authentication
|
||||
|
||||
;the service name of the principal being used by the hub
|
||||
;krbservice = host
|
||||
|
||||
;configuration for SSL authentication
|
||||
;authtype = ssl
|
||||
|
||||
;FIXME: The user-setup.sh uses the three hardcoded cert paths
|
||||
;listed below. Do not edit them until they are configurable.
|
||||
|
||||
;client certificate
|
||||
cert = ~/.koji/client.crt
|
||||
|
||||
;certificate of the CA that issued the client certificate
|
||||
ca = ~/.koji/clientca.crt
|
||||
|
||||
;certificate of the CA that issued the HTTP server certificate
|
||||
serverca = ~/.koji/serverca.crt
|
||||
|
||||
284
licenses
Normal file
284
licenses
Normal file
@@ -0,0 +1,284 @@
|
||||
94e50e74aa533e042a8fb41a0d5b07460cdc3b91 | GPL-2.0
|
||||
3348e5430ba4fb49fa8eb6e9caf4f06266639d0d | EPL-1.0
|
||||
ef51e850423393335a21c5069af73674cdf6753f | GPL-2.0
|
||||
83ba6546e00f890f3a26a9bedd264084f8527d5e | LGPL-2.0
|
||||
003da9a1871de68693740b39bee3ddca66707ad3 | LGPL-2.1
|
||||
01a6b4bf79aca9b556822601186afab86e8c4fbf | LGPL-2.1
|
||||
06877624ea5c77efe3b7e39b0f909eda6e25a4ec | GPL-2.0
|
||||
075d599585584bb0e4b526f5c40cb6b17e0da35a | GPL-2.0
|
||||
090586b9e4c51fd5ef3c39f25d2469a8be8e33c9 | AFL-2.1 GPL-2.0+
|
||||
10782dd732f42f49918c839e8a5e2894c508b079 | GPL-2.0
|
||||
11c746c0c250304a17169f4d6aa4a82d09fd7157 | GPL-2.0
|
||||
12549569098cbb0efa8a4aa91f5f38068791fe42 | GPL-2.0
|
||||
13d2034b5ee3cb8d1a076370cf8f0e344a5d0855 | GPL-2.0
|
||||
14c1f9f1263a82d58615c51369e1443c3d9f15bf | LGPL-2.1
|
||||
14e8b95e4871fb8a09ebbb5082d34a3c1c7da5a3 | BSD MPL
|
||||
18b0624b094dd81f099af8672ff5a05259249059 | GPL-2.0+ LGPL-2.1+
|
||||
1adfe59a1df9ae50ec572004dd5ebd5f45cc85f7 | GPL-3.0+
|
||||
1c0c6888759a63c32bca7eb63353af2cd9bd5d9e | bzip2-1.0.6
|
||||
1cf6c2c767c8f1d457c8156aafc9220dd9dedbe5 | BSD
|
||||
1d6467e08284270291d138c7ea07f24689483068 | BSD
|
||||
1e2bf763a406378034f0722de926e819c31ed211 | GPL-3.0
|
||||
1f9b387f1c4c2857808696c5f2d7f9f31c26b911 | OldMIT
|
||||
21e40770dfa802576ee515345cef47ecedff6524 | LGPL-2.0+
|
||||
253c30cd74e4812f13e9e561cb54cbab26bc19dc | GPL-2.0
|
||||
2a4fd3610e85e2efdefe2dc331b555794f9e0cb3 | GPL-3.0
|
||||
2d29c273fda30310211bbf6a24127d589be09b6c | GPL-2.0
|
||||
329173a86dabff7ed1c8bd39117d410401c46a05 | GPL-2.0+ LGPL-2.0+
|
||||
39a21f33cadea18adcc23bf808d7d5ea6419c8b1 | LGPL-2.1
|
||||
3ee0019d4f4ea0a9d3f50800833f30dc14e2968e | GPL-2.0
|
||||
430bd4bbe476b94eb686e5751395a242fc2354e0 | BSD
|
||||
4386a89a4295085459ef1d54f3ab8859f1f1d28c | LGPL-2.1
|
||||
44f7289042b71631acac29b2f143330d2da2479e | LGPL-2.0
|
||||
480ff2fd1236e94295d10551b0b333296f639300 | LGPL-2.1+
|
||||
4cc77b90af91e615a64ae04893fdffa7939db84c | GPL-2.0
|
||||
4d328180e5349a9f65193ed4f424300d0c2c6adc | GPL-2.0
|
||||
4df5d4b947cf4e63e675729dd3f168ba844483c7 | LGPL-2.1
|
||||
4f485ab7059ac53d9e3818278ad82217ce976a36 | GFDL-1.1
|
||||
503df7650052cf38efde55e85f0fe363e59b9739 | GPL-2.0
|
||||
53afb4c86c46b4980f3f8bb129628c55e740226e | LGPL-2.0
|
||||
5405311284eab5ab51113f87c9bfac435c695bb9 | GPL-2.0
|
||||
545f380fb332eb41236596500913ff8d582e3ead | LGPL-2.1
|
||||
570d185ea721e7d6aee7426be1b10a800af98aa8 | LGPL-2.0
|
||||
5bb165c9b21503806d60c4559af198f569dc46f6 | LGPL-2.1
|
||||
5fb362ef1680e635fe5fb212b55eef4db9ead48f | LGPL-2.0
|
||||
61bb7a8ea669080cfc9e7dbf37079eae70b535fb | MIT
|
||||
62066b13a35774834f104c2ff075ce679a0f75a3 | EvolutionMix
|
||||
654d5ed6dd2d6ab7904d4047cde6345730f9d174 | GPL-3.0
|
||||
66c77efd1cf9c70d4f982ea59487b2eeb6338e26 | LGPL-2.1
|
||||
68c94ffc34f8ad2d7bfae3f5a6b996409211c1b1 | GPL-2.0
|
||||
72b40d717fc8757da66964a3a5b565aae69d8b39 | GPL-3.0
|
||||
72d42b3c12e7765c1539d6741cbc2054c2d11260 | GPL-3.0+
|
||||
74a8a6531a42e124df07ab5599aad63870fa0bd4 | GPL-2.0
|
||||
8088b44375ef05202c0fca4e9e82d47591563609 | LGPL-2.1
|
||||
80a39eb9544a657a0e23f53a15daff8a1d6a0e7d | LGPL-2.1
|
||||
8244c6af44d86382af14ef78dc6f430925cb46a7 | Perl
|
||||
83b927c3fa44af01d2515ea8575f8d4848cc10ec | GPL-2.0+ LGPL-2.0+
|
||||
842745cb706f8f2126506f544492f7a80dbe29b3 | GPL-3.0
|
||||
8570a5c766d8b7eda6fa171a7f6674e335b50c5e | MIT
|
||||
8624bcdae55baeef00cd11d5dfcfa60f68710a02 | GPL-3.0
|
||||
89e91cab64960b7c852e3b31da3802029af6ef88 | GPL-2.0
|
||||
8e57ffebd0ed4417edc22e3f404ea3664d7fed27 | MIT
|
||||
8edc79a3e927a60794fbccaaa22835f9e1ef5c9a | GPL-3.0+
|
||||
943fb830004a8813177c761482ac5d583ee09351 | GPL-3.0
|
||||
99b5245b4714b9b89e7584bfc88da64e2d315b81 | BSD
|
||||
a6adc13d0c809ab8cb68e6e3b6eb7571bd0e2920 | GPL-3.0
|
||||
a7a897a4bde987e597c04f16a9c28f6d3f57916d | GPL-2.0
|
||||
aade406c56b751113933f3b64890fb8d5b489a2c | LGPL-3.0
|
||||
aba8d76d0af67d57da3c3c321caa59f3d242386b | MPL-1.1
|
||||
adcc6ae0ba0e1e4fae77bd2b98db0d5a1aae2e75 | BSD-2-Clause
|
||||
b256632dcce76559734ff0a23330d2898b7d3a3b | GPL-2.0
|
||||
b47456e2c1f38c40346ff00db976a2badf36b5e3 | GPL-2.0
|
||||
b72fac76415d8029e2823485e3fb9ddb650b879e | GPL-2.0
|
||||
b7e55cb48a9fb891583a221fa909ccd75e2ceaaf | LGPL-2.0
|
||||
b972655523ae3fdb35306d830b8426e4af30d29c | GPL-2.0+
|
||||
ba8966e2473a9969bdcab3dc82274c817cfd98a1 | LGPL-2.0
|
||||
ba905468a032e17d551b8185bccecea5807b7638 | GPL-3.0
|
||||
bf50bac24e7ec325dbb09c6b6c4dcc88a7d79e8f | LGPL-2.0
|
||||
c2e8ebe3551b42d4a868922ec922a8af6452c48b | LGPL-3.0
|
||||
c3de6dd37753714ce85482acd8292525d4515595 | GPL-2.0
|
||||
c540cc53356ba854b2673e53fabc05b2f579404c | GPL-2.0
|
||||
c61905dc64311e8bcee6afc425fa40f917a45131 | GFDL1.1
|
||||
c931aad3017d975b7f20666cde0953234a9efde3 | GPL-2.0
|
||||
caeb68c46fa36651acf592771d09de7937926bb3 | LGPL-2.1
|
||||
cfea9b772a9da707b5f092d3c18b4572fa4bd520 | LGPL-2.0
|
||||
d129361510b2cbbf83a0c2d3dc0381b76d87ac9a | LGPL-2.1 MPL-1.1
|
||||
d83b6378d06fdf228b1afc0bf97e09b44bbb2e7b | LGPL-2.0
|
||||
dfac199a7539a404407098a2541b9482279f690d | GPL-2.0
|
||||
e00070d4eca0371dd3ca3df4a2472cc2db599bad | GPL-2.0
|
||||
e16364503a826791c0588c304c794ee8d210b7bc | GPL-1.0
|
||||
e1d31e42d2a477d6def889000aa8ffc251f2354c | GFDL-1.3
|
||||
e3afbcad74dd08819b5de5ad0338203369731f67 | GPL-2.0
|
||||
e60c2e780886f95df9c9ee36992b8edabec00bcc | LGPL-2.1
|
||||
e7d563f52bf5295e6dba1d67ac23e9f6a160fab9 | GPL-3.0
|
||||
f33b4d7ca167851483857c947ea7484d533d9b05 | GFDL CCBYSA
|
||||
f45ee1c765646813b442ca58de72e20a64a7ddba | GPL-3.0
|
||||
f4c513b3be30f40bb34a6e4d8c4f45a5bf1b6a10 | Meta
|
||||
f6e0bb551b32440d84c3886a34ddbd3d1aec7b56 | Apache2.0
|
||||
fbf1ca3836c050241ed2fde6ac3a515313f30e8b | GPL-2.0
|
||||
5e7b36dfb18c7b8002bb9c41f87b65d280abd2ae | GFDL1.1
|
||||
9a1929f4700d2407c70b507b3b2aaf6226a9543c | LGPL-2.1
|
||||
faa78032a41c2bfe6bfd1df72ccd1bb7ab4f7a10 | GPL-2.0
|
||||
2b8b815229aa8a61e483fb4ba0588b8b6c491890 | Apache-2.0
|
||||
cc1e4801215dbc785fbc3d2b9910b2f093466041 | GPL-2.0
|
||||
c5041828c23a816cc38e662b61032e959cb86893 | LGPL-2.1
|
||||
2b9d60c2972b476384af9900276837ac81954e80 | GPL-2.0
|
||||
597bf5f9c0904bd6c48ac3a3527685818d11246d | LGPL-2.1
|
||||
74acefbff6c13e5c81492d7460b82e2b5ec16c1b | LGPL-2.1
|
||||
061048a4b794b6b63e2b81f93404a9eaf5f61f11 | GPL Ghostscript
|
||||
715a897b37b8e535c5812e5f4e663c30b5a67115 | MIT
|
||||
73ccddd0c27b4492f8182c35f0f7c434b998757c | GPL-2.0
|
||||
313e4788e0730c747b41fad603f0fba3765a022d | MIT
|
||||
1665590806e57d72419af943374652cebc42571f | LGPL-2.1 MPL1.0
|
||||
669dfab6308e814f23c524fd51f565a39536ec21 | MIT
|
||||
38f27835622344a460610effe7888c9c2ef40c74 | MPL-1.0 LGPL-2.1
|
||||
1b07b3f8b3b7d79c074d00dfb39a5be425e70cb8 | GPL-2.0
|
||||
4cc8868f0a2c423cc8d63fede50ae0fecd58a720 | GPL-3.0+
|
||||
c3795529e138884da8f5b836db7e2fe1025526cd | GPL-2.0
|
||||
63b588642ebe669d50ab658ea1d079bb99086396 | GPL-2.0
|
||||
51ae38c0bc1c4f8b798d3181a3673ceebc93c54b | GPL-2.0
|
||||
79cd7284f964b96ba6df6c35dee5e8a92b9e9b49 | 3BSD GPL-2.0+
|
||||
cc4023c25020d429d9f4a4adf1a2461c8f334597 | 4BSD
|
||||
46243828d8d29354fd01836ba3a12254c072eedc | GFDL-1.2
|
||||
40a59387a5d3ab7449e77079f542f86018c16bff | GPL-2.0
|
||||
9e010b11705daec7ebf9c01a32d6f09ee444968d | GPL-2.0+
|
||||
df734091d6dbc9d20382b4084e68396a483582bd | 2BSD Ruby
|
||||
4c7d9cdbd787a28d9d0d4e1a425cd1e826621e41 | LGPL-2.1
|
||||
4d1d37f306ed270cda5b2741fac3abf0a7b012e5 | GPL-2.0
|
||||
bc06cbdf781c87d2df2fe385214f936d010dd2a2 | 3BSD
|
||||
cb9f6ee72658f9cb9fceb8b4a3d3e280a4586f20 | LGPL-2.1
|
||||
72f59fbac43fa1a7f0607d7fdba747832e626656 | 3BSD
|
||||
50147984b983a89bb0a981968bad2e431f0a1423 | MIT
|
||||
909b58c9b803acb8d063ac6b2147e56afc8055f6 | GPL-2.0
|
||||
b9c8da2c5e4162fc7e321fda0b8d3d084681e764 | 2BSD
|
||||
0e8e850b0580fbaaa0872326cb1b8ad6adda9b0d | LGPL-2.0
|
||||
6723aef56fa8b33bec08e1477f4393e6707c973c | MIT
|
||||
2aaa700763cac84c6ee8ce491a4148064850a761 | Chinese something
|
||||
7cdb2709d5ce063238a7fae991c5d6cbe3bc7d7f | LGPL-2.1Apache2
|
||||
58e79a1175dc5c95f8ac7dc1d23f1ffc61a9fee7 | WEIRD
|
||||
f7e86954cf5438549ec8948212f2713024119c68 | GPL-1.0+ Artistic
|
||||
ce714346889d1becdd3132cf7380c734a985ecf1 | GPL-1.0 Perl
|
||||
4aa399e286b0bfbfba4819711a9c143b79aa01d0 | GPL-2.0
|
||||
5eb1e4cf540bfae563680ce53c71c261abb5f076 | CERT weird
|
||||
00bf1929edfbe209d33d4b58a47e0178280bd606 | MIT
|
||||
14daa45932568feb416c5dd45f1cd909294fb3b0 | MIT
|
||||
174c509aa1452ab3a56faa01aec149015c391e99 | LGPL-2.1+ GPL-2.0+
|
||||
1c74b6200eb29fa8c10588f6e32f3f7cf8eda03f | MIT
|
||||
1cc9ab3464ce507485f4982670d12916ec5a3c0e | MIT
|
||||
235350d09d078e0fb82939483642d7567b1d1245 | MIT
|
||||
24790001231306234389a547f69e43601471db75 | BSD-3-Clause
|
||||
254aec9ad4aa42eb4f11c7a58ea1d297e14c43ae | MIT
|
||||
254f719409a77168a80aed51593017f6f44165c7 | LGPL-2.1 MPL-1.1
|
||||
2aa8684f0abf57011bd8bf5c30b0390cc2c85a03 | MIT
|
||||
2b61cd7d9b22e98804387e896a3cfa382c1bc4ef | MIT
|
||||
2cf9061e85ff400986a10c505a6177ff2b5e992d | MIT
|
||||
32b0302709046c7d107587b2a4435e91bcea2be8 | MIT
|
||||
3785dd882865259e99bf41ce033b122370e25ce1 | MIT
|
||||
3b90aaf730fa20460f8fe3fd20c16daf3acaba59 | MIT
|
||||
3c33e98325d414f0290c82bc32b0d8c28cbeeb9b | MIT
|
||||
40f6d7c0dba74ddd10663dfa50c2659cbe251423 | MIT
|
||||
4406aeb00f12a2c9cfba8066eef1a7a0c9b32f43 | 3BSD
|
||||
47ca90dc423091f8db250f2cc45f28aba88d11ed | 2BSD
|
||||
48703751ffc7d48dc3aa9609be19dd542cf9776b | GPL-3.0
|
||||
4f35a76dbcc982e002982b97c5d93f3d95c5e57f | MIT
|
||||
4ff4760dfc54975ddb40a3455633574849bc5611 | BSD-2-Clause
|
||||
5b550d122aa18a381e29e5be5f4814aeb7b6b800 | MIT
|
||||
5c96c2383498d529b9f62385b9db5ed6f290a890 | MIT
|
||||
5d1a41800996f1c023b69f4b1c3a93b194a66e80 | MIT
|
||||
5fb122a984b09d5c687513bb34a51eeeff2b13a7 | BSD-3-Clause GPL-1.0
|
||||
61200da0f665a7b331f2f17b065b5a948fad40b8 | MIT
|
||||
618c9d05efe2932bc3aa4745ecfb548303dd8f08 | MIT
|
||||
62ba6d3ef166a2b04cf4dcec7039c7afa9dcc2bc | MIT
|
||||
6596e03f9467e3d698993a49289a502c4baf7e08 | MIT
|
||||
6700131aba37c25eb7f67b0c4071d02df6de75bc | MIT
|
||||
6af05e5d7c8c49b139d589a27cddd8468e65a5a3 | MIT
|
||||
6c394114eefb35de30b9675a99cc1500c6e574cb | MIT
|
||||
6c6ec2b7a40bad98fa4a5b55c3855258e5d2a05e | LGPL-2.1 GPL-2.0
|
||||
70c32f13c99ca9bb7d53d5cb35fa8243dfa30e76 | MIT
|
||||
74cb2bfd42807a875d1386f2bae67be20c4e19cc | MIT
|
||||
a2f64f2a85f5fd34bda8eb713c3aad008adbb589 | MIT
|
||||
7f3f67aef48ead049bebdab307c04c2e03342710 | 3BSD
|
||||
7f673c53e3a7840abd45c5869b6ab8aeb2d34c10 | MIT
|
||||
84d1b5be6b879fb3967c937a581292206a68ab45 | MIT
|
||||
88aacfcae9d42c894660950b01e7229cc2895cad | MIT
|
||||
904c53ec5a9edfd5d08fcef5fb8ff9c844aed213 | MIT
|
||||
952348c4126a5946c98385d2fe5a4801735f174d | MIT
|
||||
97cf1f1fdaaff217f90d58faa9d1b2c0e387fd96 | MIT
|
||||
a08228c5c15d51b7072c406b0d30d862af339ada | MIT
|
||||
a280389ff9a8a9d58c76b406ac8a9b64d679f587 | MIT
|
||||
a7c968e282631e3b29c66bcf4a438fc72b68be27 | MIT
|
||||
bb38ed62633b427973e8bcbe95c88fc1e00fd77d | MIT
|
||||
b307e9607ffa7ab6dc4ab7c019d0e62a627b9532 | MIT
|
||||
b55b6493b790dc1291794a6b4f04064ce06bf435 | MIT
|
||||
b7c6cc817dedc6e9c0aff3bb5a50cbc1e7f9548f | MIT
|
||||
bb306f5409529d1c19b78d60f705d37e3c470124 | MIT
|
||||
b6e9e05950ebcd16852fe9795b564a3f5d976223 | Unknown
|
||||
bb5cc149358d8c36484f012e24ce694f66bd3b12 | FONT
|
||||
bc252631805cf037048f64fef562f98c2a0bdc9e | 3BSD
|
||||
bd67b052cf8bd1c31dbcdbe56955b6b5d22243f7 | MIT
|
||||
be90ae29e7e0977910b397571efe56601c123793 | MIT
|
||||
cb03b5ef1e3d983356601be29e306eebdc6a9257 | MIT
|
||||
cbfdfb0078ac466712aa0a82242b8fc955b0bc00 | MIT
|
||||
ce154c6a0d76d90cd20ef010636eb8e98a4f9fe5 | MIT
|
||||
893c940eb56cd6a45620c65c72b9a8c48bd79217 | MIT
|
||||
d004d8de0c32dfd3e86ca5f4a4552332bf5bbb67 | GPL-2.0 LGPL-3.0 APL-2.0 GFDL-1.3
|
||||
d13c7d638806dc37e5c9b6bbc39366cd904d04de | MIT
|
||||
d1845ff7fcb2cdc1f5713dd18140e89de2ab0204 | MIT
|
||||
d46d26c49b071f6f17913af46023b538bf1768e7 | MIT
|
||||
d6dad56b15f36205dc3c605a3e5a98ccac1275f2 | MIT
|
||||
dcc7cc194ef7fcd3e5f8e9bc20ddad371ee1d36c | MIT
|
||||
de9f614d7db67dd479cfa87b10a57ecc4abc7295 | MIT
|
||||
e4b3a39cf858dd93c1d5766b8bf1b49fbe9a1d67 | BSD-3-Clause
|
||||
e895154f04fa9aa52d1742728d984428f26a764b | LIBPNG
|
||||
e911adf5641a09f13fdd5d59962ad37da043df79 | MIT
|
||||
e2f32873edf33dd9f03272bb5aa47f825369b905 | MIT
|
||||
fddb19e45cceea1a6c3a9b16547b824bb768eceb | MIT
|
||||
f9e3dfab1d42d7282b0654e921706147795be7cb | LGPL-2.1 GPL-2.0+
|
||||
747f912a17321a200ab786514210c32116eb51b4 | MIT
|
||||
f35b1294fe252bc8ec243713fe9e214bbe5c6069 | MIT
|
||||
0005480dce93b70f7d62fa311f49e3c6c1a6dcfa | MIT
|
||||
0292928b4571cd06a52307940df8bcffc4c51ea4 | MIT
|
||||
11464e106e37066a94a23fe4912581799daa3e41 | 3BSD
|
||||
6745330da3e7bde244b20b96a42eae659644e731 | BSD-3-Clause
|
||||
196f0bcaf72257201b7e9d499a3c5b5f3f75c170 | MIT
|
||||
23a1e6369b12379f07c61bbbaa73e13704ebc30e | MIT
|
||||
87d59feee73204c7334b7e00ae1cec3f3c583474 | MIT
|
||||
2504e714566874eaff0a4ff3ca44d354b135efe9 | MIT
|
||||
2c938b2fe439b3d78ca579e5fc5cf49b3218c0ab | MIT
|
||||
31b3a6df67bb414219baa57025a5c8d6b79555a5 | MIT
|
||||
3c53de6040bbb05b7ad825a48f8d7341f9e3d6f4 | MIT
|
||||
4882eb6580148a083a7745785ef76768de52086c | MIT
|
||||
4e791d47822f12167fcddffaa7b8231b0c3b300a | MIT
|
||||
5050f00b9e4605253a0a9d03d227bf0fb74fd676 | MIT
|
||||
613732109bb85dacf28dccf37b7ec0c212124ecd | MIT
|
||||
6ae662f45f5458787a717d7280b6074d352de549 | MIT
|
||||
6b1edb9ab8161370f1ba8686ec730eb2cc0c1a13 | MIT
|
||||
922e3ebe82d80cae2f6c89bbb065ae455d0265b6 | MIT
|
||||
9384394a530b4a93530da89f95e05ac86c4880a0 | MIT
|
||||
a4777b6caf11b08abc996727d094e2dafc16caaa | MIT
|
||||
a9fbc5ee6bc3b991c1fee735b96204001a8d64fe | SGI-B
|
||||
b0fbb2162c8af440cb60a412a145a01195644b3b | 3BSD
|
||||
b37df50521fc00c23c1835b592967fcce90cd23b | MIT
|
||||
bb40dd090e18e858168d53bf519129e990f156dc | MIT
|
||||
bbdf8e1d71045a407fee797ad27983e3eafa3ee6 | MIT
|
||||
c89f43c4122e411a59ba705cfcf89a3f88019fcf | 3BSD
|
||||
cbd3c98acb262700c79d534692dc08cf05ec7f00 | MIT
|
||||
cf0f32a176b91013767b8a4a727a369156c6558c | MIT
|
||||
d8b8b6fadbff8363d66d5c703971ab0c86696e26 | MIT
|
||||
deed0c8eb4eb962dc74006326c98f750e08c8e3f | 2BSD 3BSD LGPL
|
||||
ea754f5e8f103855a5574468c9101889553c917e | MIT
|
||||
fd02365360c1936fdd069b08d29c16c6b16e4ea4 | MIT
|
||||
f0236e5d5e53eb7b386cd3ac80b852814e3112dc | GPL-2.0 LGPL-2.1
|
||||
be0b40ce8f9532b75966a20d14af123d3c6b05aa | GPL-2.0
|
||||
900806db6414f1bb309ab7438c0a5bac52eb3c2b | CCSA3.0
|
||||
d4e89d1a1e7812dae053aa8cb891f452891df932 | GPL-2.0
|
||||
f9c9a2d3495a0766b4cf20d4b90cfe714dab3dc1 | MIT
|
||||
8313e316436df0f02ce407f0b52b77f8195bfae6 | PublicDomain
|
||||
2a18f0964f8f7f91a74026ffe45927c83441f333 | 3BSD
|
||||
a5771f371f97e15ece15ad91386b8897cb06a95a | 3BSD
|
||||
5292f678d9f514464de238e26705c4e81c90366c | MIT Apache-2.0 BSD-3-Clause
|
||||
96784c94078c65a3af7fe6e26b60448042aea27a | IPL-1.0
|
||||
edce7bb3398021ac27115ab50d8db9efaf3408c7 | LGPL-2.1
|
||||
70e64fe9090c157e441681779e0f31aad34f35cb | GPL-3.0
|
||||
d25eb6311e5d0398a98818545298bc0fa10efab1 | GPL-2.0
|
||||
0b184ad51ba2a79e85d2288d5fcf8a1ea0481ea4 | GPL-2.0
|
||||
48d3aad525d9acd423ac6021c44fa4d15d4ee9ad | BSD-3-Clause
|
||||
9dc4c58e46864b14d95a1368a6ebac37aad89d32 | BSD-3-Clause
|
||||
aa4e6280a7b029d15f5be03d2858e5e4c1655ac8 | BSD-2-Clause
|
||||
0305317c0f694ba11e8f059938fd0c880356e7bc | BSD-3-Clause
|
||||
5b811940f3ef0c79e86f6ab11b0e4eced5e7eb14 | BSD-3-Clause
|
||||
098e171b1c9c7f15e05e696a187328e3c9aa0099 | BSD-4-Clause
|
||||
937157040d49ab4bbcf2070ed8f9b6849fdfa442 | MIT
|
||||
d0bee23991ce69abdc36d8711f54982ca2fd615c | MIT
|
||||
b034fd3ba225f77f2b5853bcc65393b50761dfd7 | MIT
|
||||
49113556cdf35023603d71001aa073eadbd26b7e | BSD-3-Clause
|
||||
57e93c186a48f2ccdd65f1872314534524825e94 | MIT
|
||||
cf3eaf29116a37a7d9ba773e776104c067c8e5fc | MIT
|
||||
7b7e5d72495f3cd2b0d1307b28b92df4ad68a0a8 | BSD-3-Clause
|
||||
2807f3f1c4cb33b214defc4c7ab72f7e4e70a305 | MIT
|
||||
e4a57e19916359bf6f6f36847712b1761204feed | BSD-3-Clause
|
||||
d86fb3f981d36e1f2890c7aaea6f8bcbb7ad4a27 | Muddy-MIT
|
||||
38abaf3c887f1799769b604e6d1ada4fcb81f8a0 | MIT
|
||||
750b9d9cc986bfc80b47c9672c48ca615cac0c87 | BSD-3-Clause
|
||||
175e59be229a5bedc6be93e958a970385bb04a62 | Apache-2.0
|
||||
794a893e510ca5c15c9c97a609ce47b0df74fc1a | BSD-2-Clause
|
||||
4
licenses-exceptions
Normal file
4
licenses-exceptions
Normal file
@@ -0,0 +1,4 @@
|
||||
Copyright
|
||||
Distributable
|
||||
Public-Domain
|
||||
sendmail
|
||||
313
licenses-spdx
Normal file
313
licenses-spdx
Normal file
@@ -0,0 +1,313 @@
|
||||
AAL
|
||||
Abstyles
|
||||
Adobe-2006
|
||||
Adobe-Glyph
|
||||
ADSL
|
||||
AFL-1.1
|
||||
AFL-1.2
|
||||
AFL-2.0
|
||||
AFL-2.1
|
||||
AFL-3.0
|
||||
Afmparse
|
||||
AGPL-1.0
|
||||
AGPL-3.0
|
||||
Aladdin
|
||||
AMDPLPA
|
||||
AML
|
||||
AMPAS
|
||||
ANTLR-PD
|
||||
Apache-1.0
|
||||
Apache-1.1
|
||||
Apache-2.0
|
||||
APAFML
|
||||
APL-1.0
|
||||
APSL-1.0
|
||||
APSL-1.1
|
||||
APSL-1.2
|
||||
APSL-2.0
|
||||
Artistic-1.0
|
||||
Artistic-1.0-cl8
|
||||
Artistic-1.0-Perl
|
||||
Artistic-2.0
|
||||
Bahyph
|
||||
Barr
|
||||
Beerware
|
||||
BitTorrent-1.0
|
||||
BitTorrent-1.1
|
||||
Borceux
|
||||
BSD-2-Clause
|
||||
BSD-2-Clause-FreeBSD
|
||||
BSD-2-Clause-NetBSD
|
||||
BSD-3-Clause
|
||||
BSD-3-Clause-Attribution
|
||||
BSD-3-Clause-Clear
|
||||
BSD-3-Clause-LBNL
|
||||
BSD-4-Clause
|
||||
BSD-4-Clause-UC
|
||||
BSD-Protection
|
||||
BSL-1.0
|
||||
bzip2-1.0.5
|
||||
bzip2-1.0.6
|
||||
Caldera
|
||||
CATOSL-1.1
|
||||
CC0-1.0
|
||||
CC-BY-1.0
|
||||
CC-BY-2.0
|
||||
CC-BY-2.5
|
||||
CC-BY-3.0
|
||||
CC-BY-4.0
|
||||
CC-BY-NC-1.0
|
||||
CC-BY-NC-2.0
|
||||
CC-BY-NC-2.5
|
||||
CC-BY-NC-3.0
|
||||
CC-BY-NC-4.0
|
||||
CC-BY-NC-ND-1.0
|
||||
CC-BY-NC-ND-2.0
|
||||
CC-BY-NC-ND-2.5
|
||||
CC-BY-NC-ND-3.0
|
||||
CC-BY-NC-ND-4.0
|
||||
CC-BY-NC-SA-1.0
|
||||
CC-BY-NC-SA-2.0
|
||||
CC-BY-NC-SA-2.5
|
||||
CC-BY-NC-SA-3.0
|
||||
CC-BY-NC-SA-4.0
|
||||
CC-BY-ND-1.0
|
||||
CC-BY-ND-2.0
|
||||
CC-BY-ND-2.5
|
||||
CC-BY-ND-3.0
|
||||
CC-BY-ND-4.0
|
||||
CC-BY-SA-1.0
|
||||
CC-BY-SA-2.0
|
||||
CC-BY-SA-2.5
|
||||
CC-BY-SA-3.0
|
||||
CC-BY-SA-4.0
|
||||
CDDL-1.0
|
||||
CDDL-1.1
|
||||
CECILL-1.0
|
||||
CECILL-1.1
|
||||
CECILL-2.0
|
||||
CECILL-B
|
||||
CECILL-C
|
||||
ClArtistic
|
||||
CNRI-Python
|
||||
CNRI-Python-GPL-Compatible
|
||||
Condor-1.1
|
||||
CPAL-1.0
|
||||
CPL-1.0
|
||||
CPOL-1.02
|
||||
Crossword
|
||||
CUA-OPL-1.0
|
||||
Cube
|
||||
D-FSL-1.0
|
||||
diffmark
|
||||
DOC
|
||||
Dotseqn
|
||||
DSDP
|
||||
dvipdfm
|
||||
ECL-1.0
|
||||
ECL-2.0
|
||||
eCos-2.0
|
||||
EFL-1.0
|
||||
EFL-2.0
|
||||
eGenix
|
||||
Entessa
|
||||
EPL-1.0
|
||||
ErlPL-1.1
|
||||
EUDatagrid
|
||||
EUPL-1.0
|
||||
EUPL-1.1
|
||||
Eurosym
|
||||
Fair
|
||||
Frameworx-1.0
|
||||
FreeImage
|
||||
FSFUL
|
||||
FSFULLR
|
||||
FTL
|
||||
GFDL-1.1
|
||||
GFDL-1.2
|
||||
GFDL-1.3
|
||||
GFDL-1.3+
|
||||
Giftware
|
||||
GL2PS
|
||||
Glide
|
||||
Glulxe
|
||||
gnuplot
|
||||
GPL-1.0
|
||||
GPL-1.0+
|
||||
GPL-2.0
|
||||
GPL-2.0+
|
||||
GPL-2.0-with-autoconf-exception
|
||||
GPL-2.0-with-bison-exception
|
||||
GPL-2.0-with-classpath-exception
|
||||
GPL-2.0-with-font-exception
|
||||
GPL-2.0-with-GCC-exception
|
||||
GPL-3.0
|
||||
GPL-3.0+
|
||||
GPL-3.0-with-autoconf-exception
|
||||
GPL-3.0-with-GCC-exception
|
||||
gSOAP-1.3b
|
||||
HaskellReport
|
||||
HPND
|
||||
IBM-pibs
|
||||
ICU
|
||||
IJG
|
||||
ImageMagick
|
||||
iMatix
|
||||
Imlib2
|
||||
Intel
|
||||
Intel-ACPI
|
||||
IPA
|
||||
IPL-1.0
|
||||
ISC
|
||||
JasPer-2.0
|
||||
JSON
|
||||
Latex2e
|
||||
Leptonica
|
||||
LGPL-2.0
|
||||
LGPL-2.0+
|
||||
LGPL-2.1
|
||||
LGPL-2.1+
|
||||
LGPL-3.0
|
||||
LGPL-3.0+
|
||||
Libpng
|
||||
libtiff
|
||||
LPL-1.0
|
||||
LPL-1.02
|
||||
LPPL-1.0
|
||||
LPPL-1.1
|
||||
LPPL-1.2
|
||||
LPPL-1.3a
|
||||
LPPL-1.3c
|
||||
MakeIndex
|
||||
MirOS
|
||||
MIT
|
||||
MIT-advertising
|
||||
MIT-CMU
|
||||
MIT-enna
|
||||
MIT-feh
|
||||
MIT-Opengroup
|
||||
MITNFA
|
||||
Motosoto
|
||||
mpich2
|
||||
MPL-1.0
|
||||
MPL-1.1
|
||||
MPL-2.0
|
||||
MPL-2.0-no-copyleft-exception
|
||||
MS-PL
|
||||
MS-RL
|
||||
MTLL
|
||||
Multics
|
||||
Mup
|
||||
NASA-1.3
|
||||
Naumen
|
||||
NBPL-1.0
|
||||
NCSA
|
||||
NetCDF
|
||||
Newsletr
|
||||
NGPL
|
||||
NLPL
|
||||
Nokia
|
||||
NOSL
|
||||
Noweb
|
||||
NPL-1.0
|
||||
NPL-1.1
|
||||
NPOSL-3.0
|
||||
NRL
|
||||
NTP
|
||||
Nunit
|
||||
OCLC-2.0
|
||||
ODbL-1.0
|
||||
OFL-1.0
|
||||
OFL-1.1
|
||||
OGTSL
|
||||
OLDAP-1.1
|
||||
OLDAP-1.2
|
||||
OLDAP-1.3
|
||||
OLDAP-1.4
|
||||
OLDAP-2.0
|
||||
OLDAP-2.0.1
|
||||
OLDAP-2.1
|
||||
OLDAP-2.2
|
||||
OLDAP-2.2.1
|
||||
OLDAP-2.2.2
|
||||
OLDAP-2.3
|
||||
OLDAP-2.4
|
||||
OLDAP-2.5
|
||||
OLDAP-2.6
|
||||
OLDAP-2.7
|
||||
OLDAP-2.8
|
||||
OML
|
||||
OpenSSL
|
||||
OPL-1.0
|
||||
OSL-1.0
|
||||
OSL-1.1
|
||||
OSL-2.0
|
||||
OSL-2.1
|
||||
OSL-3.0
|
||||
PDDL-1.0
|
||||
PHP-3.0
|
||||
PHP-3.01
|
||||
Plexus
|
||||
PostgreSQL
|
||||
psfrag
|
||||
psutils
|
||||
Python-2.0
|
||||
Qhull
|
||||
QPL-1.0
|
||||
Rdisc
|
||||
RHeCos-1.1
|
||||
RPL-1.1
|
||||
RPL-1.5
|
||||
RPSL-1.0
|
||||
RSCPL
|
||||
Ruby
|
||||
Saxpath
|
||||
SAX-PD
|
||||
SCEA
|
||||
SGI-B-1.0
|
||||
SGI-B-1.1
|
||||
SGI-B-2.0
|
||||
SimPL-2.0
|
||||
SISSL
|
||||
SISSL-1.2
|
||||
Sleepycat
|
||||
SMLNJ
|
||||
SNIA
|
||||
SPL-1.0
|
||||
StandardML-NJ
|
||||
SugarCRM-1.1.3
|
||||
SWL
|
||||
TCL
|
||||
TMate
|
||||
TORQUE-1.1
|
||||
TOSL
|
||||
Unicode-TOU
|
||||
Unlicense
|
||||
Vim
|
||||
VOSTROM
|
||||
VSL-1.0
|
||||
W3C
|
||||
W3C-19980720
|
||||
Watcom-1.0
|
||||
Wsuipa
|
||||
WTFPL
|
||||
WXwindows
|
||||
X11
|
||||
Xerox
|
||||
XFree86-1.1
|
||||
xinetd
|
||||
Xnet
|
||||
xpp
|
||||
XSkat
|
||||
YPL-1.0
|
||||
YPL-1.1
|
||||
Zed
|
||||
Zend-2.0
|
||||
Zimbra-1.3
|
||||
Zimbra-1.4
|
||||
Zlib
|
||||
zlib-acknowledgement
|
||||
ZPL-1.1
|
||||
ZPL-2.0
|
||||
ZPL-2.1
|
||||
w3c
|
||||
93
logcheck.pl
Normal file
93
logcheck.pl
Normal file
@@ -0,0 +1,93 @@
|
||||
#!/usr/bin/perl
|
||||
#
|
||||
# logcheck.pl - part of common developer tooling
|
||||
#
|
||||
# Copyright 2014-2017 Intel Corporation
|
||||
#
|
||||
# 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/>.
|
||||
|
||||
use File::Basename;
|
||||
|
||||
|
||||
my %whitelist;
|
||||
my %blacklist;
|
||||
my $count = 0;
|
||||
|
||||
sub setup_whitelist
|
||||
{
|
||||
my $count = 0;
|
||||
open(FILE, "../../projects/common/configure_whitelist") || return 0;
|
||||
while (<FILE>) {
|
||||
my $line = $_;
|
||||
chomp($line);
|
||||
|
||||
$whitelist{$line} = $line;
|
||||
$count += 1;
|
||||
}
|
||||
close(FILE);
|
||||
}
|
||||
|
||||
sub setup_blacklist
|
||||
{
|
||||
my $count = 0;
|
||||
open(FILE, "../../projects/common/configure_blacklist") || return 0;
|
||||
while (<FILE>) {
|
||||
my $line = $_;
|
||||
chomp($line);
|
||||
|
||||
$blacklist{$line} = $line;
|
||||
$count += 1;
|
||||
}
|
||||
close(FILE);
|
||||
}
|
||||
|
||||
sub print_fatal
|
||||
{
|
||||
my $pr = shift;
|
||||
print "[\033[1m\033[91mFATAL\033[0m] ". $pr . "\n"
|
||||
}
|
||||
|
||||
setup_whitelist();
|
||||
setup_blacklist();
|
||||
|
||||
while (<>) {
|
||||
my $line = $_;
|
||||
my $match;
|
||||
|
||||
$match = "";
|
||||
if ($line =~ /^checking (.*)\.\.\. no/) {
|
||||
$match = $1;
|
||||
}
|
||||
if ($line =~ /^checking for (.*)\.\.\. no/) {
|
||||
$match = $1;
|
||||
}
|
||||
if ($line =~ /none required/) {
|
||||
$match = "";
|
||||
}
|
||||
if ($line =~ /warning: format not a string literal/) {
|
||||
$match = $line;
|
||||
}
|
||||
if ($match eq "") {
|
||||
next;
|
||||
}
|
||||
|
||||
if (defined($whitelist{$match})) {
|
||||
# whitelisted
|
||||
} elsif (defined($blacklist{$match})) {
|
||||
print_fatal("Blacklisted configure-miss is forbidden: $match\n");
|
||||
exit 1;
|
||||
} else {
|
||||
print "Configure miss: $match\n";
|
||||
}
|
||||
}
|
||||
54
mapping
Normal file
54
mapping
Normal file
@@ -0,0 +1,54 @@
|
||||
[Mapping]
|
||||
libtiff = tiff
|
||||
python-django = Django
|
||||
boost_regex_library = boost
|
||||
libcurl = curl
|
||||
dbus1.0 = dbus
|
||||
dbus1.1.0 = dbus
|
||||
libdbus = dbus
|
||||
python_glanceclient = python-glanceclient
|
||||
libksba_library = libksba
|
||||
libtool-ltdl = libtool
|
||||
gnu_mpfr = mpfr
|
||||
shadow-utils = shadow
|
||||
gvim = vim
|
||||
libyaml = yaml
|
||||
http_server = httpd
|
||||
cheetah = Cheetah
|
||||
django = Django
|
||||
docbook_utils = docbook-utils
|
||||
gdk_pixbuf = gdk-pixbuf
|
||||
jinja2 = Jinja2
|
||||
libx11 = libX11
|
||||
libxcursor = libXcursor
|
||||
libxext = libXext
|
||||
libxfixes = libXfixes
|
||||
libxfont = libXfont
|
||||
libxi = libXi
|
||||
libxinerama = libXinerama
|
||||
libxrandr = libXrandr
|
||||
libxrender = libXrender
|
||||
libxres = libXres
|
||||
libxt = libXt
|
||||
libxtst = libXtst
|
||||
libxv = libXv
|
||||
libxvmc = libXvMC
|
||||
libxxf86vm = libXxf86vm
|
||||
lvm2 = LVM2
|
||||
mako = Mako
|
||||
novnc = noVNC
|
||||
open_iscsi = open-iscsi
|
||||
paste = Paste
|
||||
pillow = Pillow
|
||||
pound = Pound
|
||||
pyopenssl = pyOpenSSL
|
||||
python_glanceclient = python-glanceclient
|
||||
sqlalchemy = SQLAlchemy
|
||||
network_security_services = nss
|
||||
linux_kernel = linux
|
||||
bind = bind-utils
|
||||
rack = rubygem-rack
|
||||
compute = nova
|
||||
international_components_for_unicode = icu4c
|
||||
node.js = nodejs
|
||||
jupyter-core = jupyter_core
|
||||
2
pkg-mapping
Normal file
2
pkg-mapping
Normal file
@@ -0,0 +1,2 @@
|
||||
gtk+ gtk-plus
|
||||
libsigc++ libsigc-plus-plus
|
||||
62
provides.sh
Executable file
62
provides.sh
Executable file
@@ -0,0 +1,62 @@
|
||||
#!/bin/bash
|
||||
|
||||
RELEASE=0
|
||||
FILE_PATH="-r"
|
||||
|
||||
show_help() {
|
||||
echo "Usage: $0 [OPTIONS]"
|
||||
echo
|
||||
echo "Search "
|
||||
echo
|
||||
echo " -f, --file PATH full file path to search."
|
||||
echo
|
||||
echo "Optional: "
|
||||
echo " -r, --release RELEASE OS release number. Ex. 18400"
|
||||
echo " if not specified last release will be used"
|
||||
echo
|
||||
}
|
||||
|
||||
|
||||
if [ "$#" -eq 0 ]; then
|
||||
show_help
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ ! -e /etc/yum.conf ]; then
|
||||
echo "Error: yum.conf is missing. Please copy projects/common/image-creator/yum.conf to /etc"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
while [ -n "$1" ]; do
|
||||
case "$1" in
|
||||
-r | --release)
|
||||
shift
|
||||
RELEASE=$1
|
||||
shift
|
||||
;;
|
||||
-f | --file)
|
||||
shift
|
||||
FILE_PATH=$1
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
echo "$1: Invalid option" 1>&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ "${RELEASE}" = "0" -o -z "${RELEASE}" ]; then
|
||||
RELEASE=$(curl -s https://download.clearlinux.org/latest)
|
||||
fi
|
||||
|
||||
if [ "${FILE_PATH}" = "-r" ]; then
|
||||
show_help
|
||||
exit 1
|
||||
fi
|
||||
|
||||
REPO_URL="https://download.clearlinux.org/releases/${RELEASE}/clear/x86_64/os"
|
||||
|
||||
repoquery --repoid=${RELEASE} \
|
||||
--repofrompath=${RELEASE},${REPO_URL} \
|
||||
--whatprovides ${FILE_PATH}
|
||||
152
user-setup.sh
Executable file
152
user-setup.sh
Executable file
@@ -0,0 +1,152 @@
|
||||
#!/bin/sh
|
||||
|
||||
SCRIPT=$(/usr/bin/basename $0)
|
||||
PEM=""
|
||||
SERVERCA=""
|
||||
CLIENTCA=""
|
||||
|
||||
help() {
|
||||
printf "%s\n" >&2 "Usage: $SCRIPT [options]" \
|
||||
"" \
|
||||
"Options:" \
|
||||
"-k --client-cert PEM_FILE: Enable client user cert for koji configuration; requires a PEM file argument" \
|
||||
"-s --server-ca PEM_FILE: Enable server CA cert for koji configuration; requires a PEM file argument" \
|
||||
"-c --client-ca PEM_FILE: Enable client CA cert for koji configuration; requires a PEM file argument" \
|
||||
""
|
||||
}
|
||||
|
||||
while [ $# -gt 0 ]; do
|
||||
case "$1" in
|
||||
"--help"|"-h")
|
||||
help
|
||||
exit 0
|
||||
;;
|
||||
"--client-cert"|"-k")
|
||||
shift
|
||||
PEM="$PWD/$1"
|
||||
;;
|
||||
"--server-ca"|"-s")
|
||||
shift
|
||||
SERVERCA="$PWD/$1"
|
||||
;;
|
||||
"--client-ca"|"-c")
|
||||
shift
|
||||
CLIENTCA="$PWD/$1"
|
||||
;;
|
||||
*)
|
||||
help
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
error() {
|
||||
echo -e "Error: $1\n" >&2
|
||||
help
|
||||
exit 1
|
||||
}
|
||||
|
||||
if [ -z "$PEM" ] && [ -z "$SERVERCA" ] && [ -z "$CLIENTCA" ]; then
|
||||
USE_KOJI=
|
||||
else
|
||||
if [ -z "$PEM" ] || [ -z "$SERVERCA" ] || [ -z "$CLIENTCA" ]; then
|
||||
error "Must specify all three command line options (or none)"
|
||||
fi
|
||||
if [ ! -f "$PEM" ]; then
|
||||
error "Missing koji client PEM key file"
|
||||
fi
|
||||
if [ ! -f "$SERVERCA" ]; then
|
||||
error "Missing koji server CA PEM file"
|
||||
fi
|
||||
if [ ! -f "$CLIENTCA" ]; then
|
||||
error "Missing koji client CA PEM file"
|
||||
fi
|
||||
USE_KOJI="yes"
|
||||
fi
|
||||
|
||||
required_progs() {
|
||||
local bindir="/usr/bin"
|
||||
for f in git mock rpm rpmbuild ; do
|
||||
[ ! -x "${bindir}/${f}" ] && missing+="${f} "
|
||||
done
|
||||
[ "$PEM" ] && [ ! -x /usr/bin/koji ] && missing+="koji "
|
||||
if [ -n "$missing" ]; then
|
||||
echo "Install the following programs and re-run this script:" >&2
|
||||
echo $missing >&2
|
||||
echo 'All programs should be provided in the "os-clr-on-clr" bundle.' >&2
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
required_progs
|
||||
|
||||
echo 'Initializing development workspace in "clearlinux" . . .'
|
||||
if [ -d "clearlinux" ]; then
|
||||
echo 'Directory "clearlinux" already exists in current directory.' >&2
|
||||
echo "Cannot initialize workspace." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
mkdir clearlinux
|
||||
cd clearlinux
|
||||
|
||||
echo "Setting up common repo . . ."
|
||||
mkdir projects
|
||||
git clone https://github.com/clearlinux/common projects/common
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Failed to clone common repo." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Finish setup for packages/projects hierarchy
|
||||
ln -sf projects/common/Makefile.toplevel Makefile
|
||||
mkdir -p packages/common
|
||||
ln -sf ../../projects/common/Makefile.common packages/common/Makefile.common
|
||||
|
||||
if [ "$USE_KOJI" ]; then
|
||||
echo "Setting up koji certs . . ."
|
||||
mkdir -p ~/.koji
|
||||
cp "$PEM" ~/.koji/client.crt
|
||||
cp "$CLIENTCA" ~/.koji/clientca.crt
|
||||
cp "$SERVERCA" ~/.koji/serverca.crt
|
||||
|
||||
if [ ! -f /etc/koji.conf ]; then
|
||||
echo "Setting up koji config . . ."
|
||||
sudo cp projects/common/koji-client-files/koji.conf /etc
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ ! -f /etc/mock/clear.cfg ]; then
|
||||
echo "Setting up mock config . . ."
|
||||
sudo mkdir -p /etc/mock
|
||||
sudo cp projects/common/koji-client-files/clear.cfg /etc/mock
|
||||
fi
|
||||
|
||||
echo "Adding user to kvm group . . ."
|
||||
sudo usermod -a -G kvm $USER
|
||||
|
||||
echo "Cloning special project repositories . . ."
|
||||
make clone-projects
|
||||
|
||||
if [ -z "$NO_PACKAGE_REPOS" ]; then
|
||||
echo "Cloning all package repositories . . ."
|
||||
make clone-packages
|
||||
fi
|
||||
|
||||
if [ "$USE_KOJI" ]; then
|
||||
echo "Testing koji installation . . ."
|
||||
if koji moshimoshi; then
|
||||
echo -en "\n************************\n\n"
|
||||
echo "Koji installed and configured successfully"
|
||||
else
|
||||
echo -en "\n************************\n\n"
|
||||
echo "Error with koji installation or configuration" >&2
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
echo -en "\n************************\n"
|
||||
|
||||
echo 'Workspace has been set up in the "clearlinux" directory'
|
||||
echo 'NOTE: logout and log back in or run "newgrp kvm" to finalize the setup process'
|
||||
Reference in New Issue
Block a user