From 521e7f660c9650d6672d7425156deea89e74bb2a Mon Sep 17 00:00:00 2001 From: root Date: Tue, 11 Aug 2020 11:03:00 +0800 Subject: [PATCH] package init --- basic_test.rb | 59 ++++++++++++++++++++++++++ ruby-shadow-2.5.0-cflags.patch | 16 +++++++ ruby-shadow-2.5.0.gem | Bin 0 -> 11264 bytes rubygem-ruby-shadow.spec | 74 +++++++++++++++++++++++++++++++++ rubygem-ruby-shadow.yaml | 5 +++ 5 files changed, 154 insertions(+) create mode 100644 basic_test.rb create mode 100644 ruby-shadow-2.5.0-cflags.patch create mode 100644 ruby-shadow-2.5.0.gem create mode 100644 rubygem-ruby-shadow.spec create mode 100644 rubygem-ruby-shadow.yaml diff --git a/basic_test.rb b/basic_test.rb new file mode 100644 index 0000000..34cc580 --- /dev/null +++ b/basic_test.rb @@ -0,0 +1,59 @@ +require 'test/unit' +require 'rubygems' +require 'shadow' +require 'stringio' +class RubyShadowTest < Test::Unit::TestCase + STRUCT_METHODS = %w( sp_namp sp_pwdp sp_lstchg sp_min sp_max sp_warn sp_inact sp_expire sp_loginclass ) + # --------------------------------------------------- test_smoke_test_getspent + def test_smoke_test_getspent + x = Shadow::Passwd.getspent + assert( x, "ensure you have permissions to check this (sudo?)" ) + check_struct( x ) + end + # ----------------------------------------------------- test_getspnam_for_user + def test_getspnam_for_user + user = `whoami`.strip + x = Shadow::Passwd.getspnam( user ) + assert( x, "ensure you have permissions to check this (sudo?)" ) + check_struct( x ) + end + # ---------------------------------------- test_getspnam_for_non_existent_user + def test_getspnam_for_non_existent_user + assert_nil( Shadow::Passwd.getspnam( 'somebadusername' ) ) + end + # -------------------------------------------------------------- test_putspent + def test_putspent + omit_if( Shadow::IMPLEMENTATION != 'SHADOW' ) if respond_to?( :omit_if ) + #result = StringIO.open( '', 'w' ) do |fh| + File.open( 'test_password', 'w' ) do |fh| + Shadow::Passwd.add_password_entry( sample_entry, fh ) + end + assert( File.read( 'test_password' ).match( sample_entry.first ) ) + end + # --------------------------------------------------------------- check_struct + def check_struct( s ) + STRUCT_METHODS.each do |m| + s.send( m ) + end + end + # ----------------------------------------------------------------- test_entry + def sample_entry( &block ) + return ['test_user', # sp_namp + 'new_pass', # sp_pwdp + 0, #sp_lastchg + 0, #sp_min + 0, #sp_max + 0, #sp_warn + 0, #sp_inact + 0, #???? + 0, #sp_expire + 0 # sp_flag + ] + e = Shadow::Passwd::Entry.new + e.sp_namp = 'test_user' + e.sp_pwdp = 'password' + yield e if block_given? + return e + end +end + diff --git a/ruby-shadow-2.5.0-cflags.patch b/ruby-shadow-2.5.0-cflags.patch new file mode 100644 index 0000000..7f74b84 --- /dev/null +++ b/ruby-shadow-2.5.0-cflags.patch @@ -0,0 +1,16 @@ +--- extconf.rb~ 2017-10-05 20:21:59.480315863 +0200 ++++ extconf.rb 2017-10-05 20:23:55.077931560 +0200 +@@ -6,12 +6,7 @@ + + require 'mkmf' + require 'rbconfig' +- +-$CFLAGS = case RUBY_VERSION +- when /^1\.9/; '-DRUBY19' +- when /^2\./; '-DRUBY19' +- else; '' +- end ++$CFLAGS = "#{$CFLAGS} -DRUBY19" + + implementation = case CONFIG['host_os'] + when /linux/i; 'shadow' diff --git a/ruby-shadow-2.5.0.gem b/ruby-shadow-2.5.0.gem new file mode 100644 index 0000000000000000000000000000000000000000..9ec761df5ad428b645487ebf5cd0768d16c7b2b8 GIT binary patch literal 11264 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 Z4Pq|*e*)~k_xKxuzY+Kwf&W1W{1 %{gem_name}.gemspec +%patch0 -p0 +cp %{SOURCE1} . + +%build +export CONFIGURE_ARGS="--with-cflags='%{optflags}'" +gem build %{gem_name}.gemspec +%gem_install + +%install +mkdir -p %{buildroot}%{gem_dir} +cp -a .%{gem_dir}/* %{buildroot}%{gem_dir}/ +find %{buildroot}%{gem_dir}/ -name \*.so -delete +mkdir -p %{buildroot}%{gem_extdir_mri} +cp -a .%{gem_extdir_mri}/{gem.build_complete,*.so} %{buildroot}%{gem_extdir_mri}/ +rm -rf %{buildroot}%{gem_instdir}/ext/ + +%check +cp %{SOURCE1} .%{gem_instdir} +pushd .%{gem_instdir} +if [ $(id -u) = 0 ]; then + ruby -I. -e 'Dir.glob "*_test.rb", &method(:require)' +else + ruby -I. -e 'Dir.glob "*_test.rb", &method(:require)' || : +fi +popd + +%files +%dir %{gem_instdir} +%{gem_extdir_mri} +%{gem_instdir}/%{gem_name}.gemspec +%exclude %{gem_instdir}/.* +%license %{gem_instdir}/LICENSE +%exclude %{gem_cache} +%{gem_spec} + +%files doc +%doc %{gem_docdir} +%exclude %{gem_instdir}/* +%doc %{gem_instdir}/HISTORY +%doc %{gem_instdir}/README +%doc %{gem_instdir}/README.euc + +%changelog +* Tue Jul 28 2020 shaoqiang kang - 2.5.0-1 +- Package init diff --git a/rubygem-ruby-shadow.yaml b/rubygem-ruby-shadow.yaml new file mode 100644 index 0000000..83b2876 --- /dev/null +++ b/rubygem-ruby-shadow.yaml @@ -0,0 +1,5 @@ +git_url: https://github.com/apalmblad/ruby-shadow +version_control: github +src_repo: apalmblad/ruby-shadow +tag_prefix: "^" +seperator: "." -- Gitee