SILENT KILLERPanel

Current Path: > > lib > rpm > > macros.d


Operation   : Linux premium131.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64
Software     : Apache
Server IP    : 162.0.232.56 | Your IP: 216.73.216.111
Domains      : 1034 Domain(s)
Permission   : [ 0755 ]

Files and Folders in: //lib/rpm//macros.d

NameTypeSizeLast ModifiedActions
macros.alt-python310 File 2057 bytes June 18 2025 15:55:30.
macros.alt-python311 File 2082 bytes June 23 2025 15:48:07.
macros.alt-python312 File 2062 bytes June 23 2025 14:00:29.
macros.alt-python313 File 2062 bytes June 23 2025 14:39:34.
macros.alt-python38 File 2022 bytes September 23 2024 11:26:27.
macros.alt-python39 File 2025 bytes June 19 2025 12:11:17.
macros.dwz File 1806 bytes May 15 2023 14:30:31.
macros.efi-srpm File 3075 bytes November 23 2021 22:32:36.
macros.environment-modules File 75 bytes July 30 2020 12:13:34.
macros.fedora-misc File 2829 bytes May 15 2023 14:30:31.
macros.fedora-misc-srpm File 239 bytes May 15 2023 14:30:31.
macros.firewalld File 239 bytes March 11 2025 09:51:08.
macros.forge File 12733 bytes May 15 2023 14:30:31.
macros.ghc-srpm File 414 bytes August 12 2018 10:37:49.
macros.go-srpm File 7342 bytes April 08 2021 14:45:20.
macros.info File 390 bytes April 18 2022 17:09:26.
macros.kernel-srpm File 116 bytes May 15 2023 14:30:31.
macros.ldc-srpm File 73 bytes May 15 2023 14:30:31.
macros.ldconfig File 307 bytes May 15 2023 14:30:31.
macros.mono-srpm File 181 bytes May 15 2023 14:30:31.
macros.nodejs-srpm File 324 bytes May 15 2023 14:30:31.
macros.ocaml-srpm File 737 bytes October 14 2019 08:31:03.
macros.openblas-srpm File 104 bytes October 16 2019 20:47:30.
macros.perl File 5184 bytes July 28 2025 08:01:58.
macros.perl-srpm File 794 bytes October 13 2019 14:18:38.
macros.pybytecompile File 886 bytes May 16 2023 12:55:39.
macros.python File 3439 bytes May 16 2023 12:55:39.
macros.python-srpm File 6093 bytes May 16 2023 12:55:39.
macros.python2 File 1863 bytes April 21 2022 15:26:14.
macros.python3 File 3714 bytes May 16 2023 12:55:39.
macros.qt5-qtbase File 78 bytes July 18 2024 17:55:35.
macros.ruby File 1001 bytes June 06 2023 14:55:54.
macros.rust-srpm File 61 bytes January 08 2018 19:15:07.
macros.scl File 13857 bytes April 01 2023 16:10:31.
macros.selinux-policy File 6766 bytes December 17 2024 04:10:18.
macros.systemd File 4126 bytes April 22 2025 01:58:19.
macros.systemtap File 206 bytes October 14 2023 13:06:48.
macros.valgrind-srpm File 127 bytes May 15 2023 14:30:31.
macros.vim File 40 bytes August 02 2022 16:44:39.
macros.vpath File 228 bytes May 15 2023 14:30:31.

Reading File: //lib/rpm//macros.d/macros.go-srpm

# Copyright (c) 2015-2021 Jakub Cajka <jcajka@redhat.com>,
#                         Jan Chaloupka <jchaloup@redhat.com>,
#                         Nicolas Mailhot <nim@fedoraproject.org>
#                         Alejandro Saez Morollon <asm@redhat.com>
# This file is distributed under the terms of GNU GPL license version 3, or
# any later version.

# This file contains macros for building projects in golang for packages
# with golang compiler or gcc-go compiler based on an architecture.
# Golang is primarly for primary architectures, gcc-go for secondary.
#
# This file provides only macros and must not use any other package except
# redhat-rpm-macros.

# Define arches for PA and SA
%golang_arches   x86_64 %{arm} aarch64 ppc64le s390x
%gccgo_arches    %{mips}
%go_arches       %{golang_arches} %{gccgo_arches}

# Where to set GOPATH for builds
%gopath          %{_datadir}/gocode

# Define go_compilers macro to signal go-compiler package is available
%go_compiler     1

# Sanitize a Go import path that can then serve as rpm package name
# Mandatory parameter: a Go import path
%gorpmname() %{lua:
local goname = rpm.expand("%1")
-- lowercase and end with '/'
goname       = string.lower(goname .. "/")
-- remove eventual protocol prefix
goname       = string.gsub(goname, "^http(s?)://",         "")
-- add golang prefix
goname       = "golang-" .. goname
-- remove FQDN root (.com, .org, etc)
goname       = string.gsub(goname, "^([^/]+)%.([^%./]+)/", "%1/")
-- special-case x.y.z number-strings as that’s an exception in our naming
-- guidelines
repeat
  goname, i = string.gsub(goname, "(%d)%.(%d)",            "%1:%2")
until i == 0
-- replace various separators rpm does not like with -
goname       = string.gsub(goname, "[%._/%-]+",            "-")
-- because of the Azure sdk
goname       = string.gsub(goname, "%-for%-go%-",          "-")
-- Tokenize along - separators and remove duplicates to avoid
-- golang-foo-foo-bar-foo names
local result = ""
local tokens = {}
tokens["go"]     = true
tokens["git"]    = true
for token in string.gmatch(goname, "[^%-]+") do
   if not tokens[token] then
      result = result .. "-" .. token
      tokens[token] = true
   end
end
-- reassemble the string, restore x.y.z runs, convert the vx.y.z
-- Go convention to x.y.z as prefered in rpm naming
result = string.gsub(result, "^-", "")
result = string.gsub(result, ":", ".")
-- some projects have a name that end up in a number, and *also* add release
-- numbers on top of it, keep a - prefix before version strings
result = string.gsub(result, "%-v([%.%d])", "-%1")
print(result)
}

# Map Go information to rpm metadata. This macro will compute default spec
# variable values.
#
# The following spec variable MUST be set before calling the macro:
#
#   goipath   the packaged Go project import path
#
# The following spec variables SHOULD be set before calling the macro:
#
#   forgeurl  the project url on the forge, strongly recommended, if it can not
#             be deduced from goipath; alternatively, use -u <url>
#   Version   if applicable, set it with Version: <version>
#   tag       if applicable
#   commit    if applicable
#
# The macro will attempt to compute and set the following variables if they are
# not already set by the packager:
#
#   goname         an rpm-compatible package name derived from goipath
#   gosource       an URL that can be used as SourceX: value
#   gourl          an URL that can be used as URL: value
#
# It will delegate processing to the forgemeta macro for:
#
#   forgesource    an URL that can be used as SourceX: value
#   forgesetupargs the correct arguments to pass to %setup for this source
#                  used by %forgesetup and %forgeautosetup
#   archivename    the source archive filename, without extentions
#   archiveext     the source archive filename extensions, without leading dot
#   archiveurl     the url that can be used to download the source archive,
#                  without renaming
#   scm            the scm type, when packaging code snapshots: commits or tags
#
# If the macro is unable to parse your forgeurl value set at least archivename
# and archiveurl before calling it.
#
# Most of the computed variables are both overridable and optional. However,
# the macro WILL REDEFINE %{dist} when packaging a snapshot (commit or tag).
# The previous %{dist} value will be lost. Don’t call the macro if you don’t
# wish %{dist} to be changed.
#
# Optional parameters:
#   -u <url>  Ignore forgeurl even if it exists and use <url> instead. Note
#             that the macro will still end up setting <url> as the forgeurl
#             spec variable if it manages to parse it.
#   -s  Silently ignore problems in forgeurl, use it if it can be parsed,
#       ignore it otherwise.
#   -p  Restore problem handling, override -s.
#   -v  Be verbose and print every spec variable the macro sets.
#   -i  Print some info about the state of spec variables the macro may use or
#       set at the end of the processing.
%gometa(u:spvi) %{expand:%{lua:
local forgeurl    = rpm.expand("%{?-u*}")
if (forgeurl == "") then
  forgeurl        = rpm.expand("%{?forgeurl}")
end
-- Be explicit about the spec variables we’re setting
local function explicitset(rpmvariable,value)
  rpm.define(rpmvariable .. " " .. value)
  if (rpm.expand("%{?-v}") ~= "") then
    rpm.expand("%{echo:Setting %%{" .. rpmvariable .. "} = " .. value .. "\\n}")
  end
end
-- Never ever stomp on a spec variable the packager already set
local function safeset(rpmvariable,value)
  if (rpm.expand("%{?" .. rpmvariable .. "}") == "") then
    explicitset(rpmvariable,value)
  end
end
-- All the Go packaging automation relies on goipath being set
local goipath = rpm.expand("%{?goipath}")
if (goipath == "") then
  rpm.expand("%{error:Please set the Go import path in the “goipath” variable before calling “gometa”!}")
end
-- Compute and set spec variables
if (forgeurl ~= "") then
  rpm.expand("%forgemeta %{?-v} %{?-i} %{?-s} %{?-p} -u " .. forgeurl .. "\\n")
  safeset("gourl", forgeurl)
else
  safeset("gourl", "https://" .. goipath)
  rpm.expand("%forgemeta %{?-v} %{?-i} -s     %{?-p} -u %{gourl}\\n")
end
if (rpm.expand("%{?forgesource}") ~= "") then
  safeset("gosource", "%{forgesource}")
else
  safeset("gosource", "%{gourl}/%{archivename}.%{archiveext}")
end
safeset("goname", "%gorpmname %{goipath}")
-- Final spec variable summary if the macro was called with -i
if (rpm.expand("%{?-i}") ~= "") then
  rpm.expand("%{echo:Go-specific packaging variables}")
  rpm.expand("%{echo:  goipath:         %{?goipath}}")
  rpm.expand("%{echo:  goname:          %{?goname}}")
  rpm.expand("%{echo:  gourl:           %{?gourl}}")
  rpm.expand("%{echo:  gosource:        %{?gosource}}")
end}
BuildRequires: compiler(go-compiler)
ExclusiveArch: %{go_arches}
}

# Define commands for building
# BUILD_ID can be generated for golang build no matter of debuginfo
%gobuild(o:) \
CGO_CPPFLAGS="-D_FORTIFY_SOURCE=2 -fstack-protector-all" go build -compiler gc -buildmode pie '-tags=rpm_crashtraceback libtrust_openssl ' -ldflags "-linkmode=external -compressdwarf=false ${LDFLAGS:-} -B 0x$(head -c20 /dev/urandom|od -An -tx1|tr -d ' \\n') -extldflags '%__global_ldflags'" -a -v -x %{?**};\

# Define commands for testing
%gotest() go test -compiler gc -ldflags "${LDFLAGS:-}" %{?**};

SILENT KILLER Tool