Hello community, here is the log from the commit of package nodejs-packaging for openSUSE:Factory checked in at 2016-03-07 13:24:10 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/nodejs-packaging (Old) and /work/SRC/openSUSE:Factory/.nodejs-packaging.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "nodejs-packaging" Changes: -------- --- /work/SRC/openSUSE:Factory/nodejs-packaging/nodejs-packaging.changes 2016-02-26 22:20:58.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.nodejs-packaging.new/nodejs-packaging.changes 2016-03-07 13:24:46.000000000 +0100 @@ -1,0 +2,17 @@ +Tue Mar 1 10:52:38 UTC 2016 - i...@marguerite.su + +- update version v10.beta9 + * expose build log in nodejs_build macro + * nodejs_build: more general build using node-gyp, + depends on the existence of compiled .node files + * filter 'sample' directory when copying files + * auto link executables in bin to /usr/bin, you can + delete unneeded ones later + * add nodejs_check macro, easy to check for unsatisfied + dependency now + * bugfix: semver.rb can't handle version like '1.0.0-rc3' + * bugfix: sometimes 'engines' tag is empty + * bugfix: nodejs-fixdep can't handle multiple occurance + of the same module + +------------------------------------------------------------------- Old: ---- nodejs-packaging-10.beta8.tar.gz New: ---- nodejs-packaging-10.beta9.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ nodejs-packaging.spec ++++++ --- /var/tmp/diff_new_pack.21ogc6/_old 2016-03-07 13:24:46.000000000 +0100 +++ /var/tmp/diff_new_pack.21ogc6/_new 2016-03-07 13:24:46.000000000 +0100 @@ -18,7 +18,7 @@ %define _rpmconfigdir %{_prefix}/lib/rpm Name: nodejs-packaging -Version: 10.beta8 +Version: 10.beta9 Release: 0 Summary: Node.js Dependency generators for openSUSE License: MIT @@ -26,9 +26,11 @@ Url: https://github.com/marguerite/nodejs-packaging Source: %{name}-%{version}.tar.gz BuildArch: noarch +Requires: gcc-c++ Requires: nodejs-devel +Requires: npm +Requires: python Requires: ruby -Requires: npm(npm) Requires: rubygem(json) BuildRoot: %{_tmppath}/%{name}-%{version}-build @@ -70,13 +72,14 @@ ln -sf %{_datadir}/npkg/npkg %{buildroot}%{_bindir}/npkg ln -sf %{_datadir}/npkg/scripts/npkg-mgmt-pkg-batchrm.rb %{buildroot}%{_bindir}/npkg-mgmt-pkg-batchrm ln -sf %{_datadir}/npkg/scripts/npkg-mgmt-json2pkgtxt.rb %{buildroot}%{_bindir}/npkg-mgmt-json2pkgtxt -ls -l %{buildroot}%{_datadir}/npkg/scripts/ ln -sf %{_datadir}/npkg/scripts/npkg-mgmt-merge.rb %{buildroot}%{_bindir}/npkg-mgmt-merge install -m0644 nodejs.attr %{buildroot}%{_rpmconfigdir}/fileattrs/nodejs.attr install -m0755 nodejs.prov %{buildroot}%{_rpmconfigdir}/nodejs.prov install -m0755 nodejs.req %{buildroot}%{_rpmconfigdir}/nodejs.req install -m0755 nodejs.rb %{buildroot}%{_rpmconfigdir}/nodejs.rb install -m0755 nodejs-fixdep.rb %{buildroot}%{_rpmconfigdir}/nodejs-fixdep.rb +install -m0755 nodejs-check.rb %{buildroot}%{_rpmconfigdir}/nodejs-check.rb +install -m0755 nodejs-symlink-deps.rb %{buildroot}%{_rpmconfigdir}/nodejs-symlink-deps.rb %files %defattr(-,root,root) @@ -94,6 +97,8 @@ %{_rpmconfigdir}/nodejs.req %{_rpmconfigdir}/nodejs.rb %{_rpmconfigdir}/nodejs-fixdep.rb +%{_rpmconfigdir}/nodejs-symlink-deps.rb +%{_rpmconfigdir}/nodejs-check.rb %{_rpmconfigdir}/nodejs %files -n npkg ++++++ nodejs-packaging-10.beta8.tar.gz -> nodejs-packaging-10.beta9.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nodejs-packaging-10.beta8/macros.nodejs new/nodejs-packaging-10.beta9/macros.nodejs --- old/nodejs-packaging-10.beta8/macros.nodejs 2016-02-26 16:51:36.000000000 +0100 +++ new/nodejs-packaging-10.beta9/macros.nodejs 2016-03-01 11:42:59.000000000 +0100 @@ -29,12 +29,14 @@ %nodejs_prep %{_prefix}/lib/rpm/nodejs.rb --prep %nodejs_mkdir %{_prefix}/lib/rpm/nodejs.rb --mkdir -%nodejs_build %{_prefix}/lib/rpm/nodejs.rb --build %nodejs_copy %{_prefix}/lib/rpm/nodejs.rb --copy +%nodejs_build %{_prefix}/lib/rpm/nodejs.rb --build +%nodejs_clean %{_prefix}/lib/rpm/nodejs.rb --clean %nodejs_filelist %{_prefix}/lib/rpm/nodejs.rb --filelist %nodejs_symlink_deps %{_prefix}/lib/rpm/nodejs-symlink-deps.rb %nodejs_fixdep %{_prefix}/lib/rpm/nodejs-fixdep.rb +%nodejs_check %{_prefix}/lib/rpm/nodejs-check.rb #compat opensuse %nodejs_modulesdir %{nodejs_sitelib} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nodejs-packaging-10.beta8/nodejs/semver.rb new/nodejs-packaging-10.beta9/nodejs/semver.rb --- old/nodejs-packaging-10.beta8/nodejs/semver.rb 2016-02-26 16:51:36.000000000 +0100 +++ new/nodejs-packaging-10.beta9/nodejs/semver.rb 2016-03-01 11:42:59.000000000 +0100 @@ -84,10 +84,9 @@ va = [vs,'0','0'] end - # from now on, version_array.size = 3 - default_op = ["~","^","*", ">",">=","<","<="] + left = va[va.size - 1] if va.size > 3 if default_op.include?(op) @@ -97,9 +96,17 @@ va[2] = "0" if va[2].index(/x|X/) if dep.has_key?(name) + if left + dep[name] << ">#{va[0]}.#{va[1]}.#{va[2]}-#{left}" + else dep[name] << ">#{va[0]}.#{va[1]}.#{va[2]}" + end else + if left + dep[name] = [">#{va[0]}.#{va[1]}.#{va[2]}-#{left}"] + else dep[name] = [">#{va[0]}.#{va[1]}.#{va[2]}"] + end end when ">=" @@ -107,9 +114,17 @@ va[2] = "0" if va[2].index(/x|X/) if dep.has_key?(name) + if left + dep[name] << ">=#{va[0]}.#{va[1]}.#{va[2]}-#{left}" + else dep[name] << ">=#{va[0]}.#{va[1]}.#{va[2]}" + end else + if left + dep[name] = [">=#{va[0]}.#{va[1]}.#{va[2]}-#{left}"] + else dep[name] = [">=#{va[0]}.#{va[1]}.#{va[2]}"] + end end when "<" @@ -117,9 +132,17 @@ va[2] = "0" if va[2].index(/x|X/) if dep.has_key?(name) + if left + dep[name] << "<#{va[0]}.#{va[1]}.#{va[2]}-#{left}" + else dep[name] << "<#{va[0]}.#{va[1]}.#{va[2]}" + end else + if left + dep[name] = ["<#{va[0]}.#{va[1]}.#{va[2]}-#{left}"] + else dep[name] = ["<#{va[0]}.#{va[1]}.#{va[2]}"] + end end when "<=" @@ -127,17 +150,26 @@ va[2] = "0" if va[2].index(/x|X/) if dep.has_key?(name) + if left + dep[name] << "<=#{va[0]}.#{va[1]}.#{va[2]}-#{left}" + else dep[name] << "<=#{va[0]}.#{va[1]}.#{va[2]}" + end else + if left + dep[name] = ["<=#{va[0]}.#{va[1]}.#{va[2]}-#{left}"] + else dep[name] = ["<=#{va[0]}.#{va[1]}.#{va[2]}"] + end end when "~" + # ["1", "0", "0", "rc3"] if va[0] == '0' if va[1].index(/x|X/) high = "1.0.0" else - high = '0.' + (va[1].to_i + 1).to_s + '.0' + high = '0.' + (va[1].to_i + 1).to_s + ".0" end else if va[1].index(/x|X/) || va[1] == '0' && va[2] == '0' @@ -148,8 +180,12 @@ end va[1] = "0" if va[1].index(/x|X/) va[2] = "0" if va[2].index(/x|X/) - low = va[0] + '.' + va[1] + '.' + va[2] - + if left + low = va[0] + '.' + va[1] + '.' + va[2] + '-' + left + else + low = va[0] + '.' + va[1] + '.' + va[2] + end + if dep.has_key?(name) dep[name] << ">=#{low}" dep[name] << "<#{high}" @@ -173,7 +209,11 @@ end va[1] = "0" if va[1].index(/x|X/) va[2] = "0" if va[2].index(/x|X/) - low = va[0] + '.' + va[1] + '.' + va[2] + if left + low = va[0] + '.' + va[1] + '.' + va[2] + '-' + left + else + low = va[0] + '.' + va[1] + '.' + va[2] + end if dep.has_key?(name) dep[name] << ">=#{low}" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nodejs-packaging-10.beta8/nodejs-check.rb new/nodejs-packaging-10.beta9/nodejs-check.rb --- old/nodejs-packaging-10.beta8/nodejs-check.rb 1970-01-01 01:00:00.000000000 +0100 +++ new/nodejs-packaging-10.beta9/nodejs-check.rb 2016-03-01 11:42:59.000000000 +0100 @@ -0,0 +1,34 @@ +#!/usr/bin/env ruby +require 'json' + +require '/usr/lib/rpm/nodejs/bundles.rb' +include Bundles + +buildroot = Bundles.getbuildroot +sitelib = Bundles.getsitelib + +# check where a module comes from +mod = ARGV[0] + +unless mod.nil? + Dir.glob(buildroot + sitelib + "/**/package.json") do |f| + open(f) do |file| + json = JSON.parse(file.read) + unless json["dependencies"].nil? + puts f if json["dependencies"].include?(mod) + end + end + end +end + +# check left-over bower.json dependencies +Dir.glob(buildroot + sitelib + "/**/*") do |f| + if f.end_with?("bower.json") + open(f) do |file| + json = JSON.parse(file.read) + unless json["dependencies"].nil? || json["dependencies"].empty? + puts f.gsub(/^.*node_modules\//,'').gsub(/\/bower\.json/,'') + " has dependencies in bower.json, please do something" + end + end + end +end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nodejs-packaging-10.beta8/nodejs-fixdep.rb new/nodejs-packaging-10.beta9/nodejs-fixdep.rb --- old/nodejs-packaging-10.beta8/nodejs-fixdep.rb 2016-02-26 16:51:36.000000000 +0100 +++ new/nodejs-packaging-10.beta9/nodejs-fixdep.rb 2016-03-01 11:42:59.000000000 +0100 @@ -20,14 +20,13 @@ json = {} files.each do |f| - pkgjson = f if f.index(pkgname + "/package.json") + if f.index(pkgname + "/package.json") + # get its parent + pkgjson = f.gsub('node_modules/' + pkgname + '/package.json','') + "package.json" + if File.exist? pkgjson + File.open(pkgjson,'r:UTF-8') {|f| json = JSON.parse(f.read)} + json["dependencies"][pkgname] = dep + File.open(pkgjson,'w:UTF-8') {|f| f.write JSON.pretty_generate(json) } + end + end end - -# get its parent -pkgjson = pkgjson.gsub('node_modules/' + pkgname + '/package.json','') + "package.json" - -File.open(pkgjson,'r:UTF-8') {|f| json = JSON.parse(f.read)} - -json["dependencies"][pkgname] = dep - -File.open(pkgjson,'w:UTF-8') {|f| f.write JSON.pretty_generate(json) } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nodejs-packaging-10.beta8/nodejs.rb new/nodejs-packaging-10.beta9/nodejs.rb --- old/nodejs-packaging-10.beta8/nodejs.rb 2016-02-26 16:51:36.000000000 +0100 +++ new/nodejs-packaging-10.beta9/nodejs.rb 2016-03-01 11:42:59.000000000 +0100 @@ -108,12 +108,7 @@ def filter(file="") f = file.split("/") - if f.grep(/^\..*$|.*~$|\.bat$|\.cmd$|Makefile|test(s)?(\.js)?|example(s)?(\.js)?|benchmark(s)?(\.js)?|\.sh$|_test\.|browser$|\.orig$|\.bak$|windows|\.sln$|\.njsproj$|\.exe$|\.c$|\.h$|\.cc$|\.cpp$/).empty? - if File.file?(file) && File.executable?(file) && f.grep("bin").empty? - puts "Fixing permission: " + file - io = IO.popen("chmod -x #{file}") - io.close - end + if f.grep(/^\..*$|.*~$|\.bat$|\.cmd$|Makefile|test(s)?(\.js)?|example(s)?(\.js)?|benchmark(s)?(\.js)?|sample(s)?(\.js)?|\.sh$|_test\.|browser$|\.orig$|\.bak$|windows|\.sln$|\.njsproj$|\.exe$|appveyor\.yml/).empty? return file else return nil @@ -161,8 +156,8 @@ when "--build" buildlist = [] - Dir.glob(sourcedir + "/**/*") do |f| - if f.end_with?(".c") || f.end_with?(".h") || f.end_with?(".cc") || f.end_with?(".cpp") + Dir.glob(buildroot + "/**/*") do |f| + if f.end_with?(".c") || f.end_with?(".cc") || f.end_with?(".cpp") name = f.gsub(/^.*node_modules\//,'').gsub(/\/.*$/,'') prefix = f.gsub(buildroot,'').gsub(/#{name}\/.*$/,'') prefix = buildroot + prefix + name @@ -171,17 +166,21 @@ end buildlist = ( buildlist.uniq! if buildlist.uniq! ) || buildlist - + buildlist.each do |b| - io = IO.popen("pushd #{b} && npm build -f && popd") - io.close - end - # clean middle files - Dir.glob(sourcedir + "/**/*") do |f| - FileUtils.rm_rf f if f.index(/build\/(Release|Debug)/) + gyp = Dir.glob(b + "/**/*").select{|f| f.end_with?(".gyp")} + node = Dir.glob(b + "/**/*").select{|f| f.end_with?(".node")} + if ! gyp.empty? && ! node.empty? + io = IO.popen("pushd #{b} && npm build -f && popd") + io.each_line {|l| puts l} + io.close + elsif ! gyp.empty? && node.empty? + node_gyp = Dir.glob("/usr/lib*/node_modules/npm/node_modules/node-gyp/bin")[0] + "/node-gyp.js" + io1 = IO.popen("pushd #{b} && #{node_gyp} rebuild && popd") + io1.each_line {|l| puts l} + io1.close + end end - # clean empty directories - Dir[sourcedir + "/**/*"].select{|d| File.directory? d}.select{|d| (Dir.entries(d) - %w[ . .. ]).empty?}.each{|d| Dir.rmdir d} when "--copy" Dir.glob(buildroot + "/**/*") do |dir| @@ -190,7 +189,8 @@ recursive_copy(f,dir) end end - + + # rename Dir.glob(buildroot + "/**/*").sort{|x| x.size}.each do |dir| name = dir.gsub(/^.*\//,'') prefix = dir.gsub(buildroot,'').gsub(name,'') @@ -198,6 +198,19 @@ FileUtils.mv dir,buildroot + prefix + name.gsub(/-[0-9].*$/,'') end end + + # auto symlink executables in bin to /usr/bin + Dir.glob(buildroot + "/**/*") do |f| + unless f.split("/").grep("bin").empty? || f.end_with?(".node") + if File.file?(f) && File.executable?(f) + FileUtils.mkdir_p buildroot + "/usr/bin" unless Dir.exist?(buildroot + "/usr/bin") + name = f.gsub(/^.*\/bin\//,'') + prefix = f.gsub(buildroot,'').gsub(/#{name}$/,'') + puts "Linking #{prefix}#{name} to /usr/bin/#{name}" + FileUtils.ln_sf prefix + name, buildroot + "/usr/bin/" + name + end + end + end # bower main = Dir.glob(buildroot + sitelib + "/*")[0] @@ -232,6 +245,28 @@ end end +when "--clean" + + # clean source files + Dir.glob(buildroot + sitelib + "/**/{*,.*}") do |f| + if f.end_with?(".c") || f.end_with?(".h") || f.end_with?(".cc") || f.end_with?(".cpp") || f.end_with?(".o") || f.gsub(/^.*\//,'').start_with?(".") || f.end_with?("Makefile") || f.end_with?(".mk") || f.end_with?(".gyp") || f.end_with?(".gypi") + puts "Cleaning " + f + FileUtils.rm_rf f + end + unless f.index("build/Release") + if File.file?(f) && File.executable?(f) && f.split("/").grep("bin").empty? + puts "Fixing permission: " + f + io = IO.popen("chmod -x #{f}") + io.close + end + else + FileUtils.rm_rf f if f.index("obj.target") + end + end + + # clean empty directories + Dir[buildroot + sitelib + "/**/{*,.*}"].select{|d| File.directory? d}.select{|d| (Dir.entries(d) - %w[ . .. ]).empty?}.each{|d| Dir.rmdir d} + when "--filelist" open(sourcedir + "/files.lst","w:UTF-8") do |file| @@ -244,7 +279,6 @@ file.write f.gsub(buildroot,'') + "\n" end end - end - + end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nodejs-packaging-10.beta8/nodejs.req new/nodejs-packaging-10.beta9/nodejs.req --- old/nodejs-packaging-10.beta8/nodejs.req 2016-02-26 16:51:36.000000000 +0100 +++ new/nodejs-packaging-10.beta9/nodejs.req 2016-03-01 11:42:59.000000000 +0100 @@ -25,7 +25,7 @@ js = {} File.open(f,'r:UTF-8') {|f1| js = JSON.parse(f1.read)} - unless js["dependencies"] == nil + unless js["dependencies"].nil? js["dependencies"].each do |k,v| deps = Semver.parse(k,v) # {"semver"=>[">=4.1.0","<5.0.0"]} @@ -145,4 +145,4 @@ end end -puts "nodejs(engine) >= #{max[0]}.#{max[1]}.#{max[2]}" +puts "nodejs(engine) >= #{max[0]}.#{max[1]}.#{max[2]}" unless max.empty? diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nodejs-packaging-10.beta8/tool/template new/nodejs-packaging-10.beta9/tool/template --- old/nodejs-packaging-10.beta8/tool/template 2016-02-26 16:51:36.000000000 +0100 +++ new/nodejs-packaging-10.beta9/tool/template 2016-03-01 11:42:59.000000000 +0100 @@ -41,11 +41,13 @@ %nodejs_prep %build -%nodejs_build +# nothing to do %install %nodejs_mkdir %nodejs_copy +%nodejs_build +%nodejs_clean %nodejs_filelist # make your changes here, suppose: # %{buildroot}%{nodejs_sitelib}/%{name} exists