package init

Signed-off-by: cherry530 <xuping33@huawei.com>
This commit is contained in:
cherry530 2021-09-15 17:42:54 +08:00
parent 4f60a85861
commit 90df954660
5 changed files with 500 additions and 0 deletions

View File

@ -0,0 +1,31 @@
From c0315dd54bc94c2acf4e4dcf0a72ca42a1cfde60 Mon Sep 17 00:00:00 2001
From: Lubos Kardos <lkardos@redhat.com>
Date: Wed, 9 Mar 2016 16:11:56 +0100
Subject: [PATCH] Scl utils layout patch from fedora@famillecollet.com
(#1198693)
---
rpm/macros.scl | 3 +++
1 file changed, 3 insertions(+)
diff --git a/rpm/macros.scl b/rpm/macros.scl
index 1246fde..41c6be4 100644
--- a/rpm/macros.scl
+++ b/rpm/macros.scl
@@ -69,10 +69,13 @@ package or when debugging this package.
%global _datadir %{_prefix}/share
%global _sysconfdir %{_scl_root}/etc
%{?nfsmountable: %global _sysconfdir %{_root_sysconfdir}%{_scl_prefix}/scls/%{scl}}
+%{?rh_layout: %global _sysconfdir %{_root_sysconfdir}%{_scl_prefix}/%{scl}}
%global _sharedstatedir %{_scl_root}/var/lib
%{?nfsmountable: %global _sharedstatedir %{_root_localstatedir}%{_scl_prefix}/scls/%{scl}/lib}
+%{?rh_layout: %global _sharedstatedir %{_root_localstatedir}%{_scl_prefix}/%{scl}/lib}
%global _localstatedir %{_scl_root}/var
%{?nfsmountable: %global _localstatedir %{_root_localstatedir}%{_scl_prefix}/scls/%{scl}}
+%{?rh_layout: %global _localstatedir %{_root_localstatedir}%{_scl_prefix}/%{scl}}
%global _libdir %{_exec_prefix}/%{_lib}
%global _includedir %{_prefix}/include
%global _infodir %{_datadir}/info
--
1.9.3

342
macros.scl-filesystem Normal file
View File

@ -0,0 +1,342 @@
%scl_files %{expand:
%defattr(-,root,root,-)
%dir %_scl_prefix
%dir %attr(555,root,root) %{_scl_root}
%dir %attr(555,root,root) %{_scl_scripts}
%{_scl_scripts}/enable
%{_root_sysconfdir}/scl/prefixes/%scl
%{_scl_root}/bin
%attr(555,root,root) %{_scl_root}/boot
%{_scl_root}/dev
%dir %{_sysconfdir}
%{_sysconfdir}/X11
%{_sysconfdir}/xdg
%{_sysconfdir}/opt
%{_sysconfdir}/pm
%{_sysconfdir}/xinetd.d
%{_sysconfdir}/skel
%{_sysconfdir}/sysconfig
%{_sysconfdir}/pki
%{_scl_root}/home
%{_scl_root}/lib
%ifarch x86_64 ppc ppc64 ppc64le aarch64 sparc sparc64 s390 s390x
%{_scl_root}/%{_lib}
%endif
%{_scl_root}/media
%dir %{_scl_root}/mnt
%dir %{_scl_root}/opt
%attr(555,root,root) %{_scl_root}/proc
%attr(550,root,root) %{_scl_root}/root
%{_scl_root}/run
%{_scl_root}/sbin
%{_scl_root}/srv
%{_scl_root}/sys
%attr(1777,root,root) %{_scl_root}/tmp
%dir %{_scl_root}/usr
%attr(555,root,root) %{_scl_root}/usr/bin
%{_scl_root}/usr/etc
%{_scl_root}/usr/games
%{_scl_root}/usr/include
%dir %attr(555,root,root) %{_scl_root}/usr/lib
%ifarch x86_64 ppc ppc64 ppc64le aarch64 sparc sparc64 s390 s390x
%attr(555,root,root) %{_scl_root}/usr/%{_lib}
%endif
%{_scl_root}/usr/libexec
%{_scl_root}/usr/local
%attr(555,root,root) %{_scl_root}/usr/sbin
%dir %{_scl_root}/usr/share
%{_scl_root}/usr/share/aclocal
%{_scl_root}/usr/share/applications
%{_scl_root}/usr/share/augeas
%{_scl_root}/usr/share/backgrounds
%{_scl_root}/usr/share/desktop-directories
%{_scl_root}/usr/share/dict
%{_scl_root}/usr/share/doc
%attr(555,root,root) %dir %{_scl_root}/usr/share/empty
%{_scl_root}/usr/share/games
%{_scl_root}/usr/share/ghostscript
%{_scl_root}/usr/share/gnome
%{_scl_root}/usr/share/icons
%{_scl_root}/usr/share/idl
%{_scl_root}/usr/share/info
%dir %{_scl_root}/usr/share/licenses
%dir %{_scl_root}/usr/share/locale
%dir %{_scl_root}/usr/share/man
%{_scl_root}/usr/share/mime-info
%{_scl_root}/usr/share/misc
%{_scl_root}/usr/share/omf
%{_scl_root}/usr/share/pixmaps
%{_scl_root}/usr/share/sounds
%{_scl_root}/usr/share/themes
%{_scl_root}/usr/share/xsessions
%{_scl_root}/usr/share/X11
%{_scl_root}/usr/src
%{_scl_root}/usr/tmp
%dir %{_localstatedir}
%{_localstatedir}/adm
%{_localstatedir}/cache
%{_localstatedir}/db
%{_localstatedir}/empty
%{_localstatedir}/games
%{_localstatedir}/gopher
%{_localstatedir}/lib
%{_localstatedir}/local
%ghost %dir %attr(755,root,root) %{_localstatedir}/lock
%ghost %{_localstatedir}/lock/subsys
%{_localstatedir}/log
%{_localstatedir}/mail
%{_localstatedir}/nis
%{_localstatedir}/opt
%{_localstatedir}/preserve
%ghost %attr(755,root,root) %{_localstatedir}/run
%dir %{_localstatedir}/spool
%attr(755,root,root) %{_localstatedir}/spool/lpd
%attr(775,root,mail) %{_localstatedir}/spool/mail
%attr(1777,root,root) %{_localstatedir}/tmp
%{_localstatedir}/yp
}
%scl_install %{expand:
# scl specific stuff
mkdir -p %{buildroot}%{_root_sysconfdir}/{rpm,scl/{prefixes,modulefiles}}
cat >> %{buildroot}%{_root_sysconfdir}/rpm/macros.%{scl}-config << EOF
%%%%scl %scl
%{?nfsmountable:%%%%nfsmountable %{nfsmountable}}
%{?rh_layout:%%%%rh_layout %{rh_layout}}
EOF
cat >> %{buildroot}%{_root_sysconfdir}/scl/prefixes/%{scl} << EOF
%_scl_prefix
EOF
test -e %{buildroot}%{_scl_scripts}/%{scl} && ln -s %{_scl_scripts}/%{scl} %{buildroot}%{_root_sysconfdir}/scl/modulefiles/%{scl}
# filelist
set +x
cat >> %{buildroot}/lang-exceptions << EOF
af_ZA
am_ET
ast_ES
az_IR
bg_BG
bn_IN
ca@valencia
ca_ES
ca_ES@valencian
cs_CZ
de_AT
de_CH
de_DE
default
el_GR
en_AU
en_CA
en_GB
en_US
en_NZ
es_AR
es_CL
es_CO
es_CR
es_DO
es_EC
es_ES
es_GT
es_HN
es_MX
es_NI
es_PA
es_PE
es_PR
es_SV
es_UY
es_VE
et_EE
eu_ES
fa_IR
fi_FI
fr_BE
fr_CA
fr_CH
fr_FR
gl_ES
he_IL
hr_HR
hu_HU
it_CH
it_IT
ja_JP
ko_KR
ks@devanagari
lv_LV
ms_MY
my_MM
nb_NO
nds_DE
nl_BE
nl_NL
pl_PL
pt_BR
pt_PT
ru_RU
sl_SI
sq_AL
sr_RS
sv_SE
uk_UA
ur_PK
zh_CN
zh_CN.GB2312
zh_HK
zh_TW
zh_TW.Big5
en@boldquot
en@quot
nds@NFE
sr@ije
sr@ijekavian
sr@ijekavianlatin
sr@latin
sr@Latn
uz@cyrillic
uz@Latn
be@latin
en@shaw
brx
brx_IN
EOF
cat >> %{buildroot}/iso_639.sed << EOF
1,/<iso_639_entries/b
# on each new iso-code process the current one
\\!\\(<iso_639_entry\\|</iso_639_entries>\\)!{
x
s/^$//
# we are on the first iso-code--nothing to process here
t
# process and write to output
s/\\s\\+/ /g
s/<iso_639_entry//
s!/\\s*>!!
# use '%' as a separator of parsed and unparsed input
s/\\(.*\\)iso_639_2T_code="\\([^"]\\+\\)"\\(.*\\)/\\2 % \\1 \\3/
s/\\([^%]\\+\\)%\\(.*\\)iso_639_2B_code="\\([^"]\\+\\)"\\(.*\\)/\\1\\t\\3 % \\2 \\4/
# clear subst. memory for the next t
t clear
:clear
s/\\([^%]\\+\\)%\\(.*\\)iso_639_1_code="\\([^"]\\+\\)"\\(.*\\)/\\1\\t\\3 % \\2 \\4/
t name
# no 639-1 code--write xx
s/%/\\tXX %/
:name
s/\\([^%]\\+\\)%\\(.*\\)name="\\([^"]\\+\\)"\\(.*\\)/\\1\\t\\3/
s/ \\t/\\t/g
p
b
:noout
}
H
EOF
cat >> %{buildroot}/iso_3166.sed << EOF
1,/<iso_3166_entries/b
# on each new iso-code process the current one
\\!\\(<iso_3166_entry\\|</iso_3166_entries>\\)!{
x
s/^$//
# we are on the first iso-code--nothing to process here
t
# process and write to output
s/\\s\\+/ /g
s/<iso_3166_entry//
s!/\\s*>!!
# use '%' as a separator of parsed and unparsed input
s/\\(.*\\)alpha_2_code="\\([^"]\\+\\)"\\(.*\\)/\\2 % \\1 \\3/
s/\\([^%]\\+\\)%\\(.*\\)alpha_3_code="\\([^"]\\+\\)"\\(.*\\)/\\1% \\2 \\4/
# clear subst. memory for the next t
t clear
:clear
s/\\([^%]\\+\\)%\\(.*\\)numeric_code="\\([^"]\\+\\)"\\(.*\\)/\\1% \\2 \\4/
t name
# no 3166 code--write xx
s/%/\\tXX %/
:name
s/\\([^%]\\+\\)%\\(.*\\)name="\\([^"]\\+\\)"\\(.*\\)/\\1\\t\\3/
s/ \\t/\\t/g
p
b
:noout
}
H
EOF
mkdir -p %{buildroot}%{_localstatedir}
pushd %{buildroot}%{_localstatedir}
mkdir -p {adm,empty,gopher,lib/{games,misc,rpm-state},local,lock/subsys,log,nis,preserve,run,spool/{mail,lpd,uucp},tmp,db,cache,opt,games,yp}
popd
mkdir -p %{buildroot}%{_sysconfdir}
pushd %{buildroot}%{_sysconfdir}
mkdir -p {X11/{applnk,fontpath.d},xdg/autostart,opt,pm/{config.d,power.d,sleep.d},xinetd.d,skel,sysconfig,pki}
popd
mkdir -p %{buildroot}%{_scl_root}
rm -f $RPM_BUILD_DIR/%{buildsubdir}/filelist
rm -f $RPM_BUILD_DIR/%{buildsubdir}/filesystem
pushd %{buildroot}%{_scl_root}
mkdir -p boot dev \\
home media mnt opt proc root run/lock srv sys tmp \\
usr/{bin,etc,games,include,lib/{games,locale,modules,sse2},libexec,local/{bin,etc,games,lib,sbin,src,share/{applications,man/man{1,2,3,4,5,6,7,8,9,n,1x,2x,3x,4x,5x,6x,7x,8x,9x},info},libexec,include,},sbin,share/{aclocal,applications,augeas/lenses,backgrounds,desktop-directories,dict,doc,empty,games,ghostscript/conf.d,gnome,icons,idl,info,licenses,man/man{1,2,3,4,5,6,7,8,9,n,1x,2x,3x,4x,5x,6x,7x,8x,9x,0p,1p,3p},mime-info,misc,omf,pixmaps,sounds,themes,xsessions,X11},src,src/kernels,src/debug}
%ifarch x86_64 ppc ppc64 ppc64le aarch64 sparc sparc64 s390 s390x
mkdir -p usr/{%{_lib}/{games,sse2,tls,X11,pm-utils/{module.d,power.d,sleep.d}},local/%{_lib}}
%endif
ln -snf %{_localstatedir}/tmp usr/tmp
ln -snf spool/mail %{buildroot}%{_localstatedir}/mail
ln -snf usr/bin bin
ln -snf usr/sbin sbin
ln -snf usr/lib lib
%ifarch x86_64 ppc ppc64 ppc64le aarch64 sparc sparc64 s390 s390x
ln -snf usr/%{_lib} %{_lib}
%endif
sed -n -f %{buildroot}/iso_639.sed /usr/share/xml/iso-codes/iso_639.xml >%{buildroot}/iso_639.tab
sed -n -f %{buildroot}/iso_3166.sed /usr/share/xml/iso-codes/iso_3166.xml >%{buildroot}/iso_3166.tab
grep -av "^$" %{buildroot}/iso_639.tab | grep -av "^#" | while read a b c d ; do
[[ "$d" =~ "^Reserved" ]] && continue
[[ "$d" =~ "^No linguistic" ]] && continue
locale=$c
if [ "$locale" = "XX" ]; then
locale=$b
fi
echo "%lang(${locale}) %{_scl_root}/usr/share/locale/${locale}" >> $RPM_BUILD_DIR/%{buildsubdir}/filelist
echo "%lang(${locale}) %ghost %config(missingok) %{_scl_root}/usr/share/man/${locale}" >> $RPM_BUILD_DIR/%{buildsubdir}/filelist
done
cat %{buildroot}/lang-exceptions | grep -v "^#" | grep -v "^$" | while read loc ; do
locale=$loc
locality=
special=
[[ "$locale" =~ "@" ]] && locale=${locale%%%%@*}
[[ "$locale" =~ "_" ]] && locality=${locale##*_}
[[ "$locality" =~ "." ]] && locality=${locality%%%%.*}
[[ "$loc" =~ "_" ]] || [[ "$loc" =~ "@" ]] || special=$loc
# If the locality is not official, skip it
if [ -n "$locality" ]; then
grep -q "^$locality" %{buildroot}/iso_3166.tab || continue
fi
# If the locale is not official and not special, skip it
if [ -z "$special" ]; then
egrep -q "[[:space:]]${locale%%_*}[[:space:]]" \\
%{buildroot}/iso_639.tab || continue
fi
echo "%lang(${locale}) %{_scl_root}/usr/share/locale/${loc}" >> $RPM_BUILD_DIR/%{buildsubdir}/filelist
echo "%lang(${locale}) %ghost %config(missingok) %{_scl_root}/usr/share/man/${loc}" >> $RPM_BUILD_DIR/%{buildsubdir}/filelist
done
rm -f %{buildroot}/iso_639.tab
rm -f %{buildroot}/iso_639.sed
rm -f %{buildroot}/iso_3166.tab
rm -f %{buildroot}/iso_3166.sed
rm -f %{buildroot}/lang-exceptions
cat $RPM_BUILD_DIR/%{buildsubdir}/filelist | grep "locale" | while read a b ; do
mkdir -p -m 755 %{buildroot}/$b/LC_MESSAGES
done
cat $RPM_BUILD_DIR/%{buildsubdir}/filelist | grep "/share/man" | while read a b c d; do
mkdir -p -m 755 %{buildroot}/$d/man{1,2,3,4,5,6,7,8,9,n,1x,2x,3x,4x,5x,6x,7x,8x,9x,0p,1p,3p}
done
for i in man{1,2,3,4,5,6,7,8,9,n,1x,2x,3x,4x,5x,6x,7x,8x,9x,0p,1p,3p}; do
echo "%{_scl_root}/usr/share/man/$i" >> $RPM_BUILD_DIR/%{buildsubdir}/filelist
done
ln -s $RPM_BUILD_DIR/%{buildsubdir}/filelist $RPM_BUILD_DIR/%{buildsubdir}/filesystem
set -x
popd
}

View File

@ -0,0 +1,54 @@
From 3538686a21279c60c916e82ece02efcd88ae95b9 Mon Sep 17 00:00:00 2001
From: Joe Orton <jorton@redhat.com>
Date: Thu, 8 Aug 2019 09:26:00 +0100
Subject: [PATCH] Fix crashes in "scl list-enabled":
* src/lib_common.c (merge_string_arrays):
Ensure elements of returned array are strdup()ed.
* src/scllib.c (get_enabled_collections):
Ensure all elements of returned array are strdup()ed.
Ref: https://bugzilla.redhat.com/show_bug.cgi?id=1728450
---
src/lib_common.c | 5 +++++
src/scllib.c | 2 +-
2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/src/lib_common.c b/src/lib_common.c
index 1aa49a0..2e7d116 100644
--- a/src/lib_common.c
+++ b/src/lib_common.c
@@ -7,6 +7,7 @@
#include <sys/stat.h>
#include <unistd.h>
#include <wordexp.h>
+#include <assert.h>
#include "errors.h"
#include "scllib.h"
@@ -269,6 +270,10 @@ char **merge_string_arrays(char *const *array1, char *const *array2)
}
merged_array[++prev] = NULL;
+ for (int i = 0; i < prev; i++) {
+ merged_array[i] = xstrdup(merged_array[i]);
+ }
+
return merged_array;
}
diff --git a/src/scllib.c b/src/scllib.c
index ce8df90..3c32d65 100644
--- a/src/scllib.c
+++ b/src/scllib.c
@@ -107,8 +107,8 @@ scl_rc get_enabled_collections(char ***_enabled_collections)
sizeof(SCL_MODULES_PATH - 1))){
enabled_collections[i] += sizeof(SCL_MODULES_PATH);
- enabled_collections[i] = xstrdup(enabled_collections[i]);
}
+ enabled_collections[i] = xstrdup(enabled_collections[i]);
}
}

BIN
scl-utils-2.0.2.tar.gz Normal file

Binary file not shown.

73
scl-utils.spec Normal file
View File

@ -0,0 +1,73 @@
%global __cmake_in_source_build 1
%global macrosdir %(d=%{_rpmconfigdir}/macros.d; [ -d $d ] || d=%{_sysconfdir}/rpm; echo $d)
Name: scl-utils
Epoch: 1
Version: 2.0.2
Release: 1
Summary: Utilities for alternative packaging
License: GPLv2+
URL: https://github.com/sclorg/scl-utils
Source0: https://github.com/sclorg/%{name}/archive/%{version}/%{name}-%{version}.tar.gz
Source1: macros.scl-filesystem
BuildRequires: gcc make
Buildrequires: cmake
Buildrequires: rpm-devel
Requires: %{_bindir}/modulecmd
Patch1: 0003-Scl-utils-layout-patch-from-fedora-famillecollet.com.patch
Patch100: scl-utils-2.0.2-rhbz-1728450.patch
%description
Run-time utility for alternative packaging.
%package build
Summary: RPM build macros for alternative packaging
Requires: iso-codes redhat-rpm-config
%description build
Essential RPM build macros for alternative packaging.
%prep
%autosetup -p1
%build
%cmake .
make %{?_smp_mflags} CFLAGS="$RPM_OPT_FLAGS" LDFLAGS="$RPM_LD_FLAGS"
%install
rm -rf %{buildroot}
make install DESTDIR=%{buildroot}
if [ %{macrosdir} != %{_sysconfdir}/rpm ]; then
mkdir -p %{buildroot}%{macrosdir}
mv %{buildroot}%{_sysconfdir}/rpm/macros.scl %{buildroot}%{macrosdir}
rmdir %{buildroot}%{_sysconfdir}/rpm
fi
cat %SOURCE1 >> %{buildroot}%{macrosdir}/macros.scl
mkdir -p %{buildroot}%{_sysconfdir}/scl
cd %{buildroot}%{_sysconfdir}/scl
mkdir modulefiles
mkdir prefixes
ln -s prefixes conf
%files
%dir %{_sysconfdir}/scl/modulefiles
%dir %{_sysconfdir}/scl/prefixes
%{_sysconfdir}/scl/conf
%{_sysconfdir}/scl/func_scl.csh
%config %{_sysconfdir}/bash_completion.d/scl
%config %{_sysconfdir}/profile.d/scl-init.sh
%config %{_sysconfdir}/profile.d/scl-init.csh
%{_bindir}/scl
%{_bindir}/scl_enabled
%{_bindir}/scl_source
%{_mandir}/man1/scl.1.gz
%doc LICENSE
%files build
%{macrosdir}/macros.scl
%{_rpmconfigdir}/scldeps.sh
%{_rpmconfigdir}/fileattrs/scl.attr
%{_rpmconfigdir}/fileattrs/sclbuild.attr
%{_rpmconfigdir}/brp-scl-compress
%{_rpmconfigdir}/brp-scl-python-bytecompile
%changelog
* Tue Sep 7 2021 zhengyaohui <zhengyaohui1@huawei.com> - 2.0.2-1
- package init