<HTML><BODY>
    <BR>
    <BR>
    Thanks for the info.<BR>
<BR>
In short, I created a variable named STIG and then referenced it throughout. Then I created a subfolder underneath the input folder with the same name as the STIG. This would allow me to have multiple SSG projects in the same repository without having to duplicate the entire repository for each SSG. I want to ensure that when changes are made to the files supporting the build process, that I don't have to update those changes for every project. This method would support that goal.<BR>
<BR>
Now I just need a way to dynamically list each project folder under input and perform the make for each all from within the Makefile.<BR>
<BR>
My thoughts were to include the following changes to the Makefile, as described above:<BR>
<BR>
#################################<BR>
<BR>
IN = input<BR>
OUT = output<BR>
TRANS = transforms<BR>
REFS = references<BR>
UTILS = utils<BR>
DIST = dist<BR>
STIG = rhel6<BR>
<BR>
ID = ssg<BR>
<BR>
all: shorthand2xccdf tables guide checks content dist<BR>
<BR>
shorthand-guide:<BR>
        xsltproc -o $(OUT)/$(STIG)-shorthand.xml $(IN)/$(STIG)/guide.xslt $(IN)/$(STIG)/guide.xml<BR>
        xmllint --format --output $(OUT)/$(STIG)-shorthand.xml $(OUT)/$(STIG)-shorthand.xml<BR>
<BR>
shorthand2xccdf: shorthand-guide<BR>
        xsltproc -o $(OUT)/unlinked-unresolved-noprofiles-$(STIG)-shorthand.xml $(TRANS)/shorthand2xccdf.xslt $(OUT)/$(STIG)-shorthand.xml<BR>
        xsltproc -o $(OUT)/unlinked-unresolved-noprofiles-$(STIG)-xccdf.xml $(TRANS)/add_xccdf_namespace.xslt $(OUT)/unlinked-unresolved-noprofiles-$(STIG)-shorthand.xml<BR>
        xsltproc -stringparam profile &quot;allprofiles&quot; -o $(OUT)/unlinked-unresolved-$(STIG)-xccdf.xml \<BR>
                $(TRANS)/xccdf-addprofiles.xslt $(OUT)/unlinked-unresolved-noprofiles-$(STIG)-xccdf.xml<BR>
        oscap xccdf resolve -o $(OUT)/unlinked-$(STIG)-xccdf.xml $(OUT)/unlinked-unresolved-$(STIG)-xccdf.xml<BR>
#        xsltproc -stringparam profile &quot;stig-$(STIG)-server&quot; -o $(OUT)/unlinked-$(STIG)-xccdf.xml \<BR>
#                $(TRANS)/xccdf-addrefs.xslt $(OUT)/unlinked-$(STIG)-xccdf.xml<BR>
#   extract manual check instructions from xccdf into an ocil file<BR>
        xsltproc -o $(OUT)/unlinked-$(STIG)-ocil.xml $(TRANS)/xccdf-create-ocil.xslt $(OUT)/unlinked-$(STIG)-xccdf.xml<BR>
        xmllint --format --output $(OUT)/unlinked-$(STIG)-ocil.xml $(OUT)/unlinked-$(STIG)-ocil.xml <BR>
        xsltproc -o $(OUT)/unlinked-ocilrefs-$(STIG)-xccdf.xml $(TRANS)/xccdf-ocilcheck2ref.xslt $(OUT)/unlinked-$(STIG)-xccdf.xml<BR>
        ./$(TRANS)/combinefixes.py $(IN)/$(STIG)/fixes/bash/ $(OUT)/bash-remediations.xml<BR>
        xsltproc -stringparam fixes &quot;../$(OUT)/bash-remediations.xml&quot; -o $(OUT)/unlinked-$(STIG)-xccdf.xml $(TRANS)/xccdf-addfixes.xslt $(OUT)/unlinked-$(STIG)-xccdf.xml<BR>
        xmllint --format --output $(OUT)/unlinked-$(STIG)-xccdf.xml $(OUT)/unlinked-$(STIG)-xccdf.xml<BR>
<BR>
checks:<BR>
        xmlwf $(IN)/$(STIG)/checks/*.xml<BR>
        $(TRANS)/combinechecks.py $(IN)/$(STIG)/checks &gt; $(OUT)/unlinked-$(STIG)-oval.xml<BR>
        xmllint --format --output $(OUT)/unlinked-$(STIG)-oval.xml $(OUT)/unlinked-$(STIG)-oval.xml<BR>
<BR>
guide: shorthand2xccdf<BR>
#        remove auxiliary Groups which are only for use in tables, and not guide output.<BR>
#        specifying a nonexistent profile, &quot;allrules,&quot; to make oscap print all Rules<BR>
        xsltproc -o $(OUT)/unlinked-$(STIG)-xccdf-guide.xml $(TRANS)/xccdf-removeaux.xslt $(OUT)/unlinked-$(STIG)-xccdf.xml<BR>
        xsltproc -o $(OUT)/unlinked-notest-$(STIG)-xccdf-guide.xml $(TRANS)/xccdf-removetested.xslt $(OUT)/unlinked-$(STIG)-xccdf.xml<BR>
        oscap xccdf generate guide --profile allrules $(OUT)/unlinked-notest-$(STIG)-xccdf-guide.xml &gt; $(OUT)/$(STIG)-guide.html<BR>
<BR>
# example, if needed: for converting XCCDF into shorthand<BR>
#xccdf2shorthand:<BR>
#        xsltproc -o $(XCCDF_OUTPUT_DIR)/rhel5-shorthand.xml $(TRANS)/xccdf2shorthand.xslt $(REFS)/usgcb-rhel5desktop-xccdf.xml<BR>
#        tidy -m -xml -utf8 --indent-spaces=0 $(XCCDF_OUTPUT_DIR)/rhel5-shorthand.xml<BR>
<BR>
table-refs: shorthand2xccdf<BR>
        xsltproc -stringparam ref &quot;nist&quot; -o $(OUT)/table-$(STIG)-nistrefs.html $(TRANS)/xccdf2table-byref.xslt $(OUT)/unlinked-$(STIG)-xccdf.xml<BR>
        xsltproc -stringparam profile &quot;common&quot; -o $(OUT)/table-$(STIG)-nistrefs-common.html \<BR>
                $(TRANS)/xccdf2table-profilenistrefs.xslt $(OUT)/unlinked-$(STIG)-xccdf.xml<BR>
<BR>
table-idents: shorthand2xccdf<BR>
        xsltproc -o $(OUT)/table-$(STIG)-cces.html $(TRANS)/xccdf2table-cce.xslt $(OUT)/unlinked-$(STIG)-xccdf.xml<BR>
<BR>
table-srgmap: shorthand2xccdf<BR>
# the map-to-items filename must be provided relative to the root of the main document being processed<BR>
        xsltproc -stringparam map-to-items &quot;../$(OUT)/unlinked-$(STIG)-xccdf.xml&quot; -o $(OUT)/table-$(STIG)-srgmap.html \<BR>
                $(TRANS)/table-srgmap.xslt $(REFS)/disa-os-srg-v1r1.xml<BR>
        xsltproc -stringparam flat &quot;y&quot; -stringparam map-to-items &quot;../$(OUT)/unlinked-$(STIG)-xccdf.xml&quot; -o $(OUT)/table-$(STIG)-srgmap-flat.html \<BR>
                $(TRANS)/table-srgmap.xslt $(REFS)/disa-os-srg-v1r1.xml<BR>
        xmllint --xmlout --html --output $(OUT)/table-$(STIG)-srgmap-flat.xhtml $(OUT)/table-$(STIG)-srgmap-flat.html<BR>
<BR>
table-stigs: shorthand2xccdf table-srgmap<BR>
        xsltproc -o $(OUT)/table-rhel5-stig.html $(TRANS)/xccdf2table-stig.xslt $(REFS)/disa-stig-rhel5-v1r0.6-xccdf.xml  <BR>
        xsltproc -o $(OUT)/table-rhel5-stig-manual.html $(TRANS)/xccdf2table-stig.xslt $(REFS)/disa-stig-rhel5-v1r0.6-xccdf-manual.xml  <BR>
#        xsltproc -stringparam notes &quot;../$(IN)/$(STIG)/auxiliary/transition_notes.xml&quot; -o $(OUT)/table-rhel5-stig-manual-withnotes.html \<BR>
#                $(TRANS)/xccdf2table-stig.xslt \<BR>
#                $(REFS)/disa-stig-rhel5-v1r0.6-xccdf-manual.xml<BR>
#        temporarily retain an output file showing the short titles as well<BR>
        xsltproc -stringparam profile &quot;stig-$(STIG)-server&quot; -stringparam testinfo &quot;y&quot; -o $(OUT)/table-stig-$(STIG)-shorttitles.html \<BR>
                $(TRANS)/xccdf2table-profileccirefs.xslt \<BR>
                $(OUT)/unlinked-$(STIG)-xccdf.xml<BR>
        xsltproc -stringparam profile &quot;rht-ccp&quot; -stringparam testinfo &quot;y&quot; -o $(OUT)/table-stig-$(STIG)-shorttitles.html \<BR>
                $(TRANS)/xccdf2table-profileccirefs.xslt \<BR>
                $(OUT)/unlinked-$(STIG)-xccdf.xml<BR>
        xsltproc -stringparam overlay &quot;../$(IN)/$(STIG)/auxiliary/stig_overlay.xml&quot; -o $(OUT)/unlinked-stig-$(STIG)-xccdf.xml \<BR>
                $(TRANS)/xccdf-apply-overlay-stig.xslt \<BR>
                $(OUT)/unlinked-$(STIG)-xccdf.xml<BR>
        xsltproc -o $(OUT)/table-stig-$(STIG).html $(TRANS)/xccdf2table-stig.xslt $(OUT)/unlinked-stig-$(STIG)-xccdf.xml  <BR>
<BR>
tables: table-refs table-idents table-srgmap table-stigs<BR>
<BR>
content: shorthand2xccdf guide checks<BR>
#        the relabelids.py script chdirs to ./output, so refer to files from there.<BR>
#        its second argument controls the IDs, as well as the output filenames.<BR>
#        thus, with ID set to ssg, this creates ssg-$(STIG)-xccdf.xml and ssg-$(STIG)-oval.xml.<BR>
        $(TRANS)/cpe_generate.py $(OUT)/unlinked-$(STIG)-oval.xml $(IN)/$(STIG)/checks/platform/$(STIG)-cpe-dictionary.xml $(ID)<BR>
        $(TRANS)/relabelids.py unlinked-$(STIG)-xccdf.xml $(ID)<BR>
        $(TRANS)/relabelids.py unlinked-ocilrefs-$(STIG)-xccdf.xml $(ID)<BR>
<BR>
content-stig: shorthand2xccdf guide checks<BR>
        xmllint --format --output $(OUT)/unlinked-stig-$(STIG)-xccdf.xml $(OUT)/unlinked-stig-$(STIG)-xccdf.xml <BR>
        $(TRANS)/cpe_generate.py $(OUT)/unlinked-$(STIG)-oval.xml $(IN)/$(STIG)/checks/platform/$(STIG)-cpe-dictionary.xml disa-predraft<BR>
        $(TRANS)/relabelids.py unlinked-stig-$(STIG)-xccdf.xml disa-predraft<BR>
        xmllint --format --output $(OUT)/disa-predraft-stig-$(STIG)-xccdf.xml $(OUT)/disa-predraft-stig-$(STIG)-xccdf.xml<BR>
<BR>
submission-stig-check: table-stigs<BR>
        cd output; ../$(UTILS)/verify-references.py -p stig-$(STIG)-server --rules-with-disarefs-outside-profile unlinked-$(STIG)-xccdf-prerefs.xml<BR>
#        $(TRANS)/xccdf2csv-stig.py $(OUT)/unlinked-stig-$(STIG)-xccdf.xml &gt; $(OUT)/table-stig.csv<BR>
<BR>
# content-usgcb: coming soon<BR>
<BR>
validate-xml:<BR>
        oscap xccdf validate-xml $(OUT)/$(ID)-$(STIG)-xccdf.xml<BR>
        oscap oval validate-xml $(OUT)/$(ID)-$(STIG)-oval.xml<BR>
        oscap oval validate-xml $(OUT)/$(ID)-$(STIG)-cpe-oval.xml<BR>
<BR>
validate: validate-xml<BR>
        cd output; ../$(UTILS)/verify-references.py --rules-with-invalid-checks --ovaldefs-unused ssg-$(STIG)-xccdf.xml<BR>
        oscap oval validate-xml --schematron $(OUT)/$(ID)-$(STIG)-oval.xml<BR>
<BR>
eval-test:<BR>
        oscap xccdf eval --profile test $(OUT)/$(ID)-$(STIG)-xccdf.xml<BR>
<BR>
eval-common:<BR>
        oscap xccdf eval --profile common --oval-results --results /tmp/results-test.xml $(OUT)/$(ID)-$(STIG)-xccdf.xml<BR>
<BR>
# items in dist are expected for distribution in an rpm<BR>
dist: tables guide content<BR>
        mkdir -p $(DIST)/guide $(DIST)/content $(DIST)/policytables<BR>
        cp $(OUT)/*-guide.html $(DIST)/guide<BR>
        cp $(OUT)/$(ID)-$(STIG)-xccdf.xml $(DIST)/content<BR>
        cp $(OUT)/$(ID)-$(STIG)-oval.xml $(DIST)/content<BR>
        cp $(OUT)/$(ID)-$(STIG)-cpe-dictionary.xml $(DIST)/content<BR>
        cp $(OUT)/$(ID)-$(STIG)-cpe-oval.xml $(DIST)/content<BR>
        cp $(OUT)/table-$(STIG)-* $(DIST)/policytables<BR>
<BR>
clean:<BR>
        rm -f $(OUT)/*.xml $(OUT)/*.html $(OUT)/*.xhtml $(OUT)/*.pdf  $(OUT)/*.spec $(OUT)/*.tar $(OUT)/*.gz $(OUT)/*.ini $(OUT)/*.csv<BR>
        rm -rf $(DIST)/content $(DIST)/policytables $(DIST)/guide<BR>
<BR>
#################################<BR>
<BR>
Best regards,<BR>
 <BR>
<BR>
Trey Henefield, CISSP<BR>
Senior IAVA Engineer<BR>
<BR>
Ultra Electronics<BR>
Advanced Tactical Systems, Inc.<BR>
4101 Smith School Road<BR>
Building IV, Suite 100<BR>
Austin, TX 78744 USA<BR>
<BR>
<a href="mailto:Trey.Henefield@ultra-ats.com">Trey.Henefield@ultra-ats.com</a> <BR>
Tel: +1 512 327 6795 ext. 647<BR>
Fax: +1 512 327 8043<BR>
Mobile: +1 512 541 6450<BR>
<BR>
<a href="http://www.ultra-ats.com" target="_blank">www.ultra-ats.com</a> <BR>
<BR>
<BR>
-----Original Message-----<BR>
From: <a href="mailto:scap-security-guide-bounces@lists.fedorahosted.org">scap-security-guide-bounces@lists.fedorahosted.org</a> [mailto:scap-security-guide-bounces@lists.fedorahosted.org] On Behalf Of Jeffrey Blank <BR>
Sent: Tuesday, August 20, 2013 10:50 AM<BR>
To: <a href="mailto:scap-security-guide@lists.fedorahosted.org">scap-security-guide@lists.fedorahosted.org</a> <BR>
Subject: Re: Generalising SSG ...<BR>
<BR>
Yes, though I simply haven't had time to refactor the code to make it easily portable.  And of course I'd welcome tooling improvements as commits to SSG, for anyone similarly-minded.<BR>
<BR>
A simplified version has already been dropped here, for another platform:<BR>
$ svn checkout <a href="https://svn.macosforge.org/repository/scap-on-apple" target="_blank">https://svn.macosforge.org/repository/scap-on-apple</a> <BR>
<BR>
(This is also simpler, as there is no OVAL involved.)<BR>
<BR>
<BR>
<BR>
On 08/20/2013 11:36 AM, Trey Henefield wrote:<BR>
&gt; <BR>
&gt; <BR>
&gt; Just food for thought. Has there been any desire to make changes to <BR>
&gt; SSG to accommodate building other (non-rhel6) SSGs?<BR>
&gt; <BR>
&gt;  <BR>
&gt; <BR>
&gt; I am getting up to speed on its processes, and for practice and actual <BR>
&gt; need, was thinking of creating an SSG for Firefox and Java, and <BR>
&gt; potentially webmin and apache. However, I noticed rhel6 is embedded <BR>
&gt; all throughout.<BR>
&gt; <BR>
&gt;  <BR>
&gt; <BR>
&gt; I have noticed that most of the processes in place can be repurposed.<BR>
&gt; With some changes to the makefile and a repurposed input folder, <BR>
&gt; should this be possible?<BR>
&gt; <BR>
&gt;  <BR>
&gt; <BR>
&gt; I was just hoping to get some further insight before going down this <BR>
&gt; long path.<BR>
&gt; <BR>
&gt;  <BR>
&gt; <BR>
&gt; Thanks in advance!<BR>
&gt; <BR>
&gt;  <BR>
&gt; <BR>
&gt; Best regards,<BR>
&gt; <BR>
&gt;  <BR>
&gt; <BR>
&gt; Trey Henefield, CISSP<BR>
&gt; <BR>
&gt; Senior IAVA Engineer<BR>
&gt; <BR>
&gt;  <BR>
&gt; <BR>
&gt; Ultra Electronics<BR>
&gt; <BR>
&gt; Advanced Tactical Systems, Inc.<BR>
&gt; <BR>
&gt; 4101 Smith School Road<BR>
&gt; <BR>
&gt; Building IV, Suite 100<BR>
&gt; <BR>
&gt; Austin, TX 78744 USA<BR>
&gt; <BR>
&gt;  <BR>
&gt; <BR>
&gt; <a href="mailto:Trey.Henefield@ultra-ats.com">Trey.Henefield@ultra-ats.com</a> <BR>
&gt; <BR>
&gt; Tel: +1 512 327 6795 ext. 647<BR>
&gt; <BR>
&gt; Fax: +1 512 327 8043<BR>
&gt; <BR>
&gt; Mobile: +1 512 541 6450<BR>
&gt; <BR>
&gt;  <BR>
&gt; <BR>
&gt; <a href="http://www.ultra-ats.com" target="_blank">www.ultra-ats.com</a> <BR>
&gt; <BR>
&gt;  <BR>
&gt; <BR>
&gt; <BR>
&gt; <BR>
&gt; *Disclaimer*<BR>
&gt; The information contained in this communication from <BR>
&gt; *trey.henefield@ultra-ats.com * sent at 2013-08-20 11:36:43 is private <BR>
&gt; and may be legally privileged or export controlled. It is intended <BR>
&gt; solely for use by *scap-security-guide@lists.fedorahosted.org * and <BR>
&gt; others authorized to receive it. If you are not <BR>
&gt; *scap-security-guide@lists.fedorahosted.org * you are hereby notified <BR>
&gt; that any disclosure, copying, distribution or taking action in <BR>
&gt; reliance of the contents of this information is strictly prohibited <BR>
&gt; and may be unlawful.<BR>
&gt; <BR>
&gt; <BR>
&gt; <BR>
&gt; _______________________________________________<BR>
&gt; scap-security-guide mailing list<BR>
&gt; <a href="mailto:scap-security-guide@lists.fedorahosted.org">scap-security-guide@lists.fedorahosted.org</a> <BR>
&gt; <a href="https://lists.fedorahosted.org/mailman/listinfo/scap-security-guide" target="_blank">https://lists.fedorahosted.org/mailman/listinfo/scap-security-guide</a> <BR>
&gt; <BR>
_______________________________________________<BR>
scap-security-guide mailing list<BR>
<a href="mailto:scap-security-guide@lists.fedorahosted.org">scap-security-guide@lists.fedorahosted.org</a> <BR>
<a href="https://lists.fedorahosted.org/mailman/listinfo/scap-security-guide" target="_blank">https://lists.fedorahosted.org/mailman/listinfo/scap-security-guide</a> <BR>

    <BR>
    <BR>
 <p><font size="1"><b><font color="#666666" face="Verdana, Arial, Helvetica, sans-serif">Disclaimer</font></b><font color="#666666" face="Verdana, Arial, Helvetica, sans-serif"><br/>
        The information contained in this communication from </font></font><font color="#666666" size="1" face="Verdana, Arial, Helvetica, sans-serif"><b>
          trey.henefield@ultra-ats.com
          </b> sent at
          2013-08-20
          12:17:48
          is private and may be legally privileged or export controlled. It is intended solely for 
          use by <b>
            scap-security-guide@lists.fedorahosted.org
            </b> and others 
          authorized to receive it. If you are not <b>
            scap-security-guide@lists.fedorahosted.org
            </b> you are hereby notified that any disclosure, copying, distribution or 
          taking action in reliance of the contents of this information is strictly 
          prohibited and may be unlawful.</font><br>
          <br>
    </p></BODY></HTML>