ó # yRc @sqddlmZddlZddlZddlZddlZddlmZddlZddl Z ddl m Z m Z ddl Z ddlmZmZddlmZmZmZmZddlmZmZdd<d „ƒYZd efd „ƒYZd efd „ƒYZdefd„ƒYZdefd„ƒYZd„Zddd„Z!d„Z"dd„Z#dd„Z$ddd„Z%d„Z&d„Z'd„Z(d„Z)e*dkrmdZ+ed e+ƒZ,e,j-d!d"d#d$d%d&ƒe,j-d'd(d#d$d%d)ƒe,j-d*d+d#d$d%d,d-dƒe,j-d.d/d#d$d%d0d-d1ƒe,j.d2dƒe,j/ƒ\Z0Z1e0j2Z3e0j4Z5e0j6Z6e0j7Z7e8e1ƒd3kr´e,j9d4ƒne1d5j:ƒZ;e1d6j:ƒZ<dZ=e8e1ƒd7kr¹e1d3j:ƒZ=dZ>dZ?d8e<krŽe<j@d1ƒdZAejBeAƒZCeCjDdkrQdeC_DneCjEsje,j9d9ƒne#eCe7e=ƒZ>eeCe>ƒZ?ne$e<e7e=ƒZ?e?rÈe)e=e?ƒqÈne$e<e7ƒZ?e;GHe?rLe%e?e3e6ƒZFe'e;e?eFe5ƒe5r'd:e?jGjEe5fZ5e"e5e<e=ƒqjd8e<kr;e<GHne=rje=GHqjqme,j9d;e<ƒejHd6ƒndS(=iÿÿÿÿ(t OptionParserN(tStringIO(tbasenametdirname(tgmtimetstrftime(t SubElementtElementt ElementTreet XMLParser(tPOMtArtifacttFragmentcBs eZdZd„Zd„ZRS(s-simple structure to hold fragment informationcCs||_||_dS(N(tupstream_artifacttlocal_artifact(tselfR R((s%/usr/share/java-utils/maven_depmap.pyt__init__:s cCs |j|S(N(t__dict__(Rtindex((s%/usr/share/java-utils/maven_depmap.pyt __getitem__>s(t__name__t __module__t__doc__RR(((s%/usr/share/java-utils/maven_depmap.pyR 8s tPackagingTypeMissingFilecBseZd„ZRS(cCsd|f|_dS(NsMPackaging type is not 'pom' and no artifact path has been provided for POM %s(targs(Rtpom_path((s%/usr/share/java-utils/maven_depmap.pyRCs(RRR(((s%/usr/share/java-utils/maven_depmap.pyRBstIncompatibleFilenamescBseZd„ZRS(cCsd||ff|_dS(NsnFilenames of POM %s and JAR %s does not match properly. Check that JAR subdirectories matches '.' in pom name.(R(RRtjar_path((s%/usr/share/java-utils/maven_depmap.pyRGs(RRR(((s%/usr/share/java-utils/maven_depmap.pyRFstMissingJarFilecBseZd„ZRS(cCs d|_dS(NsPJAR seems to be missing in standard directories. Make sure you have installed it(sPJAR seems to be missing in standard directories. Make sure you have installed it(R(R((s%/usr/share/java-utils/maven_depmap.pyRKs(RRR(((s%/usr/share/java-utils/maven_depmap.pyRJstUnknownFileExtensioncBseZd„ZRS(cCsd|f|_dS(NsUnknown file extension: %s(R(RR((s%/usr/share/java-utils/maven_depmap.pyROs(RRR(((s%/usr/share/java-utils/maven_depmap.pyRNscCs˜gddddgD]}tjj||ƒ^q}d}xE|D]=}||krAtjd|ƒ}tj|d|ƒ}qAqAW|s”tƒ‚n|S(Ns share/javasshare/java-jnislib/javas lib64/javas.*%s/t(tostpathtjointNonetretcompiletsubR(Rtprefixtparttjavadirstjarparttjdirt javadir_re((s%/usr/share/java-utils/maven_depmap.pyt_get_javadir_partRs(   tjarc Cs¤t|ƒ}|r.tjj|ƒs3tdƒ‚nt||ƒ}|ddkrÊd|krpt||ƒ‚ndt|ƒ}t|t|ƒd ƒ}|d|d|fks+t||ƒ‚q+qšd|krèt||ƒ‚nd }t|t|ƒd ƒ}|d |ksšt||ƒ‚qšnl|ddkr‡t j d |ƒ}d|j dƒ}t j d |ƒ}|j dƒ}nd }|dd !}||fS(s.Get resolved (groupId,artifactId) tuple from POM and JAR path. POM name and JAR name have to be compatible. JPP.xbean-xbean-main.pom means groupId is "JPP/xbean" and artifactId is "xbean-main". Therefore for JAR name to be compatible it has be in %{_javadir}/xbean/xbean-main.jar. sJAR path doesn't existit.t/sJPP/%sis JPP.%s-%s.pomitJPPs JPP-%s.pomsJPP\.([^-]*?)-.*sJPP\.[^-]*?-(.*)\.pomiüÿÿÿ( RRR tisfiletIOErrorR,RRtlenR#tmatchtgroup( RR&Rt extensiontpomnameR)tjpp_gidtjpp_aidR4((s%/usr/share/java-utils/maven_depmap.pyt_get_jpp_from_filenamebs4    c Cs…tt|jdƒƒƒ}|}|}d|kr×tjj|ƒ\}}t}xst|ƒD]e}d|||f} |s¨tj tjj |ƒ| ƒt }| }ntj t |ƒ| ƒ| GHq^Wtj|ƒn|rtjj|ƒ\}}t}xst|ƒD]e}d|||f} |sRtj tjj |ƒ| ƒt }| }ntj t |ƒ| ƒ| GHqWtj|ƒndS(sMake pom and jar file versionedt,t:s%s-%s%sN(tlisttsettsplitRR tsplitexttFalsetsortedtshutiltcopytrealpathtTruetsymlinkRtremove( tversionsRRt vpom_patht vjar_pathtroottextRGtvertdest((s%/usr/share/java-utils/maven_depmap.pyt_make_files_versioned‹s6     cCsO|s(td|j|j|j|jƒSt||ƒ}d}d|krddjdt|ƒƒ}n|j}|s|d}n|jdjd|ƒƒs¯t t |ƒ|ƒ‚nt |ƒj djd|ƒdƒ}|}|jr0||j d ƒ }||j d ƒd |jkr0t t |ƒ|ƒ‚q0nt|||j|j|jƒS( NR0R/s JPP/{gid}tgidR-s.{ext}RMRt-i(R t artifactIdR6t classifiertversionR,tformatRtendswithRtstrRtreplacetrfind(R R&RR)t local_gidRMtfnamet local_aid((s%/usr/share/java-utils/maven_depmap.pytget_local_artifact´s.        c CsÞt|ƒ}d}|sI|j s1|jdkr@ttƒ‚nd}n"tjjtƒ\}}|d}t||||ƒ\}}|dkr›d}nt |j |j d|d|j ƒ} t |||ƒ} t | | ƒS(s5Returns Fragment class or None if POM file is invalidRtpomiR-R6RU(R t packagingRRRR R@RR:R tgroupIdRSRUR ( tpom_fileR&tjar_fileR_R6R\RMR8R9R R((s%/usr/share/java-utils/maven_depmap.pyt parse_pomÔs     $RcCs‹||j_||j_|g}|r‡|jdƒ}xN|D]C}tj|ƒ}tj||jƒ}|jt||jƒƒq=Wn|S(NR;( R t namespaceRR?R t from_mvn_strtmerge_artifactstappendR (tfragmentt additionsRetmapstaddstaddtmparttfull((s%/usr/share/java-utils/maven_depmap.pytcreate_mappingsîs     cCs]tƒ}tƒ}|j|ƒ|j|dtddddƒtjjj|j ƒƒj ƒS(Ntxml_declarationtencodingsutf-8tmethodtxml( RRt_setroottwriteRFRttdomtminidomt parseStringtgetvaluet toprettyxml(telemtxmlbuftet((s%/usr/share/java-utils/maven_depmap.pytprettify_elementús    cCs¢d }y1tƒ}tdtƒ}|j|d|ƒ}Wntk rVtdƒ}nX|sitƒ}nt|jdƒƒ}|s|dkr t |dƒn|j |j j ƒt |ƒ}x¥t|ƒD]—}xŽ|D]†}t |dƒ} |s|dkr||j_ n d|j_ |j jdd ƒ} |jjdd ƒ} | j| ƒ| j| ƒqÙWqÌWt|ƒ} tj|d d ƒ} | j| ƒWd QXd S(sPWrites fragment into fragment_path in specialised format compatible with jpptremove_blank_texttparsert dependencyMapR;Rt skipProvidest dependencyRLtmaventjpptwsutf-8N(R"RR RFtparseR2RR>R?RRmR RUR=RBRtget_xml_elementRhRtcodecstopenRv(t fragment_pathRitmappingst add_versionsRLR~RRIRNtdeptmvn_xmlt local_xmltxmlstrtfout((s%/usr/share/java-utils/maven_depmap.pytoutput_fragments6        cCsÃtj|dƒ}zŸ||jƒkr°tjj|ƒ}xatrœ|sLPn|tjj}||jƒkr|j|dƒntjj |ƒ\}}q<W|j||ƒnWd|j ƒXdS(NtaR( tzipfiletZipFiletnamelistRR RRFtseptwritestrR?tclose(t archive_namet file_namet file_contentstarchiveR tsubdirttail((s%/usr/share/java-utils/maven_depmap.pytappend_if_missing.s cCs¦djd|jƒ}tdtƒƒ}djd|d|ƒ}|j}|jrm|djd|jƒ}n|jr’|djd |jƒ}nt|||ƒdS( Ns8META-INF/maven/{f.groupId}/{f.artifactId}/pom.propertiestfs%a %b %d %H:%M:%S UTC %Ys§#Generated by Java Packages Tools #{timestamp} version={f.upstream_artifact.version} groupId={f.upstream_artifact.groupId} artifactId={f.upstream_artifact.artifactId} t timestampsextension={ext} RMsclassifier={clas} tclas(RVR RRR6RTR¢(RRit props_pathR¤t propertiestartifact((s%/usr/share/java-utils/maven_depmap.pytinject_pom_properties@s    t__main__sCusage: %prog [options] fragment_path pom_path| [jar_path]tusages-as--appendttypeRXthelps8Additional depmaps to add (gid:aid) [default: %default]s-rs --versionss*Additional versions to add for each depmaps-ns --namespaces(Namespace to use for generated fragmentstdefaults-ps--prefixs3Prefix where artifacts are expected to be installedR/RhisIncorrect number of argumentsiiiR<s*Artifact definition has to include versions%s,%ss™Problem parsing POM file. Is it valid maven POM? Send bugreport to https://fedorahosted.org/javapackages/ and attach %s to this bugreport((ItoptparseRtsysRR#RCRtxml.dom.minidomRtRŠtos.pathRRR–ttimeRRt lxml.etreeRRRR t javapackagesR R R t ExceptionRRRRR,R"R:RPR^RdRpRR”R¢R©RR«Rt add_optiont set_defaultst parse_argstoptionsRRht append_depsRIRŽReR&R3terrortstripRŒRRtlocalRitrsplittpom_strRftupstreamR6RURR texit(((s%/usr/share/java-utils/maven_depmap.pyt&s        "  ) )  *